Commit Graph

111 Commits

Author SHA1 Message Date
saravanakumardb1
6095f1d985 feat(smart-actions): add prompt-result screen, capture sub-routes, Cmd+Shift+A shortcut, telemetry events (G16-G19) 2026-04-06 13:43:47 -07:00
saravanakumardb1
63ee00037e test(e2e): expand smart-actions spec to 9 tests (G15) 2026-04-06 13:36:39 -07:00
saravanakumardb1
4fd6994fb0 test(web): add prompt-client, SmartActionsPanel, RunPromptModal, NoteEditor tests (G10-G13) 2026-04-06 13:34:04 -07:00
saravanakumardb1
093da76eee feat(smart-actions): add run-stream SSE, history endpoint, weekly-digest template, web client functions (G1-G5) 2026-04-06 13:27:02 -07:00
saravanakumardb1
b8bc096adb test(smart-actions): add scheduler, webhook, copilot integration tests 2026-04-06 11:05:42 -07:00
saravanakumardb1
b424b490be fix(web): close tone dropdown on outside click
Add useRef + useEffect mousedown listener to dismiss the Change Tone
dropdown when clicking outside. Prevents stale dropdown from lingering.
2026-04-06 10:46:03 -07:00
saravanakumardb1
3260b7ea0a feat(smart-actions): F1-F4 inline editor AI, F15-F19 mobile capture modes, F25-F27 scheduler/webhooks/approval
F1-F4: Inline editor AI
- Backend: expand CopilotAction with fix-rewrite, change-tone, continue, explain
- Backend: add tone parameter to copilot route for change-tone action
- Web: copilot-client adds CopilotTone type and tone parameter
- Web: NoteEditor toolbar gains AI row with Fix & Rewrite, Change Tone dropdown,
  Continue Writing (appends at cursor), Explain (inline popover)

F15-F19: Mobile capture enhancements
- Backend: POST /note-prompts/url-extract endpoint (fetch, strip HTML, LLM summarize)
- Mobile API: extractFromUrl() and copilotTransform() client functions
- Mobile: capture tab rewritten with 6 capture modes grid (text, photo, voice,
  URL, scan, paste) — URL extract + clipboard paste fully wired, camera/voice/scan
  surface native permission prompts (require expo-av/expo-image-picker)
- expo-clipboard added as dependency

F25-F27: Scheduled actions, webhook triggers, approval-gated actions
- New scheduler.ts module with PromptScheduleDoc + PromptWebhookDoc types
- Schedule CRUD: GET/POST/PATCH/DELETE /prompt-schedules
- Webhook CRUD: GET/POST/PATCH/DELETE /prompt-webhooks
- POST /prompt-webhooks/:id/trigger — execute template against note
- Scheduler loop (60s tick) with cron next-run calculation
- Diagnostics endpoint: GET /prompt-schedules/diagnostics
- Cosmos containers: note_prompt_schedules, note_prompt_webhooks
- PromptTemplateDoc gains requiresApproval field (F27)
- Runner produces approvalState: proposed|applied based on template flag
- Create/Update schemas accept requiresApproval boolean
2026-04-06 10:25:34 -07:00
saravanakumardb1
564e8f72dc feat(web): add Smart Actions UI — prompt client, SmartActionsPanel, prompts page
Phase 3 of Smart Actions Roadmap:

- Create web/src/lib/prompt-client.ts: typed API client for all prompt endpoints
  - listPromptTemplates, getPromptTemplate, createPromptTemplate, deletePromptTemplate
  - runPrompt, suggestTags, checkDuplicates, suggestLinks, getReadingTime
  - compareNotes, mergeNotes, getKnowledgeGaps
- Add Smart Actions types to web/src/lib/types.ts:
  - PromptTemplate, RunPromptInput, RunPromptOutput, SimilarNote, KnowledgeGap
- Create SmartActionsPanel component:
  - Reading time display, tag suggestion with accept/dismiss
  - Category filter tabs, 2-column template grid
  - One-click prompt execution with loading state
  - Inline result display with copy/dismiss
- Create /prompts template library page:
  - Browse built-in + custom templates with category filter
  - Grid layout with input/output type badges
  - Delete custom templates
- Wire SmartActionsPanel into note detail sidebar (above MetadataPanel)
- Add 'Prompts' nav item to Sidebar (Sparkles icon)
- Web typecheck passes, all 131 backend tests pass
2026-04-06 08:19:35 -07:00
saravanakumardb1
f015ae6f20 chore: resolve pnpm-lock.yaml conflict after rebase 2026-04-06 08:03:46 -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
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
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
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
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
saravanakumardb1
3fdd2d0bca fix: add missing @playwright/test devDep for E2E CI 2026-03-29 11:05:59 -07:00
saravanakumardb1
c0a33473f4 chore: update dependencies 2026-03-29 10:50:57 -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
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
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
96b4453e95 test(visual): add Playwright visual regression screenshot tests 2026-03-28 00:56:17 -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
f05b7474f3 ci: add Playwright E2E job + test:e2e script 2026-03-28 00:35:42 -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
1bab8a87ac feat(a11y): add axe-core accessibility E2E spec with focus-visible test 2026-03-27 16:42:03 -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
ac1d48bd2f fix(e2e): add page.route() API mocking to dashboard spec 2026-03-27 13:34:51 -07:00
saravanakumardb1
aa0f720b6e fix(docker): correct web Dockerfile EXPOSE/PORT to 3045 matching docker-compose 2026-03-24 11:45:27 -07:00
saravanakumardb1
e9dc45d9bc fix(docker): remove hardcoded corporate proxy and jfrog registry from Dockerfiles 2026-03-24 11:10:33 -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