Releases: startvibecoding/vibecoding
v0.1.32
Changelog
v0.1.32
✨ Features
-
Tool System Completeness
- Added full documentation for all registered tools:
jobs,kill,question,memory,cron, and MCP dynamic tools jobstool: list and inspect background jobs started withbash async=true, with optional cleanupkilltool: terminate a running background job by IDquestiontool: AI can ask users multiple-choice questions during plan mode to clarify requirementsmemorytool (Hermes): persistent memory viamemory.mdwith read/add/update/delete actions across sessionscrontool (Hermes/multi-agent): scheduled background tasks via sub-agents with@daily,@weekly,@every Nschedules and one-shot support- MCP dynamic tools: tools/resources/prompts from MCP servers are auto-discovered and registered per session
- Added full documentation for all registered tools:
-
Plan Mode Question Tool
- Added
questiontool, registered only in TUI + plan mode - AI can ask users multiple-choice questions; users select a preset option or type a custom answer
- Helps clarify requirements before forming a plan, producing higher-quality proposals
- Exposed via
QuestionHandleroptional interface (type assertion); does not pollute the publicAgentinterface
- Added
🐛 Bug Fixes
-
Bash Tool Output Safety
- Synchronous bash mode now enforces a 1 GB output limit using
limitedBuffer, preventing OOM from unboundedbytes.Buffergrowth
- Synchronous bash mode now enforces a 1 GB output limit using
-
Hermes
/compactCommand- Implemented the
/compactslash command for Hermes messaging mode (previously a TODO stub) - Sets a
ForceCompactflag on the session, consumed by the next agent run to trigger context compaction
- Implemented the
-
Session Durability
writeEntrynow callsf.Sync()after writing, guaranteeing data survives crash or power loss- Corrupt session lines are now logged as warnings and skipped instead of blocking session load
-
Hermes Approval Race Condition
ResolveApprovalnow usesselectto avoid writing to an already-consumed channel when timeout and approval race
-
Agent Sub-agent Panic Logging
sendParentEventnow logs the panic value before recovering, aiding diagnosis of closed-channel races
-
Atomic File Write Cleanup
writeFileAtomicno longer usesdefer os.Remove(tmpPath)which would attempt to delete an already-renamed file; cleanup is now explicit on each error path
-
Agent Loop Detection Configurability
MaxConsecutiveNoText(stuck-detection threshold) is now configurable viaAgentLoopConfig(default 95)- Fixed incorrect error message that added pre- and post-warning counters together
-
Job Manager Auto-cleanup
AddJobnow garbage-collects finished jobs older than 30 minutes (checked every 5 minutes)
-
Cron Scheduler Error Logging
checkAndRunnow logs store errors instead of silently swallowing them
-
TUI Bash Output Display
- Compressed bash tool output summary by removing blank lines to prevent excessive vertical height in the TUI collapsed view
-
Vendored Search Tools
- Added fallback to system
grep/findwhen embeddedrg/fdare unavailable for the current architecture
- Added fallback to system
📦 Distribution
- Added Linux LoongArch64 (
loong64) build and packaging targets, including tarball, Debian, and npm package metadata
✅ Tests
- Added unit tests for
limitedBuffertruncation,JobManagerGC,writeFileAtomiccleanup,sendParentEventpanic recovery,MaxConsecutiveNoTextconfigurability, session fsync durability, corrupt-line tolerance, andQuestionToolmetadata/mode-filtering/execution/error-handling
v0.1.31
Changelog
v0.1.31
🐛 Bug Fixes
-
Terminal Input
- Added Home/End cursor movement support in the TUI input box
- Fixed the first submitted input being swallowed after canceling an approval prompt with Esc
- Added command history navigation with Up/Down, including repeated selection through previous inputs
-
A2A Security and Reliability
- Changed the default A2A host from
0.0.0.0to127.0.0.1 - Added Bearer token authentication for
/a2a, REST A2A routes, and SSE events while keeping the Agent Card public - Replaced timestamp-based A2A task IDs with collision-resistant random IDs
- Made A2A task store reads and writes use cloned task snapshots to avoid accidental shared mutation
- Changed the default A2A host from
-
Path and Session Safety
- Fixed path containment checks to use path-aware boundaries instead of string prefix checks
- Prevented context
extraFilesfrom escaping the working directory - Encoded unsafe Hermes session path components and enforced
allowed_work_dirsduring session creation - Restricted session deletion to
.jsonlfiles under the configured session directory
-
Auth, Approval, and Resource Limits
- Switched Hermes HTTP/WebSocket token checks to constant-time comparison
- Changed the Hermes WebSocket client to send auth via
Authorization: Bearer ...instead of query strings - Cleaned up pending ACP permission requests on timeout and propagated ACP write errors
- Added request/body size limits for ACP, read-tool image files, WeChat responses, and cron A2A responses
- Added timeouts to cron A2A HTTP calls
-
Memory, Context, and Concurrency
- Added locking to memory store operations
- Fixed
memory.WriteAll()path handling and kept memory update/delete scoped to the requested section - Cloned gateway model settings before per-request
temperature/top_poverrides - Passed agent callback context/message snapshots instead of shared references
- Serialized cron job state transitions through the job store
-
Configuration and Gateway Hardening
- Gated
!commandAPI key resolution behindVIBECODING_ALLOW_SHELL_CONFIG=1 - Fixed Gateway CORS to echo only the allowed request origin
- Added a startup warning when Gateway listens beyond loopback in
yolomode without authentication - Hardened platform home/shell fallback behavior
- Gated
🧪 Tests
- Added regression coverage for A2A auth, task ID uniqueness, task snapshot isolation, and persisted working task messages
- Added coverage for path traversal, unsafe session IDs, memory section operations, ACP cleanup, CORS behavior, UTF-8 truncation, and shell-config opt-in
- Ran focused package tests plus race tests for A2A, agent, gateway, and cron
📝 Docs
- Updated A2A, Hermes, Gateway, configuration, and security docs for the new authentication and hardening behavior
v0.1.29
Changelog
v0.1.29
🐛 Bug Fixes
- NPM Package Wrapper
- Fixed
npm/bin/vibecodingentry script to ensure installer packages ship the correct executable wrapper - Adjusted
build-npm.shandbuild-npm-packages.shto include the wrapper consistently
- Fixed
v0.1.28
✨ Features
-
Per-Model Temperature/Top-P Configuration
- Added
temperatureandtop_pfields toModelConfigandModelfor per-model parameter tuning - Wired through OpenAI and Anthropic providers with
omitempty—nilmeans use API default - Wired through provider factory, agent loop, and ACP mode
- Gateway supports per-request
temperature/top_poverride viaChatParams - When not configured, parameters are omitted entirely (no zero-value sent to API)
- Added
-
OpenAI Responses API Support
- Added a dedicated OpenAI Responses provider path under
api: "openai-responses" - Supports Responses streaming, tool calls, reasoning summaries, and prompt cache parameters
- Responses configuration is exposed under provider
responsessettings with default prompt cache enabled - Added model compat flags for
supportsPromptCacheKeyandsupportsReasoningSummary
- Added a dedicated OpenAI Responses provider path under
🧪 Tests
- Improved provider test coverage for OpenAI Responses API and Anthropic request parsing
- Reworked Anthropic tests to use in-memory HTTP mocks instead of port-binding test servers
📝 Docs
- Updated
AGENTS.mdversion to v0.1.28
v0.1.27
✨ Features
-
Hermes Mode (
vibecoding hermes)- New messaging gateway mode for WeChat, Feishu, and WebSocket
- Persistent per-user sessions with auto-archiving on
/new - Default
yolomode for unattended operation - Smart approvals with tiered risk classification (low/medium/high)
- User whitelist for platform access control
- WebSocket streaming: real-time text_delta/think_delta/tool_call/tool_result/tool_diff/usage/done events
-
A2A Protocol (
vibecoding a2a)- New Agent-to-Agent protocol server (JSON-RPC 2.0 over HTTP + SSE streaming)
- Standalone mode:
vibecoding a2a start(port 8093) - Integration mode:
hermes.jsona2a.enabled: trueshares hermes HTTP port - Agent Card at
/.well-known/agent.json - Task lifecycle: submitted → working → completed/failed/canceled
- REST endpoints:
/a2a/send,/a2a/task,/a2a/task/cancel,/a2a/events - A2A Client:
vibecoding a2a send <message>to send tasks to other A2A servers - A2A Discovery:
vibecoding a2a discover <url>to fetch remote Agent Cards - A2A Scheduling: Cron jobs support
--a2a-targetto schedule tasks to A2A servers
-
A2A Master Mode (
--enable-a2a-master)- Configure multiple remote A2A agents via
a2a-list.json - Registers
a2a_dispatchtool for the LLM to automatically dispatch tasks to remote agents - Supports global (
~/.vibecoding/a2a-list.json) and project-level (.vibe/a2a-list.json) config --init-a2a-master-configgenerates a sample config file- Disabled by default, requires explicit opt-in
- Configure multiple remote A2A agents via
-
A2A Config Initialization
vibecoding a2a --init-a2a-configgeneratesa2a.jsonconfig templatevibecoding --init-gatewaygeneratesgateway.jsonconfig template (existing)vibecoding --init-a2a-master-configgeneratesa2a-list.jsonconfig template- All
--init-*flags support--forceto overwrite existing files
-
Scenarios & Walkthroughs Documentation
- New
docs/scenarios.md(zh + en) covering 9 practical usage scenarios - Covers: daily coding, CI integration, multi-agent, VS Code ACP, A2A server,
A2A Master cross-machine dispatch, Gateway HTTP, Hermes messaging, combined modes
- New
-
Documentation Overhaul
architecture.md: added all missing modules (a2a/acp/gateway/hermes/mcp/memory/messaging/vendored)tools.md: addeda2a_dispatchandskill_reftool docscli-reference.md: added--enable-a2a-master,--init-a2a-master-config,
--init-gateway,--force,a2asubcommand docsREADME.md: updated architecture diagram, added running modes overview
-
Pressure System
- Context Pressure:
EventContextPressurefired at 55% context usage (configurable viacontext_pressure_threshold) - Budget Pressure:
EventBudgetPressurefired at 20% remaining iterations (configurable viabudget_pressure_threshold) - One-shot events: fire once per threshold crossing, not every turn
- Messaging platforms receive pressure warnings via progress callback
- Context Pressure:
-
Smart Approvals (Tiered Strategy)
- Low risk: auto-approve
- Medium risk: auto-approve + notify user
- High risk (WebSocket): send
approval_request, wait for userapproval_response(5min timeout) - High risk (messaging): auto-reject + notify user
- Command risk classification: low/medium/high based on bash command patterns
-
Provider/Model Configuration
default_provider/default_modelinhermes.json(overridessettings.json)- CLI flags
-p/--providerand-m/--modelforhermes start - Priority: CLI flags >
hermes.json>settings.json
-
Multi-Agent Mode (
--multi-agent)- Enables sub-agent tools (spawn/status/send/destroy) in hermes sessions
- Configurable via
hermes.jsonmulti_agentfield or--multi-agentCLI flag
-
Sandbox Mode (
--sandbox)- Optional bwrap sandbox isolation (disabled by default)
- Configurable via
hermes.jsonsandboxfield or--sandboxCLI flag
-
MCP Integration
- Hermes automatically loads MCP servers from global/project
mcp.json - MCP tools registered per-session, connections auto-closed on session removal
- Hermes automatically loads MCP servers from global/project
-
Progress Events for Messaging Platforms
- Real-time tool execution progress sent to WeChat/Feishu during agent runs
- Format:
[tool]: args ✅/❌for tools,💭 ...for thinking process - Final summary sent after agent completes
-
Memory Tool
memorytool with read/add/update/delete actions- Section-level operations (User Profile, Working Memory, Lessons Learned)
- Defaults to
.vibe/memory.md(project directory) - Lookup priority:
memory.pathconfig →.vibe/memory.md→<GLOBAL_DIR>/memory.md /api/memoryHTTP endpoint (GET/PUT) for memory access
-
Hermes CLI Commands
hermes start— start daemon with all CLI flagshermes stop— stop daemon via PID file + SIGTERMhermes status— check daemon status via PID + HTTP healthhermes client— WebSocket client with streaming output and slash commandshermes config init/show— configuration managementhermes wechat login/status— WeChat iLink managementhermes feishu setup/status— Feishu configurationhermes webhook list— webhook route listinghermes memory show/clear— memory managementhermes sessions list— active session listing (queries running instance)hermes cron list/add/remove/enable/disable— cron job managementa2a start/stop/status/card— A2A server management
📝 Changes
- WeChat iLink implementation with zero external dependencies (5 files: types/protocol/auth/crypto/wechat)
- Feishu bot with official SDK and WebSocket long-connection
- Shell hooks for pre/post tool call external scripts (JSON stdin/stdout)
- Webhook inbound routing with HMAC-SHA256 signature verification
- WebSocket uses
golang.org/x/net/websocket(stdlib compatible) - PID file-based daemon management for hermes stop/status
🐛 Bug Fixes
-
NPM Installer Packaging
- Fixed release packaging flow so
vibecoding-installeralways ships executable entrybin/vibecoding. - Added
scripts/npm-installer-wrapper.jsas the single source of wrapper logic, reused by both
scripts/build-npm.shandscripts/build-npm-packages.shto avoid drift. - Adjusted
npm/.npmignoreandnpm/binhandling to avoid shipping accidental build artifacts and to keep
package manifests (files) explicit.
- Fixed release packaging flow so
-
Hermes Webhook Delivery and Filtering
- Webhook routes now treat unknown event types as non-matching unless the route explicitly allows
*. - Added
delivery_targetto webhook routes so WeChat/Feishu delivery has a concrete recipient. - Updated webhook route listing and config templates to show the delivery target when present.
- Webhook routes now treat unknown event types as non-matching unless the route explicitly allows
-
OpenAI Responses Thinking Mapping
- Mapped
--thinking xhightoreasoning.effort: "high"for the OpenAI Responses API.
- Mapped
🧪 Tests
- Reworked webhook router tests to wait on handler completion instead of sleeping, removing a race/flakiness source.
- Added coverage for webhook event rejection when the event type cannot be inferred.
- Added coverage for webhook delivery target handling.
v0.1.26
Changelog
v0.1.26
✨ Features
-
Gateway Mode (
vibecoding gateway)- New HTTP server exposing a standard OpenAI Chat Completions API (
/v1/chat/completions,/v1/models,/health) - Any OpenAI-compatible client (Cursor, Continue, Open WebUI, Python SDK, etc.) can connect directly
- Streaming (SSE) and non-streaming responses fully supported
- Backend powered by VibeCoding agent loop with tool execution transparent to the caller
- New HTTP server exposing a standard OpenAI Chat Completions API (
-
Multi-Session Support
- Built-in
SessionPoolfor concurrent sessions, each with isolated agent, tools, and message history - Session association via
x_session_idin request body; auto-created when absent - Configurable idle timeout (
session.idleTimeoutSeconds) and max session limit (session.maxSessions)
- Built-in
-
Sub-Agent Support in Gateway
- Optional
enableSubAgentsconfig to enable multi-agent orchestration in gateway mode - Reuses existing
AgentFactory/AgentManager/ sub-agent tools with no core agent changes
- Optional
-
Bearer Token Authentication
- Configurable via
gateway.jsonwithauth.enabledandauth.tokenslist - Disabled by default;
/healthendpoint always unauthenticated
- Configurable via
-
Slash Commands via API
/clear,/mode,/model,/models,/sessions,/compact,/status,/skill,/skills,/help- Triggered when the last user message starts with
/; processed at gateway layer without invoking LLM - Responses use standard OpenAI format with
x_commandextension field
-
Tool Visibility Configuration (
toolVisibility.mode)"content"(default): tool status sent as text incontentfield during streaming"sse_event": tool status sent as extended SSE events for custom clients"none": fully transparent, client sees only final text
-
System Prompt Handling (
systemPromptMode)"append"(default): client system messages appended to built-in system prompt"ignore": client system messages discarded entirely
-
Security: allowedWorkDirs
- Directory whitelist for
x_working_dirrequest-level overrides with path-separator-aware prefix matching - Three-layer security model: L1 auth + L2 directory control + L3 sandbox (bwrap)
- Directory whitelist for
-
Sandbox Support in Gateway
- Configurable via
gateway.jsonsandbox.enabled/sandbox.levelor--sandboxflag - Inherits detailed sandbox settings (allowedRead, deniedPaths, etc.) from
settings.json
- Configurable via
-
Gateway Configuration (
gateway.json)- Independent config file at
~/.config/vibecoding/gateway.json - Covers: listen address, auth, mode, sandbox, workingDir, allowedWorkDirs, session management, CORS, tool visibility, system prompt mode, request timeout, concurrency limit, logging
vibecoding --init-gatewayto generate template;--forceto overwrite
- Independent config file at
-
Request Timeout & Concurrency
requestTimeoutSeconds(default 1800s); streaming keeps alive as long as data flowsmaxConcurrentRequests(default 0 = unlimited)
📝 Docs
- Added
docs/gateway-proposal.mdwith full architecture, API design, security model, and implementation plan - Updated
AGENTS.mdversion note
v0.1.25
v0.1.25
✨ Features
-
Multi-Agent Mode
- Added opt-in
--multi-agentsupport across CLI, TUI, and ACP mode - Added
AgentManager,EventRouter, and per-agent registries so agents have isolated tools, job managers, sessions, messages, and context - Added
subagent_spawn,subagent_status,subagent_send, andsubagent_destroytools for delegated background work - Added multi-agent prompt guidance and safeguards that prevent nested sub-agent spawning
- Added opt-in
-
Cron Task Support
- Added
internal/cronwith persistent cron store and scheduler coverage - Added
/croncommand entry points in multi-agent TUI workflows
- Added
-
Provider Vendor Adapter Layer
- Added vendor adapter registration in
internal/provider/vendor*.go - Centralized provider/model creation in
internal/provider/factory - Added vendor detection for DeepSeek, Xiaomi, Kimi, MiniMax, Seed, Qianfan, Bailian, Gitee, OpenRouter, Together, Groq, Fireworks, OpenAI, and Anthropic
- Preserved existing provider config format while allowing vendor-specific defaults and generic OpenAI/Anthropic-compatible fallback
- Added model
compathandling for thinking formats, reasoning effort support, max token field selection, adaptive Anthropic thinking, and DeepSeek/Xiaomi assistantreasoning_content
- Added vendor adapter registration in
🐛 Bug Fixes
- Auto-initialized sessions on first append so sub-agents can write session entries without requiring explicit prior initialization
- Fixed sub-agent tests to wait for background runs and clean up spawned agents before temporary directory removal
- Preserved ACP Anthropic cache-control behavior while moving provider creation to the shared factory
📝 Docs
- Updated
AGENTS.mdwith provider factory and vendor adapter guidance - Replaced the multi-agent implementation checklist with a completed architecture/status document
- Removed the obsolete root
todo.md
🧪 Testing
- Added coverage for provider vendor resolution, provider factory creation, OpenAI/Anthropic compat behavior, multi-agent manager/router/sub-agent flows, cron storage/scheduler behavior, and session auto-initialization
- Verified with
make test(go test -v -race ./...)
v0.1.24
v0.1.24
✨ Features
- API Retry with Exponential Backoff
- Automatic retry for transient errors (5xx, network failures, rate limits) on initial HTTP connection
- Exponential backoff:
baseDelay × 2^attempt, capped at 30 seconds - Does NOT retry on user abort (
context.Canceled), 4xx client errors, or mid-stream failures - Configurable via
retrysettings (maxRetries,baseDelay,maxDelay) - Agent forwards retry events as status updates visible in TUI and print mode
- ACP mode also receives retry configuration
🐛 Bug Fixes
-
Anthropic
cache_controlNow Opt-In- Changed default
cache_controlbehavior to off (was auto-enabled for official API base URL) - Require explicit
cacheControl: truein provider config to enable prompt caching - ACP provider creation explicitly enables
cache_controlfor Anthropic
- Changed default
-
Anthropic Tool Result Grouping
- Fixed consecutive
toolResultmessages to be grouped into a singleusermessage - Anthropic API requires all
tool_resultblocks for precedingtool_useto appear together before other content - Image blocks from tool results are now appended after all result blocks in the same message
- Fixed consecutive
-
Agent Tool-Only Loop Warning Ordering
- Moved the no-text tool-loop warning to be injected after tool results are appended
- Keeps assistant -> toolResult -> warning message ordering valid for provider and session transcripts
- Warning messages are now also persisted to session storage
📝 Docs
- Comprehensive Configuration Documentation Rewrite
- Added missing settings:
cacheControl, idle compression, full sandbox fields (bwrapPath,allowedRead,allowedWrite,deniedPaths,passEnv,tmpSize),shellPath,shellCommandPrefix,sessionDir,skillsDir,theme,retry - Documented shell command
apiKeyformat (!cmd) for password manager integration - Fixed key resolution order: config
apiKeyfirst, then derived env var - Fixed macOS config path:
~/Library/Application Support/vibecoding/ - Added top-level fields reference table with all defaults
- Added per-platform defaults for sandbox paths and env vars
- Improved examples with Claude provider
cacheControl, idle compression, project-level overrides, and custom sandbox paths
- Added missing settings:
🧪 Testing
- Added retry tests covering
IsRetryable,RetryDelay, andFormatRetryMessage - Added Anthropic provider tests for consecutive tool result grouping
- Added a regression test covering tool-only warning placement after tool results
v0.1.22
Changelog
v0.1.22
✨ Features
- CLI/TUI MCP Auto-Loading
- CLI/TUI startup now loads global and project
mcp.json, connects configured MCP servers, and registers MCP tools before the agent tool list is frozen
- CLI/TUI startup now loads global and project
🐛 Bug Fixes
- Markdown Rendering Style
- Switched CLI print mode and TUI markdown rendering from Glamour auto-style detection to the fixed
darkstyle for more consistent terminal output
- Switched CLI print mode and TUI markdown rendering from Glamour auto-style detection to the fixed
🧪 Testing
- Added MCP config loader coverage for placeholder template filtering
🛠 Improvements
- Shared MCP Runtime
- Moved MCP connection/tool registration out of ACP-only code into a shared runtime used by ACP and normal CLI/TUI sessions
- Starter-template placeholder MCP servers are ignored during automatic startup loading
v0.1.21
Changelog
v0.1.21
✨ Features
-
Plan/Apply Workflow
- Added a built-in
plantool for structured task plans withpending,running,done, andfailedstep statuses - TUI now shows the current task plan and records plan updates in the transcript
- Print mode and ACP now surface plan updates for non-interactive and editor-client flows
- Added a built-in
-
Apply Confirmation
- Added
approval.confirmBeforeWriteto require approval beforewriteandeditin agent mode - Enabled write/edit confirmation by default in generated settings
- TUI approval prompts summarize write content by byte size instead of dumping full file content
- Added
-
MCP Config Commands
- Added
/init_mcpto create project/globalmcp.jsonwithbasic/fulltemplates and optional--force - Added
/mcpsto list MCP servers from global and projectmcp.jsonfiles - MCP config is now maintained in standalone
mcp.json(separate fromsettings.json)
- Added
🧪 Testing
- Added coverage for the
plantool and write/edit approval gating - Added HTTP-based MCP integration tests for tool/resource/prompt registration and callback paths
- Added SSE-based MCP integration tests for stream callbacks and message endpoint request/response flow
🛠 Improvements
- ACP MCP Hardening
- Added MCP transport support for
httpandsse(alongside existingstdio) - Added MCP initialize/tool-discovery timeouts to avoid hanging ACP sessions
- Added paginated
tools/listfetching with upper page bounds - Added MCP
resources/*andprompts/*discovery and tool registration - Added duplicate MCP server-name detection and MCP tool-name de-duplication
- Added MCP inbound request/notification handling (
ping, progress/logging/cancel notifications) - Added bridge for inbound
sampling/createMessageto the active ACP provider/model - Added stricter close/error propagation
- Added MCP transport support for
v0.1.20
v0.1.20
✨ Features
- Structured File Change Reporting
writeandeditnow attach structured file diff metadata to tool results- TUI tool details show full unified diffs while collapsed tool rows keep a compact
+N -Nsummary - Print mode now emits clear file change summaries for non-interactive runs
- ACP tool updates include diff metadata in raw output for compatible clients
🧪 Testing
- Added coverage for structured diff metadata from
writeandedit
v0.1.19
✨ Features
-
TUI Tool Details Modal
- Replaced
Ctrl+Otoggle-expand with a scrollable full-screen modal overlay showing all tool calls and results - Supports PgUp/PgDn, Up/Down, Home/End navigation; Esc/Ctrl+O/q to close
- Tool headers now display file paths; removed content truncation in tool args display
- Write tool results show diff summary in the one-line summary line
- Key input is blocked while the modal is open to prevent accidental actions
- Replaced
-
Write Tool Diff Summary
writetool now computes LCS-based line-level diff when overwriting files- Returns structured diff info (
+N -Nwith line ranges) in the tool result - Skips diff computation for very large files (>200K line pairs) to avoid memory pressure
🛠 Improvements
- Unified Shell Args Across Sandbox Backends
- All sandbox backends (
none,mac,windows) now useplatform.ShellArgs()for cmd.exe/PowerShell argument construction - Fixes Windows cmd.exe and PowerShell commands in sandboxed execution modes
ShellArgsnow normalizes shell name to lowercase before matching
- All sandbox backends (
🧪 Testing
- Added
TestNoneSandboxWrapCommandUsesPlatformShellArgscovering cmd.exe and PowerShell argument generation
v0.1.18
Changelog
v0.1.18
🐛 Bug Fixes
-
TUI Nil Pointer Panic
- Fixed a nil pointer panic in
printMessageOncewhenprintedMessageIdxmap was not initialized - Added nil check before accessing the map in the message printing logic
- Fixed a nil pointer panic in
-
Stream Commit Before Tool Execution
- Added
commitActiveStream()method to flush streaming content (thinking and assistant messages) to output before tool execution - Now properly commits active stream before
EventToolCallandEventToolApprovalRequesthandling - Ensures thinking and partial assistant responses are visible when tools run or approval is requested
- Added
🧪 Testing
- Added
TestHandleAgentEventCommitsStreamBeforeApprovalregression test for stream commit ordering