Releases: startvibecoding/mothx
Release list
v1.1.61
Changelog
v1.1.61
✨ Features
-
Per-Session Tool Capabilities
- Added
x_toolsextension to/v1/chat/completionsfor enabling webSearch, browser, a2aMaster, delegate, and multiAgent per session. - Added
GET /api/capabilitiesandGET/PATCH /api/sessions/{id}/capabilitiesAPIs for querying and updating session tool toggles. - Added
session_capabilitiespersistence table (migration 007) insessions.db. - Added CLI flags
--web-search,--browser,--enable-a2a-masterfor serve mode. - Added
webSearch,browser,a2aMasterfields toserve.jsonconfig. - Web UI session tool toggles in composer bar with PATCH to capabilities API.
- Per-session settings injection for
webSearchviasettingsForSession. - Added
x_session_id+x_working_dircwd conflict detection (HTTP 409). - Added
/api/sessions?scope=all|activeand/api/sessions/activeendpoints. /modeand/delegatecommands now persist capability changes per session.
- Added
-
Session Streaming & Stats Dashboard
- Added SSE-based session streaming for real-time chat updates (
session_stream.go). - Added sequenced message/event replay for cursor-based streaming.
- Added
/api/stats/endpoints (summary, timeseries, by-provider, by-model, recent). - Track session running state and publish run/capability events to stream.
- Added cache read/write tokens to usage tracking.
- Web UI: SSE streaming in Chat view, Stats dashboard view, Channels/Logs settings.
- Added
WorkingDir→DefaultWorkDirrename in serve config. - Added legacy config dir normalization for session/skills dirs.
- Added SSE-based session streaming for real-time chat updates (
-
Run & Capability Event Tracking
- Added
session_run_eventsandsession_capability_eventstables (migration 008). - Record run lifecycle events (started/finished/failed/canceled) for every chat completion.
- Record capability change events for
/mode,/delegate,x_tools, and PATCH API. - New endpoints:
GET /api/sessions/{id}/run-events,GET /api/sessions/{id}/capability-events. - Web UI displays recent run and capability events.
- Added
make serveMakefile target.
- Added
-
Transcript SSE Events for Streaming
- Added
x_transcriptfield toChatCompletionRequestfor enabling transcript-mode streaming. - When enabled, streaming handler emits
event: transcriptframes (assistant_deltaandmessagetypes) instead of legacytool_statusevents. - Web UI sends
x_transcript:trueand routes transcript events through sharedupsertTranscriptMessagepath. - Refactored streaming handler to branch on transcript flag with helper functions for building transcript toolCall/toolResult entries.
- Added
-
Embedded Web UI Assets
- Web UI assets are now embedded in the binary via
go:embed, no longer requiring dist files on disk. - Added
uipackage withDistFS()andfs.FSabstraction for both embedded and override paths. --web-ui-dirflag still supported for overriding embedded assets.
- Web UI assets are now embedded in the binary via
-
External Bind Address via --port
--portnow accepts full addresses (e.g.0.0.0.0:8080).- Removed
displayListenAddrrewrite that overrode0.0.0.0to127.0.0.1.
-
Web UI Keyboard Shortcuts & Pagination
- Sidebar: Cmd/Ctrl+K to focus search, Shift+Cmd/Ctrl+K for new chat.
- Platform-aware shortcut labels (macOS vs other), Escape clears search.
- Sessions view: paginated list (25 per page) with page navigation controls.
-
WeChat QR Login API & Channels Settings UI
- Added WeChat QR login API endpoints (login status, QR proxy, base64 mode).
- Added
wechatLoginSessionfor managing QR scan flow state. - Rewrote Channels.svelte with full WeChat QR login flow (polling, display, error handling).
- Added Feishu config form (appId/appSecret/workspace/allowedUsers) and WebSocket channel toggle.
- Added
ProviderSettings.sveltewrapper and comprehensive i18n strings for channel settings. - Dispatcher nil-checks before starting platforms.
-
Sub-Agent Detach & Rule Guard Fix
- Added
DetachChild()toAgentManagerto remove child from parent's active list while retaining the child agent for later inspection. - Added
HasRunning()toAgentManagerto check if any agent is actively executing. - Changed
DelegateSubAgentToolto useDetachChildinstead ofDestroyso completed delegated children remain inspectable via handle. - Delegate result now returns handle for tracking delegated child agents.
- Fixed
/rulecommand guard to useHasRunning()instead ofCount() > 0so rule changes are allowed when only completed retained agents exist.
- Added
-
Cron Store Migration to SQLite
- Replaced
FileCronStore(cron.json) withSQLiteCronStore(sessions.db) for reliable, transactional cron job persistence. - Added
SessionScopedStoreto bind cron jobs to sessions with per-session isolation and automatic workDir inheritance. - Added
--cronCLI flag as independent option (separate from--multi-agent). - Cron now enabled by default in serve mode without requiring multi-agent.
- Scheduler attaches scheduled local runs to existing sessions when
SessionIDis set. - Added
cron_jobstable migration in sessions.go. - Cron tool supports
findJobby name (with ambiguity detection) for enable, disable, delete, and run actions. - Dispatcher lazily initializes
AgentManagerfor cron-only sessions.
- Replaced
-
Serve Settings Hot-Reload & Workflows Toggle
- Added
Server.ApplySettings()to hot-reload provider/model after settings save. - Added
workflowssession tool option and feature flag in serve. - Added
nearestExistingBrowseDirfallback when default work dir is missing. - Refactored truncation to
util.TruncateWithSuffix(UTF-8 safe).
- Added
-
System Prompt Rename to MothX
- Renamed system prompt identity from VibeCoding to MothX.
🔧 Improvements
-
Web UI Settings Expansion
- Added
ListEditorreusable component for editing string lists in settings. - Expanded
AppSettingswith full form-based editor for defaults, web search, context files, compaction, sandbox, retry, approval, and provider config. - Expanded
ServeConfigwith full form-based editor for features, API, cron, memory, security, agent, hooks, channels, and lobster mode settings. - Web UI: sessions table fixed columns with ellipsis layout.
- Web UI: skill_ref and workflow_lint tool call/result display.
- Web UI: simplified WeChat QR to open-in-new-tab instead of embed.
- Web UI:
resetSelectedModelToDefaulton session switch and settings save. - Web UI: workdir settings refresh after save, cleaner restrict logic.
- i18n: added zh/en strings for workflow and skill_ref tools.
- Added
-
Web UI Internationalization & Theme Support
- Added a complete i18n system for the Web UI with Chinese/English language switching.
- Added a preference controls panel (
PreferenceControls) for adjusting language and theme. - Replaced all hardcoded strings across views and components with translation keys.
- Added a CSS variable-driven theme system supporting Dark/Light theme switching.
-
Web UI Tool Calls & Plan Card Rendering
- The Web UI chat interface now renders tool calls, tool results, and plan cards.
- Tool calls are displayed as running/completed status chips; tool results are collapsible (summary shows first line, click to fetch full output on demand).
- Plan tool invocations render as a live-updating todo checklist.
- Backend added
/api/sessions/:id/tool-results/:callIdendpoint for lazy-loading full tool output. ListActiveSessionsnow also returns historical sessions so the Sessions page shows all persisted conversations.
-
Richer Tool Status Streaming in Serve Mode
- SSE streaming events now carry richer tool status information, enabling the frontend to display real-time tool execution progress.
- Tool status events include tool name, arguments, and execution results.
-
Debug Mode pprof Server
- Added
--debugflag to start a local pprof profiling server across all entry points (CLI, TUI, Serve, ACP, A2A).
- Added
-
Speedtest Command
- Added
vibecoding speedtestCLI subcommand for testing model response speed.
- Added
-
New StepFun Vendor Support
- Added
stepfunvendor with Base URLhttps://api.stepfun.com/step_plan/v1using OpenAI-compatible protocol. - Added
step-3.7-flashmodel with 256K context window and multimodal (text + image) input support.
- Added
-
Multimodal Image Input
- Serve mode now supports multimodal (image) input; images can be uploaded via API for conversations.
- Improved session persistence to correctly store multimodal messages.
-
Serve init-config Subcommand
- Added
mothx serve init-configsubcommand for initializing global and project-levelserve.jsonconfiguration.
- Added
-
TUI Input Queue On-Demand Start
- Input queue ticker now starts on demand and stops when idle, reducing unnecessary CPU usage.
-
TUI Backspace/Delete to Remove Auth Models
- Added Backspace/Delete shortcut in the auth dialog model list to delete a selected model entry.
- Action rows like
+ Add ModelandDoneare excluded from deletion.
-
Split-Paste Coalescing Configurable
- Split-paste event coalescing is now configurable via test parameters, facilitating unit test verification.
🔒 Security
-
Browse API Restriction
- Browse API is now restricted to
allowedWorkDirswhitelist directories, rejecting out-of-bounds access. - Auth requests without tokens are now rejected to prevent unauthorized access.
- Browse API is now restricted to
-
Code Scanning Fix
- Fixed a potentially unsafe quoting issue (Code Scanning Alert #3).
🔄 Refactors
- Merged Gateway & Hermes into Unified Serve Mode
- Removed
internal/gatewayandinternal/hermespackages, merged into the unifiedinternal/serve/arch...
- Removed
v1.1.60
Changelog
v1.1.60
✨ Features
-
Unified Serve Mode with Web UI
- Added
mothx serveCLI command to start a unified server exposing OpenAI-compatible APIs, a Web UI management panel, and messaging channels (WeChat/Feishu) simultaneously. - Added
internal/serve/package to unify Gateway, Hermes channel, and Web UI configuration and runtime management. - Configuration via
serve.json(global~/.mothx/serve.json, project.mothx/serve.json), supporting Gateway, channels, Web UI, Cron, Memory, Security, Hooks, and Agent settings. - Built-in Svelte Web UI panel with Dark theme, health check, channel status, config editor, settings editor, and chat interface with SSE streaming.
- Web UI now includes full management APIs:
/api/status,/api/sessions,/api/cron,/api/memory, and/ws/logsfor real-time log streaming. - WebSocket gateway mounted at
/ws, reusing Hermes event protocol for real-time communication. - Cron API supports CRUD operations with scheduler integration.
- Gateway SessionPool now has List/Delete management interfaces.
- Added
--web-ui-dirCLI flag to override the Web UI static assets directory. - Added Lobster mode (
--lobster) that auto-enables yolo mode, disables sandbox, and turns on sub-agents. - Gateway now supports an
ExtraRouteshook for Serve mode to inject custom API routes (/api/serve/config,/api/settings,/api/channels).
- Added
-
New Vendor Support
- Added Huawei Cloud vendor (
huawei,huawei-plan) with 13 models total, including standard and Plan reasoning modes. - Added Moore Threads vendor (
mthreads-plan) with GLM-4.7 model (1M context). - Added Tianyi Cloud vendor (
ctyun-plan) with 3 models including GLM-5-Turbo. - Added JD Cloud vendor (
jd-plan) with 10 models including JoyAI-LLM-Flash. - Added Kimi-K2.5 and MiMo-V2.5-Pro to Gitee/Moark providers; fixed JD Plan config with missing models.
- Added Huawei Cloud vendor (
🐛 Bug Fixes
-
TUI Split Paste Event Coalescing
- Some terminals split pasted text into separate key events. Added idle detection to wait for a quiet period before flushing the input queue.
- Split paste events are now coalesced into a single paste when Enter appears within the stream followed by more text.
- Extracted
handleInputSubmit()for cleaner Enter key handling.
-
Legacy
VIBECODING_DIRHandlingConfigDir()now falls back to the default.mothx/path whenVIBECODING_DIRis set to the legacy default~/.vibecoding, avoiding an unintended override of the new config directory.ConfigDirOverridden()no longer reports a custom override whenVIBECODING_DIRequals the default legacy path.- The stats CLI now reads
sessionDirfromconfig.LoadSettings()instead of callingplatform.SessionDir()directly, ensuring it respects the configured session directory.
🧪 Tests
- Added
TestConfigDirIgnoresLegacyDefaultEnvDirandTestConfigDirHonorsCustomLegacyEnvDirto verifyConfigDircorrectly ignores or honorsVIBECODING_DIRbased on whether it matches the legacy default. - Added
TestLoadSettingsWithLegacyDefaultEnvCreatesMothXConfigto verify settings migration creates.mothx/config whenVIBECODING_DIRpoints to the legacy default. - Added
TestOpenStatsDBUsesConfiguredSessionDirto verify the stats command resolves the session database path from settings.
v1.1.59
✨ Features
-
Tool Selection Rules in System Prompt
- Added a "Tool Selection Rules" section to the agent system prompt, instructing the model to prefer dedicated tools (
read,ls,grep,find) overbashfor file inspection and discovery. - Explicitly discourages running
cat,sed,awk,grep,find,ls,pwdviabashwhen equivalent dedicated tools exist.
- Added a "Tool Selection Rules" section to the agent system prompt, instructing the model to prefer dedicated tools (
-
Directory Migration to
.mothx/- Install scripts (
install.sh,install.ps1) now default to~/.mothx/(was~/.vibecoding/). - Added
MOTHX_INSTALL_DIRenv var;VIBECODING_INSTALL_DIRremains as a legacy fallback. - Uninstall checks both old (
~/.vibecoding/,./.vibe) and new (~/.mothx/,./.mothx) directories for backward compatibility. - npm postinstall scripts and README updated to reference
~/.mothx/settings.json.
- Install scripts (
🔧 Improvements
-
Bash Non-Interactive Subprocess & Process Group Kill
- Bash tool subprocesses now run in non-interactive mode: stdin is set to empty (
readsees EOF instead of blocking), and non-interactive env defaults are injected (GIT_TERMINAL_PROMPT=0,GIT_ASKPASS=true,SSH_ASKPASS=true,SSH_ASKPASS_REQUIRE=never,SUDO_ASKPASS=true) unless the user has explicitly set them. - On Unix,
Setsidgives the shell its own session; cancellation kills the entire process group viakill(-pid)so auth helpers and grandchildren do not linger. - Added
killCommandProcesshelper shared byBashToolandJobManagerfor unified process termination.
- Bash tool subprocesses now run in non-interactive mode: stdin is set to empty (
-
TUI Auth Dialog Refactor
- Auth input fields (API key, provider ID, model name, etc.) now use
SetMaxLines(1)instead ofSetMaxLines(3), enforcing single-line input for credential and identifier fields. - Introduced
newAuthInput()helper to centralize editor creation, reducing duplication acrossauth_dialog.go,auth_model.go,auth_provider.go, andauth_settings_top.go. - Removed redundant
editorimports from files that now use the helper.
- Auth input fields (API key, provider ID, model name, etc.) now use
-
Tests
- Added
TestAuthAPIKeyInputStaysSingleLineto verify auth input does not wrap into multiple lines. - Added
TestLoadSettingsCreatesMothXConfigDirto verify settings creation uses.mothx/and does not create.vibecoding/.
- Added
Full Changelog: v1.1.59...v1.1.60
v1.1.58
Changelog
v1.1.58
🔧 Improvements
- Renamed npm platform binary packages from
mothx-*tomothx-installer-*for consistent naming with the rootmothx-installerpackage.
v1.1.57
✨ Features
-
Image Preprocessing & Multimodal Enhancements
- Unified image preprocessing pipeline with metadata propagation across the tool chain.
- Added image crop support, browser screenshot preprocessing, and OpenAI
detailparameter passthrough forauto/low/highquality control. - Image output-size enforcement with provider-specific hints and coordinate mapping for bounding-box annotations.
- Added Qwen-specific 28px patch image token estimation and multi-image accumulation for accurate token accounting.
- Added
/paste-imagecommand withCtrl+Rpreview support.
-
Stats Dashboard Improvements
- Added share button, token trend chart, and overall UI improvements.
- Added 2.5h time bucket grouping and filtering on the recent requests page.
-
Auto-Open Auth Dialog on First Run
- The auth dialog now opens automatically on first run when no provider is configured.
-
MothX npm rename transition
- Added the new
mothx-installernpm package as the forward-looking installer. - Kept
vibecoding-installeras a compatibility package for this release, with migration notices pointing users tonpm install -g mothx-installer@latest. - Renamed npm platform binary packages from
vibecoding-installer-*tomothx-installer-*.
- Added the new
🔧 Improvements
MaxTokensnow resolves from model defaults and is clamped to the context window size.- Added compaction timeout and summary token cap settings.
- Command suggestions and
/mode//agentdescriptions clarified to avoid confusion. - Added HTTP 500 to retryable status codes for provider requests.
- Updated
vibe-browserto v0.1.3, removed local replace directive. - Default settings file is now written more sparsely, omitting unset fields.
v1.1.56
Changelog
v1.1.56
✨ Features
-
Interactive Sessions Dialog
/sessionsnow opens an interactive picker dialog with Up/Down navigation, Enter-to-switch,nfor a new session, anddfor delete. Existing/sessions ls,/sessions set <id>,/sessions clear, and/sessions del <id>commands remain available.- TUI startup defers session creation until the first user message is sent, while
--continue,--resume,--session, and/sessions setstill bind to existing sessions. - Continuing or switching sessions in the TUI prints the loaded session history into normal terminal scrollback.
-
Stats Web Dashboard
vibecoding statsstarts a web dashboard on127.0.0.1:7878with charts and filtering.- Pure HTML/CSS/JS dashboard — no external dependencies. Charts drawn on
<canvas>. - Displays overall summary (requests, tokens, cost, duration), time-series charts, per-provider/model breakdowns, and a paginated recent requests table.
- Filters by time range (today/week/month/all), vendor, and protocol.
vibecoding stats --cliprints the same statistics directly in the terminal.vibecoding stats --db <path>opens an alternate sessions.db.
-
Stats Dashboard: Protocol + Vendor Split
- The "Provider" column in the stats dashboard has been semantically split into Vendor (the company/provider name) and Protocol (the API protocol, e.g.
openai-chat,anthropic-messages,google-gemini). - Added
Provider.API()to the provider interface so the protocol type is recorded alongside the vendor name inrequest_stats. - New filter dropdowns for Vendor and Protocol; pie chart and table now show both dimensions.
- Schema migration 006 adds the
protocolcolumn torequest_stats(backfilled with empty string for existing rows).
- The "Provider" column in the stats dashboard has been semantically split into Vendor (the company/provider name) and Protocol (the API protocol, e.g.
-
LongCat Provider Support
- Added the
longcatvendor adapter, supporting both OpenAI-compatible (https://api.longcat.chat/openai) and Anthropic-compatible (https://api.longcat.chat/anthropic) endpoints. - Registered two default providers in settings:
longcat(OpenAI format,LONGCAT_API_KEY) andlongcat-anthropic(Anthropic format,LONGCAT_ANTHROPIC_API_KEY). - Default model
LongCat-2.0: 1M context window, 128K max output tokens. - TUI auth dialog offers selectable base URLs for OpenAI vs Anthropic format under the
longcatprovider.
- Added the
-
Inline
<think>Reasoning for OpenAI-Compatible Models- Added a
parseReasoningInContentmodel compat flag for OpenAI-compatible providers. When enabled, reasoning emitted inline in the content stream and wrapped in<think>...</think>tags is extracted and surfaced as thinking deltas instead of regular text. - The streaming parser correctly handles tags split across multiple SSE chunks and treats dangling partial tags as literal text at stream end.
- Added a
-
Auth V2 Settings Tracking
- Added
fieldSettracking toProviderConfigandModelConfigvia customUnmarshalJSONimplementations, enabling detection of explicitly set JSON fields for auth V2 merge behavior. - Custom
Settings.UnmarshalJSONhandles the map-styleproviderskey without requiring struct field changes.
- Added
-
Project-Level Bash Auto-Approval Rules
allow.jsonnow supportsbashCommands(exact match) andbashPrefixes(prefix match) for project-level bash auto-approval in agent mode.- The approval dialog offers "Always Allow Exact Command" and "Always Allow Command Prefix" options that persist rules to
.vibe/allow.json. - Settings-level
bashBlacklisttakes precedence over project allow rules (blacklisted commands always require approval). autoEditinallow.jsonnow defaults totruewhen no file exists, matching the typical developer workflow.
-
Full Settings Dialog via
/settings/settingsnow opens a structured root menu instead of jumping directly into the provider list. Categories: Providers, Defaults, Behavior, Web Search, Context Files, Status Line, Compaction, Sandbox, Paths, Retry, and Approval.- Each top-level setting group has its own sub-menu with editable fields, boolean toggles, and list editors.
- Top-level setting edits use
SaveGlobalSettingsPatch()to update only the affected JSON key, preventing unrelated defaults from being expanded intosettings.json.
-
Interactive Approval Dialog
- Replaced the inline "y/n" approval prompt with a dedicated dialog supporting ↑/↓ navigation, Enter to select, y/n shortcuts, and Esc to abort.
- Approval dialog shows structured details per tool type: bash commands display with timeout/async metadata; edit/write show wrapped argument summaries.
- The footer alert now reads "! APPROVAL REQUIRED: ↑/↓ Enter" to reflect the new interaction model.
🔧 Improvements
- Extracted ~1000 lines of embedded dashboard HTML from
internal/stats/dashboard.gointointernal/stats/dashboard.html, loaded viago:embed. - Stats are recorded automatically by the agent loop after every LLM call. The stats server calls
session.ApplyMigrations()on open to ensure therequest_statstable exists. - Updated Volcengine provider: added
agentplanandcodingplanvendors, unified gitee/moark adapters, and removed theseedvendor. - Updated PyPI build with venv isolation (
.venv-build) to decouple PyPI builds from system Python. - Extracted
bashCommandArg()helper to support bothcommandandcmdargument keys consistently across the approval path. - Refactored TUI Esc handling into
abortPendingRequest()to properly clean up approval and question state. - Fixed stale
ParamField/ParamFieldKeycarry-over when navigating auth dialog views; toggles and submenus no longer leave input mode active. - Fixed indentation in default provider config model slices.
- Added tests for auth dialog and config field tracking.
v1.1.54
Changelog
v1.1.54
✨ Features
- Multi-Workspace Session Isolation in Gateway
- Isolated default HTTP gateway sessions by work directory (
workDir) rather than sharing a single global default. Multiple workspace clients no longer share fallback session history. - Added
OpenByIDExactto load session metadata and reconstruction info directly by exact session UUID, ignoring current working directory constraints. - Serialized concurrent session creation inside the HTTP gateway to safely handle rapid successive calls and prevent duplicates.
- Improved
/sessions delslash command to support prefix matching for session IDs and prevent deleting the currently active session. - Preserved the gateway session slot on
/clearwhile cleanly resetting all messages in the session manager.
- Isolated default HTTP gateway sessions by work directory (
💅 Improvements
- Reliable Fallback Tool Call ID Generation
- Switched the fallback tool call ID generator to use a process-wide atomic counter combined with high-precision unique timestamps. This prevents Anthropic/OpenAI schema validation errors under heavy concurrent tool-calling loads.
- Updated model lists and default configs for several providers, specifically resolving Gemini-specific tool-calling constraints.
- Preserved customized model parameters in the TUI Auth Dialog on save instead of resetting them to vendor defaults.
🐛 Bug Fixes
- Thinking Level Normalization
- Added a normalization step for provider
thinkingLevel. If the value is empty or invalid, it gracefully falls back tomediuminstead of silently disabling thinking, ensuring reasoning models perform correctly by default.
- Added a normalization step for provider
v1.1.52
Changelog
v1.1.52
💅 Improvements
-
Provider HTTP/1.1 fallback option
- Added
providers.<name>.forceHTTP11to disable HTTP/2 for a provider HTTP client. - This can help with proxies or API gateways that occasionally reset HTTP/2 SSE streams with errors such as
stream ID ... INTERNAL_ERROR.
- Added
-
Retry early provider SSE read failures
- OpenAI-compatible, Anthropic, and Google streams now honor the configured
retrysettings when a transient stream read error occurs before any visible output is emitted. - HTTP/2
INTERNAL_ERRORstream resets are now classified as retryable network errors. - Once text, thinking, tool calls, or usage have been emitted, stream read errors still fail immediately to avoid duplicate output.
- OpenAI-compatible, Anthropic, and Google streams now honor the configured
-
Removed embedded rg/fd binaries — switched to pure-Go SDKs
- Replaced the embedded
rgbinary with thego-ripgreppackages. Thegreptool now runs ripgrep-compatible search in-process as pure Go, without systemgrepfallback. - Replaced the embedded
fdbinary with thego-fdSDK (gofd.Find()). Thefindtool now runs fd-compatible file discovery in-process as pure Go, without systemfindfallback. - Deleted the entire
internal/vendored/package (embed files, binary extraction,RgPath/FdPath/Ensurehelpers) and all 12 platform-specificrg/fdbinaries (~42 MB). - Removed
scripts/prepare-vendored.sh,scripts/extract-vendored-tool.sh,scripts/download-ripgrep.sh,scripts/download-fd.sh, and thepkgs/directory (cached tarballs). - Removed
prepare-vendoredandtest-vendoredMakefile targets;build,build-all, andtestno longer depend on binary extraction. - The
bashtool no longer injects~/.vibecoding/binintoPATH, since there are no extracted binaries to expose. - Output format remains line-oriented for
grepandfind; invalid roots and search setup errors are reported directly as tool errors.
- Replaced the embedded
-
FreeBSD Builds & Packaging
- Added FreeBSD
amd64andarm64to the build matrix (make build-freebsd), tarball distribution (make dist-freebsd), and the fullmake dist/make build-allflows. - Added FreeBSD platform npm packages (
vibecoding-installer-freebsd-x64,vibecoding-installer-freebsd-arm64) as optional dependencies, with platform detection in the npm wrapper andinstall.sh. - FreeBSD uses the pure-Go
grep/findimplementations and falls back to the no-op sandbox, since bwrap/seatbelt are Linux/macOS only.
- Added FreeBSD
-
Embedded BusyBox for Windows
- Embedded
busybox32u.exeandbusybox64u.exeassets for Windows, extracted at runtime and used as the default shell for thebashtool. - Falls back to PowerShell when BusyBox is unavailable.
- Bash tool output now includes a runtime label indicating whether BusyBox or the system shell is in use.
- Embedded
-
Interactive Model Picker
/modelwithout arguments now opens an interactive picker dialog instead of listing models as plain text.- Supports search/filter, arrow-key navigation, current-model indicator, and Enter to switch.
-
Native ccstatusline Support
- Added
statusLineconfiguration (type,command,padding,refreshInterval,timeoutMs,fallback) for external status line renderers. - Executes the status line command with a Claude-compatible JSON stdin payload; supports multi-line output, ANSI colors, and OSC 8 hyperlinks.
- Added
/statuslineslash command (on/off/status/test/refresh) for runtime control.
- Added
v1.1.51
Changelog
v1.1.51
✨ Features
-
New Provider: Volcengine (火山引擎)
- Added Volcengine provider with Doubao Seed models via the Ark API platform.
- Models: Doubao Seed 2.1 Turbo (
doubao-seed-2-1-turbo-260628, 256K context, text), Doubao Seed Evolving (doubao-seed-evolving, 256K context, text+image), Doubao Seed 2.1 Pro (doubao-seed-2-1-pro-260628, 256K context, text+image). - Uses OpenAI-compatible API endpoint
https://ark.cn-beijing.volces.com/api/v3. - Automatic vendor detection via
ark.cn-beijing.volces.comdomain.
-
SQLite Session Storage
- Standardized new and resumed sessions on SQLite (
modernc.org/sqlite) for improved query performance and metadata management. - For CLI and Gateway, all session metadata and entry logs are stored in a single, unified
sessions.dbdatabase file undersessionDir, using virtual.dbpaths as handles for listing, switching, and deleting. Only Hermes writes physical handle files (likeactive.dband archived*_corrupt.dbfiles) under per-user directories. - Added fast exact/prefix matching in
OpenByIDandOpenByPathOrID, including ambiguity detection and direct session reconstruction from the unified SQLite database. - ACP history replay now streams tool execution events (
toolCall/toolResult) while loading stored conversation history. DeleteSessionpurges session/entry rows from SQLite, and deletes the physical handle file if present (as in Hermes), while refusing to treat the sharedsessions.dbdatabase as a session handle.- Hermes now uses
active.dbphysical session handles, archives corrupt sessions as*_corrupt.db, and no longer falls back to legacyactive.jsonlpaths. - Removed legacy JSONL load/write paths so new and resumed sessions use SQLite only.
- Standardized new and resumed sessions on SQLite (
🐛 Bug Fixes
- ACP Systeminit Plan Mode Write Access
- Fixed ACP systeminit to allow file writes in plan mode, enabling the TUI/ACP to use
/systeminitfor generatingAGENTS.mdwithout mode restriction errors.
- Fixed ACP systeminit to allow file writes in plan mode, enabling the TUI/ACP to use
✨ Features
-
/systeminitand/reloadcommands- Added
/systeminitto generate or refresh a projectAGENTS.mdfor AI agents. Available in the TUI, ACP, and as thevibecoding systeminitCLI subcommand. In the TUI and ACP the agent heuristically uses thequestiontool to ask a few clarifying questions first, then writes a higher-qualityAGENTS.md; the CLI runs non-interactively. Optional trailing guidance is supported, e.g./systeminit ask me in Chinese, write AGENTS.md in English. - The
questiontool is now also available inagentmode (previously plan-only) and is registered for the ACP server, which surfaces questions via thesession/request_permissionchannel. - Added
/reload(TUI): restarts as a fresh process with a brand-new session, reloading config, context files, skills, and MCP — equivalent to relaunching the program.
- Added
-
Mode boundary enhancements:
/btwside questions + editable-path whitelist + full auto-edit- Added
/btw <question>: answer a quick side question without interrupting the main task. It inherits the main conversation history (read-only) into a one-shot sub-agent. The answer is shown in a temporary floating overlay, never written back to the main session, and does not consume the main task's context window or token budget. The sub-agent is read-only (read/grep/find/ls/skill_ref). A long main history is automatically truncated when injected to keep the side query lightweight. - Added
/alloweditpath [add <glob>|remove <glob>|clear]: an auto-edit path whitelist (supports**/*globs). In agent mode,write/editwhose path matches the whitelist auto-approve without prompting. - Added
/allowautoedit [on|off] [global]: full auto-edit in agent mode (effectively only bash still needs approval). - The whitelist and the auto-edit flag persist to a dedicated
allow.json:/alloweditpathand/allowautoedit(default) write the project-level.vibe/allow.json;/allowautoedit on globalwrites the globalallow.json. Loading is global→project override (editPathsis project-only). It is auto-loaded on startup. - These only relax the approval layer; sandbox / allowedWorkDirs boundaries and plan / yolo semantics are unchanged.
- Added
-
Update notifications via npm registry
- VibeCoding now checks the npm registry (
vibecoding-installer) for newer releases and shows a non-blocking reminder at startup when an update is available. - Network checks run in the background (at most once per 24h) and only refresh a local cache (
update-check.json); the foreground never blocks on the network. - The reminder appears in the TUI initial message and on stderr in
--printmode, suggestingnpm install -g vibecoding-installer@latest. - Disable via config file with
"updateCheck": falseinsettings.json, or withVIBECODING_NO_UPDATE_CHECK=1; override the registry withVIBECODING_NPM_REGISTRY.
- VibeCoding now checks the npm registry (
📚 Documentation
- Updated session documentation, CLI examples, FAQ cleanup guidance, architecture diagrams, Hermes docs, and README feature summaries to describe SQLite-backed storage,
.dbhandle files, andactive.dbHermes sessions. - Added configuration docs for the built-in Volcengine/Doubao provider and refreshed provider-adapter lists to include Volcengine, Mistral, GitHub Copilot, Cloudflare, and Amazon Bedrock adapters.
💅 Improvements
- TUI header and footer polish
- Enlarged the ASCII logo and vertically centered it within the header.
- Dimmed the footer separator and unified the mode/model/path colors for a cleaner look.
v1.1.50
Changelog
v1.1.50
✨ Features
-
Streaming Delta Builder Optimization
- Replaced string concatenation with
strings.Builderfor accumulating assistant and thinking text deltas during streaming, avoiding O(n²) memory growth on long responses. - Builders are finalized before printing on turn end, approval, and error events to ensure consistent output.
- Replaced string concatenation with
-
New Provider: Mistral
- Added Mistral AI provider with models: Mistral Large, Mistral Medium 3.5, Mistral Small, Codestral, Devstral, Magistral Medium/Small, and Pixtral Large.
- Uses OpenAI-compatible API endpoint
https://api.mistral.ai/v1.
-
New Provider: GitHub Copilot
- Added GitHub Copilot provider with Claude Sonnet 4.6/4.5, Claude Opus 4.8, Claude Haiku 4.5, Claude Fable 5, GPT-5.5/5.4/5.2, Gemini 2.5 Pro, and Gemini 3.5 Flash models.
- Uses OpenAI-compatible API endpoint
https://api.individual.githubcopilot.com.
-
New Provider: Cloudflare AI Gateway
- Added Cloudflare AI Gateway provider with Claude, GPT, Gemini, and Llama 4 Scout models.
- Supports routing through Cloudflare's AI Gateway with models from Anthropic, OpenAI, Google, and Meta.
-
New Provider: Cloudflare Workers AI
- Added Cloudflare Workers AI provider with Llama 4 Scout 17B, Llama 3.3 70B, Gemma 4 26B, Mistral Small 3.1 24B, GPT OSS 120B/20B, Kimi K2.7 Code, and GLM 5.2 models.
- Uses Cloudflare's Workers AI inference endpoints.
-
New Provider: Amazon Bedrock
- Added Amazon Bedrock provider with Claude Sonnet 4.6/4.5, Claude Opus 4.8, Claude Haiku 4.5, Claude Fable 5, Amazon Nova Pro/Micro/Lite, and DeepSeek V3.2/R1 models.
- Uses OpenAI-compatible cross-region inference endpoints.
-
Compact TUI Footer and Input Divider
- Merged mode, model, and path onto a single footer line (was 3 lines).
- Added half-block divider between transcript and input area for visual separation.
- Applied background color to editor cursor and placeholder styles.
- Added npm postinstall script with quick start info.
🐛 Bug Fixes
-
TUI Input Box Width Alignment
- Aligned input box width with the gap divider above for consistent layout.
- Set editor width to full terminal width to match gap divider.
- Fixed double padding subtraction in editor Width calculation by using
m.widthfor the final render Width.
-
TUI
compactBashOutputTrailing Whitespace- Fixed
compactBashOutputwriting the original untrimmed line instead of the trimmed version after blank-line dedup, which could preserve trailing whitespace.
- Fixed
-
TUI Duplicate Transcript in Program-Backed Scrollback
- Cleared managed live content when a Bubble Tea program is active so completed transcript blocks printed to native scrollback via
Program.Printlnare not duplicated in the live view.
- Cleared managed live content when a Bubble Tea program is active so completed transcript blocks printed to native scrollback via
v0.1.47
Changelog
v0.1.47
✨ Features
- Expanded Model Catalog
- Added new Anthropic models: Claude Opus 4.8, Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4.0, Claude Haiku 4.5, Claude Fable 5, and legacy Claude 3 series models.
- Added new OpenAI models: GPT-5.5, GPT-5.5 Pro, GPT-5.4 series, GPT-5.3 Codex/Spark, GPT-5.2 Pro/Codex, GPT-5.1 Codex variants, GPT-4.1 series, o4-mini, o3/o3-pro/o3-deep-research, o1-pro, and legacy GPT-4 variants.
- Added OpenRouter provider models: Claude Sonnet 4.6/4.5, Claude Opus 4.8, Claude Haiku 4.5, GPT-5.5/5.5 Pro/5.4, Gemini 3.5 Flash/2.5 Pro, DeepSeek V4 Flash/Pro, Qwen 3.7 Plus, Kimi K2.7 Code, MiniMax M3, Llama 4 Scout, GLM 5/5.2, Grok 4.3, and GPT-OSS-120B (free).
- Added Vercel AI Gateway models: Claude Sonnet 4.6/4.5, Claude Opus 4.8, Claude Haiku 4.5, GPT-5.5/5.4, Gemini 3.5 Flash, DeepSeek V4 Flash/Pro, Qwen3.6 Plus, MiniMax M3, Kimi K2.7 Code, Grok 4.3, and GLM 5.2.
- Reordered Anthropic and OpenAI model lists to show newest models first.
🐛 Bug Fixes
-
TUI Approval Details Visibility in Live View
- Fixed queued approval requests not showing details in the live transcript while waiting for user input.
- The current approval message index is now tracked so it stays visible during the approval prompt.
- Index is properly cleared after approval is answered and reset on state/clear paths.
-
TUI Tool Modal Performance and Display
- Added line-level caching for tool modal rendered output to avoid re-parsing the full transcript on every render.
- Added per-entry caching for expanded tool results to avoid repeated formatting.
invalidateToolModalCache()is now called at all transcript state mutation points to keep the cache consistent.- Fixed edit tool results duplicating diff excerpts in the expanded view by extracting a dedicated edit header formatter.
- Tool modals now open at the top (offset 0) instead of scrolling to the bottom.
🧪 Tests
- Added regression test verifying expanded edit output does not duplicate diff excerpts.
v0.1.46
Changelog
v0.1.46
✨ Features
-
Workflow Agent Instance Keys
- Added
:keyfor repeated logical workflow agents, so boundedwhileloops can keep literal agent names while storing per-round results asphase.agent[key]. - Added
result-keyandresult-latest, plus(result "phase.agent" :key "r0"), for explicit keyed result lookup and latest-instance lookup. - Keyed workflow workers use instance-aware runtime IDs such as
agent-worker[r0], preventing repeated loop workers from colliding while preserving the logical agent name.
- Added
-
Workflow Lint Tool
- Added
workflow_lintto validate workflow Elisp DSL without running worker agents. - Linting checks Elisp syntax, workflow/phase/agent forms, keyword arguments, required prompts, and result references.
- Registered the lint tool alongside workflow run/status/cancel tools and updated workflow prompt guidance to lint non-trivial generated or edited workflows before execution.
- Added
-
Configurable Context Compaction
- Added compaction settings for
tokenizer,tokenizerModel, andtemplate, wired through CLI, print mode, ACP, Gateway, Hermes, TUI mode switches, and delegated agent factories. - Added built-in compression summary templates:
default,code, andconversation, so long sessions can preserve task-appropriate checkpoints. - Introduced a token estimator abstraction while preserving the existing generic chars/4 estimator for
autoandgeneric. - Compaction entries now record summary version, previous compaction ID, and last summarized entry ID for better session replay/debugging.
- Added compaction settings for
🐛 Bug Fixes
-
Context Compaction Replay
- Print mode now restores replayed session history before running the agent, preserving prior conversation context.
- Manual and forced compaction now check for genuinely compactable older history instead of compacting only recent context.
- Replayed compacted messages strip stale usage metadata from kept messages to avoid leaking obsolete token accounting into future runs.
-
Concurrent File Writes
- Added a process-wide in-memory file lock manager shared by default tool registries.
writeandeditnow acquire per-file locks before reading and modifying files, preventing concurrent agents from interleaving writes to the same target.- Lock waits honor context cancellation/deadlines and report the current owner when interrupted.
🔧 Refactoring
-
Pre-release Packaging
npm-publish-prenow syncs and builds npm packages with a-preversion suffix before publishing pre-release packages.- Updated npm package metadata and optional platform dependency versions to the pre-release version.
-
Named Workflow Worker Agents
- Workflow worker agents now use deterministic IDs derived from DSL agent names (
agent-<name>), improving event attribution and background agent visibility. - Workflow skill guidance now documents the ID mapping and recommends unique agent names within a workflow.
- Workflow worker agents now use deterministic IDs derived from DSL agent names (
📚 Documentation
- Updated Workflow mode docs, tool reference, and the
workflow-elispskill to document:key, keyed result lookup, and bounded while-loop patterns. - Documented context compaction
tokenizer,tokenizerModel, andtemplatesettings, including the built-in template choices and the current reserved/deprecated status of idle compaction settings. - Clarified Ctrl+O details modal key hints for target switching, paging, scrolling, and closing.
- Documented the TUI scrollback trade-off: completed transcript blocks are printed to native terminal scrollback for stable selection/history, while user input should remain block-printed rather than unbuffered streaming to avoid interfering with Bubble Tea live rendering.
🧪 Tests
- Added workflow runner, lint, integration, and skill coverage for keyed repeated agents and keyed result lookup.
- Added context compaction tests for custom token estimators, template resolution, configured summary prompts, compaction metadata, compactability checks, and session replay usage cleanup.
- Added Gateway and Hermes coverage for
/compactwhen only recent context can be kept. - Added workflow lint tests for valid source collection and missing result reference errors.
- Added workflow integration coverage verifying DSL agent names are reflected in runtime worker agent IDs.
- Added file lock tests for wait/cancel behavior, shared default managers, and
write/editcontext handling.