Releases
v1.3.233
Compare
Sorry, something went wrong.
No results found
ggcode v1.3.233
Highlights
See the changelog below for the user-facing updates included in this release.
Compare
Changelog
fix(cli): split stderr tee's dup2 by platform so linux/arm64 builds
fix(swarm): remove the teammate from the team map on shutdown, freeing the quota slot (#1633 )
release: v1.3.233
fix(tui): resolve the MCP panel's stuck reconnecting message via update events
fix(mcp): clear the notification-stream guard on every goroutine exit (#1632 )
test(mcp): pin the OAuth pre-flight probe and the client_id health-check cancel path
feat(mcp): start OAuth immediately when an unauthenticated server declares it via well-known
fix(plugin): retire the old same-named instance BEFORE registering the new adapters (#1630 )
fix(permission): cover the full raw-device families in the dd write gate (#1629 )
fix(im): count pure-image messages as user activity for the Knight idle timer (#1628 )
fix(lanchat): cap the presence endpoint and surface 413 across all four (#1627 )
fix(security): stop the display redactor from re-echoing secrets, mask bare PKCS#8 PEMs (#1626 )
fix(knight): sync the validator CJK range with the unicode tables (#1624 )
fix(agent): keep word-boundary semantics in the sensitive-log final check (#1623 )
fix(knight): tokenize the full CJK range and full-width ASCII (#1622 )
fix(agent): tier stash drop and tag delete by their schema actions (#1621 )
fix(agent): anchor empty-result counts and skip init METHODS in the side-effect scan (#1619 )
fix(cmd): break the fatal-banner loop instead of spinning forever (#1620 )
fix(provider): keep image/thinking blocks out of the token-calibration samples (#1618 )
fix(provider): apply custom headers even without an impersonation preset (#1610 )
fix(agent): judge force-push line by line so multi-line scripts don't cross-contaminate (#1609 )
fix(provider): abort the tiered context probe on auth failure instead of draining remaining tiers (#1608 )
fix(acp): route URL-only MCP servers to the http transport (#1606 )
fix(plugin): hold the write lock across the MCP-disabled read-modify-write (#1601 )
fix(agent): strip quotes for git-push adjacency so wrapper forms stay detected (#1600 )
fix(plugin): propagate gRPC cancellation instead of flattening it into a tool error (#1597 )
fix(permission): honor explicit Deny before allow fast-paths, lock the cmdRules snapshot read (#1595 )
fix(acp): stop the legacy root-layout session copy from shadowing the redirected saves (#1594 )
fix(memory): compare version numbers as sets, not cross-product pairs (#1592 )
fix(agent): exempt unique-digit shapes from digit-template folding (#1590 )
fix(lsp): surface unsupported documentChanges kinds in workspace edits (#1588 )
fix(agent): gate orphan-file tracking on successful writes (#1587 )
fix(lsp): surface context cancellation from csharp warmup retries (#1586 )
fix(agent): require a non-blank block before injecting mid-run guidance (#1585 )
fix(lanchat): reject pending approvals on hub shutdown (#1583 )
fix(agent): keep failed edits out of the last-known-good revert list (#1581 )
fix(knight): make Reject nil-safe and idempotent (#1580 )
fix(agent): scope irreversibility matching to the command body, not the payload (#1579 )
fix(config): port #1525 vendorModels fixes into sync-model-caps template
fix(agent): stop flagging in-memory fmt S-scan calls as init side effects (#1577 )
fix(knight): report lock-verification failures as errors, not live PIDs (#1576 )
fix(image): request PerMonitorV2 DPI awareness on Windows captures (#1571 )
fix(agent): cover discard-form blind spots and destructive flag variants (#1569 )
fix(a2a): exempt allowlisted IPs in the push-delivery Control pin (#1568 )
fix(agent): #1566 pin fix-amnesia backslash normalization with a cross-platform test case
fix(agent): #1564 /#1566 fix-amnesia path matching uses slash semantics on Windows (#1566 )
fix(im): token-bounded case-insensitive Twitch mention gating and stripping (#1565 )
fix(agent): directory-anchor fix-amnesia suffix matching, normalize the early exit (#1566 )
fix(a2a): stop returning the stored product pointer from Create/Update (#1563 )
fix(agent): share path-suffix semantics between fix-amnesia promotion and exclusion, feed the error file to the exclusion check (#1564 )
fix(im): overlay feishu STT extras onto the global config, bound local transcription time (#1562 )
fix(agent): wire undo_edit bookkeeping at the source, keep failed converging commands resetting the exploration window (#1559 )
fix(im): let connected reports lift the disconnected terminal guard (#1558 )
fix(im): enforce the image size cap on QQ local-path and data-URL branches (#1557 )
fix(a2a): extend the #1458 fixes to the default client, unlock the query-scheme error path (#1556 )
fix(im): re-account the full byte ledger after nested flushes in byte splitting (#1553 )
fix(relay): enforce ticket version retirement on the refresh path (#1551 )
fix(agent): gate verify-debt clearing on verification content (#1549 )
fix(agent): extract edit paths for all nine mutating tools (#1547 )
fix(im): check HTTP status in Discord SendInteractive (#1548 )
fix(im): broadcast questionnaire fallback answers only the first unanswered question (#1546 )
fix(relay): retry catalog refresh on failure state, not error-text mutation (#1545 )
fix(hooks): strip content fields for exact-pattern matches, start user-named privateclaw bindings (#1543 )
fix(extract): flag unreadable PDF pages, keep hook payloads alive on marshal failure (#1542 )
fix(agent): resolve repo-root-relative paths before git show in cross-file impact (#1541 )
fix(extract): register macro-enabled OOXML variants (#1540 )
fix(extract): mark zip text truncation honestly, keep unreadable entries listed (#1539 )
fix(cmd): keep partially-scanned sessions in the report (#1537 )
fix(agent): require new failure evidence before re-firing the correction-spiral CRITICAL (#1538 )
fix(daemon): treat permission errors as alive, reset the follow buffer on error, detach the Windows daemon console (#1535 )
fix(agent): recognize keyless list block scalars and commented headers in YAML dup check (#1534 )
fix(cron): advance hours in wall-clock semantics, cap NextTime by iterations (#1532 )
fix(cmd): close-check the pipe output file before deciding the exit code (#1531 )
fix(agent): give the command cache a real shell model (#1530 )
fix(agent): require file evidence for causal attribution, cover the polling channel (#1528 )
fix(config): dedupe alias-sourced model lists, fix dead kimi key, count tool_result images in budget (#1525 )
fix(config): sort preset endpoint keys so the onboarding wizard preselects deterministically (#1523 )
fix(agent): match lowercase job statuses so completed jobs actually stop cycling warnings (#1524 )
fix(agent): drop bare 'latest'/'recent' ambiguity words the #1438 -A fix claimed to drop (#1521 )
fix(agent): strip the '# ' activity comment before verify-command matching (#1522 )
fix(config): strip quotes on Unquote failure instead of keeping them in the value (#1519 )
fix(agent): stop recording batch_replace targets as created files (#1520 )
fix(config): merge AddEndpoint onto existing endpoints, persist vendor API keys to keys.env (#1517 )
fix(agent): register the type-switch check, source error-recovery signals from the mutating-tools table (#1516 )
fix(agent): stop retrying lsp_rename - a mutating tool (#1514 )
fix(commands): drop SkillNames read lock that deadlocked against combinedCommands' internal write lock (#1513 )
fix(codehealth): #1510 unreadable-root test skips on Windows via runtime.GOOS (#1510 )
fix(agent): exempt CommonMark hard breaks in md/rst trailing-whitespace check (#1512 )
fix(desktop): stop upgrading superseded runs to the new generation (#1511 )
fix(cli): validate im config enabled values, error on unreadable code-health root (#1510 )
fix(chat): clamp todo header active-suffix budget to width, not 10 (#1507 )
fix(agent): keep evidence across text-less turns, burn fallback slot only on match (#1508 )
fix(agent): exempt git/xargs/find content wrappers, widen zero-result prefixes in claim verify (#1506 )
fix(config): bound Claude token refresh with a 30s timeout (#1505 )
fix(desktop): bind session ID on Wails desktop, fail fast on placeholder A2A issuers (#1504 ) (#1503 )
fix(agent): build correct Maven test-tree paths for Java coverage candidates (#1502 )
fix(agentruntime): stop the P2P upgrade manager in TunnelHost.Close (#1501 )
fix(agent): accept any same-dir _test.go as Go coverage, report bare type:ignore with explanation (#1500 )
fix(swarm): carry task error on teammate_idle events so tunnel clients stop rendering failures green (#1497 )
fix(agent): drop %c from SQL-injection int-verb exemption, teach error counter Go/Cargo/pytest output (#1498 )
fix(agent): gate speculative cache hits on permission, split awk gsub pattern from replacement (#1496 )
fix(agentruntime): always propagate session token budget so reload clears it (#1494 )
fix(vcs): normalize svn log to one line per revision, add TS/Python symbols to sub-agent fallback (#1493 )
fix(agent): cover multi_file_write/batch_replace in redaction guard, gate scope drift on successful edits (#1491 )
fix(agent): delegate run-journal liveness to util.IsProcessAlive for Windows correctness (#1490 )
fix(agentruntime): anchor Taskfile target detection and strip module-line comments (#1489 )
fix(agent): gate reproducer text path on run tools, recognize field-store and channel ownership transfers (#1488 )
fix(agentruntime): roll back model switch on resolve failure, extract async def and default export symbols (#1487 )
fix(agent): align reverify with shell mutations, green PASS output, and file creation (#1486 )
fix(agent): stop ratchet preventive path from falling back to error-output patterns (#1485 )
fix(agent): exempt selector nil guards in range_nil_ptr detector (#1483 )
fix(mcp): route elicitation through the session ask_user tool instead of the dead broker global (#1484 )
fix(agentruntime): hot-reload Fallbacks chain, reset round on error, honor buffered approvals (#1482 )
fix(agent): recognize ./mvnw as verification command in both tables (#1481 )
fix(vision): restore user model on half-switched vision turn failures
test(vision): cover VisionTurnModel, IM turn switch/restore, desktop helpers
feat(vision): extend turn-scoped vision fallback to IM and desktop
fix(agentruntime): preserve inline-code identifiers and short CJK titles in auto title (#1479 )
fix(agentruntime): preserve inline-code identifiers and short CJK titles in auto title (#1479 )
feat(vision): mark vision models in system prompt and add turn-scoped vision model fallback
fix(tool): code index excludes nested git repositories entirely (#1659 )
feat(config): refresh model capability database (958 models) with endpoint host matching
feat(config): add make sync-model-caps tool with local vendor preservation and URL-based provider matching
fix(im): expired approval prompts announce their own void (#1656 )
fix(agent): primary stack truncation carries the explicit marker (#1637 )
fix(memory): detectTechStack is module-gated like detectImportantPaths (#1636 -A)
fix(agent): hub guard's 200ms budget starts AFTER the walk (#1634 )
fix(agent): head+tail truncation marker is detected via a shared constant (#1554 -C)
fix(agent): pagination exemption anchors to the footer tail; verify-kind normalizes env/cd prefixes (#1554 )
fix(im): nostr short-ID slicing is panic-safe (#1553 -B)
fix(im): Matrix sync token persists across restarts (#1553 -A)
fix(im): IRC message splitting counts bytes per RFC 2812, not runes (#1552 -A)
fix(mcp,acp): URL-only servers infer http; ACP non-text drops are logged (#1647 , #1606 -B follow-up)
fix(agent): hub keying treats unreadable nested go.mod as UNKNOWN (#1635 , #1614 -B follow-up)
fix(im): duplicated return left unreachable by the 1551-B synthesis (#1551 -B follow-up 2)
fix(im): clear-then-return moved inside the send case (#1551 -B follow-up)
fix(im): daemon bridge approval reply switches to non-blocking send (#1551 -B)
fix(agent): orphan detector's pre-exec snapshot map is dropped on reset (#1643 -1)
fix(lsp): publishDiagnostics version reconciliation; didChange invalidates the diagnostics cache (#1642 -1)
fix(tui,desktop): all LSP install paths drop the probe cache (#1641 )
fix(install): #1606 pin skips on Windows via runtime.GOOS, not the GOOS env var (#1606 )
fix(context): calibrator thinking filter matches the real block type; embedded images filtered and priced per-image (#1640 1+2)
fix(knight,provider): porcelain paths normalized to workspace-relative; leading 413 permanent (#1639 1+2)
fix(agent): mixed batches containing ANY shell command skip pre-execution (#1607 -A); EnsureOnPath failure pin (#1606 follow-up)
fix(install): EnsureOnPath surfaces write failures instead of promising nothing (#1606 -A)
fix(agent): verifDebt quota reopens after compaction; recovery guard keys on new errors (#1605 )
fix(knight): CJK word gate counts runes; trust write policies whitelist (#1604 D+E)
fix(mcp,markdown): non-text MCP blocks get typed placeholders; heading closers need CommonMark spacing (#1588 A+C)
fix(agent): orphan detector decides overwrite from a pre-execution snapshot (#1587 -A)
fix(lsp,tui): stderr ring-capped; install submission drops the probe cache (#1586 A+B)
fix(context,provider): calibrator skips image/thinking samples; 402 gets a dedicated top-up message (#1618 A+B)
fix(provider): leading bare status codes are permanent; Inf/NaN and rogue durations fall back (#1617 C + riders)
fix(knight): rename rows filter only when BOTH sides are inside .ggcode (#1617 -A)
fix(provider,agent): gemini thought signatures ride the full tool loop; gemini-3 uses thinkingLevel (#1610 )
fix(agent): crash dump truncation is marked; crash filenames carry nanoseconds (#1616 )
fix(memory): README HTML banners never become the project Summary (#1615 )
fix(agent): hub fan-in counts each package under its NEAREST module (#1614 )
fix(mcp): read-only segments split on hyphen and dot too; -t stdio runner-command guard (#1611 )
fix(agentruntime,memory): sampling maxTokens mutation serialized with reflect guard; GC re-stats before remove (#1612 , #1613 )
fix(mcp): 404 on a session-bearing streamable-http POST drops the stale session and re-initializes (#1602 )
fix(plugin): grpc entries record a successful handoff; scanDir dedups config-loaded paths (#1601 )
fix(plugin,mcp): same-name plugin reload kills the old instance; SSE tail flushes at EOF (#1597 )
fix(permission): exfil classification covers glued curl -T/-F, no-space redirects, and the name netcat (#1596 )
fix(permission): dd writing TO a raw device is Critical; web approvals key on url site (#1595 )
test(im): pin daemon bridge image-only and mixed content passthrough (#1584 , #1466 convention)
fix(im): daemon submit path keeps image/attachment blocks; text-less image sends no longer drop (#1584 -A)
fix(lanchat): request-body ceilings on receive endpoints (#1583 -A)
fix(tool): code index total-term budget + streaming persist cap memory for parent-directory workspaces (#1625 )
test(a2a,knight): regression pins for the #1582 fixes (#1582 , #1466 convention)
fix(a2a,knight): live callback URL re-validated before dialing; CJK runes in validator token sets (#1582 )
fix(agent): Go raw-string ${} is literal text, not JS interpolation (#1581 -A)
fix(knight)+test(agent): CJK runes tokenize for similarity fingerprints; git_reset schema-shape test rows (#1580 , #1579 follow-up)
fix(agent): irrev gate tiers git_reset by its mode field, not a shell literal (#1579 -A)
fix(cli): capture runtime fatal dumps via fd-level stderr tee
fix(knight): nightly maintenance runs before the quiet-hours return (#1578 -A)
fix(agent): init-side-effect check: time/http function blacklists, bare panic caught, dead ext loop removed (#1577 )
fix(knight): rename rows filter by DESTINATION - .ggcode->outside moves stay visible to the read-only guard (#1576 -C)
fix(knight): proposal transitions protect terminal states; ms-precision IDs; NameCollision is cumulative (#1576 )
fix(agent): crash log captures all-goroutine dump
fix(knight): budget read failures keep prior state; emit throttle burns only on real destinations; unlimited reports -1 (#1575 )
fix(agent): hub-package guard keys nested submodules by their own module; checked latches after init (#1574 )
fix(memory): /init path hints are module-gated; project-memory hint uses the session working dir (#1593 )
fix(agentruntime,provider): MCP sampling honors maxTokens; sampling provider is per-runtime (#1592 )
fix(mcp): read-only keywords match whole segments at any length; ID decode keeps numeric precision (#1591 )
fix(agentruntime,mcp): elicitation counter is atomic; stdio-strip convenience logs its ambiguity (#1589 )
fix(agent): successful edits invalidate the phantom everRun exemption; deny-streak wording matches mixed majorities (#1598 )
fix(agent): destructive-guard token scan bounded by command separators; clean long forms; lease no longer masks force (#1600 )
fix(im): wechat shared quota truncation indexes by textQuota; image sends check ret+errcode (#1599 )
fix(acp): resume already-active guard runs before MCP connect (#1604 )
fix(provider): CloneWithModel re-keys the adaptive cap for the new model (#1603 )
fix(agent,acp): shell mutations join the pre-exec batch guard; MCP close unregisters only owned tools (#1590 , #1594 )
fix(install,knight): installer writes PATH (python-installer parity); baseline read failures logged; V-prefix version normalized (#1573 )
fix(agent): post-compaction reset clears injection quotas only, honoring the file's own contract (#1572 )
fix(image): linux screenshot tools ordered by session type with per-tool fallback; wayland display listing prefers wlr-randr (#1571 )
fix(image): add missing context/time imports in windows clipboard (#1570 )
fix(image): windows clipboard timeout/error taxonomy; mac display capture by region (#1570 )
fix(agent): destructive-guard force/clean detection is token-based; warn dedup keyed by command (#1569 )
test(mcp): plugin HTTP mocks answer the GET notification-stream probe with 405
fix(im): wechat image/file notices, shared image+text quota, errcode check; wecom/whatsapp dedup drop-oldest (#1567 )
feat(mcp): streamable-HTTP standalone GET SSE notification stream
fix(agent): phantom claims exempt session-verified back-references; deny-streak separates user rejections (#1478 )
You can’t perform that action at this time.