Releases: startvibecoding/mothx
Release list
v1.1.71
Full Changelog: v1.1.70...v1.1.71
v1.1.70
v1.1.69
v1.1.68
v1.1.67
v1.1.66
v1.1.65
v1.1.65-pre
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