Agent messages now stream in character by character with a pulsing cursor, like a live AI chat interface. Historical messages render instantly. Only the latest message animates.
The TokenTracker's record(), recordRotation(), and recordColdStartSkipped() methods are now called from the process manager and rotator. Savings data (rotation, conflict prevention, cold-start) is real, persisted to .groove/tokens.json, and displayed in the Command Center gauges.
Telemetry data moved from React component state to the Zustand store. Switching between Agents and Stats tabs no longer wipes the chart. Historical data for completed agents is preserved.
The Avg Context gauge showed 0 when all agents finished (only measured running agents). Replaced with Peak Context — shows the highest context usage reached across all agents, giving a meaningful metric even after a session ends.
The planner's recommended fullstack agent now includes instructions to audit all agents' work, fix issues, build the project, launch the dev server, and output the localhost URL. No more manually asking where the app is.
The WebSocket rotation:complete event was switching the panel to the new agent before the HTTP response could copy chat history. Now chat and timeline are copied atomically in the WebSocket handler before the panel switches.
Previously all zeros because the TokenTracker was never fed. With token tracking wired, the Efficiency gauge, Savings breakdown, Estimated Savings dollar amount, and Routing data all display actual values.
After the planner finishes, it writes a structured team config to .groove/recommended-team.json. A Launch Team button appears in the chat showing each recommended agent with its task. One click spawns the entire team with proper roles, scopes, and prompts. Non-technical users just describe what they want, and the planner handles the rest.
Nodes redesigned with rounded corners, colored role badges (planner=purple, backend=teal, frontend=amber, fullstack=green), circular connection ports, and minimal clean layout. Edges are now smooth Bezier curves (splines) instead of angular steps — the spline is the brand. Matching the visual style of Unity and n8n node editors.
The hero row now features SVG semicircle arc gauges for Efficiency %, Average Context, Agents, and Rotations — inspired by Grafana dashboards. Gauges animate smoothly on value changes. All dashboard panels have rounded corners.
Agent messages in the chat now render markdown properly — bold text, inline code, headers, lists, numbered lists, and horizontal rules. No more raw ** and ### in the output.
The planner prompt now instructs it to suggest specific agents with roles, scopes, and tasks. It notes that a fullstack agent is needed for root-level setup in Auto permission mode. Output uses clean plain text formatting.
Planning was routed to Haiku (light tier) which produced shallow one-line responses. Now routes to the heavy tier since planning is foundational work that needs deep reasoning and thorough codebase research.
The telemetry chart now builds its timeline from dashboard API polls (every 4s) instead of the WebSocket store. Per-agent area chart with thin flat lines, subtle gradient fills, time axis, and y-axis labels. Agent legend shows real-time token counts.
Removed all glow effects, text shadows, and neon styling across the entire UI. All lines 1px thin, colors flat, gradients subtle. Matches the dark terminal aesthetic of the GROOVE website.
Chat messages and token timeline now carry from the old agent to the new agent when rotating or continuing. No more cleared chat when sending a message to a completed agent.
The validateAgentConfig() function stripped the permission field from the config, so the PM review instructions never reached agents. Now preserved through validation, registry, and rotation.
The TokenTracker was never fed data from the process manager. The dashboard now uses the registry's actual tokensUsed values as the source of truth. TOKENS USED, TOKENS SAVED, and dollar amounts now display correctly.
When a stdout chunk contained multiple JSON events (assistant + usage), only the last event was returned, losing token counts. Now merges token totals across all events in a chunk.
The welcome message now displays on every groove start, not just first run. Shows provider scan, GUI URL, docs link, and GitHub. Box alignment fixed. CLI quick start commands removed (GUI is primary).
GROOVE now has a built-in AI Project Manager that reviews risky agent operations before they happen. When agents run in Auto mode, they call the PM before creating new files, deleting files, or modifying config. The PM checks scope, plan alignment, and team conflicts — then approves or rejects with reasoning. All reviews are logged in the new PM Review Log (formerly Approvals tab). This turns permission levels from decorative to functional.
Replaced the three-tier permission system (Always Ask / Auto / Full Access) with two practical modes. Auto: AI PM reviews risky operations (~10-15s overhead per review). Full Send: no reviews, maximum speed. No more false promises of interactive approval in a headless system.
The stats dashboard is completely rebuilt. Thin vertical bar charts for token burn rate and savings accumulation. Hero row with glowing dollar savings display. Agent fleet cards with context gauges. Adaptive threshold sparklines with session quality scores and signal breakdown (errors, repetitions, file churn). Journalist panel shows live AI synthesis summary. Routing viz now shows cost-per-tier. Feels like mission control, not a spreadsheet.
Pressing Enter in the chat input was firing both the keydown handler and an implicit form submission, causing double-fire. Fixed with type="button" on the Send button and stopPropagation on the Enter handler.
Previously, when an agent was rotated or continued, the new agent started with tokensUsed: 0. Now the rotator carries cumulative token stats to the new agent, so the dashboard shows lifetime totals.
The Gemini provider was showing Claude Code's install command. Fixed to show the correct npm i -g @anthropic-ai/gemini-cli.
Agents that have completed their task can now be continued from the chat. Type a reply, hit Send, and GROOVE generates a handoff brief from the agent's work, appends your message, and spawns a fresh session with full context. No more "Respawn" button creating disconnected agents. The conversation is seamless.
When you spawn a backend agent after a planner finishes, the backend now sees: what files the planner created, the planner's final output summary, and an explicit instruction to read relevant files before starting work. Completed agents are no longer invisible — they stay in the team context with their files and results.
Spawning a second backend? GROOVE now queries the existing backend's work via a headless Claude call, then gives the new agent a clear task assignment: what to work on, what files to avoid. The Task Assignment section in the intro context keeps duplicate-role agents from stepping on each other.
Before restarting the server, running npm install, or modifying shared config, agents now check .groove/coordination.md for active operations. They write their intent, check for conflicts, then proceed. File-based coordination that works with any CLI tool.
Claude Code's auto-memory system can bleed context from previous sessions into GROOVE agents. Now every agent gets explicit instructions to ignore auto-memory and rely only on GROOVE-provided context (handoff briefs, project map, registry). Two-layer enforcement: agent intro context + CLAUDE.md injection.
The planner's "do NOT implement code" constraint was only applied in the GUI spawn panel. Now ROLE_PROMPTS are applied in the process manager during spawn — consistent regardless of whether agents are spawned from GUI, CLI, API, or chat continuation.
The Journalist now triggers a synthesis cycle immediately when any agent completes — no more waiting up to 120 seconds for a stale project map. Synthesis input budget doubled to 40K chars. Text truncation increased from 500 to 2,000 chars. Result preservation increased from 500 to 3,000 chars. Handoff brief project map limit increased from 3K to 10K chars. Explicit Haiku model for predictable cost.
The rotation scoring system now detects file churn (same file written 3+ times = circular refactoring), error trends (increasing errors in the second half of a session = degradation signal), and tool failures (previously tracked but never extracted). Classifier window increased from 10 to 50 events for better signal quality.
Context usage was hardcoded to 200K for all models. Now uses actual model metadata: Opus has a 1M context window, Sonnet and Haiku have 200K. Rotation thresholds are now meaningful across different models.
Port 3141 conflicted with VS Code dev servers and other common tools. Moved to 31415 — still pi, but in the ephemeral range where nothing else lives.
A full-screen analytics dashboard showing token usage, savings breakdown, rotation timeline, model routing distribution, adaptive threshold profiles, and journalist status. The stats tab in the GUI now shows real-time operational data.
The model routing system is now fully connected. Agents spawned with model: 'auto' get routed to the right tier (Opus for heavy tasks, Sonnet for medium, Haiku for light) based on role hints and classifier signals. Cost tracking logs every routing decision.
Major cleanup pass across the codebase. All 14 test suites (137 tests) passing. Security audit complete: AES-256-GCM credentials, CORS localhost-only, input validation on all endpoints, prototype pollution protection.
Complete GUI redesign with One Dark Pro theme, JetBrains Mono font, and a terminal-native aesthetic. The GUI is served by the daemon — open http://localhost:31415 in any browser.
Click any agent to open a 45% sidebar with three tabs. Chat: instruct agents or query them without disrupting their work. Stats: live token heartbeat chart, context usage gauge, activity sparkline. Actions: rotate, stop, delete, clone, change model, modify prompt.
The spawn panel offers role presets (Backend, Frontend, Fullstack, Planner, Testing, DevOps, Docs), permission levels, provider selection with inline API key entry, and model selector. One-click spawning with intelligent defaults.
Send instructions to running agents via POST /api/agents/:id/instruct (rotates with new context) or ask questions via POST /api/agents/:id/query (headless one-shot, agent keeps running). Chat tab in the GUI uses both.
Agents are displayed as nodes in a React Flow graph with animated edges for running agents. Click to select, drag to rearrange. NASA-style terminal readouts with status bars, heartbeat indicators, and compact metrics.
GROOVE ships with a persistent daemon that manages all agent coordination. It holds the registry, broadcasts state over WebSocket, and exposes a REST API. State persists to disk, so if the daemon restarts, your agents don't vanish.
The full command set: groove start, groove stop, groove spawn, groove kill, groove agents, groove status, groove nuke, groove rotate, team management (save/load/list/delete/export/import), groove providers, groove set-key, and config commands.
When you spawn agent #2, the daemon writes AGENTS_REGISTRY.md and gives every agent context about its peers — who they are, what files they own, what they're working on. No more two agents silently editing the same file.
Spawn with a scope pattern and that agent owns those files. Other agents are told to stay out. Advisory locks for v0.1 — agents are informed, not blocked.
A background synthesis engine that watches all agent activity, filters noise, and generates GROOVE_PROJECT_MAP.md — a living snapshot of the entire project. New agents read one file and know everything. No more wasting thousands of tokens re-explaining your codebase.
Day 1 support for Claude Code (subscription), Codex (API key), Gemini CLI (API key), Aider (API key), and Ollama (local). The provider abstraction makes adding new tools straightforward.