Files
sharedinbox/AGENTS.md
T
Thomas SharedInboxandClaude Sonnet 4.6 a71e10d9db fix: correct enough_mail docs and website CI pipeline
enough_mail is a pub dependency, not a vendored package.
Add missing 'Enable Nix flakes' step to website.yml (matching ci.yml)
and remove redundant branch condition already handled by the trigger.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:17:37 +02:00

49 lines
1.4 KiB
Markdown

# SharedInbox — Development Guide
## Code conventions
- Avoid `else`, use "early return".
## Drift (DB)
- Schema in `lib/data/db/database.dart`.
- After any schema change run: `dart run build_runner build --delete-conflicting-outputs`
- Generated `database.g.dart` is committed — do not hand-edit it.
## enough_mail
- Standard pub dependency (`enough_mail: ^2.1.7` in `pubspec.yaml`) — not vendored.
- IMAP client helpers are in `lib/data/imap/imap_client_factory.dart`.
## Running
Flutter build dependencies (libgtk-3-dev, libepoxy-dev, libsecret-1-dev, etc.) are installed via apt
— see the Flutter Linux docs. The nix dev shell provides only tools: `task`, `fvm`, `stalwart-mail`.
Enter the nix dev shell first: `nix develop`
```bash
# Code generation (must run after schema changes)
task codegen
# Desktop
task run
# Tests
task test
```
## Adding a screen
1. Create `lib/ui/screens/my_screen.dart`.
2. Add a `GoRoute` in `lib/ui/router.dart`.
3. No separate ViewModel file needed — use `ConsumerWidget` / `ConsumerStatefulWidget` directly with
Riverpod providers.
## Continuous Integration (CI)
* **Strategy:** "Thin CI, Heavy Taskfile".
* **Execution:** CI must only invoke `task` commands (e.g., `nix develop --command task check`).
All environment setup is handled by Nix (`flake.nix`), and all task orchestration is handled by
`Taskfile.yml`.