Commit History
-
Unify figure store globally, enable cross-agent figure references
- Replace per-tab IMAGE_STORES with single global FIGURE_STORE shared by code and image agents - Unify naming: image_N → figure_T{tab}_N across all agents - Store values as {type, data} dicts consistently - Restore figure registry from workspace on session reload - Remove separate 'images' handling in frontend (unified under 'figures') - Add cross-agent figure reference instructions to command center prompt - Fix double-wrapping bug in image agent nudge path Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4c24c65
-
Global image namespacing, persistent server-side image store, save_image improvements
- Namespace image/figure refs at backend level (image_T{tab}_N, figure_T{tab}_N) so frontend no longer needs to translate between local and global names - Add persistent IMAGE_STORES/IMAGE_COUNTERS dicts in main.py so image data survives agent re-entry without requiring multimodal mode - save_image tool: return base64 preview, add proper display name/description - Fix nudge condition: trigger result formatting even when image_store is empty - Add hidden assistant message for result_preview history reconstruction - Clean up image stores on session switch Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f508f01 -
Fix welcome notice spacing and style Important in theme color
Bump CSS version to 112 to bust Space cache for all recent CSS changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>72028e1 -
Add more spacing between start button and notice in welcome dialog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d79b82f -
Update welcome dialog with shared space and data storage notice
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f292364 -
Add API key warning to multi-user welcome dialog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>aafd3ca -
Rotate favicon dots to resemble a play triangle
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>11e5bdb -
Add favicon and apple-touch-icon (three-dot triangle)
Eliminates 404s for /favicon.ico and /apple-touch-icon.png requests. Icon uses the same three-dot triangle pattern as the loading spinner. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>20e6105 -
Restructure settings into collapsible groups, fix dark theme hardcoded colors
Settings panel reorganized into 5 collapsible sections: Agent Models, Models & Providers, API Keys, Agent Settings, Theme. Replace hardcoded color values (white, #666, #888, #fff, #bbb, rgba(255,...)) with CSS variables (var(--bg-primary), var(--border-primary), var(--text-muted), var(--theme-accent)) for proper dark theme support. Style checkboxes, dropdowns, number inputs, and panel headers/buttons to be theme-aware. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b5bd59f
-
Enlarge collapse toggle hit area for easier clicking
Adds padding with negative margin to both widget and agent header collapse toggles, making the clickable zone ~34px without changing the visual arrow size. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>179f9a1 -
Add save_image tool to image agent
Allows saving generated/edited images to the workspace as PNG files. Source can be an image reference (e.g., 'image_1') or a URL. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b75e768 -
Fix tool message handling, parallel image refs, error display, and UX polish
- Preserve tool_call_id/tool_calls in Message model so command center history doesn't break on subsequent LLM calls (400 error fix) - Namespace image/figure refs with tab ID (image_1 -> image_T3_1) to avoid collisions between parallel sub-agents - Strip HTML error pages (e.g. HF 503) to short status messages - Show progress widget when command center auto-continues after sub-agents finish - Only reuse agent tabs when both task_id and agent type match - Nudge command center and image agent to only generate images when explicitly asked - Add GLM-5 and Qwen3.5-397B models, update default agent assignments - Update README with install/docker/env docs, add privacy notice to login Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4da424f -
Remove requirements.txt, use pyproject.toml as single dependency source
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c48a8e5 -
Remove dev files, experiments, stale configs; clean up .gitignore
Remove: dev/ (planning docs, mockups), experiment/ (old scripts/results), features.md, mock.html, backend/README.md, settings.json, workspace test data. Untrack .claude/settings.local.json, add .claude/ and workspace/ to .gitignore. Trim .gitignore from 232 lines of boilerplate to ~30 relevant entries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>32cdbe2 -
Remove tests, package.json, and test tooling
Tests were not maintained and not run. Remove: - tests/ directory (backend, frontend, e2e) - package.json (only existed for test devDependencies) - Makefile test targets and test-artifact cleanup - README testing section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>48e6e7c
-
Replace welcome SVG diagram with real timeline component, hide sidebar on welcome
- Replace static SVG workflow diagram with actual timeline widgets (agent-box, tl-dot, tl-nested, etc.) - Diagram auto-adapts to all themes via CSS vars — delete ~50 lines of dark-theme SVG overrides - Hide timeline sidebar on welcome/session-selector page, restore on session start - Add updateTimelineLines() call on init for welcome diagram line computation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>339deb5 -
Trim system prompts ~35% and strengthen figure embedding rule
- All 5 agent prompts trimmed: remove generic filler, redundant examples, obvious coaching - Command center: bold rule to ALWAYS embed figures/images (sub-agent results are collapsed) - Code agent: explicit warning not to use show_html for displaying captured figures - Research: cut "Your role is to" fluff, keep table formatting guidance - Web/Image: merge redundant strategy+guidelines sections Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ad948a8 -
Split frontend script.js (5460 lines) into 8 focused modules
- utils.js: global state, apiFetch, escapeHtml, formatDate, 3 shared helpers - timeline.js: sidebar timeline data + rendering + multi-user - sessions.js: session CRUD + panel UI - tabs.js: tab creation/switching, sendMessage - streaming.js: SSE streaming, code cells, action widgets, parseMarkdown - workspace.js: serialize/restore workspace state - settings.js: settings CRUD, themes, debug/files/sessions panels - app.js: DOMContentLoaded, initializeEventListeners Deduplication: setupInputListeners (3 copies), setupCollapseToggle (4 copies), closeAllPanels (4 verbose blocks) extracted to shared helpers in utils.js. Update README with DIRECT_TOOL_REGISTRY docs, key patterns & conventions section for agent contributors, and updated file tree. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>78f4d62 -
Refactor backend: extract async stream helper, direct tool registry, nudge_for_result via call_llm
- Add _stream_sync_generator helper in main.py, replacing 5 duplicated async queue patterns - Add DIRECT_TOOL_REGISTRY in tools.py combining schema + execute in one dict - Refactor command.py to use DIRECT_TOOL_REGISTRY instead of separate DIRECT_TOOLS set and if/elif dispatch - Make nudge_for_result use call_llm for debug panel parity (agents.py, agent.py, code.py, image.py) - Eliminate hardcoded frontend AGENT_REGISTRY, fetch from /api/agents at startup (script.js) - Debug panel fixes: base64 image placeholders, call enumeration, layout, remove refresh button - Add drag-and-drop file upload to files panel - Rewrite README for release with extension/tool/theme documentation - Reduce debug panel width from 600px to 450px Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4e3db9c -
Debug panel: full LLM call parity, show_html tool, drag-drop file upload
- Centralize LLM calls into call_llm() generator in agents.py with retries and debug events - Emit debug_call_input/output SSE events for every LLM turn across all agents - Frontend accumulates debug history per tab with INPUT/OUTPUT sections - Replace base64 images with hoverable thumbnail placeholders in debug JSON - Persist debug history in workspace save/restore - Add show_html direct tool for command center (iframe srcdoc rendering) - Add drag & drop file upload to files panel (folder-aware targeting) - Remove old MESSAGE_HISTORY polling, refresh button; debug updates in real-time - Reduce debug panel width to 450px Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0d3d041
-
Reorganize sidebar controls: separate timeline and chat collapse settings
- "Timeline view: compact" checkbox below legend (collapses agents + hides turns in timeline only) - "Chat collapse: agents / tools" checkboxes (collapse action-widgets and tool-cells in chat only) - Newly created widgets respect current collapse state - Checkboxes reset on conversation clear Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8e4396d -
Image agent fixes: sizing, error handling, result nudge, registry filtering
- Add max-height: 400px to all image CSS rules and inline styles - Filter globalFigureRegistry to only include images/figures referenced in sub-agent <result> content (prevents command center from rendering images the sub-agent didn't explicitly include) - Extract shared nudge_for_result() utility in agents.py, replacing duplicated nudge code in agent.py, code.py, and image.py - Return actual error messages from execute_generate_image/execute_edit_image (tuple return) so the LLM can adapt its strategy on failure - Show real error messages in frontend tool cells instead of generic "Failed to process image" - Resize large input images to 1024px max before sending to HF image_to_image API (FLUX.1-Kontext-dev expects ~1024px inputs) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>583c5ee
-
Fix image agent: multimodal tool responses, read_image rename, default model
- Pass tool response content as native multimodal array (not JSON string) so VLM actually sees images instead of hallucinating - Rename read_image_url → read_image with local file path support - Update frontend to handle read_image tool name and show path + image - Set Qwen3-235B as default image agent model - Add "Presenting Results" section to command center system prompt - Collapse/expand action-widgets in main chat with checkbox Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d86459e -
Retry /api/config up to 5 times on startup (1s apart)
Fixes race condition where page loads before server is ready, causing config fetch to fail and multi-user overlay to be skipped. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>591723f -
Fix Dockerfile for HF Spaces: run as uid 1000, copy hf CLI to /usr/local/bin
HF Spaces runs containers as uid 1000, not root. The hf CLI was only accessible at /root/.local/bin/. Now copies it to /usr/local/bin/ and creates a proper non-root user. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6d5daa8 -
Fix bucket sync: add hf CLI to PATH, add sync logging
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d54583e -
Fix file download in multi-user mode (fall back to session_id query param)
window.open() can't send custom headers, so get_user_id() now checks the session_id query parameter as a fallback for the X-Session-ID header. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>704f712 -
Add python-multipart to pyproject.toml dependencies
Required by FastAPI's UploadFile for file upload endpoint. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>07734ee -
Add multi-user session isolation and HF bucket sync
- --multi-user flag for per-user isolation (files, sessions, settings, sandboxes) - Username prompt overlay on first visit, stored in localStorage - X-Session-ID header on all API requests via apiFetch() wrapper - Per-user directories under workspace/users/<username>/ - Default settings copied from base config for new users - User indicator in sidebar with click-to-switch - HF Storage Bucket sync in Dockerfile (HF_BUCKET + HF_BUCKET_TOKEN env vars) - Background sync loop every 60s for persistent storage on HF Spaces Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5f63301
-
Add file explorer download/upload, path linkification, and legend
- Add download button (↓) next to files and upload button (+) next to folders in the file explorer tree - Add root-level upload button (+) in files panel header - Backend: GET /api/files/download, POST /api/files/upload, POST /api/files/check - Add python-multipart dependency for file uploads - Linkify backtick paths in messages: checks existence via /api/files/check and wraps matching inline code in clickable links to file explorer - Make download widget local paths clickable to navigate in file explorer - Add legend at bottom of files panel (click/double-click/drag) - Rename command center label from TASKS to MAIN Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>89321a6
-
Move IMAGE agent above COMPUTER in welcome page, mark as supported
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ac24780 -
Compact sidebar timeline and theme-colored links
- Reduce vertical spacing in sidebar (widget margins, row gaps, padding) - Make agent boxes narrower with z-index to sit above timeline line - Fix white seam between agent header and border - Style all chat links with theme accent color and visible underline - Add visited link styles using muted theme color - Support dark theme link colors (terminal, noir, eclipse) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a5aad87
-
Add Pillow dependency for image resizing in image agent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>17b2757 -
Rename report CSS classes to result (research-report → agent-result)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d6c1699 -
Rename Report to Result and update welcome diagram labels
- Timeline tag: REPORT → RESULT - Welcome SVG: Task Center → Main Agent, Agent → Sub-Agent, Task → Sub-Agent, Report/Report summary → Result - Status messages: "Generating report..." → "Generating result..." Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e9d71f8 -
Replace readability with trafilatura for text extraction, add HTML mode
Switch read_url's default text extraction from readability-lxml to trafilatura, which captures significantly more content (images, tables, links) especially on non-article pages. Add use_html parameter for stripped-down HTML output when the agent needs to inspect page structure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>59d77e5 -
Default HF_TOKEN to LLM_API_KEY in Dockerfile CMD
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cfd3346 -
Add abort/stop feature and agentui CLI command
Adds cooperative abort via threading.Event so users can stop running agents. Backend abort registry tracks parent-child relationships for recursive abort. Frontend toggles SEND→STOP during generation, with AbortController on fetch. Command center STOP aborts all child agents. Aborted agents produce a result message so parent agents are aware. Also adds `agentui` CLI entry point. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9bcfe23 -
Add readability-lxml and markdownify to dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7ed22a0 -
Add default settings.json for HF Space deployment
Bundle settings.json with provider/model config (tokens empty). Secrets are resolved via env var fallbacks (LLM_API_KEY, HF_TOKEN, etc). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>304699d -
Fix imports: use relative imports throughout backend package
Removes all try/except ImportError fallback patterns and uses consistent relative imports (from .module import ...) everywhere. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c0c69f5
-
Restore pyproject.toml for Docker build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>014fe48 -
Add HF Spaces YAML metadata to README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>bf45561 -
UI design refinements: resizable sidebar, compact tabs, widget improvements
- Add resizable timeline sidebar with drag handle (persisted to localStorage) - Move widget collapse arrows to left side, show tool query in header - Add double-click on collapse arrow to toggle all widgets - Compact tab bar (25px), rename TASKS to MAIN, harmonize panel button sizes - Compact settings, sessions, debug, files panel headers and content - Add current date to all agent system prompts - Add user message background styling, fix chat panel background color - Remove session indicator from bottom right - Fix textarea scrollbar appearing before content overflow - Fix tab bar border gap next to + button - Default expand agents and show turns checkboxes to checked - Fix legend overflow with flex-wrap on narrow sidebar Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4da7797
-
Improve web agent prompts, add chunked read_url, and UI refinements
- Rewrite web agent system prompt with metacognitive strategy (reflect before every tool call, snippets are data, adapt on failure) - Remove screenshot_url from web agent (not multimodal) - Add chunked read_url with 10k char chunks and URL content cache - Add code agent reflection step in system prompt - Add collapsible widgets for tool cells, code cells, and action widgets - Fix tab overflow with flex-shrink compression (like browser tabs) - Add active tab indicator arrow in timeline sidebar - Smart auto-scroll: only scroll to bottom if user is near bottom - Timeline turn click now scrolls to corresponding chat element Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4f207be
-
Fix binary file download, add tool element tab persistence, and UI refinements
- Fix sandbox file download to always use bytes format, preventing corruption of binary files - Add serialization/restore for tool-call, tool-response, and tool-cell elements in tab persistence - Update code agent prompt (clarify working directory, relax savefig guideline) - Apply global scrollbar styling, add collapsed timeline padding - Clean up generated workspace test files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9937804
-
Add command center continuation, result nudge, input blocking, and prompt improvements
- Command center auto-continues after all sub-agents finish via continueCommandCenter() - Fix race condition with pendingAgentLaunches counter for delayed agent tab creation - Block command center input while agents are running - Nudge agents for <result> tag if they finish without one (agent.py, code.py) - Strengthen task decomposition prompt to always parallelize multi-entity queries - Improve code agent prompt: sandbox filesystem clarity, plt.show() over savefig - Suppress Python warnings in E2B sandbox on startup - Double output truncation limit (4000 chars) and keep beginning + end Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9e3f857 -
Add tool tag widgets to timeline, fix event ordering
- Replace [tool_name] text with colored tag widgets (SEARCH, READ, CODE, REPORT, etc.) styled like mini agent headers - Fix timeline event ordering: flush accumulated assistant text before adding tool/code/report events so text appears in correct chronological position - Add hover popup for tool entries showing full description - REPORT now shows content preview instead of being empty Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>61dc919 -
Improve agent routing prompts, add timeline inline labels, drop chat agent
- Rewrite command center system prompt: default to web agent for searches, reserve research agent for deep multi-source analysis, add task decomposition for parallel execution - Sharpen web agent prompt: iterate strategy, full content in <result> tags - Remove chat agent (redundant with web agent) - Replace timeline tooltip pseudo-elements with real <span> labels that show inline text next to dots with hover popup for full content - Fix timeline row spacing and nested agent padding Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>77ed993
-
Rename notebooks→agents, Productive→AgentUI across full codebase
- Rename all notebook references to agent (~340 occurrences across 16 files) - Rename Productive branding to AgentUI (title, welcome text, README) - Add settings migration: notebooks→agents key, productive_settings→agentui_settings - Add backward-compatible localStorage and workspace fallbacks - Scope .agent-header and .agent-body CSS to avoid timeline/content collision - Hide sessions folder from file tree context - Add markdown content toggle to read_url widget - Rename run_interactive_notebook→run_stateful_code - Preserve JupyterNotebook class and .jupyter-notebook-container (actual Jupyter refs) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a58e6a3