diff --git a/docs/workstreams/ALL_OTHER_WORKSTREAMS_REMAINING.md b/docs/workstreams/ALL_OTHER_WORKSTREAMS_REMAINING.md new file mode 100644 index 00000000..941ff6db --- /dev/null +++ b/docs/workstreams/ALL_OTHER_WORKSTREAMS_REMAINING.md @@ -0,0 +1,143 @@ +# All Other Workstreams — Remaining Items (Non-Mobile) + +> Last updated: 2026-02-14 +> Sources: +> +> - `learning_ai_common_plat/docs/ROADMAP.md` +> - `learning_ai_common_plat/docs/EXTRACTION_SERVICE_ROADMAP.md` +> - `learning_ai_common_plat/docs/codex/platform_and_products_refactor_2026-02-14.md` + +## Home Laptop Priority (No Proxy Issues) + +- [ ] Common platform: `cd learning_ai_common_plat && docker compose build` +- [ ] Common platform: `cd learning_ai_common_plat && docker compose up -d` +- [ ] E2E/manual login tests across dashboards (admin/user/tracker) once stack is up + +## Common Platform Extraction (`learning_ai_common_plat`) — Remaining Tasks + +Docker verification + +- [ ] **1A.23** Verify Docker builds for all 4 services still pass +- [ ] **1B.33** Verify Docker builds pass +- [ ] **2A.25** Verify Docker builds +- [ ] **2C.23** Verify Docker builds for all 4 services +- [ ] **2C.24** Verify `docker-compose up` starts all services correctly + +E2E/manual auth flow checks + +- [ ] **3B.14** Test login/logout flow manually in admin dashboard (requires running services) +- [ ] **3B.19** Test login/logout + SSO flow manually in user dashboard (requires running services) +- [ ] **3B.28** Test all login flows end-to-end across all 3 dashboards (requires running services) + +Design token follow-ups + +- [ ] **4.24** Verify visual consistency: spot-check colors in iOS preview, Android preview, and web dev server + +CI + docker compose (home network) + +- [ ] **5.16** Run `docker compose build` (was blocked by corporate proxy SSL) +- [ ] **5.17** Run `docker compose up -d` (requires 5.16) + +Full-stack verification + E2E scenarios + +- [ ] **6.9** Build MindLyst KMP (passes on home network) +- [ ] **6.12** Docker compose full stack: `docker compose up -d` -> all healthy +- [ ] **6.13** Test: Admin login -> create user -> view user list +- [ ] **6.14** Test: User login -> view profile -> update settings +- [ ] **6.15** Test: Tracker login -> create item -> add comment -> vote +- [ ] **6.16** Test: Public roadmap page -> vote -> submit idea +- [ ] **6.17** Test: Service health checks via monitoring script + +Publishing + repo hygiene + +- [ ] **7.1** Publish `@bytelyst/*` packages to GitHub Packages (private npm registry) +- [ ] **7.2** Add Changesets for automated version management and changelogs +- [ ] **7.3** Create reusable GitHub Actions workflow templates for service CI +- [ ] **7.4** Add `@bytelyst/blob` package (extract blob storage client + SAS generation) +- [ ] **7.5** Add `@bytelyst/monitoring` package (health check aggregator) +- [ ] **7.7** Evaluate Python shared package for `cosmos_client.py` + `blob_client.py` if MindLyst adds Python backend +- [ ] **7.8** Integrate `@bytelyst/design-tokens` into LysnrAI dashboards (unified design language) +- [ ] **7.9** Add pre-commit hooks to auto-run token generation when JSON changes +- [ ] **7.10** Set up Renovate/Dependabot for common-plat dependency updates + +## Extraction Service — Deferred Items + +From `learning_ai_common_plat/docs/EXTRACTION_SERVICE_ROADMAP.md` (the service is implemented; remaining items are verification/external actions): + +- [ ] Run Dockerfile build verification: `cd learning_ai_common_plat && docker build -f services/extraction-service/Dockerfile .` +- [ ] CI workflow execution: re-enable GitHub Actions billing (repo setting) so `.github/workflows/ci-extraction-service.yml` can run +- [ ] Persist extraction usage in Cosmos DB (create `extraction_usage` container + wire persistence) +- [ ] Wire Azure Blob Storage for visualization export artifacts (planned via `@bytelyst/blob`) +- [ ] Add webhook callback for async extraction jobs (push completion, not just polling) + +## Platform + Product Repo Refactor (Strategic) + +Phase 0 (Decisions + guardrails) + +- [ ] Decide the integration contract per capability: + - [ ] Cross-language: API + SDK (recommended) + - [ ] TS-only: shared package +- [ ] Decide the package distribution method: + - [ ] GitHub Packages (private npm scope) or private npm registry + - [ ] Python package distribution (private index or GitHub release artifacts) +- [ ] Define platform vs product ownership boundaries: + - [ ] What must be in platform (identity/billing/flags/notifications) + - [ ] What remains product-only (dictation UX; MindLyst brains/triage UX) + +Phase 1 (Make platform libraries release-ready) + +- [ ] Add versioning/release tooling to `learning_ai_common_plat`: + - [ ] Add Changesets (or equivalent) for `@bytelyst/*` + - [ ] Enforce semver and changelogs +- [ ] Ensure every package has: + - [ ] stable exports (`exports` field), `README.md`, minimal examples + - [ ] tests for critical primitives (auth/config/errors/cosmos) +- [ ] Add CI workflows that run on every PR: + - [ ] `pnpm -w lint`, `pnpm -w typecheck`, `pnpm -w test`, `pnpm -w build` + +Phase 2 (Publish platform packages) + +- [ ] Configure publishing for `@bytelyst/*`: + - [ ] set up registry auth (`.npmrc` in CI only) + - [ ] publish on merge to `main` with tags +- [ ] Publish initial versions (`0.1.x`) and document upgrade policy. + +Phase 3 (Decouple product repos from sibling paths) + +- [ ] In `learning_voice_ai_agent/*-dashboard-web`: + - [ ] Replace `file:` dependencies with versioned `@bytelyst/*` + - [ ] Remove any build hacks that assume `../../learning_ai_common_plat/packages/*/dist` + - [ ] Ensure `npm ci && npm run build` works with no sibling checkout +- [ ] In MindLyst web: + - [ ] (Optional) Replace local `src/lib/cosmos.ts` with `@bytelyst/cosmos` usage + +Phase 4 (Platform contracts + SDK generation) + +- [ ] Add OpenAPI specs for each platform service. +- [ ] Add generators: + - [ ] TypeScript SDK (consumed by dashboards + future clients) + - [ ] Python SDK (consumed by `learning_voice_ai_agent` desktop/backend) +- [ ] Update products to use generated clients (reduces drift and hand-written HTTP code). + +Phase 5 (Unify identity/billing across products) + +- [ ] Define the canonical identity model (users/orgs/roles/entitlements). +- [ ] Move generic endpoints out of product backends into platform services: + - [ ] Auth/token issuance and verification + - [ ] License issuance/validation + - [ ] Usage aggregation + limits + - [ ] Notifications + audit +- [ ] In product repos: + - [ ] Replace direct Cosmos access where it duplicates platform (when feasible) + - [ ] Keep product-only endpoints in a thin product service + +Phase 6 (Developer experience "golden paths") + +- [ ] Add templates: + - [ ] `create-bytelyst-service` scaffold (Fastify + packages) + - [ ] `create-bytelyst-dashboard` scaffold (Next + auth + client) +- [ ] Standardize toolchain pinning across repos: + - [ ] Node (>=20.9), pnpm version, Python (>=3.12 for LysnrAI) + - [ ] one command per repo: `./quick-check.sh` or `make check` +- [ ] Add CODEOWNERS + review rules for platform code. +- [ ] Add feature flagging discipline (flags live in platform; products consume). diff --git a/docs/workstreams/MOBILE_WORKSTREAM_REMAINING.md b/docs/workstreams/MOBILE_WORKSTREAM_REMAINING.md new file mode 100644 index 00000000..e417f0bd --- /dev/null +++ b/docs/workstreams/MOBILE_WORKSTREAM_REMAINING.md @@ -0,0 +1,139 @@ +# Mobile Workstream — Remaining Items + +> Last updated: 2026-02-14 +> Sources: +> +> - `learning_voice_ai_agent/mobile_app/common/docs/MOBILE_APP_PLAN.md` +> - `learning_multimodal_memory_agents/docs/IMPLEMENTATION_PLAN_v2.md` + +## Home Laptop Priority (No Proxy Issues) + +- [ ] LysnrAI: smoke-test the audio PoC on at least 1 real iPhone + 1 real Android device +- [ ] MindLyst: verify KMP build (iOS simulator): `cd learning_multimodal_memory_agents/mindlyst-native && ./gradlew :shared:compileKotlinIosSimulatorArm64` +- [ ] Visual consistency spot-check: design tokens across MindLyst iOS/Android/web previews + +## LysnrAI Mobile (iOS + Android) + +### Phase 1 — MVP (Finish Week 4-5) + +- [ ] Text cleanup client (Android + iOS) +- [ ] License activation flow (auth/licensing) +- [ ] Cloud sync (settings + history) +- [ ] Settings persistence (local + synced) +- [ ] Copy/share output +- [ ] Sound feedback +- [ ] Stats screen (wire UI to real data) +- [ ] Polish + bug fixes +- [ ] Device testing (Pixel 7/S24, Pixel 5, iPhone 15, iPhone 13) +- [ ] TestFlight build (internal) + metadata sanity +- [ ] Play Store internal testing track build +- [ ] Close "design mockups" item: create mocks or explicitly skip (screens already fleshed out) + +### Phase 2 — Enhanced Input + +- [ ] iOS keyboard extension +- [ ] Android input method +- [ ] Home screen widgets (both platforms) +- [ ] Android Quick Settings tile +- [ ] Haptic feedback +- [ ] Offline STT exploration + +### Phase 3 — Advanced + +- [ ] Apple Watch / Wear OS companion +- [ ] Siri Shortcuts / Google Assistant integration +- [ ] Live transcription mode (continuous, no cleanup) +- [ ] Multi-language switching +- [ ] iPad-optimized layout + +## MindLyst Native (KMP + iOS + Android) + +### Phase 0 — Setup/Infra (carryovers) + +- [ ] **P1** — GitHub Actions: Android debug build on PR (blocked: no Android SDK in CI yet) +- [ ] **P3** — Fastlane setup for iOS TestFlight + Android Play Store beta +- [ ] **P1** — Set up Stripe account for MindLyst subscriptions (separate from LysnrAI Stripe) +- [ ] Cosmos DB accessible with test read/write +- [ ] CI runs on every PR + +### Phase 1 — Capture + Triage Foundation (Week 1-2) + +Voice capture pipeline + +- [ ] **P0** — Implement microphone recording on iOS (AVAudioEngine, 16kHz mono) +- [ ] **P0** — Implement microphone recording on Android (AudioRecord, 16kHz mono) +- [ ] **P0** — Integrate Azure Speech SDK for real-time STT on iOS +- [ ] **P0** — Integrate Azure Speech SDK for real-time STT on Android +- [ ] **P1** — Upload raw audio to Azure Blob Storage after capture + +Text capture + +- [ ] **P0** — Persist raw text to `memory_items` Cosmos container (currently in-memory) + +Image/screenshot capture + +- [ ] **P0** — Camera capture button on iOS + Android +- [ ] **P0** — Upload image to Blob Storage, store reference in `memory_items` + +Triage persistence + +- [ ] **P0** — Store structured `MemoryItem` in Cosmos DB with all triage fields (currently in-memory) + +Widgets + +- [ ] **P0** — iOS WidgetKit: home screen widget with Voice/Text/Photo buttons +- [ ] **P0** — Android AppWidget: home screen widget with Voice/Text/Photo buttons +- [ ] **P1** — Widget voice capture -> STT -> triage (without opening app) +- [ ] **P1** — Haptic confirmation on successful capture +- [ ] **P2** — Lock screen widget variant (iOS 16+ Live Activities) + +Phase 1 exit criteria + +- [ ] User can capture voice, text, image, and link on iOS + Android +- [ ] Widget captures without opening app +- [ ] All data persisted to Cosmos DB + Blob Storage + +### Phase 2 — Brain Interaction + Daily Loop (Week 3-4) + +- [ ] **P0** — Voice input for brain questions (speech-to-text) +- [ ] **P1** — Spoken response (TTS) for brain answers +- [ ] **P0** — Store generated brief in `DailyBrief` Cosmos container (currently in-memory) +- [ ] **P1** — Audio brief: 30-60 second spoken summary (TTS) +- [ ] **P0** — iOS Share Extension: receive URLs, text, images from any app +- [ ] **P0** — Android Share target: receive intents for URLs, text, images +- [ ] Share sheet captures content from any app (native only) + +### Phase 3 — Weekly Reflection + Share (Week 5-6) + +- [ ] **P0** — Store in `ReflectionReport` Cosmos container (currently in-memory) +- [ ] **P1** — Audio digest: 2-minute spoken reflection (TTS) +- [ ] **P0** — Share via native share sheet (iOS/Android) + +### Phase 4 — Insights (Week 7-8) + +- [ ] **P1** — Store insights in `BrainInsight` Cosmos container (currently in-memory) + +### Phase 5 — Reliability / Performance / Privacy (Week 9-10) + +- [ ] **P1** — Widget works fully offline (queues for sync) +- [ ] **P0** — Widget capture to haptic confirmation < 1s +- [ ] **P1** — App cold start < 2s on modern devices +- [ ] **P0** — Encryption in transit (HTTPS/TLS) and at rest (Cosmos + Blob) +- [ ] **P1** — Crash reporting (Firebase Crashlytics or equivalent) + +### Phase 6 — Beta / Store Submission (Week 11-12) + +- [ ] **P0** — App Store submission (TestFlight) with all metadata +- [ ] **P0** — Google Play internal testing track +- [ ] Beta build submitted to TestFlight + Play Store +- [ ] **P0** — App Store review submission (allow 1 week for review) +- [ ] **P1** — App Store screenshots: 5 screens per device size (iPhone, iPad, Android) + +### Phase 8+ — Post-MVP Add-ons + +- [ ] **P1** — watchOS app: raise wrist -> speak -> capture +- [ ] **P1** — Morning brief glance on watch face +- [ ] **P1** — Haptic tap for forgotten item nudges +- [ ] **P2** — Complication showing streak count +- [ ] **P1** — Read-only calendar access (EventKit iOS, CalendarProvider Android) +- [ ] **P1** — `capture@mindlyst.app` email address per user