v1.3.143
v1.3.143
Release date: 2026-07-12
New Features
MCP Server Read-Only Mode
- New
read_only: trueconfig flag for MCP servers. When enabled, blocks write-type tool calls (write/edit/delete/create/update/execute/run/shell/move/rename/upload/install/deploy and more) while allowing read operations. - 20 write keywords enforced via
ReadOnlyAdapter. - Applied consistently at both ACP bridge and plugin loader paths.
Token Estimation Self-Calibration
- New
TokenCalibratorininternal/context/token_calibrator.goauto-calibrates char-per-token ratios using APIRecordUsagefeedback. - Warmup phase (5 samples) before adjusting, then incremental averaging every 3 samples.
- Clamped ratios: ASCII [3.0–5.0], CJK [1.0–2.0]. Prevents the systematic 10–15% underestimation from the old
len/4heuristic. - Improves accuracy of budget guard, context clearing tiers, tool output guard, and compaction thresholds.
TUI i18n: 8 New Languages
- Added: Japanese (ja), Korean (ko), Spanish (es), French (fr), German (de), Russian (ru), Portuguese (pt), Vietnamese (vi).
- Desktop frontend: 11 new languages added (13 total with en/zh), each with 630 translation keys.
- All missing keys fall back to English.
Ratchet Rule TTL & Staleness Detection
- Rules now weighted by recency in
TopRulesForPrompt— recent hits rank higher. - New
CleanStale()method removes rules not hit in 30+ days with fewer than 3 total hits. - Prevents rule accumulation from one-off errors.
Improvements
Sub-agent & Swarm Cancellation
CancelAll()now waits up to 5s for agents/teammates to actually terminate (viadonechannel), preventing goroutine leaks.- Daemon mode now supports cascade cancel: IM/mobile interrupts propagate to sub-agents via
SetCascadeCancelcallback.
Desktop Frontend i18n Migration
- ~20 components migrated from hardcoded English strings to
t('key')calls. - Language dropdown in Settings dynamically renders from locale registry.
- SettingsPage mode descriptions refactored to use i18n keys.
Homebrew Install Instructions
- Fixed across all surfaces (docs, website, npm/python READMEs) to correct 3-step form:
brew tap→brew trust→brew install.
Bug Fixes
- OpenAI provider: Removed no-op
StreamOptions{IncludeUsage: true}from non-streamingChatmethod (it was never sent in non-streaming requests). - web_fetch proxy: When
HTTP_PROXY/HTTPS_PROXYis configured, the customDialContext(SSRF protection) is now bypassed — necessary because the dial receives the proxy address, not the target host. URL-level and redirect-level SSRF protection still active. - Provider retry: Fixed TUI provider retry messages reusing the same system item incorrectly.
Internal
- verify-ci.sh: Relaxed memory limits (main module 1GiB → 8GiB, desktop 256MiB → 2GiB) and split tests into 2 batches to prevent OOM kills.
- Cron job guardrails: Research rotation (cron-1) and implementation coordinator (cron-2) hardened with gap analysis requirements, independent review steps, and verify-ci gate enforcement.