You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Per-turn token display fix: Metrics digest now shows the token cost of each individual turn instead of the session-wide cumulative total, which previously grew with every iteration.
Daemon session lock leak fix: Early-exit paths (e.g., IM adapter startup failure) no longer leave stale session locks that block the next launch.
LSP goroutine leak fix: reapIdle goroutine now has a proper stopCh exit mechanism.
Bug Fixes
fix(metrics): per-turn tokens in digest — FormatTurnDigest used cumulative (CumInputTokens/CumOutputTokens) instead of per-turn (InputTokens/OutputTokens) values, making every turn's token display grow larger rather than reflecting actual cost.
fix(daemon): release session lock on early exit — IM adapter start failure and other intermediate returns left a stale lock file on disk; added a defer-based safety net.
fix(lsp): add stopCh to reapIdle goroutine — prevents goroutine accumulation when session manager is created/destroyed within a process.
fix(desktop): context cancellation for a2a-peer-sync — time.Sleep + for range ticker.C replaced with select on refreshCtx.Done().
fix(daemon): context cancellation for lanchat syncPeers — same pattern, replaced with select on a2aBgCtx.Done().
fix(hooks): enforce timeout on command hooks — synchronous hooks running external commands now have a 10s timeout to prevent blocking the agent loop.
Diagnostics
LSP server start + readLoop death: Added debug.Log to LSP client startup and readLoop exit paths for diagnosing silent server failures.
IM binding state transitions: Mute/unmute/enable/disable operations now log their state changes.
AppendMetaToDisk errors: Three call sites that silently discarded errors (daemon, tmux, slash-info) now log them.
UX
Model panel i18n: 4 remaining hardcoded English strings localized (zh/en).