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
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
c6a86dd220
feat(web): wire ToastProvider from @bytelyst/ui into NoteLett providers
2026-03-29 00:12:47 -07:00
saravanakumardb1
d3bfc0c538
fix(web): add next/navigation mock to AppShell test after client component conversion
2026-03-29 00:09:55 -07:00
saravanakumardb1
89edf59a4e
fix(web): wire responsive sidebar — add toggle to AppShell, open prop on Sidebar, CSS !important overrides
2026-03-29 00:03:27 -07:00
saravanakumardb1
e362f2aefe
feat(web): add responsive sidebar CSS breakpoints for mobile
2026-03-28 23:30:02 -07:00
saravanakumardb1
7ee0c6d481
fix(web): add interactive hover/active states for buttons and links
2026-03-28 23:20:59 -07:00
saravanakumardb1
619b27103b
fix(web): add id=main-content to main element for skip-link target
2026-03-28 00:51:29 -07:00
saravanakumardb1
36a95609ff
chore(design-system): add responsive sidebar CSS breakpoints (768px collapse)
2026-03-28 00:50:31 -07:00
saravanakumardb1
0db213af1c
fix(web): add skip-to-content link for WCAG keyboard accessibility
2026-03-28 00:46:50 -07:00
saravanakumardb1
926c3b4b12
fix(web): add prefers-reduced-motion media query for accessibility
2026-03-28 00:38:47 -07:00
saravanakumardb1
8e26b91ae1
fix(web): wire next/font CSS variables into product font-family declarations
2026-03-28 00:34:22 -07:00
saravanakumardb1
7a032be9e3
fix(web): add sr-only, prefers-color-scheme, and next/font canonical fonts
2026-03-28 00:25:57 -07:00
saravanakumardb1
0f56b12f3c
feat(a11y): add semantic <main> landmark to app layout
2026-03-27 16:43:55 -07:00
saravanakumardb1
4905e351e2
feat(design-system): add use-theme hook for dark/light toggle
2026-03-27 16:39:22 -07:00
saravanakumardb1
bc8c120145
feat(design-system): add focus-visible CSS for keyboard accessibility
2026-03-27 16:36:21 -07:00
saravanakumardb1
99292bdb1d
feat(design-system): add not-found, error, loading pages
2026-03-27 16:34:37 -07:00
saravanakumardb1
90dd2d3bd5
feat(repo): migrate notelett workspace to pnpm
2026-03-22 15:50:54 -07:00
saravanakumardb1
8fdc7b57d0
fix(web): add --nl-* CSS token aliases — previous rename broke all styling since vars had no definitions
2026-03-21 20:48:35 -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
85968e7b2a
fix(web): replace --ml-* (MindLyst) with --nl-* (NoteLett) CSS namespace across 18 files
2026-03-21 20:18:44 -07:00
saravanakumardb1
f95ba73c31
feat(web): upgrade feature-flag-client to SSE streaming + getValue()
2026-03-21 17:41:58 -07:00
saravanakumardb1
4a5a782333
refactor(web): migrate telemetry + diagnostics to createWebTelemetry/createWebDiagnostics
...
- telemetry.ts: 35 → 13 lines via createWebTelemetry()
- diagnostics.ts: 43 → 16 lines via createWebDiagnostics()
- 14/14 web tests pass, typecheck clean
2026-03-20 18:54:07 -07:00
saravanakumardb1
e5535252c7
feat(backend+web): note summarization + export endpoints [B3, B6]
...
- backend: POST /notes/:id/summarize — calls extraction-service, stores summary artifact
- backend: GET /notes/export — JSON + Markdown format support
- backend: extraction-client.ts for extraction-service integration
- backend: 4 new integration tests (summarize, export JSON, export MD, invalid format)
- web: summarizeNote + exportNotes client functions
- web: Summarize button on note detail page
- web: Export Notes button on workspaces page
- web: exclude e2e/ from vitest config
- Total: 80 backend, 14 web, 23 mobile = 117 tests
2026-03-19 08:59:26 -07:00
saravanakumardb1
a3267e4b1b
feat(web+backend): add create note, archive/restore, link note flows [B1, B2, B8]
...
- backend: add POST /notes/:id/restore endpoint (mirrors archive pattern)
- web: CreateNoteModal component (workspace picker, title, body, tags)
- web: LinkNoteModal component (search, select, relationship type picker)
- web: Dashboard 'New Note' button + CreateNoteModal integration
- web: Note detail Archive/Restore buttons + LinkNote button
- web: 4 CreateNoteModal tests + 4 LinkNoteModal tests
- backend: 1 restore integration test
- Total: 76 backend tests, 14 web tests
2026-03-19 08:44:39 -07:00
saravanakumardb1
ee586065dd
refactor(web+backend): consolidate types, optimize N+1 queries [D1, A3, A4, D2]
...
- types.ts: consolidate NoteDoc, WorkspaceDoc, NoteAgentActionDoc etc. from client files
- notes-client.ts: import from types.ts, optimize getNoteDetail with direct GET /notes/:id
- review-client.ts: import from types.ts, use /note-agent-actions/pending (eliminates N+1)
- notes-client.ts: use /workspaces/summaries (eliminates fetch-all-notes for counts)
- backend: add GET /workspaces/summaries with noteCount per workspace
- backend: add GET /note-agent-actions/pending (cross-workspace)
- backend: add countNotesByWorkspaces + listPendingActions repository functions
- Add createNote, archiveNote, restoreNote, createNoteRelationship client functions
- Fix existing tests for new route counts and mock order
2026-03-19 07:32:54 -07:00
saravanakumardb1
dbb1a84dba
fix(web): lazy-init extraction + blob clients, add use-client to notes-client
...
- extraction-client.ts: lazy singleton (SSR crash fix) [A1]
- blob-client.ts: lazy singleton + remove dead re-export [A1]
- notes-client.ts: add "use client" directive [A6]
- next.config.ts: add output: "standalone" [A2]
- Delete mock-data.ts and review-data.ts (dead code) [D3, D4]
2026-03-19 07:20:28 -07:00
saravanakumardb1
4da42b2d27
fix(web): wrap search + workspaces pages in Suspense for useSearchParams prerendering
2026-03-12 17:18:12 -07:00
saravanakumardb1
b651210edc
chore(web): remove unused PRODUCT_ID import from notes-client
...
Stale import left behind after extracting API client factory to api-helpers.ts.
2026-03-10 19:56:27 -07:00
saravanakumardb1
420945e081
fix(web): stabilize useKeyboardShortcuts with ref-based callback
...
- Use useRef to hold shortcuts array, read from ref inside event handler
- Event listener registered once on mount (empty deps), avoids re-subscription
when callers forget to memoize the shortcuts array
- Prevents subtle memory leak from rapid add/remove of keydown listeners
2026-03-10 19:54:50 -07:00
saravanakumardb1
c2202e9e52
refactor(web): extract shared API client factory, fix types, use crypto.randomUUID
...
- Created api-helpers.ts with shared getAccessToken() + createNotesApiClient()
- Removed duplicate API client factory from notes-client.ts, review-client.ts,
saved-views-client.ts (3 copies → 1 shared module)
- Added reviewedBy/reviewedAt/reviewNote fields to review-client NoteAgentActionDoc
type to match backend response shape
- Search page: use crypto.randomUUID() for saved view IDs instead of Date.now()
to prevent collisions on rapid saves
Verification: web typecheck + 6/6 tests pass.
2026-03-10 19:53:45 -07:00
saravanakumardb1
12d90098eb
feat(web): saved views CRUD, keyboard shortcuts, debounced search
...
- saved-views-client.ts: full CRUD client for backend saved-views module
- use-keyboard-shortcuts.ts: reusable hook for global keyboard shortcuts
- KeyboardShortcuts.tsx: wired into (app) layout — Cmd+K search, Cmd+N workspaces, Cmd+Shift+D dashboard, Cmd+Shift+R reviews, Esc blur
- use-debounce.ts: shared debounce hook (replaces inline setTimeout in search)
- Search page: saved views loaded from backend with save/delete UI
- Search page: search debounced at 250ms via useDebounce hook
- Updated search page test to mock saved-views-client and useDebounce
Verification: web typecheck + 6/6 tests pass.
2026-03-10 19:39:28 -07:00
saravanakumardb1
ca3cdbad4e
feat(web): wire full review UX — batch select, review notes, batch approve/reject
...
- Reviews page: batch selection mode with Select All / Clear
- Reviews page: batch Approve N / Reject N buttons
- Reviews page: review note textarea shared by single + batch flows
- review-client.ts: added batchReviewItems() calling POST /batch-review
- review-client.ts: approve/reject now pass reviewNote to backend
- Clears review note + batch selection after successful action
Verification: web typecheck passes.
2026-03-10 19:35:40 -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
196b2106d8
feat(web): add blob upload/download client for artifact management
...
- getArtifactUploadUrl() — SAS URL with write permissions
- uploadArtifact() — direct browser-to-blob upload via SAS
- downloadArtifact() — fetch blob content via SAS read URL
- Uses platform-service /blob/sas endpoint for SAS token generation
Verification: web typecheck passes.
2026-03-10 18:58:25 -07:00
saravanakumardb1
8755661049
feat(web): wire feature-flag and kill-switch platform clients
...
- Added @bytelyst/feature-flag-client and @bytelyst/kill-switch-client deps
- Created web/src/lib/feature-flags.ts — poll-based flag client (fail-open)
- Created web/src/lib/kill-switch.ts — kill-switch check client (fail-open)
- Telemetry, diagnostics, extraction were already wired
Verification: web typecheck + 6 tests pass.
2026-03-10 18:56:14 -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
8a1b79c4e4
fix(notes): link recent note tags
2026-03-10 18:21:32 -07:00
saravanakumardb1
fa87efd13b
fix(notes): link search result filters
2026-03-10 18:17:13 -07:00
saravanakumardb1
758d5d42a4
fix(notes): link note review state
2026-03-10 18:12:23 -07:00
saravanakumardb1
260428d6f3
fix(notes): link workspace filters
2026-03-10 18:08:16 -07:00
saravanakumardb1
6d72561b30
fix(notes): link note metadata
2026-03-10 18:04:15 -07:00
saravanakumardb1
2a9f49048d
fix(notes): link dashboard metrics
2026-03-10 17:58:51 -07:00
saravanakumardb1
22df6d956f
fix(notes): activate workspace saved views
2026-03-10 17:53:32 -07:00
saravanakumardb1
88c11c25f2
fix(notes): activate saved searches
2026-03-10 17:49:02 -07:00
saravanakumardb1
99bc7a93ba
fix(notes): link review workflows
2026-03-10 17:43:57 -07:00
saravanakumardb1
6222fdaaa0
fix(notes): link dashboard workflows
2026-03-10 17:38:49 -07:00
saravanakumardb1
5ce940110f
fix(notes): select review queue items
2026-03-10 17:34:47 -07:00
saravanakumardb1
437651965e
fix(notes): remove hardcoded sidebar note
2026-03-10 17:30:11 -07:00
saravanakumardb1
99484a5636
feat(notes): connect dashboard saved views
2026-03-10 17:23:23 -07:00
saravanakumardb1
9f2670ca8e
fix(notes): link dashboard note activity
2026-03-10 17:14:24 -07:00
saravanakumardb1
ab159501fa
fix(notes): activate workspace filtering
2026-03-10 16:49:32 -07:00
saravanakumardb1
4748ed32a6
feat(notes): wire backend note search
2026-03-10 16:44:27 -07:00
saravanakumardb1
5458090523
fix(notes): align active surface copy
2026-03-10 16:36:10 -07:00
saravanakumardb1
c99390e586
feat(notes): add web task creation flow
2026-03-10 16:25:16 -07:00
saravanakumardb1
ef82747e4f
feat(notes): add web artifact creation flow
2026-03-10 16:19:36 -07:00
saravanakumardb1
cdc03e3541
feat(notes): persist web note edits
2026-03-10 16:14:22 -07:00
saravanakumardb1
1bb220b2eb
feat(notes): enable web review decisions
2026-03-10 16:07:13 -07:00
saravanakumardb1
5995b6c725
feat(notes): wire backend-backed note workspace slice
2026-03-10 15:53:57 -07:00
saravanakumardb1
5f3b32bb93
test(web): cover integrated note runtime
2026-03-10 13:03:43 -07:00
saravanakumardb1
a7c362a9fc
feat(web): enrich note detail with extraction
2026-03-10 12:56:45 -07:00
saravanakumardb1
be3b439621
feat(web): back artifact viewing with blob sas
2026-03-10 12:50:32 -07:00
saravanakumardb1
2fac1ba913
fix(web): align diagnostics platform config
2026-03-10 12:40:41 -07:00
saravanakumardb1
8bf0bb5452
feat(web): back review surfaces with backend data
2026-03-10 12:35:16 -07:00
saravanakumardb1
8340b1d489
feat(web): align notes runtime with backend
2026-03-10 12:22:39 -07:00
saravanakumardb1
8174962ef1
fix(config): align notes product identity across web and mobile
2026-03-10 11:45:59 -07:00
saravanakumardb1
3ddfa25acb
fix(web): harden shell routes and add regression coverage
2026-03-10 10:34:31 -07:00
saravanakumardb1
98144ab4ff
test(web): add shell and navigation coverage
2026-03-10 09:28:14 -07:00
saravanakumardb1
c3831176a6
feat(web): harden shell keyboard navigation
2026-03-10 09:14:33 -07:00
saravanakumardb1
c517375e39
feat(web): add dense search and operator shells
2026-03-10 09:05:48 -07:00
saravanakumardb1
4fb859c81c
feat(notes): scaffold product surfaces and backend MCP slices
2026-03-10 08:53:07 -07:00