Skip to content

Releases: startvibecoding/mothx

v1.1.61

Choose a tag to compare

@zhenruyan zhenruyan released this 09 Jul 03:37

Changelog

v1.1.61

✨ Features

  • Per-Session Tool Capabilities

    • Added x_tools extension to /v1/chat/completions for enabling webSearch, browser, a2aMaster, delegate, and multiAgent per session.
    • Added GET /api/capabilities and GET/PATCH /api/sessions/{id}/capabilities APIs for querying and updating session tool toggles.
    • Added session_capabilities persistence table (migration 007) in sessions.db.
    • Added CLI flags --web-search, --browser, --enable-a2a-master for serve mode.
    • Added webSearch, browser, a2aMaster fields to serve.json config.
    • Web UI session tool toggles in composer bar with PATCH to capabilities API.
    • Per-session settings injection for webSearch via settingsForSession.
    • Added x_session_id + x_working_dir cwd conflict detection (HTTP 409).
    • Added /api/sessions?scope=all|active and /api/sessions/active endpoints.
    • /mode and /delegate commands now persist capability changes per session.
  • 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 WorkingDirDefaultWorkDir rename in serve config.
    • Added legacy config dir normalization for session/skills dirs.
  • Run & Capability Event Tracking

    • Added session_run_events and session_capability_events tables (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 serve Makefile target.
  • Transcript SSE Events for Streaming

    • Added x_transcript field to ChatCompletionRequest for enabling transcript-mode streaming.
    • When enabled, streaming handler emits event: transcript frames (assistant_delta and message types) instead of legacy tool_status events.
    • Web UI sends x_transcript:true and routes transcript events through shared upsertTranscriptMessage path.
    • Refactored streaming handler to branch on transcript flag with helper functions for building transcript toolCall/toolResult entries.
  • Embedded Web UI Assets

    • Web UI assets are now embedded in the binary via go:embed, no longer requiring dist files on disk.
    • Added ui package with DistFS() and fs.FS abstraction for both embedded and override paths.
    • --web-ui-dir flag still supported for overriding embedded assets.
  • External Bind Address via --port

    • --port now accepts full addresses (e.g. 0.0.0.0:8080).
    • Removed displayListenAddr rewrite that overrode 0.0.0.0 to 127.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 wechatLoginSession for 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.svelte wrapper and comprehensive i18n strings for channel settings.
    • Dispatcher nil-checks before starting platforms.
  • Sub-Agent Detach & Rule Guard Fix

    • Added DetachChild() to AgentManager to remove child from parent's active list while retaining the child agent for later inspection.
    • Added HasRunning() to AgentManager to check if any agent is actively executing.
    • Changed DelegateSubAgentTool to use DetachChild instead of Destroy so completed delegated children remain inspectable via handle.
    • Delegate result now returns handle for tracking delegated child agents.
    • Fixed /rule command guard to use HasRunning() instead of Count() > 0 so rule changes are allowed when only completed retained agents exist.
  • Cron Store Migration to SQLite

    • Replaced FileCronStore (cron.json) with SQLiteCronStore (sessions.db) for reliable, transactional cron job persistence.
    • Added SessionScopedStore to bind cron jobs to sessions with per-session isolation and automatic workDir inheritance.
    • Added --cron CLI 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 SessionID is set.
    • Added cron_jobs table migration in sessions.go.
    • Cron tool supports findJob by name (with ambiguity detection) for enable, disable, delete, and run actions.
    • Dispatcher lazily initializes AgentManager for cron-only sessions.
  • Serve Settings Hot-Reload & Workflows Toggle

    • Added Server.ApplySettings() to hot-reload provider/model after settings save.
    • Added workflows session tool option and feature flag in serve.
    • Added nearestExistingBrowseDir fallback when default work dir is missing.
    • Refactored truncation to util.TruncateWithSuffix (UTF-8 safe).
  • System Prompt Rename to MothX

    • Renamed system prompt identity from VibeCoding to MothX.

🔧 Improvements

  • Web UI Settings Expansion

    • Added ListEditor reusable component for editing string lists in settings.
    • Expanded AppSettings with full form-based editor for defaults, web search, context files, compaction, sandbox, retry, approval, and provider config.
    • Expanded ServeConfig with 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: resetSelectedModelToDefault on 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.
  • 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/:callId endpoint for lazy-loading full tool output.
    • ListActiveSessions now 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 --debug flag to start a local pprof profiling server across all entry points (CLI, TUI, Serve, ACP, A2A).
  • Speedtest Command

    • Added vibecoding speedtest CLI subcommand for testing model response speed.
  • New StepFun Vendor Support

    • Added stepfun vendor with Base URL https://api.stepfun.com/step_plan/v1 using OpenAI-compatible protocol.
    • Added step-3.7-flash model with 256K context window and multimodal (text + image) input support.
  • 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-config subcommand for initializing global and project-level serve.json configuration.
  • 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 Model and Done are 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 allowedWorkDirs whitelist directories, rejecting out-of-bounds access.
    • Auth requests without tokens are now rejected to prevent unauthorized access.
  • Code Scanning Fix

    • Fixed a potentially unsafe quoting issue (Code Scanning Alert #3).

🔄 Refactors

  • Merged Gateway & Hermes into Unified Serve Mode
    • Removed internal/gateway and internal/hermes packages, merged into the unified internal/serve/ arch...
Read more

v1.1.60

Choose a tag to compare

@zhenruyan zhenruyan released this 07 Jul 10:27

Changelog

v1.1.60

✨ Features

  • Unified Serve Mode with Web UI

    • Added mothx serve CLI 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/logs for 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-dir CLI 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 ExtraRoutes hook for Serve mode to inject custom API routes (/api/serve/config, /api/settings, /api/channels).
  • 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.

🐛 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_DIR Handling

    • ConfigDir() now falls back to the default .mothx/ path when VIBECODING_DIR is set to the legacy default ~/.vibecoding, avoiding an unintended override of the new config directory.
    • ConfigDirOverridden() no longer reports a custom override when VIBECODING_DIR equals the default legacy path.
    • The stats CLI now reads sessionDir from config.LoadSettings() instead of calling platform.SessionDir() directly, ensuring it respects the configured session directory.

🧪 Tests

  • Added TestConfigDirIgnoresLegacyDefaultEnvDir and TestConfigDirHonorsCustomLegacyEnvDir to verify ConfigDir correctly ignores or honors VIBECODING_DIR based on whether it matches the legacy default.
  • Added TestLoadSettingsWithLegacyDefaultEnvCreatesMothXConfig to verify settings migration creates .mothx/ config when VIBECODING_DIR points to the legacy default.
  • Added TestOpenStatsDBUsesConfiguredSessionDir to 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) over bash for file inspection and discovery.
    • Explicitly discourages running cat, sed, awk, grep, find, ls, pwd via bash when equivalent dedicated tools exist.
  • Directory Migration to .mothx/

    • Install scripts (install.sh, install.ps1) now default to ~/.mothx/ (was ~/.vibecoding/).
    • Added MOTHX_INSTALL_DIR env var; VIBECODING_INSTALL_DIR remains 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.

🔧 Improvements

  • Bash Non-Interactive Subprocess & Process Group Kill

    • Bash tool subprocesses now run in non-interactive mode: stdin is set to empty (read sees 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, Setsid gives the shell its own session; cancellation kills the entire process group via kill(-pid) so auth helpers and grandchildren do not linger.
    • Added killCommandProcess helper shared by BashTool and JobManager for unified process termination.
  • TUI Auth Dialog Refactor

    • Auth input fields (API key, provider ID, model name, etc.) now use SetMaxLines(1) instead of SetMaxLines(3), enforcing single-line input for credential and identifier fields.
    • Introduced newAuthInput() helper to centralize editor creation, reducing duplication across auth_dialog.go, auth_model.go, auth_provider.go, and auth_settings_top.go.
    • Removed redundant editor imports from files that now use the helper.
  • Tests

    • Added TestAuthAPIKeyInputStaysSingleLine to verify auth input does not wrap into multiple lines.
    • Added TestLoadSettingsCreatesMothXConfigDir to verify settings creation uses .mothx/ and does not create .vibecoding/.

Full Changelog: v1.1.59...v1.1.60

v1.1.58

Choose a tag to compare

@zhenruyan zhenruyan released this 04 Jul 04:39

Changelog

v1.1.58

🔧 Improvements

  • Renamed npm platform binary packages from mothx-* to mothx-installer-* for consistent naming with the root mothx-installer package.

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 detail parameter passthrough for auto/low/high quality 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-image command with Ctrl+R preview 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-installer npm package as the forward-looking installer.
    • Kept vibecoding-installer as a compatibility package for this release, with migration notices pointing users to npm install -g mothx-installer@latest.
    • Renamed npm platform binary packages from vibecoding-installer-* to mothx-installer-*.

🔧 Improvements

  • MaxTokens now resolves from model defaults and is clamped to the context window size.
  • Added compaction timeout and summary token cap settings.
  • Command suggestions and /mode / /agent descriptions clarified to avoid confusion.
  • Added HTTP 500 to retryable status codes for provider requests.
  • Updated vibe-browser to v0.1.3, removed local replace directive.
  • Default settings file is now written more sparsely, omitting unset fields.

v1.1.56

Choose a tag to compare

@zhenruyan zhenruyan released this 02 Jul 01:18

Changelog

v1.1.56

✨ Features

  • Interactive Sessions Dialog

    • /sessions now opens an interactive picker dialog with Up/Down navigation, Enter-to-switch, n for a new session, and d for 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 set still bind to existing sessions.
    • Continuing or switching sessions in the TUI prints the loaded session history into normal terminal scrollback.
  • Stats Web Dashboard

    • vibecoding stats starts a web dashboard on 127.0.0.1:7878 with 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 --cli prints 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 in request_stats.
    • New filter dropdowns for Vendor and Protocol; pie chart and table now show both dimensions.
    • Schema migration 006 adds the protocol column to request_stats (backfilled with empty string for existing rows).
  • LongCat Provider Support

    • Added the longcat vendor 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) and longcat-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 longcat provider.
  • Inline <think> Reasoning for OpenAI-Compatible Models

    • Added a parseReasoningInContent model 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.
  • Auth V2 Settings Tracking

    • Added fieldSet tracking to ProviderConfig and ModelConfig via custom UnmarshalJSON implementations, enabling detection of explicitly set JSON fields for auth V2 merge behavior.
    • Custom Settings.UnmarshalJSON handles the map-style providers key without requiring struct field changes.
  • Project-Level Bash Auto-Approval Rules

    • allow.json now supports bashCommands (exact match) and bashPrefixes (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 bashBlacklist takes precedence over project allow rules (blacklisted commands always require approval).
    • autoEdit in allow.json now defaults to true when no file exists, matching the typical developer workflow.
  • Full Settings Dialog via /settings

    • /settings now 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 into settings.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.go into internal/stats/dashboard.html, loaded via go:embed.
  • Stats are recorded automatically by the agent loop after every LLM call. The stats server calls session.ApplyMigrations() on open to ensure the request_stats table exists.
  • Updated Volcengine provider: added agentplan and codingplan vendors, unified gitee/moark adapters, and removed the seed vendor.
  • Updated PyPI build with venv isolation (.venv-build) to decouple PyPI builds from system Python.
  • Extracted bashCommandArg() helper to support both command and cmd argument keys consistently across the approval path.
  • Refactored TUI Esc handling into abortPendingRequest() to properly clean up approval and question state.
  • Fixed stale ParamField / ParamFieldKey carry-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

Choose a tag to compare

@zhenruyan zhenruyan released this 28 Jun 17:08

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 OpenByIDExact to 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 del slash command to support prefix matching for session IDs and prevent deleting the currently active session.
    • Preserved the gateway session slot on /clear while cleanly resetting all messages in the session manager.

💅 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 to medium instead of silently disabling thinking, ensuring reasoning models perform correctly by default.

v1.1.52

Choose a tag to compare

@zhenruyan zhenruyan released this 27 Jun 07:41

Changelog

v1.1.52

💅 Improvements

  • Provider HTTP/1.1 fallback option

    • Added providers.<name>.forceHTTP11 to 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.
  • Retry early provider SSE read failures

    • OpenAI-compatible, Anthropic, and Google streams now honor the configured retry settings when a transient stream read error occurs before any visible output is emitted.
    • HTTP/2 INTERNAL_ERROR stream 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.
  • Removed embedded rg/fd binaries — switched to pure-Go SDKs

    • Replaced the embedded rg binary with the go-ripgrep packages. The grep tool now runs ripgrep-compatible search in-process as pure Go, without system grep fallback.
    • Replaced the embedded fd binary with the go-fd SDK (gofd.Find()). The find tool now runs fd-compatible file discovery in-process as pure Go, without system find fallback.
    • Deleted the entire internal/vendored/ package (embed files, binary extraction, RgPath/FdPath/Ensure helpers) and all 12 platform-specific rg/fd binaries (~42 MB).
    • Removed scripts/prepare-vendored.sh, scripts/extract-vendored-tool.sh, scripts/download-ripgrep.sh, scripts/download-fd.sh, and the pkgs/ directory (cached tarballs).
    • Removed prepare-vendored and test-vendored Makefile targets; build, build-all, and test no longer depend on binary extraction.
    • The bash tool no longer injects ~/.vibecoding/bin into PATH, since there are no extracted binaries to expose.
    • Output format remains line-oriented for grep and find; invalid roots and search setup errors are reported directly as tool errors.
  • FreeBSD Builds & Packaging

    • Added FreeBSD amd64 and arm64 to the build matrix (make build-freebsd), tarball distribution (make dist-freebsd), and the full make dist / make build-all flows.
    • Added FreeBSD platform npm packages (vibecoding-installer-freebsd-x64, vibecoding-installer-freebsd-arm64) as optional dependencies, with platform detection in the npm wrapper and install.sh.
    • FreeBSD uses the pure-Go grep/find implementations and falls back to the no-op sandbox, since bwrap/seatbelt are Linux/macOS only.
  • Embedded BusyBox for Windows

    • Embedded busybox32u.exe and busybox64u.exe assets for Windows, extracted at runtime and used as the default shell for the bash tool.
    • 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.
  • Interactive Model Picker

    • /model without 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 statusLine configuration (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 /statusline slash command (on/off/status/test/refresh) for runtime control.

v1.1.51

Choose a tag to compare

@zhenruyan zhenruyan released this 25 Jun 09:14

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.com domain.
  • 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.db database file under sessionDir, using virtual .db paths as handles for listing, switching, and deleting. Only Hermes writes physical handle files (like active.db and archived *_corrupt.db files) under per-user directories.
    • Added fast exact/prefix matching in OpenByID and OpenByPathOrID, 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.
    • DeleteSession purges session/entry rows from SQLite, and deletes the physical handle file if present (as in Hermes), while refusing to treat the shared sessions.db database as a session handle.
    • Hermes now uses active.db physical session handles, archives corrupt sessions as *_corrupt.db, and no longer falls back to legacy active.jsonl paths.
    • Removed legacy JSONL load/write paths so new and resumed sessions use SQLite only.

🐛 Bug Fixes

  • ACP Systeminit Plan Mode Write Access
    • Fixed ACP systeminit to allow file writes in plan mode, enabling the TUI/ACP to use /systeminit for generating AGENTS.md without mode restriction errors.

✨ Features

  • /systeminit and /reload commands

    • Added /systeminit to generate or refresh a project AGENTS.md for AI agents. Available in the TUI, ACP, and as the vibecoding systeminit CLI subcommand. In the TUI and ACP the agent heuristically uses the question tool to ask a few clarifying questions first, then writes a higher-quality AGENTS.md; the CLI runs non-interactively. Optional trailing guidance is supported, e.g. /systeminit ask me in Chinese, write AGENTS.md in English.
    • The question tool is now also available in agent mode (previously plan-only) and is registered for the ACP server, which surfaces questions via the session/request_permission channel.
    • 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.
  • Mode boundary enhancements: /btw side 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/edit whose 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: /alloweditpath and /allowautoedit (default) write the project-level .vibe/allow.json; /allowautoedit on global writes the global allow.json. Loading is global→project override (editPaths is project-only). It is auto-loaded on startup.
    • These only relax the approval layer; sandbox / allowedWorkDirs boundaries and plan / yolo semantics are unchanged.
  • 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 --print mode, suggesting npm install -g vibecoding-installer@latest.
    • Disable via config file with "updateCheck": false in settings.json, or with VIBECODING_NO_UPDATE_CHECK=1; override the registry with VIBECODING_NPM_REGISTRY.

📚 Documentation

  • Updated session documentation, CLI examples, FAQ cleanup guidance, architecture diagrams, Hermes docs, and README feature summaries to describe SQLite-backed storage, .db handle files, and active.db Hermes 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

Choose a tag to compare

@zhenruyan zhenruyan released this 23 Jun 15:10

Changelog

v1.1.50

✨ Features

  • Streaming Delta Builder Optimization

    • Replaced string concatenation with strings.Builder for 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.
  • 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.width for the final render Width.
  • TUI compactBashOutput Trailing Whitespace

    • Fixed compactBashOutput writing the original untrimmed line instead of the trimmed version after blank-line dedup, which could preserve trailing whitespace.
  • 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.Println are not duplicated in the live view.

v0.1.47

Choose a tag to compare

@zhenruyan zhenruyan released this 21 Jun 12:45

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

Choose a tag to compare

@zhenruyan zhenruyan released this 21 Jun 11:44

Changelog

v0.1.46

✨ Features

  • Workflow Agent Instance Keys

    • Added :key for repeated logical workflow agents, so bounded while loops can keep literal agent names while storing per-round results as phase.agent[key].
    • Added result-key and result-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.
  • Workflow Lint Tool

    • Added workflow_lint to 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.
  • Configurable Context Compaction

    • Added compaction settings for tokenizer, tokenizerModel, and template, wired through CLI, print mode, ACP, Gateway, Hermes, TUI mode switches, and delegated agent factories.
    • Added built-in compression summary templates: default, code, and conversation, so long sessions can preserve task-appropriate checkpoints.
    • Introduced a token estimator abstraction while preserving the existing generic chars/4 estimator for auto and generic.
    • Compaction entries now record summary version, previous compaction ID, and last summarized entry ID for better session replay/debugging.

🐛 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.
    • write and edit now 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-pre now syncs and builds npm packages with a -pre version 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.

📚 Documentation

  • Updated Workflow mode docs, tool reference, and the workflow-elisp skill to document :key, keyed result lookup, and bounded while-loop patterns.
  • Documented context compaction tokenizer, tokenizerModel, and template settings, 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 /compact when 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/edit context handling.