feat(android): Projects/Diff/Worktree/git-write parity with web+iOS (W5)
Brings the native Android client to parity with the web/iOS Projects + git surface,
consuming the existing server endpoints — ZERO server change. (The "SDK-gated modules"
premise was stale; they were already online.)
- :api-client (pure Kotlin/JVM): PrStatus/GitLog/GitWrite models (tolerant decoders,
safe-error), ProjectInfo + ahead/behind/lastCommitMs; 8 new Endpoints builders
(projectPr/projectLog read-only; createWorktree/removeWorktree/prune/gitStage/
gitCommit/gitPush guarded w/ Origin) + ApiClient methods (PR/log degrade in body;
writes 200→Ok / 429→RateLimited / 4xx-5xx→Rejected(safe msg)).
- :app presenters (JVM-tested): DiffViewModel base-compare + git stage/commit/push;
new WorktreeViewModel (create/remove/prune + client branch validation + isMain block);
ProjectDetailViewModel failure-isolated PR-chip + recent-commits.
- Compose screens wired: ProjectDetail (PR chip tappable only for https, recent commits,
worktree create/remove-with-force/prune, view-diff), Diff (base input, per-file
stage/unstage, commit/push bar), Projects (ahead/behind sync chip). Nav closes the
pre-existing "no inbound link to the diff screen" gap.
Verified independently: `./gradlew :app:assembleDebug test :api-client:koverVerify`
BUILD SUCCESSFUL; 348 unit tests pass (api-client 102 / app 246); coverage gate held;
git status android-only. Compose rendering/interaction deferred to on-device QA
(android/DEVICE_QA_CHECKLIST.md), as prior Android waves did.