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