Commit Graph

47 Commits

Author SHA1 Message Date
saravanakumardb1
37d7284730 feat(mobile): add Smart Actions — API client, prompt store, note detail integration
Phase 4 of Smart Actions Roadmap:

- Create mobile/src/api/note-prompts.ts: typed API client
  - listPromptTemplates, runPrompt, suggestTags, getReadingTime
- Create mobile/src/store/prompt-store.ts: Zustand store
  - fetchTemplates, runPrompt, clearResult, clearError
- Enhance note detail screen (mobile/src/app/note/[id].tsx):
  - Collapsible Smart Actions section with toggle
  - Reading time display on expand
  - Suggest tags button with inline tag display
  - Prompt template list (top 6) with one-tap execution
  - ActivityIndicator during prompt execution
  - Inline result card with model/token info and dismiss
- Mobile typecheck passes
2026-04-06 08:23:55 -07:00
370e96fa45 test(mobile): settings smoke test; docs: capture points to blob-upload
- settings.test.tsx mirrors auth/home import smoke pattern
- Capture screen comment: future uploads via api/blob-upload

Made-with: Cursor
2026-03-31 01:51:07 -07:00
6620e5dabb fix(mobile): auth-gated hydrates and telemetry flush on background
- Run notes/workspace/inbox hydrate, broadcast/survey polling, and offline
  queue flush timers only when hasBootstrapped && isAuthenticated
- Split effects: kill switch, bootstrap, initPlatform, global AppState flush
- Avoid pre-auth 401s from parallel API hydrates

Made-with: Cursor
2026-03-31 01:51:05 -07:00
e920d724e4 fix(mobile): export flushTelemetry for background buffer flush
Expose telemetryClient.flush() from platform.ts for AppState wiring.

Made-with: Cursor
2026-03-31 01:51:03 -07:00
saravanakumardb1
db2874174b feat(mobile): blob upload abstraction via shared blobClient (Block F)
- Create mobile/src/api/blob-upload.ts with uploadNoteAttachment() and uploadNoteImage()
- All mobile uploads route through shared blobClient from lib/platform.ts
- No duplicate SAS logic or raw fetch paths
- Update MOBILE_DELEGATION_ROADMAP to mark Block F complete
2026-03-31 01:32:30 -07:00
saravanakumardb1
83f4953870 fix(mobile): add missing accessibilityLabels across all screens
- settings.tsx: labels on sign-out, feedback type chips, submit button
- capture.tsx: labels on workspace selection chips
- index.tsx: labels on workspace filter chips, note card pressables
- search.tsx: labels on search input, result row pressables
- note/[id].tsx: labels on edit, save, cancel buttons
2026-03-31 00:55:05 -07:00
saravanakumardb1
a4124949d1 fix(mobile): auto-dismiss queue status banner when queue is empty
- Skip flush call and clear lastFlushed when getNoteQueueSize() is 0
- Prevents stale 'Flushed on last attempt: N' persisting after queue drains
2026-03-31 00:52:24 -07:00
saravanakumardb1
c96c7855c6 fix(mobile): add error handling to store hydrate methods
- notes-store: wrap hydrate() and openNote() in try/catch to prevent isLoading stuck true
- inbox-store: wrap hydrate() in try/catch to prevent isLoading stuck true on API failure
- openNote falls back to cached list note when detail fetch fails
2026-03-31 00:51:16 -07:00
saravanakumardb1
9d3ac06234 fix(mobile): use dynamic platform in feedback, add null coercion, add Content-Type on flush
- settings.tsx: replace hardcoded platform: 'ios' with APP_PLATFORM from app-metadata
- feedback-client.ts: add ?? '' null coercion on getAuthToken (matches broadcast/survey pattern)
- offline-queue.ts: add Content-Type: application/json header on flush requests
2026-03-31 00:49:40 -07:00
saravanakumardb1
5a0175fa66 feat(mobile): add Block H — Vitest RN mock aliases + component smoke tests
- Create __mocks__/ with react-native, expo-router, expo-constants, expo-status-bar, react-native-mmkv, @testing-library/react-native
- Update vitest.config.ts with resolve aliases for all native modules
- Add AuthScreen smoke test (3 tests)
- Add HomeScreen smoke test (2 tests)
- Add @types/react-test-renderer dev dependency
- Total: 32 passing tests (27 store + 5 component)
2026-03-31 00:42:49 -07:00
saravanakumardb1
e4683ad695 fix(mobile): complete block G metadata and accessibility 2026-03-31 00:23:57 -07:00
saravanakumardb1
5d8216066a feat(mobile): wire offline queue enqueue and flush 2026-03-31 00:17:41 -07:00
saravanakumardb1
746cba74ff feat(mobile): add settings tab with feedback client 2026-03-31 00:10:50 -07:00
saravanakumardb1
48896ab879 feat(mobile): integrate broadcast and survey clients 2026-03-31 00:03:20 -07:00
saravanakumardb1
acdedbcb9a feat(mobile): add kill switch gate in root layout 2026-03-30 23:58:03 -07:00
saravanakumardb1
ae0a481504 feat(mobile): complete block A auth session flow 2026-03-30 23:56:18 -07:00
saravanakumardb1
33f9379f4a feat(docker): migrate NoteLett to Gitea registry-backed Docker pattern
- Convert all @bytelyst/* file: refs to semver ^0.1.0 (backend, web, mobile)
- Remove sibling common-plat workspace references from pnpm-workspace.yaml
- Add .npmrc and .npmrc.docker for local Gitea registry
- Rewrite backend/web Dockerfiles: pnpm + BuildKit secret mount + corp proxy
- Fix backend tsconfig.json: remove explicit lib to resolve fetch Response types
- Verified: host-side pnpm install, backend tests (86 pass), backend+web Docker builds
2026-03-23 20:11:12 -07:00
saravanakumardb1
90dd2d3bd5 feat(repo): migrate notelett workspace to pnpm 2026-03-22 15:50:54 -07:00
saravanakumardb1
304d2ae865 feat: wire feature flag checks into web Sidebar and upgrade mobile flag client 2026-03-21 20:34:16 -07:00
saravanakumardb1
dbe3988284 chore: Remove unused deps — auth-client from web, platform-client + react-native-platform-sdk from mobile 2026-03-21 00:08:17 -07:00
saravanakumardb1
0b5c224075 fix(mobile): Fix diagnostics-client API — use DiagnosticsClient.getInstance()
@bytelyst/diagnostics-client exports DiagnosticsClient class with
singleton getInstance(config), not a createDiagnosticsClient factory.
Fixed import and initialization with correct config shape.
2026-03-20 23:13:44 -07:00
saravanakumardb1
c2d641433f refactor(mobile): Phase 9B — Add @bytelyst/diagnostics-client
- Add diagnostics-client dependency to mobile/package.json
- Wire diagnosticsClient in mobile/src/lib/platform.ts

Part of Mobile DRY Refactoring Roadmap Phase 9B.
2026-03-20 22:50:09 -07:00
saravanakumardb1
dd62d3bf5c test(web+mobile): Playwright E2E scaffold + 23 mobile store tests [C4, B7]
- web: playwright.config.ts + e2e/navigation.spec.ts (7 navigation tests, scaffolded)
- web: exclude e2e/ from tsconfig (playwright not yet installed as dep)
- mobile: notes-store.test.ts (7 tests: hydrate, openNote, saveDraft, updateNote)
- mobile: workspace-store.test.ts (5 tests: hydrate, preserve/reset active, set/clear)
- mobile: inbox-store.test.ts (5 tests: hydrate, approve, reject, unknown id guards)
- mobile: auth-store.test.ts (6 tests: bootstrap, signIn, signOut, failure paths)
- Total: 76 backend, 14 web, 23 mobile = 113 tests
2026-03-19 08:51:36 -07:00
saravanakumardb1
f8a4c18f27 feat(mobile): wire review note input to inbox approve/reject
- note-agent-actions API: updateApprovalState now accepts optional reviewNote
- inbox-store: approve/reject actions pass reviewNote through to backend
- Inbox screen: TextInput for review note above approval cards
- Review note cleared after successful approve/reject

Verification: mobile typecheck passes.
2026-03-10 19:41:39 -07:00
saravanakumardb1
878c644dd8 feat(platform): wire shared platform packages into mobile + refactor web blob-client (DRY)
Phase 1 — Platform SDK integration:
- Mobile: added @bytelyst/telemetry-client, feature-flag-client, kill-switch-client, blob-client deps
- Mobile: created src/lib/platform.ts — centralized platform init (telemetry, flags, kill-switch, blob)
- Mobile: wired initPlatform() into root layout startup
- Web: refactored blob-client.ts to use shared @bytelyst/blob-client (eliminates hand-rolled SAS fetch code)
- Web: added @bytelyst/blob-client dep

DRY: Both web and mobile now use the same @bytelyst/blob-client package for blob operations.

Verification: web typecheck + mobile typecheck pass.
2026-03-10 19:29:00 -07:00
saravanakumardb1
e1fde25afd feat(identity): lock NoteLett product identity across all surfaces
- productId: notelett
- displayName: NoteLett
- domain: notelett.app
- iOS bundle: com.bytelyst.notelett
- Android bundle: com.notelett.app
- backend port: 4016
- token namespace: --nl-* (CSS), NoteLettTheme (native)

Rippled through:
- shared/product.json (canonical source)
- backend package.json, config, cosmos-init, all 10 test files
- web package.json, landing page, notes-client test
- mobile app.json, package.json, auth screen
- docs: PRD, ROADMAP, architecture review, foundations, web/mobile roadmaps
- registered in learning_ai_common_plat/products/notelett/

Verification: backend typecheck + 18 tests, web typecheck + 6 tests, mobile typecheck — all pass.
2026-03-10 18:47:01 -07:00
saravanakumardb1
7d23793728 feat(notes): support mobile all-workspace view 2026-03-10 17:09:16 -07:00
saravanakumardb1
7a8009454f fix(notes): guard mobile review actions 2026-03-10 16:59:40 -07:00
saravanakumardb1
8e577993c0 feat(notes): add mobile workspace selection 2026-03-10 16:54:17 -07:00
saravanakumardb1
5458090523 fix(notes): align active surface copy 2026-03-10 16:36:10 -07:00
saravanakumardb1
2a93b5ba40 fix(notes): align mobile note detail state 2026-03-10 16:29:06 -07:00
saravanakumardb1
8f14698a42 feat(notes): wire mobile inbox review flow 2026-03-10 16:02:08 -07:00
saravanakumardb1
5995b6c725 feat(notes): wire backend-backed note workspace slice 2026-03-10 15:53:57 -07:00
saravanakumardb1
8580ad3fc6 feat(mobile): align notes runtime with backend 2026-03-10 12:08:31 -07:00
saravanakumardb1
86e2da88eb refactor(mobile): remove placeholder platform wrappers 2026-03-10 12:01:52 -07:00
saravanakumardb1
8174962ef1 fix(config): align notes product identity across web and mobile 2026-03-10 11:45:59 -07:00
saravanakumardb1
c9a4790a1c chore(mobile): align expo runtime compatibility 2026-03-10 10:21:05 -07:00
saravanakumardb1
f5f141ddb7 fix(mobile): verify scaffold and tighten tooling 2026-03-10 10:14:22 -07:00
saravanakumardb1
6f8d70186c fix(mobile): honor auth failures and tighten selectors 2026-03-10 09:52:54 -07:00
saravanakumardb1
217ed13329 fix(mobile): type auth selectors and token placeholders 2026-03-10 09:42:46 -07:00
saravanakumardb1
cb02b85237 feat(mobile): polish note detail loading state 2026-03-10 09:36:46 -07:00
saravanakumardb1
02dea5cd80 feat(mobile): polish loading and search states 2026-03-10 09:34:57 -07:00
saravanakumardb1
02f8193b5f feat(mobile): improve home retrieval summary 2026-03-10 09:29:36 -07:00
saravanakumardb1
4da56d489d feat(mobile): add note artifact summary 2026-03-10 09:27:20 -07:00
saravanakumardb1
a10709f33a feat(mobile): surface offline queue readiness 2026-03-10 09:22:20 -07:00
saravanakumardb1
90558a5537 feat(mobile): add workspace-scoped utility flows 2026-03-10 09:09:14 -07:00
saravanakumardb1
4fb859c81c feat(notes): scaffold product surfaces and backend MCP slices 2026-03-10 08:53:07 -07:00