GitButler is a Rust/Svelte/React/TypeScript monorepo.
Apply all relevant instruction files. If instructions conflict, resolve them in this order:
- Explicit human instructions
- Nearest nested
AGENTS.md - This file
crates/- Rust crates.apps/desktop/- Tauri/Svelte desktop app.apps/web/- Svelte web app.apps/lite/- Electron/React desktop app.packages/- shared TypeScript packages, including the SDK.e2e/- Playwright, WebdriverIO, and blackbox end-to-end tests.
- Treat questions about the codebase as read-only unless the user asks for changes.
- Make focused, reviewable changes; avoid unrelated rewrites.
- Use the simplest design that solves the actual problem; do not add speculative machinery, and remove machinery your change makes unnecessary.
- Inspect nearby code before introducing patterns.
- Prefer existing APIs, tests, and conventions.
- Before declaring shared behavior done, check each applicable surface and contract (desktop, web, Lite, CLI/TUI, N-API, SDK, and docs) and update it or explicitly determine that it is unaffected.
- Run targeted validation for the area touched.
- For Rust work under
crates/, followcrates/AGENTS.md. - For Lite work under
apps/lite/, followapps/lite/AGENTS.md.