docs: T-2.10 background lifecycle done; update next-steps

This commit is contained in:
jay 2026-05-17 13:25:09 +02:00
parent 0882ef8038
commit e5dd64a1f7
2 changed files with 7 additions and 12 deletions

View File

@ -1,8 +1,8 @@
# Next Steps — Resume Pointer # Next Steps — Resume Pointer
> **Last updated:** 2026-05-16. > **Last updated:** 2026-05-17.
> **Where we are:** Phase 2 mostly done. T-2.0..T-2.6, T-2.8, T-2.9, T-2.11 on main. App runs end-to-end on iPhone 12 mini + simulator. XCUI test target wired with 8/8 passing tests. > **Where we are:** Phase 2 mostly done. T-2.0..T-2.6, T-2.8, T-2.9, T-2.10, T-2.11 on main. App runs end-to-end on iPhone 12 mini + simulator. 130 unit tests (8 pre-existing failures), 12/12 UI tests green.
> **Where we go next:** T-2.7 PreConnectPool, T-2.10 Background lifecycle, T-2.12 TestFlight, T-2.13 MVP smoke. Plus: fix 8 pre-existing unit-test failures (4 Keychain entitlements + 4 Pairing http-scheme). > **Where we go next:** T-2.7 PreConnectPool, T-2.12 TestFlight, T-2.13 MVP smoke. Plus: fix 8 pre-existing unit-test failures (4 Keychain entitlements + 4 Pairing http-scheme).
This document is the "where did I leave off" anchor. Read this first when This document is the "where did I leave off" anchor. Read this first when
resuming work. The rest of `docs/` is reference. resuming work. The rest of `docs/` is reference.
@ -24,7 +24,7 @@ resuming work. The rest of `docs/` is reference.
| Phase 2 iOS — T-2.6 SessionSwitcher | ✅ **done** 2026-05-16. SessionRegistry + SessionSwitcher + SessionRow. | | Phase 2 iOS — T-2.6 SessionSwitcher | ✅ **done** 2026-05-16. SessionRegistry + SessionSwitcher + SessionRow. |
| Phase 2 iOS — T-2.7 PreConnectPool | ⛔ not started. | | Phase 2 iOS — T-2.7 PreConnectPool | ⛔ not started. |
| Phase 2 iOS — T-2.8 StatusBar | ✅ **done** 2026-05-16. State indicator, action buttons. | | Phase 2 iOS — T-2.8 StatusBar | ✅ **done** 2026-05-16. State indicator, action buttons. |
| Phase 2 iOS — T-2.10 Background lifecycle | ⛔ not started. Scaffolding exists in AppState (appWillForeground/appDidBackground). | | Phase 2 iOS — T-2.10 Background lifecycle | **done** 2026-05-17. AppState.lifecycleTransitions publisher, SessionConnection suspend/resume w/ ResumeCursor, stale-frame freeze, post-Face-ID reconnect. 22 lifecycle tests + 6 follow-up. TDD pattern: tests → impl → review → fixup (B-1 + 3 nits + 4 coverage gaps). |
| Phase 2 iOS — T-2.11 Face-ID + Settings | ✅ **done** 2026-05-16. SettingsView, FaceIDGate, LockView. | | Phase 2 iOS — T-2.11 Face-ID + Settings | ✅ **done** 2026-05-16. SettingsView, FaceIDGate, LockView. |
| Phase 2 iOS — T-2.12 TestFlight | ⛔ not started. Needs Apple credentials. | | Phase 2 iOS — T-2.12 TestFlight | ⛔ not started. Needs Apple credentials. |
| Phase 2 iOS — T-2.13 MVP smoke | ⛔ not started. | | Phase 2 iOS — T-2.13 MVP smoke | ⛔ not started. |
@ -46,16 +46,11 @@ Branches on remote `git.vpsj.de/jay/pi-remote-ios`:
### Phase 2 remaining ### Phase 2 remaining
- **T-2.10 Background lifecycle.** App-foreground triggers reconnect + delta
pull, stale-frame freezes during sync, keep-alive ping in foreground
only. Partial scaffolding exists in `AppState` (appWillForeground /
appDidBackground are used by Face-ID gate). Touches:
`Sources/Core/Sessions/SessionConnection.swift`, `Sources/App/AppState.swift`.
- **T-2.7 PreConnectPool.** Hot WS per known session + cached last frame; - **T-2.7 PreConnectPool.** Hot WS per known session + cached last frame;
switching shows the cached frame instantly with a "syncing…" pill. switching shows the cached frame instantly with a "syncing…" pill.
Touches: `Sources/Core/Sessions/PreConnectPool.swift` (new), Touches: `Sources/Core/Sessions/PreConnectPool.swift` (new),
`Sources/Core/Sessions/SessionConnection.swift`. Conflict risk with T-2.10 `Sources/Core/Sessions/SessionConnection.swift`. Now safe to schedule
— sequence them. after T-2.10's lifecycle hooks landed.
- **T-2.12 TestFlight pipeline.** Build / archive / upload scripts + - **T-2.12 TestFlight pipeline.** Build / archive / upload scripts +
internal testers list. Verify production APNs path. Needs Apple internal testers list. Verify production APNs path. Needs Apple
Developer credentials (paid program). Touches: `docs/DISTRIBUTION.md`, Developer credentials (paid program). Touches: `docs/DISTRIBUTION.md`,

View File

@ -39,7 +39,7 @@ The point: no central scheduler is required. A short structured edit on
| Phase 0 — Spike Stream | done | ✅ GREEN LIGHT with caveat: pipe-pane unreliable. See `reference/PHASE-0-report.md`. | | Phase 0 — Spike Stream | done | ✅ GREEN LIGHT with caveat: pipe-pane unreliable. See `reference/PHASE-0-report.md`. |
| Phase 0.5 — Spike tmux Control Mode | done | ✅ VERDICT: Path B (control mode) recommended. See `reference/PHASE-0.5-report.md`. | | Phase 0.5 — Spike tmux Control Mode | done | ✅ VERDICT: Path B (control mode) recommended. See `reference/PHASE-0.5-report.md`. |
| Phase 1 — Sidecar | **done** | All T-1.0..T-1.10 implemented. Smoke 22/22 green (incl. POST /pair). Follow-up fixes on main: WS keys handler, POST /sessions shape, control-mode encoding. | | Phase 1 — Sidecar | **done** | All T-1.0..T-1.10 implemented. Smoke 22/22 green (incl. POST /pair). Follow-up fixes on main: WS keys handler, POST /sessions shape, control-mode encoding. |
| Phase 2 — iOS MVP | **in progress** | T-2.0..T-2.6, T-2.8, T-2.9, T-2.11 on main. Bonus: XCUITest target + idb automation docs. Open: T-2.7, T-2.10, T-2.12, T-2.13. Repo: `pi-remote-ios`. | | Phase 2 — iOS MVP | **in progress** | T-2.0..T-2.6, T-2.8, T-2.9, T-2.10, T-2.11 on main. Bonus: XCUITest target + idb automation docs. Open: T-2.7, T-2.12, T-2.13. Repo: `pi-remote-ios`. |
| Phase 3 — iOS Augmentation | blocked on Phase 2 | Continuous after MVP ships. | | Phase 3 — iOS Augmentation | blocked on Phase 2 | Continuous after MVP ships. |
Update the **Status** column when a phase transitions. Allowed states: Update the **Status** column when a phase transitions. Allowed states: