b73c969d14
feat(ui): wire platform core primitives
2026-05-06 11:12:09 -07:00
5e38496d8a
test(web): run Playwright release flows
2026-05-05 14:07:34 -07:00
9bded74567
fix(lint): clear production lint blockers
2026-05-05 14:04:49 -07:00
00d022071d
docs(roadmap): record P10.1 verification
2026-05-05 13:56:26 -07:00
d929247db5
ci(web): add playwright e2e job
2026-05-05 13:27:12 -07:00
6b896949d4
chore(web): add bundle analysis gate
2026-05-05 12:45:20 -07:00
62cda1fb22
test(web): add release journey e2e coverage
2026-05-05 12:34:25 -07:00
e71febe51a
fix(sharing): harden note share revocation flows
2026-05-05 12:25:16 -07:00
09f30c003e
feat(notes): harden import export readiness
2026-05-05 12:15:11 -07:00
a72d6b79d3
fix(web): add user-facing dependency states
2026-05-05 11:59:17 -07:00
454b2003e9
fix(web): add mutation retry handling
2026-05-05 11:45:25 -07:00
6418ab2836
fix(web): harden auth session refresh flow
2026-05-05 11:40:55 -07:00
837a187bd1
fix(web): stabilize mobile layouts
2026-05-05 10:58:10 -07:00
d26a4ae9de
refactor(web): use shared ui primitives
2026-05-05 10:49:25 -07:00
01c2d31514
fix(web): label interactive controls
2026-05-05 10:22:49 -07:00
6ede2bee7e
refactor(web): replace hardcoded app colors
2026-05-05 10:17:06 -07:00
efa20979fc
test(platform): verify client propagation
2026-05-05 09:33:10 -07:00
da3129c89b
fix(platform): align mcp service urls
2026-05-05 09:19:11 -07:00
saravanakumardb1
cc6558277c
fix(docker): bash 3.2 compat + .docker-deps COPY + pnpm.overrides for transitive deps
...
- docker-prep.sh: replace declare -A with temp file (macOS bash 3.2)
- docker-prep.sh: inject pnpm.overrides so transitive @bytelyst/* deps resolve from tarballs
- backend/Dockerfile + web/Dockerfile: COPY .docker-deps/ into build context
- .npmrc.docker: remove scoped registry (tarballs handle all @bytelyst/* resolution)
2026-04-13 14:02:31 -07:00
saravanakumardb1
cce4ca610f
refactor(web): merge platform-api.ts into platform.ts
...
platform.ts and platform-api.ts both created PlatformClient instances.
Merge all typed helpers (getUserSettings, updateUserSettings,
listSessions, revokeSession, updateProfile) into platform.ts and
delete the duplicate file. Use lazy singleton instead of eager.
2026-04-13 11:06:40 -07:00
saravanakumardb1
4813c850a3
feat(web,mobile): add @bytelyst/billing-client and platform-client
...
Web:
- New lib/billing-client.ts: factory wrapper using shared getAccessToken.
- Add @bytelyst/billing-client to web deps.
Mobile:
- New lib/billing-client.ts: factory wrapper using MMKV token storage.
- New lib/platform-api.ts: typed platform-client wrapper for settings,
sessions, and profile management.
- Add @bytelyst/billing-client and @bytelyst/platform-client to deps.
2026-04-13 10:30:02 -07:00
saravanakumardb1
58a778bc1e
feat(web): init feature flags + kill switch on startup, fix hardcoded colors
...
- Providers.tsx now calls initFeatureFlags() and checkKillSwitch()
on mount (both were wired but never initialized).
- globals.css: replace hardcoded #0b1020 with color-mix() from canvas token.
- layout.tsx: make themeColor responsive (dark/light media queries).
- use-theme.ts: prefix localStorage key with PRODUCT_ID for consistency.
2026-04-13 09:59:54 -07:00
saravanakumardb1
4246d58798
fix(docker): switch Alpine to Debian slim and remove prod NODE_TLS_REJECT_UNAUTHORIZED
...
Alpine breaks under corporate proxy TLS interception. Debian slim
works reliably. NODE_TLS_REJECT_UNAUTHORIZED=0 removed from production
stages — only kept in build stages where npm registries need it.
2026-04-13 09:59:36 -07:00
saravanakumardb1
71062a57be
fix(web): fix auth token key inconsistency and DRY getAccessToken()
...
feature-flags.ts and prompt-client.ts used bare 'access_token' key
instead of PRODUCT_ID-prefixed key — auth tokens were never sent.
Consolidates 10 web lib files to import the shared getAccessToken()
from api-helpers.ts instead of each redefining their own copy.
2026-04-13 09:59:18 -07:00
saravanakumardb1
ddb5bfb49a
chore(deps): use wildcard (*) for @bytelyst/* internal packages
...
All @bytelyst/* packages are internal to the ByteLyst ecosystem and
published to the private Gitea registry. Using "*" eliminates version
bump noise — always resolves to latest available.
2026-04-13 01:05:35 -07:00
root
a73b3e5bc4
chore: bump @bytelyst/* deps to latest registry versions
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 06:04:34 +00:00
saravanakumardb1
e6dacbe809
feat(palace): web UI — palace client, 4 components, palace page, sidebar nav, 6 tests
2026-04-10 01:46:51 -07:00
saravanakumardb1
e5f287c7ea
feat(web): add intake URL bar, share dialog, intake API client — dashboard + enhanced sharing UI
2026-04-06 20:35:02 -07:00
saravanakumardb1
18646fac6d
fix(tests): fix all failing tests — server mock, ecosystem schema stubs, CreateNoteModal body assertion
2026-04-06 19:13:35 -07:00
saravanakumardb1
d4cc696e02
fix: align PromptTemplateEditor, SmartActionsPanel, prompts page with backend enums; fix RunPromptModal type cast
2026-04-06 16:27:22 -07:00
saravanakumardb1
192c7baf2f
fix: align web+mobile types with backend (categories, output types, field names, durationMs telemetry)
2026-04-06 16:24:31 -07:00
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