# Build artifacts
*.elf
*.o
*.d
gen/
web-file-mgr-linux

# Sandbox scratch under .build/: ignore the whole directory, then re-allow the
# handful of files that are actually part of the repo -- the build scripts, the
# ELF checker, and the validation harnesses. A whitelist is the only thing that
# survives: every debugging session drops a new probe directory in here, and a
# scratch-tree cleanup would otherwise delete the harnesses for good (they exist
# nowhere else -- not in git, not on the release page).
.build/*
!.build/build-elf.sh
!.build/build-elf-wsl.sh
!.build/build-win.sh
!.build/check-elf-*.py
!.build/extract-demo.html
!.build/build-elf.log

# Validation harnesses: headless-DOM unit tests against assets/main.js, the
# real-page preview server and its Chromium pass, and the README / comparison /
# proposal / UI-demo render checks. Run them before shipping a UI or docs change.
# ui_demos_check.mjs also turns the UI review criteria (overflow at three
# breakpoints, WCAG-AA contrast, focus-ring containment, aria-disabled hygiene)
# into assertions — they are invisible to the eye, so they need a test.
!.build/ui_*_test.mjs
!.build/ui_demos_check.mjs
!.build/preview_build.py
!.build/preview_stub.html
!.build/preview_check.mjs
!.build/readme_header_render.mjs
!.build/compare_*_check.mjs
!.build/proposal_check.mjs

# Generated 7z fixtures (tests/make_sevenz_fixtures.py rebuilds them).
tests/fixtures-7z/

# Staging trees the fixture generators copy from (make-rar-fixtures.bat uses
# fixture-stage, make-zip-enc-fixtures.bat uses fixture-stage-zip). The
# archives they produce under tests/fixtures-real/ ARE committed.
tests/fixture-stage/
tests/fixture-stage-zip/

# Python bytecode (the fixture generators and bench_driver are hand-run)
__pycache__/
*.pyc

# Editor / OS noise
.vscode/
.idea/
*.swp
.DS_Store
Thumbs.db

# WorkBuddy session data (never commit; also never delete).
.workbuddy/
