9ecc7c6bf5
fix(notes): preserve phase1 transcript event lineage
2026-04-03 17:40:59 -07:00
6ffc2f8755
feat(notes): import phase1 transcript artifacts
2026-04-03 16:36:54 -07:00
59d13e423e
fix(api): set JSON Content-Type on onboarding-seed
...
POST /workspaces/onboarding-seed now sends application/json so servers that require it parse the body correctly.
Made-with: Cursor
2026-03-31 13:06:00 -07:00
f8a50cdd95
feat(ui): add Workspace chat to command palette
...
Static action opens /chat for quick navigation from the palette.
Made-with: Cursor
2026-03-31 13:06:00 -07:00
32b5e1cd6c
fix(chat): empty workspace state and disabled Ask
...
Show guidance when the user has no workspaces and prevent submitting without a selected workspace.
Made-with: Cursor
2026-03-31 13:05:34 -07:00
821d9aee35
fix(share): sanitize public HTML and harden token handling
...
Add a conservative sanitizer for shared note bodies before dangerouslySetInnerHTML.
Normalize dynamic route params, reject blank tokens, and require noteId in the JSON payload so empty titles still render.
Made-with: Cursor
2026-03-31 13:05:32 -07:00
8d8540e320
fix(note-shares): treat expired shares as not found
...
findShareByToken now returns null when expiresAt is in the past, aligning the public share API with stored metadata.
Add unit tests for expiry, future expiry, missing expiry, and no match.
Made-with: Cursor
2026-03-31 13:05:30 -07:00
5e3e374d3a
fix(notes): export route order and lexical snippet ellipsis
...
Register GET /notes/export before GET /notes/:id so the path is not captured as an id.
Compute search snippets from stripped plain text so the trailing ellipsis matches visible length, not raw HTML length.
Made-with: Cursor
2026-03-31 13:05:29 -07:00
a697752d15
feat: implement WEB_AI_FAST_ROADMAP (web + backend + docs)
...
Phase 1: Command palette (⌘K), editor autosave with quiet auto-saves, dashboard
saved views from API + quick links + onboarding seed CTA, explicit task scan panel.
Phase 2: Context pack formatter with YAML frontmatter, copy on note + workspace .md export.
Phase 3: ADR for hybrid search without embeddings; POST /notes/search (lexical +
ranked hybrid); search UI mode toggle.
Phase 4: POST copilot + suggest-title; in-editor copilot actions; /chat retrieval
answers with citations (backend chat.rag_enabled).
Phase 5: Settings MCP snippet, offline queue note, API token deferral; DEEP_LINKS.md.
Phase 6: Note shares + public GET; share page; POST onboarding-seed.
Phase 7: note_versions on PATCH; version panel; create-note templates; PWA manifest.
Flags: search.hybrid_enabled, copilot.enabled, chat.rag_enabled, onboarding.seed_enabled.
Made-with: Cursor
2026-03-31 13:00:36 -07:00
1fa7e29691
docs: link PRD from WEB_AI_FAST_ROADMAP companion list
...
Made-with: Cursor
2026-03-31 12:50:26 -07:00
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