All notable changes to the "ocursor" extension will be documented in this file.
Check Keep a Changelog for recommendations on how to structure this file.
- Context pruning removed: tool results and edit args stay verbatim for the full run (thinking still stripped as UI-only)
- Auto-compaction deferred until ~85–92% fill, keeps a larger verbatim tail (~55%), and cools down longer between summaries
fitStepsToBudgetdrops whole call groups when over budget instead of stubbing dump bodies- Agent edits never open or focus an editor: diffs open only from an explicit click in the review bar or on an edit card; already-open diffs refresh in place
- Project mode: the agent acts as a project lead and delegates work to a team of subagents, with team selection in the composer and the active team shown in the sidebar
TeamDefteams with built-in presets (Product Manager, and the rest of the default crew) sharing a common protocol for context isolation, role discipline, and code quality- Built-in subagents and teams can be cloned into editable copies; duplicates get unique names automatically, and custom entities are kept separate from built-ins via a
builtinflag - Subagent and team management UI in the settings panel with a table layout for subagents and more responsive modals
- Task and Subagent cards show the subagent type name as a chip for clearer run context
- Durable
ActivityLedgerthat records tool actions outside the message history, so past work stays visible without bloating context
- Context economy reworked: history is economized around retained recent work, steps are grouped before budget fitting, and system messages carry synthetic markers
fitStepsToBudgetnow accounts for overhead tokens (system prompt and tool schemas) so requests fit the real budget- Semantic index throttles rebuilds and delays the startup build during activation; index data structures were reworked for lower memory use, and the search tool avoids unnecessary rebuilds
- Cache invalidation for the index is more precise, with new chunking and embedding constants
- Live terminal output: Shell/AwaitShell stream stdout+stderr into the tool card as it is produced, with auto-scroll and a blinking caret (new
tool-call-progressevent) - Shell result footer reports the real exit code and outcome (
exit_code=0 success in 1.2s, failed / aborted / timed out / backgrounded); the card colors itself green or red from it - Working directory persists across Shell calls in a run — a bare
cd <dir>moves it,working_directorystill applies to a single call - Cards follow the work: thinking, plan, terminal, generic tool, subagent, and grouped explore cards expand while running and collapse when they settle (a manual toggle wins until the state changes)
- Subagent cards show a status badge, the resolved model name and step count as separate chips, a compact list of the two most recent steps, and a live activity line ("Planning next move…")
- Running spinners double as kill switches: hovering any in-flight tool, terminal, or subagent spinner turns it into a stop button that force-terminates that task
ListDiroutput opens with a one-line legend (trailing / = directory) so directories are never mistaken for files- Centralized
OpenCursoroutput channel with structuredlogErrorreporting, replacing silently swallowed startup/index/tool failures - Portable
/workspacepath alias accepted from the model on every host OS
- Commands no longer hang after finishing: each command runs in its own child shell and settles on process close, instead of waiting on a persistent REPL that never reported completion
- Killing a command kills its children too (
taskkill /T /Fon Windows, process-group SIGKILL elsewhere), sopnpm/npmscripts leave no orphans holding the pipe open - Commands that prompt for input get EOF immediately instead of blocking forever
- Denied shell commands can no longer be smuggled through chaining:
git add -A; git commit …is checked per command (;,&&,||,|, newlines, sub-shells), and the denial names the command that actually tripped the rule - Todos are per-run context instead of a module global, so concurrent chats no longer clobber each other's task lists
- Outside-workspace detection covers every path-bearing tool input (ListDir, Glob, Grep, SemanticSearch, Shell
working_directory, …) and resolves paths properly on Windows dir/**allow rules also match the directory itself, so listing an approved folder no longer re-prompts- Antigravity and Codex OAuth transports updated (host-correct platform metadata, request ids, model list, Codex
client_versionand prompt cache key); Claude Code sends the CLI beta set - Gemini tool results are sent with the tool's name instead of its call id
- Denied approvals report the blocked subject back to the model so it can pick another approach
- Inline diff review consolidated onto a single diff-view path (virtual original-content provider removed) with more reliable editor refresh
- Antigravity max output tokens raised to 64k
- Subagent tabs render as plain chats — the "Back to chat" header, read-only tag, and Stop button were removed
- Subagent cards expand and collapse with the run itself; the manual chevron toggle is gone
- Quieter chat surface: hover shadows, lift/scale animations, and accent left borders removed from tool cards, message bubbles, approval and error cards, and composer buttons
- Collapsed terminal cards align their prompt, command, and badges on a single vertical center line
- Opus 5 in the model catalog (flagship); curated Claude 5 aliases (Opus / Sonnet / Fable) stay selectable when
/v1/modelslags - Dynamic default
max_tokensfrom model capabilities and reasoning effort - Adaptive-thinking guards: Opus 5 clamps effort when thinking is disabled; Fable 5 / Mythos reject disable
- Anthropic in-band stream
errorevents (overloaded, invalid model, mid-stream rejection) surface instead of empty turns - Safety-classifier
refusalfinish reason throws a clear error instead of a silent end
- 1M context is native default on Opus 5 / Fable 5 / Sonnet 5 / 4.6+;
context-1mbeta header only on older models that still gate it - Fable 5, Opus 5, and Sonnet 5 offer both 300k and 1M context options (1M default); Sonnet 4.6 offers 200k and 1M
- Agents/subagents no longer infinite-loop from mid-task amnesia: live-turn tool results and edit args stay verbatim until the next user message
- Context pruning only touches older turns; live turn is fully protected (12 prior results + 6 call batches kept verbatim)
- Auto-compaction soft boundary at 65% / hard at 78%; verbatim tail after summarize raised to 50%
- Lossless persisted chat history for export; pruning, compaction, and thinking removal now affect only the disposable model context
- Context economy layer prunes stale tool dumps during active runs and slims old Write/StrReplace args (keeps four latest results + two latest call batches verbatim)
- Signal-aware stale-output summaries preserve errors, warnings, diffs, and line-addressed evidence
- Compact tool schemas keep every tool callable while removing repeated long descriptions after the initial turn
- Latest-wins dedup: older Read/ListDir/Grep/WebFetch results for the same target become one-line supersede stubs
- Per-run frozen timestamp keeps the cached query block byte-stable across steps (prompt-cache friendly)
- Shell output collapses runs of identical lines into "line ×N" (RTK-style)
- Background subagents no longer false-timeout while still working (removed wall-clock wait; parent awaits real settle or user Stop)
- Parent loop no longer resumes / re-dispatches while a prior Task wave is still running
- Auto-compaction starts at safe subtask boundaries after 55% fill; 72% remains the hard safety trigger
- Thinking text no longer counted toward context budget (UI-only; never on the wire)
- Subagents inherit the main agent's context-size limit (auto-compaction applies)
- Expandable, collapsed-by-default task prompt inside the subagent chat view
- Delete tool timing out but not stopping (abort-aware
unlink/backup read) - Read supports paths with spaces; directory paths return a clear error
- Chat scrolls to the very bottom when returning to the main agent (tab switch / Back)
- Outer timeout budget on subagent Tasks (nested tools already have their own timeouts)
- TodoWrite / TodoRead timeout tripled
- Tool outputs trimmed to send fewer tokens to the model (only tools; prompts unchanged)
- Shell result drops pid/running-for/echoed-command header when done; middle-truncated 12k body with collapsed blank lines
- Read caps whole-file reads at 1500 lines with a continue hint (was uncapped)
- ListDir caps at 300 entries (dirs first) with a "more" hint
- SemanticSearch returns 8 hits (was 12), each chunk snippet-capped at 1200 chars
- SearchDocs excerpts snippet-capped at 1200 chars
- Grep abort/timeout output cap 50k → 12k
- Live timeout countdown badges on tools/tasks; kill at zero via host abort
- Shell tool card redesign: full command wrap, meta/body/footer, copy-command button
- Hard budgets for foreground/background subagents so Tasks cannot hang forever
- Stream coalescing for high-frequency agent/UI events (text/thinking/tool args)
- Read tool wall-clock timeouts (
stat+ I/O) and abort-aware path access - Path normalizer for spaces, quotes,
file://URIs, and mixed separators
- Tools stuck “Working” after timeout (immediate UI settle + cancel path)
- Read hanging on missing/unreachable/network paths (timeout could not terminate)
- Shell stuck on paths with spaces; PowerShell framing + session queue races
- Invalid path throws in Read/ListDir/Glob and related tools (user-friendly errors)
- Directory paths on Read return a clear error (suggest ListDir/Glob)
- UI freezes from high-frequency stream postMessage / React re-renders
- Read-only tools thrashing CPU/IO when many run in parallel (concurrency cap)
- TodoWrite / TodoRead default timeout 5s → 15s
- Read default timeout tightened to match inner I/O budget
- Task tool included in configurable timeouts with countdown UI
- Per-tool hard timeouts so hung Grep/Glob/Shell/etc. cannot block the agent loop forever
- Abort-signal support for long-running tools (walk, grep, shell) so Stop cancels mid-work
- Configurable per-tool timeout seconds in Settings → Agents
- GPU-accelerated local embeddings when available (DirectML / CUDA / CoreML / WebGPU), with CPU fallback
- Indexing page shows GPU/CPU badge plus model and runtime technical details (repo, dtype, ONNX EP, platform)
- Stricter indexable-file filters (source extensions only; skip lockfiles, minified bundles, binaries)
- Expanded ignored directories for tools and indexing (
node_modules, build caches, venvs, vendor, etc.) - Semantic index walk and file watcher skip non-source trees earlier for faster indexing
- Indexing enable/disable toggle in settings (fully turns off semantic indexing)
- Persistent semantic index across VS Code restarts (warm load from disk)
- Incremental re-index of only changed files on sync/reopen
- Real-time auto-index of new/modified files via workspace file watcher
- Context size dropdown beside the model picker for models without catalog presets
- Default context options (
32k–1m) injected for uncatalogued models
- Smart conversation summarization triggers at 80% of the usable context budget
- Subagents run with isolated history (empty parent context); parent only receives the final Task result
- Multitask/background Task waves wait for completion before the parent continues
- Stop/cancel aborts all linked subagents and force-settles open tools, thinking, and compaction UI
- Stuck “working” subagent spinners and unresponsive stop in multitask mode
- Orphaned shell processes when a run is aborted mid-command
- Context ring default aligned with resolved
max_context(fallback128k)
- Per-workspace conversations (existing global conversations migrate automatically)
- GGUF models auto-load on first message with a "loading model" card in chat
- llama.cpp server uses random free ports with retry on bind failure
- Composer dropdowns (model picker, mode menu) now position themselves within the viewport and work in edit mode
- All composers share one selected model and mode
- Auto model selection hidden for now; first enabled model is the default
- Production error:
Cannot find package '@huggingface/hub'(runtime deps now resolved via file URLs)
- MCP tool marketplace
- Initial release
- Agent chat sidebar with multi-turn conversations and streaming responses
- Tool suite: file read/write/edit, glob/grep search, shell commands, web search/fetch
- Local model providers: Ollama and llama.cpp, plus OAuth-based cloud providers
- Semantic codebase index for meaning-based search
- MCP (Model Context Protocol) client with external server support
- Approval policy engine with allow/ask/deny rules per tool (shell, edits, web, MCP)
- Inline diff review for AI-proposed edits
- Context mentions, workspace context, and custom rules/hooks
- Settings panel (React webview) for models, features, and approval configuration
Ctrl+L/Cmd+Lto add editor selection to chat