learning_ai_notes/docs/roadmaps/04_MOBILE_ROADMAP.md

115 lines
5.9 KiB
Markdown

# Mobile Roadmap
Status: In Progress
Parent: `docs/ROADMAP.md`
Stack: React Native + Expo + TypeScript
# Phase M0 — Scaffold
- [x] Create Expo app structure
- [ ] Defer direct `@bytelyst/react-native-platform-sdk` adoption until shared SDK parity is ready
- [ ] Wire `@bytelyst/api-client`
- [x] Wire `@bytelyst/platform-client`
- [x] Wire `@bytelyst/offline-queue`
- [x] Import generated RN tokens
- [x] Create navigation shell
- [x] Define screen map
# Phase M1 — Core MVP
- [x] Auth flow
- [x] Home / recent notes screen
- [x] Note detail screen
- [x] Quick capture flow
- [x] Search screen
- [x] Notifications/inbox placeholder if needed
- [x] Connect notes/workspaces API client scaffold
# Phase M2 — Product Utility
- [x] Lightweight local editing
- [ ] Notification handling
- [ ] Offline queue / sync polish (`@bytelyst/sync` deferred; see `../MOBILE_SYNC_DECISION.md`)
- [x] Approvals inbox scaffold if in MVP scope
- [x] Basic artifact metadata viewing scaffold if in MVP scope
# Phase M3 — Agent / Approval Utility
- [x] Approval/reject actions scaffold
- [x] Lightweight agent activity feed scaffold
- [x] Mobile-friendly review surfaces scaffold for simple actions
# Phase M4 — Hardening
- [x] Smoke tests documented in [`../MOBILE_PRODUCTION_BUILD_AND_SMOKE.md`](../MOBILE_PRODUCTION_BUILD_AND_SMOKE.md)
- [x] Error-state polish
- [x] Build/compile verification
- [x] Token compliance review
- [ ] Offline behavior review
# High-Collision Areas
- [x] root navigation setup
- [x] auth bootstrap files
- [x] token/theme entrypoints
- [x] shared API client wrappers
# Done When
- [x] Mobile is useful for scaffolded capture and retrieval
- [x] Mobile supports lightweight local editing and approval scaffolds for MVP
- [x] Mobile does not try to duplicate dense web-only workflows
# Progress Notes
- 2026-03-10 — Mobile workstream moved from draft-only planning into initial implementation.
- `learning_ai_notes/mobile/` was scaffolded from scratch with Expo + TypeScript.
- Root app config now exists: `package.json`, `app.json`, `tsconfig.json`, `index.ts`, `babel.config.js`.
- Expo Router shell now exists with auth entry, tab layout, home/recent notes, search, quick capture, inbox, and note detail routes.
- Shared mobile bootstrap files now exist for:
- `@bytelyst/auth-client`
- `@bytelyst/platform-client`
- `@bytelyst/offline-queue`
- token-based theme wiring via `@bytelyst/design-tokens/tokens.json`
- Zustand-backed auth, notes, and workspace stores were added for first-pass mobile state management.
- Home/search/capture now use active workspace context for more useful mobile browsing.
- Home now includes a workspace retrieval summary block to make the mobile surface more useful at a glance.
- Note detail now supports lightweight editing against persisted notes plus basic artifact metadata viewing.
- Note detail now exposes first-pass loading-state polish.
- Inbox now supports simple approval/reject flows and a lightweight activity feed.
- Capture now surfaces offline queue readiness details for the current mobile scaffold.
- Home and search now expose first-pass loading and empty-state polish.
- Mobile dependency install now succeeds, and `npm run typecheck`, `npm run lint`, and `npm test` pass in `mobile/`.
- Mobile now uses token-backed placeholder and border colors instead of raw hardcoded fallbacks.
- Expo now boots locally, and `tsconfig.json` was aligned to extend `expo/tsconfig.base`.
- Mobile core Expo package versions were aligned to the SDK 55 expectations surfaced during runtime startup.
- Expo production build notes and iOS/Android simulator/device smoke checklist now live in `docs/MOBILE_PRODUCTION_BUILD_AND_SMOKE.md`.
- Mobile currently uses provisional product config, but the core quick-capture and note retrieval/edit slice is now wired to the product backend.
- Quick capture now persists notes through the product backend instead of saving local-only drafts (`5995b6c`).
- Quick capture now exposes live workspace selection directly on the capture screen (`8e57799`).
- Mobile home now supports an explicit all-workspaces note view, and capture now requires a workspace before save when none is active (`7d23793`).
- Inbox approvals/activity now hydrate from backend `note-agent-actions`, and approve/reject actions now patch the real backend review state (`8f14698`).
- Mobile review actions now disable while approve/reject mutations are in flight (`7a80094`).
- Mobile note detail now reflects persisted workspace/status/updated-at data instead of scaffold-era placeholder metadata (`2a93b5b`).
- Mobile note save now awaits the persisted update before exiting edit mode (`5458090`).
- Re-verified the current mobile slice with:
- `npm run typecheck`
# Open Questions
- ~~Should the current provisional bootstrap values be treated as final?~~ **Resolved:** `productId: notelett`, port 4016, domain `notelett.app`
- ~~What are the final iOS bundle identifier, Android package name, and URL scheme/domain values?~~ **Resolved:** iOS `com.bytelyst.notelett`, Android `com.notelett.app`, scheme `notelett`
- Should mobile notes access go directly to the product backend for note CRUD while auth remains on `platform-service`?
- Should the current local approval/activity model map directly to backend `note-agent-actions`, or stay as a mobile-specific condensed surface?
# Blockers
- `@bytelyst/react-native-platform-sdk` direct adoption is deferred for the production-readiness handoff; mobile currently uses direct shared `@bytelyst/*` clients. See [`../MOBILE_PLATFORM_SDK_DECISION.md`](../MOBILE_PLATFORM_SDK_DECISION.md).
- ~~Product identity and backend contract details remain provisional in the planning docs, so mobile config values are placeholders.~~ **Resolved:** NoteLett identity and backend URLs are now canonical.
# Deferred
- Real notification handling
- Offline queue flush/retry integration against live APIs
- Real backend persistence for approvals and activity