Repository-local instructions for coding agents working in this tree.
- Read
CLAUDE.mdbefore changing code. Today it adds one repo-specific rule: update docs andexamples/raffi.yamlwhen behavior changes. - Do not modify git history or create commits unless the user explicitly asks.
- The worktree may already contain user edits. Do not revert unrelated changes.
- Rust application code lives in
src/. - CLI entrypoint is
src/main.rs; runtime orchestration and config parsing live insrc/lib.rs. - UI backends live in
src/ui/:src/ui/fuzzel.rsfor the externalfuzzelintegration.src/ui/wayland*for the native iced UI and addons.
- User-facing examples live in
examples/. - Documentation site lives in
website/and is built with Astro Starlight. - Release and CI workflows live in
.github/workflows/.
- Prefer the existing task runner when it matches the task:
make buildmake testmake clippymake sanity
- If you run Rust commands directly, mirror CI:
cargo checkcargo testcargo fmt --all -- --checkcargo clippy -- -D warnings
- For docs site work, use the existing
website/package.jsonscripts. - Use
uvfor Python tooling when Python is necessary. Usepython3, notpython.
When changing behavior, keep the surrounding docs and examples aligned.
- Config format, CLI flags, addon behavior, or screenshots/docs references:
- update
README.mdwhen the top-level project description changes - update relevant files under
website/src/content/docs/ - update
examples/raffi.yamlif the example config should reflect the new behavior
- update
- Config schema changes:
- refresh
examples/raffi-schema.json
- refresh
- Native UI behavior changes:
- check
src/ui/wayland/tests.rsand add or adjust tests
- check
- Sorting, history, MRU, or search behavior changes:
- check
src/ui/wayland/support.rstests as well as the app tests
- check
run()insrc/lib.rsis the main runtime path:- resolve config path
- optionally clear caches
- auto-write
raffi-schema.jsonnext to the user config if missing - read and normalize config
- choose UI backend
- execute the selected launcher or script
- Config loading supports migration from the old flat format to the current v1
launchers:format. - The native UI is feature-gated by the
waylandCargo feature. A no-default-features build is intentionally smaller and only supports thefuzzelpath.
- Run the smallest relevant verification set for the files you changed.
- For docs-only changes, say that you did not run Rust tests if you skipped them.
- For code changes, prefer at least targeted
cargo test, and run broader checks when the change touches shared code paths.
Before finishing, report:
- commands/tests run and their results
- files changed
- remaining risks, TODOs, or anything not verified