Skip to content

v1.3.218

Choose a tag to compare

@topcheer topcheer released this 25 Aug 09:05
· 750 commits to main since this release

ggcode v1.3.218

Highlights

  • See the changelog below for the user-facing updates included in this release.

Compare

Changelog

  • release: v1.3.218
  • fix(lanchat,config): #1015 lanchat key decoupled from a2a.auth.api_key
  • fix(tui): #1014 peer control chars shatter panel borders - sanitize at TUI boundary
  • fix(swarm,tui): #1012 tool_result carries Result; #1013 title summary takes captured tool count
  • fix(agent): #1011 dedup keeps latest LastSeen - drop dead-branch overwrite
  • fix(tui): #1010 questionnaire summary unanswered label is language-aware
  • fix(tui): #1009 signal clear-channel uses ClearChannelByAdapter
  • fix(agent): #1008 normalize ratchet rule category at AddRule boundary
  • fix(tool): #1006 blame parse panic on trailing empty line; #1007 python scaffold init.py literal newline
  • fix(tool): #1005 pidof reads stdout - package-filtered mobile logs worked never
  • fix(tool): #1003 macOS scroll converts steps to pixels instead of raw pixel amount
  • fix(tool): #1004 byte-exact fallback transforms recount under their own semantics
  • fix(tool): #1001 exit-type flags no longer warn as bare REPL; #1002 dep_graph module boundary requires slash
  • test(provider): #1000 align ZAI English window wording expectation with #528 behavior ruling
  • fix(provider): #1000 reuse Anthropic window-limit exclusion in user-facing error text
  • fix(plugin): #999 invert Alive back - Exited() true means the plugin process HAS exited
  • test(mcp): correct stale limitation comment per #998 final review
  • fix(mcp): #998 review follow-up - short roots also segment-match plain-lowercased name (SET_VALUE caught)
  • fix(mcp): #998 substring-check long denylist roots on plain-lowercased name for ALL-CAPS tools
  • fix(mcp): #997 camel-normalize tool names before segment match in read-only gate
  • fix(mcp): #996 read-only gate matches short denylist roots per segment, not substring
  • refactor(chat): extract ToolHeader phases - complexity 17 to 8
  • fix(chat): #995 error body bypassed tab expansion and CR normalization
  • fix(chat): expand tabs in tool body - 14-col measurement drift
  • fix(chat): CR leakage and width overflows desynced streaming tool render
  • fix(mcp): #994 register stdio waiter before write; nil-guard WS writes
  • fix(lsp): #993 evict dead sessions, install notification handler before handshake
  • fix(lsp): #992 workspace-root skip, call() TOCTOU, parseWorkspaceEdit dedup
  • fix(lanchat): #991 UDP gzip-bomb cap, unicast retry error propagation, ACK race, lock-scope persist
  • fix(lanchat): #990 store durability — O_APPEND append, atomic policy save, sessionID sanitization
  • fix(lanchat): #989 UDP transport keyed to hub APIKey, inbound gate mirrors HTTP auth
  • refactor(lanchat): #987 extract approval decision and receipt dispatch from HandleIncomingMessage
  • fix(lanchat): #987 dedicated ID indexes for @agent messages, cross-transport dedup, pending approval bounds
  • fix(lanchat): #988 outbound sends use configured API key, not community key
  • test(agent): add coarse-clock sleep guard to TestLLMTurnMetricsFirstDeltaWins
  • fix(lanchat): #986 community-key bypass, FromRole auto-approve, attachment MIME, usage-tracker history loss
  • test(agent): #983 integration test pins the real !memoHit put guard
  • fix(knight): #985 steps heading prefix match + propagate ActiveSkills error
  • fix(knight): #984 snapshot glob crosstalk, scenario log append safety, promote staging cleanup
  • fix(knight): #982 scope arbiter make-detection false positives
  • fix(agent): #983 memo cache prefix stacking + stream-error text loss
  • refactor(chat): extract sticky window phases from renderStreamingMarkdown
  • fix(config): #981 lock migration write path + field-level IM external merge
  • fix(mcp): #980 watcher checkAndReload pushes merged tombstone-filtered set
  • fix(chat): sticky block window - cache reuse was defeated per chunk
  • perf(chat): bound streaming render cost to a window, not document size