summaryrefslogtreecommitdiff
path: root/.agent/preferences.md
blob: 9ae92fa3a8c79667af87f8490c599b76d29a0ae5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# User Preferences & Workflow Quirks

Living record of user preferences for the Nav project.

## 1. Interaction & Workflow
- **Safety First:** Cautious and deliberate action.
- **Checkpoint Model:** Research -> Strategy -> GO.

## 3. User Context
- **Solo developer who is also the sole user.** The user is both the target audience and the developer. Optimize for their experience as a sailor, not for a hypothetical general public.
- **Reinstall resilience is non-negotiable.** All persistent data (tracks, settings) must survive app uninstall/reinstall. Never use `getExternalFilesDir()` or other app-private storage for user data.
- **Pragmatic about implementation quality.** One-off solutions and temporary hacks are acceptable — just flag them clearly and ensure they get cleaned up in a follow-up.
- **Debug logging:** The in-app debug log (`NavLogger`) is the primary debugging tool. ADB (`adb logcat`) is occasionally available but should not be assumed. Log anything useful to `NavLogger`, not just to Android's `Log`.

## 2. Merge Policy — NON-NEGOTIABLE
- **Merge to `main` after every complete unit of work.** Nothing counts until it lands on `main` — that's when the user can test it. Don't batch up multiple tasks across a session and merge at the end. Each self-contained piece (a feature, a bug fix, a redesign) merges to `main` as soon as it's working and tested.
- Feature branches are short-lived and merge-forward aggressively. Push the branch, then immediately merge it to `main` and push `main`.
- **Merge immediately when a task is done — not at session end, not during cleanup.** "Prep for new session" should never be the moment work first lands on main.

## 3. Repository Conventions — NON-NEGOTIABLE
- **Default branch is `main`.** Always has been, always will be.
- When the user says "main", "master", or "the default branch" they all mean `main`.
- **CI/CD (`.github/workflows/android.yml`) triggers on `main`.** Firebase App Distribution only fires on pushes to `main`. Never change the trigger branch without explicit instruction.
- Before any merge or push, verify: `git branch --show-current` is `main` and `git remote show origin | grep "HEAD branch"` shows `main`.
- Never create or develop on `master`. If `master` ever appears, rename it to `main` immediately.