# Build artifacts
bin/
*.exe
*.dll
*.so
*.dylib
# ANCHORED (leading slash) on purpose: a bare `controller` also matches the DIRECTORY
# cmd/controller/, so ripgrep silently skipped main.go and new files there needed `git add -f`.
# Both directions produce inert-seam mistakes — a grep for a setter finds no caller and reads as
# "this is unused", and a genuinely-new file never gets committed. Only the built binary at the
# module root should be ignored here.
/controller
/controller.exe

# Test artifacts
coverage.out
coverage.html
*.test

# IDE
.idea/
.vscode/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Go
vendor/

# Docker
*.tar

# Local config (don't commit real customer configs)
controller.yaml
restic-password

# App assets (synced from felhom.eu website at build time)
assets/*.svg
assets/*.png
assets/*.webp
# build.sh's scratch directory. It is created beside the script, so a build run from a CLONE of
# this repo (which is what the clean-tree gate pushes you to when the shared tree is busy) would
# otherwise dirty the very tree the gate is checking. Generated output, never committed.
workspace/
