Commit Graph

250 Commits

Author SHA1 Message Date
6dc5464dd5 docs: add WEB_AI_FAST_ROADMAP and index cross-links
- New phased plan for web (command palette, autosave, saved views, task scan,
  context packs, semantic search, copilot, MCP onboarding, sharing, polish)
- Link from AGENT_TASK_ROADMAP; index entry in ROADMAP.md
- Fix task-summary table total row; rename meta sections to avoid clash with Phase N

Made-with: Cursor
2026-03-31 12:50:21 -07:00
85292b61dc docs(mobile): checkboxes for auth-gated hydrates, telemetry flush, tests
- AGENT_TASK_ROADMAP: Current State + remaining gaps
- MOBILE_DELEGATION: Remaining/deferred table, Block A/G/H, audit follow-up

Made-with: Cursor
2026-03-31 01:51:11 -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
4ee604be76 docs(mobile): post-review gaps in AGENT + MOBILE_DELEGATION roadmaps
- AGENT_TASK_ROADMAP: mobile summary row, dated bump, ordered gap list → blocks
- MOBILE_DELEGATION_ROADMAP: post-review checklist table + NomGap SDK note

Made-with: Cursor
2026-03-31 01:36:57 -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
cfcb25e379 docs(mobile): add post-completion audit summary to MOBILE_DELEGATION_ROADMAP
- Document 7 bugs/gaps found and fixed during systematic review of blocks A–H
- Note remaining blocks F and I as deferred/optional
2026-03-31 01:19:41 -07:00
saravanakumardb1
6acd1a70d4 fix(backend): fix trackEvent call signature and route registration tests
- auth.ts: type requireWriter param as { headers: { authorization?: string } } instead of unknown
- notes/routes.ts: fix 3 trackEvent calls from object form to positional args (event, userId, properties)
- workspaces/routes.ts: fix 1 trackEvent call from object form to positional args
- 5 route registration tests: add missing delete mock to app object for Phase 2 DELETE endpoints
2026-03-31 01:00:32 -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
a761ec9ee0 docs(mobile): update roadmap with Block H completion and commit links 2026-03-31 00:44:03 -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
5f231816bd docs(mobile): mark block G done with commit link 2026-03-31 00:24:48 -07:00
saravanakumardb1
e4683ad695 fix(mobile): complete block G metadata and accessibility 2026-03-31 00:23:57 -07:00
saravanakumardb1
a9172e4230 docs(mobile): mark block E done with commit link 2026-03-31 00:18:58 -07:00
saravanakumardb1
5d8216066a feat(mobile): wire offline queue enqueue and flush 2026-03-31 00:17:41 -07:00
saravanakumardb1
c37d6443f4 docs(mobile): mark block D done with commit link 2026-03-31 00:11:38 -07:00
saravanakumardb1
746cba74ff feat(mobile): add settings tab with feedback client 2026-03-31 00:10:50 -07:00
saravanakumardb1
d26d9946b3 docs(mobile): mark block C done with commit link 2026-03-31 00:04:03 -07:00
saravanakumardb1
48896ab879 feat(mobile): integrate broadcast and survey clients 2026-03-31 00:03:20 -07:00
saravanakumardb1
97c9eaed24 docs(mobile): mark block B done with commit link 2026-03-30 23:58:37 -07:00
saravanakumardb1
acdedbcb9a feat(mobile): add kill switch gate in root layout 2026-03-30 23:58:03 -07:00
saravanakumardb1
8162a086d1 docs(mobile): mark block A done with commit link 2026-03-30 23:56:56 -07:00
saravanakumardb1
ae0a481504 feat(mobile): complete block A auth session flow 2026-03-30 23:56:18 -07:00
8aff92d6b2 docs(mobile): add MOBILE_DELEGATION_ROADMAP for NoteLett
- Sequential blocks A–I (auth, kill switch, broadcast/survey, feedback,
  offline queue, blob, health, RNTL, optional sync) with file paths under mobile/
- Cross-link from AGENT_TASK_ROADMAP Current State section

Made-with: Cursor
2026-03-30 23:48:38 -07:00
root
105ae3493a fix(web): prepare Vercel build and standalone runtime 2026-03-31 06:05:16 +00:00
a493e83ae4 fix: correct BroadcastBanner and SurveyBanner API usage
BroadcastBanner: use {messages} destructure from listMessages(),
replace broken pollMessages callback with manual setInterval refetch,
use real InAppMessage type from @bytelyst/broadcast-client.

SurveyBanner: destructure {survey} from getActiveSurvey(), replace
broken pollSurveys callback with manual setInterval, pass typed
QuestionAnswer objects to submitAnswer() instead of raw strings,
align question type rendering with actual API types (single_choice,
rating, nps, text_short, text_long, etc).

Made-with: Cursor
2026-03-29 22:10:07 -07:00
fbd299d386 docs: update roadmap — mark Phase 4 and 5 complete with commit links
Made-with: Cursor
2026-03-29 20:58:02 -07:00
02bcb0d122 feat: integrate feedback, broadcast, survey, offline-queue clients + settings page + devops
Phase 4: Add @bytelyst/feedback-client, broadcast-client, survey-client, offline-queue
wrappers. Revamp settings page with profile, password change, feedback form.
Add BroadcastBanner and SurveyBanner to app layout. Wire offline queue flush on boot.

Phase 5: Fix .env.example branding (NoteLett), update docker-compose with all env vars,
enable GitHub Actions CI workflow with lint steps.

Made-with: Cursor
2026-03-29 20:57:27 -07:00
a5b0a89527 feat: add Pagination component, file upload, fix N+1, remove unused deps
Phase 3 (Web UX Polish) of the execution roadmap:
- Add reusable Pagination component for list views
- Fix getNoteDetail to avoid fetching all notes when workspaceId is unknown
- Add file upload button to ArtifactPanel using uploadArtifact() from blob-client
- Remove unused zustand and zod from web dependencies
- SSR safety already addressed via existing lazy-init patterns

Made-with: Cursor
2026-03-29 20:49:13 -07:00
8d84bcb841 feat: add DELETE endpoints, role enforcement, telemetry and feature flags
Phase 2 of the execution roadmap:
- Add DELETE endpoints for notes (soft-delete), workspaces, tasks, artifacts, relationships
- Add requireWriter() role enforcement on all write routes (POST/PATCH/DELETE)
- Activate trackEvent() telemetry on note.created, note.updated, note.archived, workspace.created
- Gate notes search behind isFeatureEnabled('notes.enabled')
- Update all test mocks to include role and new auth exports

Made-with: Cursor
2026-03-29 20:47:12 -07:00
839218a19c feat: add auth pages, AuthGuard, Tiptap editor, workspace CRUD, toast notifications
Phase 1 of the execution roadmap:
- Build login, register, forgot-password pages using useAuth() from @bytelyst/react-auth
- Add AuthGuard with kill-switch check wrapping (app) routes
- Replace plain textarea NoteEditor with Tiptap rich text editor
- Add workspace create/delete with CreateWorkspaceModal
- Wire sonner toast notifications on all mutation handlers

Made-with: Cursor
2026-03-29 20:38:33 -07:00
7babee791d feat: replace broken @bytelyst/ui with sonner, adopt dashboard-components, use @bytelyst/extraction
Phase 0.5 of the execution roadmap:
- Remove phantom @bytelyst/ui dep, add sonner for toast notifications
- Replace custom error.tsx, not-found.tsx, loading.tsx with @bytelyst/dashboard-components
- Replace raw extraction-client.ts with @bytelyst/extraction createExtractionClient()
- Add @bytelyst/dashboard-components and @bytelyst/extraction to transpilePackages

Made-with: Cursor
2026-03-29 20:33:33 -07:00
f308a362fd fix(docs): correct agent task roadmap after codebase verification
- Add Phase 0: 5 backend @bytelyst/* packages missing from common_plat
  (backend-config, backend-flags, backend-telemetry, fastify-auth,
  field-encrypt) — shared blocker with NomGap
- Remove dead-code deletion task: mock-data.ts and review-data.ts
  already do not exist
- Flag stale .env.example product identity (agentic-notes → notelett)
- Note that Gitea CI is already active alongside disabled GitHub CI
- Update task counts (28 → 32) and effort estimates

Made-with: Cursor
2026-03-29 19:25:38 -07:00
6be7ee470f docs: add agent task roadmap for delegated execution
Systematic review identified 28 tasks across 6 phases covering
auth UI, backend hardening, web UX polish, MCP wiring, and DevOps.

Made-with: Cursor
2026-03-29 19:21:29 -07:00
saravanakumardb1
3fdd2d0bca fix: add missing @playwright/test devDep for E2E CI 2026-03-29 11:05:59 -07:00
saravanakumardb1
5be6a18813 ci: fix YAML formatting — normalize blank lines 2026-03-29 11:04:16 -07:00
saravanakumardb1
c0a33473f4 chore: update dependencies 2026-03-29 10:50:57 -07:00
saravanakumardb1
d6cf0d1265 chore: add .nvmrc pinning Node 22 2026-03-29 10:48:30 -07:00
saravanakumardb1
360ef367d0 fix(a11y): add confirmation dialog for saved view delete 2026-03-29 01:57:19 -07:00
saravanakumardb1
00fd39f594 fix(tokens): remove duplicate hand-written token block — now imported via design-tokens pkg 2026-03-29 01:54:46 -07:00
saravanakumardb1
275f966441 fix(tokens): import product-specific notelett tokens instead of generic base 2026-03-29 01:49:41 -07:00
saravanakumardb1
a75c22b5c0 docs(agents): add @bytelyst/ui and @bytelyst/design-tokens to AGENTS.md 2026-03-29 01:44:00 -07:00
saravanakumardb1
547031531b feat(settings): add dark/light theme toggle to Settings page 2026-03-29 01:33:01 -07:00
saravanakumardb1
82ede5a107 fix(web): add Next.js module mocks for Vitest — all 14 tests pass (was 10/14) 2026-03-29 01:03:11 -07:00
saravanakumardb1
e716ca1ef6 fix(e2e): fix escaped backticks in visual-regression template literals 2026-03-29 01:01:13 -07:00
saravanakumardb1
c6a86dd220 feat(web): wire ToastProvider from @bytelyst/ui into NoteLett providers 2026-03-29 00:12:47 -07:00