summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-02-13Fix theme desync when loading blueprintsYurenHao0426
- Stop blueprints from overriding user theme preference on load - Replace manual <html> dark class sync with store subscriber that keeps DOM in sync with any theme state change automatically Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Default theme to system/browser color scheme preferenceYurenHao0426
Read prefers-color-scheme media query on init instead of hardcoding light mode. Sync dark class to <html> element at store creation so global CSS applies immediately. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add copy response button to response toolbarYurenHao0426
Adds a clipboard copy button next to the response label that copies the raw response text. Shows a brief green checkmark on success. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add rendered/plain text toggle for response viewsYurenHao0426
Add an Eye/EyeOff toggle button to switch between rendered markdown and raw plain text in all three response locations: main response panel, expanded response modal, and Quick Chat messages. Useful for copying raw text without formatting artifacts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Fix expanded response view dark mode and KaTeX scrollbar stylingYurenHao0426
- Add dark mode background/text/border to response modal - Add prose-invert to expanded response markdown container - Style katex-display with thin transparent-track scrollbar for overflow formulas Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add LaTeX math rendering with KaTeXYurenHao0426
Support both $...$ / $$...$$ (remark-math) and \(...\) / \[...\] (GPT-style) delimiters via a preprocessor that normalizes to dollar-sign syntax before passing to ReactMarkdown. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Remove JWT token expirationYurenHao0426
Tokens no longer include an exp claim and decode skips expiry verification, so users stay authenticated indefinitely. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add username fallback for API key resolution when JWT token expiresYurenHao0426
When the JWT token is expired or missing, endpoints could not resolve user API keys and fell back to environment variables (which are unset). Added resolve_user() helper that falls back to DB lookup by username query param, and added ?user= to all frontend API calls as a belt-and- suspenders approach alongside auth tokens. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Remove provider badge from file list and add upload indicator to right sidebarYurenHao0426
- Remove per-provider label from left sidebar file list since files are now uploaded to all providers simultaneously - Add uploading spinner to right sidebar "Upload & Attach" button - Always upload with provider 'local' from right sidebar settings tab Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add auth headers to file upload/delete requestsYurenHao0426
The frontend upload and delete file fetch calls were missing auth headers, so the backend could not resolve user-specific API keys. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Fix file upload/delete using user API keys instead of env vars onlyYurenHao0426
The upload_file and delete_file endpoints were calling API clients without passing user-specific API keys, falling back only to environment variables. Now both endpoints resolve keys from the authenticated user's settings via get_user_api_key(), fixing "API key not found" errors for users who configured keys through the frontend. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Auto re-upload expired Google files on node runYurenHao0426
Add _check_google_file_active() to verify cached Google file URIs before reuse. If expired (48h limit), clears cache and transparently re-uploads via ensure_google_file_upload(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add Anthropic Files API and persistent Google file caching for all providersYurenHao0426
- Add anthropic_file_id/google_file_uri fields to FileMeta (backend + frontend) - Eager upload to Anthropic and Google at file upload time (like OpenAI) - Cache and reuse file references in prepare_attachments for all 3 providers - Add document content block injection in stream_claude (file_id, base64, text fallback) - Conditional beta streaming for Anthropic Files API references - Persist on-demand upload results (changed flag + save_files_index) - Clean up file deletion for all providers (Anthropic warn-only, Google deduplicated) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Deduplicate merged trace messages and fix double-count in contextYurenHao0426
- Add dedup helper in computeMergedMessages to remove duplicate messages by ID across all merge strategies (e.g. A-B-C + A-D-C → A-B-D-C) - Fix getActiveContext adding merged trace messages twice (from both outgoingTraces and mergedTraces) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add unfold merged trace: convert to sequential node chainYurenHao0426
Unfold takes a merged trace's messages, extracts the node order, and creates real edges chaining those nodes sequentially (A→B→C→D→E). The merged trace is deleted and replaced by a regular pass-through trace. - Add unfoldMergedTrace() to flowStore (creates edges, rewires downstream) - Add Unfold button (Layers icon) to Sidebar merged traces UI - Fix isMerged edge detection to use explicit flag instead of ID prefix - Fix LLMNode useUpdateNodeInternals deps for dynamic handle updates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add Claude provider, OpenRouter fallback, and GFM markdown supportYurenHao0426
- Add Claude (Anthropic) as third LLM provider with streaming support - Add OpenRouter as transparent fallback when official API keys are missing or fail - Add remark-gfm to ReactMarkdown for table/strikethrough rendering - Claude models: sonnet-4.5, opus-4, opus-4.5, opus-4.6 - Backend: new stream_claude(), stream_openrouter(), provider routing, API key CRUD - Frontend: model selectors, API key inputs for Claude and OpenRouter - Auto-migration for new DB columns (claude_api_key, openrouter_api_key) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2025-12-14rm 4.5blackhao
2025-12-14model managementblackhao
2025-12-14auto saveblackhao
2025-12-14add tutorialblackhao
2025-12-11fix traceblackhao
2025-12-11add some logblackhao
2025-12-11add some logblackhao
2025-12-10fix: hide .json extension when renaming blueprintsblackhao
2025-12-10fix: use getCurrentUser() for all project/file API callsblackhao
2025-12-10fix: resolve all TypeScript errors for production buildblackhao
2025-12-10set keys 2blackhao
2025-12-10set keysblackhao
2025-12-10fix: add allowed hostsblackhao
2025-12-10fix: use relative API paths for production deploymentblackhao
2025-12-10user datablackhao
2025-12-10init file sys ?blackhao
2025-12-10init file sysblackhao
2025-12-09upload files to backendblackhao
2025-12-09file management sysblackhao
2025-12-09some fix on trace mergingblackhao
2025-12-08before file functionsblackhao
2025-12-08merge logicblackhao
2025-12-06UXblackhao
2025-12-05right click logicblackhao
2025-12-05init: add project files and ignore secretsblackhao
2025-09-22Initial commitYuren Hao