Skip to content

v1.3.177

Choose a tag to compare

@topcheer topcheer released this 24 Jul 00:38
· 2332 commits to main since this release

ggcode v1.3.177

Highlights

  • 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 digestFormatTurnDigest 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-synctime.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).