14 Commits
Author SHA1 Message Date
d7056abbc8 fix(cli): reject missing separator after config path brackets (#109580)
* fix(cli): reject missing separator after config path brackets

* fix(cli): simplify bracket path separator validation

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 11:42:58 +01:00
9638c3ae07 fix(meme-maker): stop inviting sharp installs in PNG error (#109612)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 21:42:12 -07:00
045a02b7ad fix(codex): make status context freshness truthful (#107813)
* fix(codex): project absolute thread tokenUsage into attemptUsage (#107324)

* fix(codex): keep thread totalUsage off per-attempt fields

* fix(codex): make status context freshness truthful

Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com>

* fix(codex): preserve usage through timeout recovery

Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com>

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 03:32:08 -07:00
e868a1dbd1 fix: recognize provider-wrapped HTTP status for session retry (#106850)
* fix: recognize provider-wrapped HTTP status for session retry

* fix(llm): scope wrapped status parsing to retry

Preserve the leading-status contract for rate-window and formatting callers while letting retry classification recognize built-in provider wrappers.

Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 00:40:15 -07:00
610453e5fe fix: doctor should not treat loopback bind as network-accessible 0.0.0.0 (#107731)
* fix: treat loopback bind as local-only in doctor security

* test: type resolveGatewayBindHost mock for check-test-types

* fix(gateway): keep loopback bind canonical

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-15 06:13:56 -07:00
04b684c0da fix(cron): drop plain-text format from announce delivery footer (#106596)
* fix(cron): drop plain-text format from announce delivery footer

* test(cron): assert restricted tool policy forwarding

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 17:06:12 -07:00
94f018caad fix(ui): preserve sidebar collapsed state when group rename/delete fails (#106152)
* fix(ui): preserve sidebar collapsed state when group rename/delete fails

* test(ui): cover group rename/delete rejection error publish

* fix(ui): harden session group mutations

* fix(ui): guard group mutations across reconnects

* fix(ui): keep session group result internal

* style(ui): format sidebar tests

* fix(ui): preserve confirmed group mutations

* chore: keep release notes out of contributor PR

* style(ui): refresh session test formatting

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 06:13:58 -07:00
6739b9fa07 fix(codex): do not promote missing_tool_result on abort/interrupt (#104955)
* fix(codex): do not promote missing_tool_result on abort/interrupt

Keep synthetic tool.result rows for transcript integrity, but skip
promoting the missing-tool invariant to promptError when the turn is
already aborted or interrupted so mid-exec cancel paths keep abort
classification and assistant text (#104898).

* fix(codex): preserve explicit abort outcome

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-13 11:34:47 +03:00
5429f06940 fix(ai): clean up abort listener after provider retry sleep (#105519)
* fix(ai): unregister abort listener after provider sleep completes

* refactor(ai): isolate abortable retry sleep

* test(ai): isolate retry sleep lifecycle coverage

* docs: keep release notes in PR context

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 17:34:30 -07:00
dfa9569ca7 fix(google): exclude versioned Gemini client header from memory identity (#104759)
* fix(google): exclude versioned Gemini client header from memory identity

* test(google): focus memory identity coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 17:06:21 -07:00
9e74dabad2 fix: parse zero-argument XML tool calls (#103220)
* fix: parse zero-argument XML tool calls

* fix(tool-call-repair): handle empty XML calls safely

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 07:39:23 +01:00
e99af07369 fix(cron): channel failure alerts drop when global webhook failure destination is set (#102445)
* fix(cron): keep channel-shaped failure destinations from inheriting webhook mode

* test(cron): prove channel failure destination announces under global webhook

* test(gateway): prove cron channel failure destination under global webhook

* fix(cron): harden failure destination mode inference

Tighten the resolver invariant, reuse focused test fixtures, and keep the Gateway proof at the real finished-event boundary.

Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com>

Co-authored-by: Hakan Baysal <hakan.baysal@trmix.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Hakan Baysal <hakan.baysal@trmix.com>
2026-07-10 03:13:18 +01:00
wuqxuanandGitHub 3fd52514e3 fix: surface OpenAI chat-completions refusal as assistant text (#102344)
* fix: surface OpenAI chat-completions refusal as assistant text

* fix: cover message.refusal on packages/ai completions path
2026-07-09 06:10:03 -07:00
wuqxuanandGitHub 006f4e3ee8 fix: keep workspace rail file sections scrollable (#98646) 2026-07-01 08:24:35 -07:00