summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-02-13Add cyan border and debate label to LLMNode in debate modeYurenHao0426
Mirrors the amber border styling of council nodes with cyan for debate nodes, including the icon color and model count subtitle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add LLM Debate mode for multi-round iterative model discussionsYurenHao0426
Implements a debate feature alongside Council mode where 2-6 models engage in multi-round discussions with configurable judge modes (external judge, self-convergence, display-only), debate formats (free discussion, structured opposition, iterative improvement, custom), and early termination conditions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add per-model council settings, Quick Chat council mode, and per-member ↵YurenHao0426
trace selection Council members now support individual temperature, reasoning effort, web search, and context trace overrides. Quick Chat inherits council config from the source node and streams through the 3-stage council pipeline. Blueprint loading migrates old string[] council formats to CouncilMemberConfig[]. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13Add LLM Council mode for multi-model consensusYurenHao0426
3-stage council orchestration: parallel model queries (Stage 1), anonymous peer ranking (Stage 2), and streamed chairman synthesis (Stage 3). Includes scope-aware file resolution for Google/Claude providers so upstream file attachments are visible to all providers. - Backend: council.py orchestrator, /api/run_council_stream endpoint, query_model_full() non-streaming wrapper, resolve_provider() helper, resolve_scoped_file_ids() for Google/Claude scope parity with OpenAI - Frontend: council toggle UI, model checkbox selector, chairman picker, SSE event parsing, tabbed Stage 1/2/3 response display - Canvas: amber council node indicator with Users icon Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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