100 Commits
Author SHA1 Message Date
xingzhouandGitHub ee74d7b8dc fix(teams-meetings): expose listening probe timeout (#111486) 2026-07-20 23:39:27 +08:00
8518603392 fix(tts): contract speech requests hang on stalled endpoints (#110725)
* fix(tts): time out stalled contract speech requests

* fix(tts): release discarded contract responses

* test(tts): reuse canonical HTTP server helper

* test(tts): mark fixture credential synthetic

---------

Co-authored-by: Mason Huang <masonxhuang@proton.me>
2026-07-20 21:02:39 +08:00
269099585a fix(discord): activity widgets recover from stalled gateway responses (#111380)
* fix(discord): bound Activity gateway requests

* test(discord): tighten Activity shell harness

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-19 09:32:29 -07:00
xingzhouandGitHub b4a206fc41 fix(gmail): prevent duplicate watch renewals during stalls (#108974) 2026-07-19 22:05:04 +08:00
xingzhouandGitHub 7ea4e6701e fix(export): prevent broken emoji in HTML tool call previews (#104054) 2026-07-19 22:00:31 +08:00
xingzhouandGitHub e2ca148d4b fix(codex): preserve JSONL framing across WebSocket writes (#110384)
* fix(codex): preserve UTF-8 websocket frames

* test(codex): satisfy websocket transport lint

* fix(codex): preserve websocket JSONL framing
2026-07-19 17:07:03 +08:00
xingzhouandGitHub 48ecb31bc6 fix(discord): time out stalled Activity token bodies (#110667) 2026-07-19 17:05:58 +08:00
zhang-guipingandMason Huang dd16befe58 fix(logs): bound stalled journal subprocesses 2026-07-19 16:56:54 +08:00
xingzhouandGitHub 7b3a8dba14 fix(meeting-bot): preserve spawn failure diagnostics (#107614) 2026-07-19 16:17:46 +08:00
xingzhouandGitHub 59124313f4 fix(release): plugin npm preflight no longer hangs on stalled registries (#110862)
* fix(release): bound plugin npm freshness lookups

* fix(release): fail closed on npm view timeouts

* test(release): fix npm timeout mock types
2026-07-19 16:10:49 +08:00
69aeba9d86 fix(discord): sustained gateway bursts stop growing memory (#110954)
* fix(discord): sustained gateway bursts stop growing memory

* fix(discord): contain gateway queue overflow

* fix(discord): drop oldest saturated gateway sends

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

* fix(discord): surface gateway overflow warnings

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 19:14:16 -07:00
9b42782f76 fix(plugins): agent runs hang when tool-result middleware never settles (#110731)
* fix(plugins): prevent tool-result middleware from freezing runs

* test(plugins): cover middleware timeout policy

* test(plugins): provide hook context in timeout test

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 17:11:59 -07:00
faf3dbdda8 fix(ci): classify proxied APNs TLS tunnel (#110480)
* fix(ci): classify proxied APNs TLS tunnel

* fix(ci): prove network CodeQL contract changes

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 16:18:29 +01:00
33151cbc40 fix(apns): keep diagnostics valid when response capture reaches its byte limit (#110483)
* fix(apns): preserve UTF-8 response captures

* test(apns): cover UTF-8 at the real capture limit

* fix(apns): preserve UTF-8 in bounded response captures

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 15:51:31 +01:00
1af6d99658 fix: surface cron errors for empty isolated agent replies (#100229)
* fix(cron): fail empty isolated agent completions

* fix: surface cron errors for empty isolated agent replies

* fix(cron): preserve intentional terminal progress

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-18 10:41:31 +01:00
609e5d2318 fix(gateway): session workspace reveal hangs on foreground opener (#110277)
* fix(gateway): bound session workspace reveal opener

* refactor(gateway): share bounded path opener lifecycle

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-18 10:36:35 +01:00
91ded68990 fix(vault): SecretRef resolution no longer hangs on stalled response bodies (#108970)
* fix(vault): keep request deadline through response body

* test(vault): use generic stalled-body fixture

* test(vault): mark fixture token synthetic

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 09:46:50 +01:00
xingzhouandGitHub 34440523cd fix(voice-call): ngrok tunnels no longer survive cleanup (#110122)
* fix(voice-call): ngrok tunnels no longer survive cleanup

* fix(voice-call): document bounded ngrok shutdown

* fix(voice-call): reap ngrok after startup timeout

* fix(voice-call): type ngrok process with ignored stdin

* fix(voice-call): compose ngrok timeout lifecycle
2026-07-18 09:09:29 +01:00
xingzhouandGitHub 75982be9a3 fix(cli): oversized secrets plans consume unbounded memory (#109652)
* fix(cli): reject oversized secrets plan files

* fix(cli): keep generated secrets plans applyable

* fix(cli): reject special plan files without blocking

* docs(cli): refresh secrets plan documentation map
2026-07-18 07:18:21 +01:00
713b6151d1 fix(qa): preserve crabbox command output unicode (#110278)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 07:13:25 +01:00
xingzhouandGitHub ab99029b3b test(ui): stabilize browser initialization checks (#110403) 2026-07-18 07:10:47 +01:00
46101687e0 fix(ui): long chats retain generated image memory (#110305)
* fix(ui): bound managed image blob cache

* test(ui): prove managed image cache eviction

* fix(ui): reopen evicted managed images safely

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

* fix(ui): preserve deferred image preview handle

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 07:00:15 +01:00
66990b207f fix(ci): bound CLI installer smoke curl with connect and max-time (#109927)
* fix(ci): bound CLI installer smoke curl with connect and max-time

The non-root CLI installer smoke pipes curl directly into bash under a
single docker-run timeout. curl has no default connect or total timeout,
so a stalled CDN connect or hung response body could pin the container
until the outer docker-run budget kills it. Bound the curl with the same
--connect-timeout 30 --max-time 300 shape already used by install-sh-smoke
and install-sh-e2e, and enable pipefail so curl failures are not masked
by the bash consumer.

* test(ci): cover bounded CLI installer pipeline

* fix(ci): bound preceding non-root installer download

* fix(ci): harden bounded installer URL handoff

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 06:59:29 +01:00
40e7447546 fix(imessage): clear stop timeout after child closes (#108909)
* fix(imessage): clear stop timeout after child closes

* test(imessage): preserve timer spy types

* test(imessage): preserve writable end return contract

* docs(imessage): explain stop timer cleanup

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 05:53:33 +01:00
xingzhouandGitHub cc9c2c7cca fix(ui): stop local assistant attachments from checking forever (#109230)
* fix(ui): stop local assistant attachments from checking forever

* test(ui): reject stalled attachment fetches with errors
2026-07-18 05:26:33 +01:00
xingzhouandGitHub c6abd2e4d4 fix(elevenlabs): stop oversized streaming TTS audio (#109621)
* fix(elevenlabs): cap streamed TTS audio size

* fix(elevenlabs): avoid stream cap cancellation race

* fix(elevenlabs): release bounded stream reader locks

* fix(elevenlabs): release stream resources on early cleanup

* fix(elevenlabs): satisfy typed stream cleanup lint
2026-07-18 05:15:08 +01:00
xingzhouandGitHub 1bd6280f85 fix(doctor): preserve Unicode in migration reports (#104851) 2026-07-18 03:26:39 +01:00
c6d4559811 fix(mcp): doctor probes no longer start every server at once (#109870)
* fix(mcp): bound doctor server checks

* fix(mcp): defer doctor concurrency helper loading

* fix(mcp): preserve doctor check coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 00:59:10 +01:00
2e64628a23 fix(azure): responses model aliases route correctly (#93833)
* fix(agents): keep Azure Responses model aliases routed

* Fix Azure Responses alias owner fallback

* Fix provider-level Azure alias owner

* Fix Azure custom deployment alias ownership

* Fix Azure alias endpoint ownership

* fix: remove redundant static catalog boolean wrapper

* fix(azure): preserve alias tests after main sync

* fix(azure): infer transport from retained alias

* fix(azure): derive transport from manifest alias

* chore: drop local CodeGraph metadata

* fix(azure): keep alias transport ownership consistent

* fix(azure): preserve alias ownership across fallbacks

* fix(agents): keep codex-only model suppression authoritative

* refactor(agents): split model compatibility helpers

* fix(agents): preserve conditional suppression ownership

* test(agents): deduplicate alias resolution assertions

* fix(agents): reject ambiguous model aliases

* test(agents): keep alias regressions within lint caps

* fix(agents): preserve alias target transport

* fix(agents): honor configured alias transports

* fix(agents): preserve retained alias transport

* fix(agents): narrow alias transport precedence

* test(agents): complete alias transport fixture

* test(agents): trim redundant alias fixture fields

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 17:47:08 +01:00
0a868179e4 fix(session): stop repeated restart recovery after retry budget (#96230)
* fix(session): bound restart recovery across gateway restarts

Co-authored-by: Mason Huang <masonxhuang@proton.me>

* style(session): format restart recovery changes

* fix(session): fence recovery notice state

* test(session): align internal recovery types

* test(session): type recovery completion fixture

* style(session): satisfy recovery lint rules

* test(plugin-sdk): split recovery boundary coverage

* test(plugin-sdk): use tracked recovery temp dirs

* fix(session): preserve stale admission errors

* fix(session): close recovery lifecycle races

* fix(session): rotate rejected recovery dispatch ids

* fix(session): enforce recovery quarantine boundaries

* fix(session): close restart recovery exhaustion gaps

* fix(session): preserve recovery command narrowing

* test(session): type restart recovery fixtures

* fix(session): enforce restart recovery quarantine

* fix(session): close restart recovery races

* fix(session): type recovery lifecycle state

* fix(session): enforce recovery ownership fences

* fix(session): fence recovery lifecycle completion

* fix(session): quarantine cross-process recovery

* fix(session): retire stale recovery ownership

* fix(session): restore rejected recovery admission

* fix(session): preserve restored recovery target

* fix(session): retry pending recovery races

* fix(session): preserve concurrent recovery aborts

* fix(session): quarantine recovery lifecycle state

* fix(session): settle exact recovery delivery fences

* fix(session): keep recovery restoration internal

* fix(session): close recovery admission races

* fix(session): retry durable recovery rollback

* fix(session): guard cached recovery settlement

* fix(session): close recovery ownership gaps

* fix(session): resume after delayed recovery rollback

* fix(session): finalize unrecoverable restart state

* fix(session): retry admitted recovery restoration

* fix(session): preserve recovery cleanup guarantees

* fix(session): restore failed terminal settlement

* chore(plugin-sdk): refresh API baseline

* fix(session): close recovery owner retry races

* test(session): type recovery owner fixture

* refactor(session): remove obsolete owner validator

* fix(session): preserve explicit abort recovery

---------

Co-authored-by: Mason Huang <masonxhuang@proton.me>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 15:36:09 +01:00
72f4cbd8f2 fix(line): prevent profile cache growth across users (#109750)
* fix(line): prevent profile cache growth across users

* docs: explain LINE profile cache eviction order

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-17 10:23:51 +01:00
ae40ce40d6 fix(auto-reply): prevent reply usage state growth (#109610)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 21:43:50 -07:00
afd0fe32c2 fix(qa-lab): preserve boundary emoji in gateway startup diagnostics (#104840)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 18:26:26 -07:00
xingzhouandGitHub 2b4b688581 fix(github-copilot): release failed catalog responses (#109071) 2026-07-16 17:07:24 -07:00
xingzhouandGitHub 2cd236385b fix(reef): close provider streams after guard errors (#109196) 2026-07-16 15:53:23 -07:00
950ec3c620 fix(telegram): stalled getChat errors retain connections (#109007)
* fix(telegram): abort stalled getChat errors

* test(telegram): satisfy promise executor lint

* fix(telegram): close getChat lookup transports

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 13:50:50 -07:00
xingzhouandGitHub 0e1fad711c fix(channels): prevent lifecycle listener buildup (#109108) 2026-07-16 13:08:12 -07:00
d15e84610a fix(discord): keep voice allowlists from granting owner authority (#108813)
* fix(discord): keep voice allowlists from granting owner authority

* fix(discord): normalize wildcard voice admission

* refactor(discord): separate voice admission from ownership

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 08:44:42 -07:00
xingzhouandGitHub 16c2bbb540 fix(mantis): bound Crabbox source checkout (#108940) 2026-07-16 07:49:07 -07:00
0c067fbfa4 fix(ui): reject nondecimal cron repeat amounts (#107480)
* fix(ui): reject nondecimal cron repeat amounts

* fix(ui): satisfy cron LOC ratchet

* fix(ui): validate cron intervals exactly

Co-authored-by: xingzhou <zhang.guiping@xydigit.com>

* chore(pr): stage cron UI proof

Co-authored-by: xingzhou <zhang.guiping@xydigit.com>

* chore(pr): remove staged cron UI proof

Co-authored-by: xingzhou <zhang.guiping@xydigit.com>

* fix(ui): remove unused cron type export

Co-authored-by: xingzhou <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-16 04:04:01 -07:00
6e594ca7ca fix(qa-lab): preserve Unicode in capped evidence previews (#108545)
* fix(qa-lab): preserve UTF-8 evidence previews

* fix(qa-lab): complete short evidence preview reads

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 03:50:30 -07:00
c7f58f5bed fix(gateway): suppress MCP notification responses (#101730)
* fix(gateway): suppress mcp notification responses

* fix(gateway): MCP clients receive responses for JSON-RPC notifications

* Handle MCP lifecycle notifications before tool resolution

* Filter notification entries from internal-error batches

* fix(gateway): centralize MCP response eligibility

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

* test(gateway): use public MCP loopback helper

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 03:34:01 -07:00
cb7f37d0fa fix(oc-path): reject oversized non-ASCII path URIs (#108576)
* fix(oc-path): reject oversized non-ASCII path URIs

* test(oc-path): cover exact UTF-8 byte limit

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 02:11:39 -07:00
f98de3fc25 fix(control-ui): preserve emoji in plugin fallback monograms (#105240)
* fix(control-ui): preserve emoji in plugin monograms

* test(ui): cover combining-mark monograms

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Colin Johnson <colin@solvely.net>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-16 00:59:37 -07:00
5a494acd64 fix(agents): tool calls lose arguments when Responses item IDs rotate (#108630)
* fix(agents): tool calls lose arguments when Responses item IDs rotate

* test(github-copilot): prove rotating tool item IDs

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 23:58:34 -07:00
cde78074b2 fix(providers): preserve UTF-8 in local service diagnostics (#108518)
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-15 18:26:50 -07:00
3b1f26bb0e fix(control-ui): keep Workspace UI on the newest version after overlapping reloads (#108204)
* fix(control-ui): keep Workspace reloads on newest version

* test(control-ui): cover workspace loading ownership

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(control-ui): preserve workspace navigation intent

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(control-ui): settle superseded load state

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(control-ui): cancel removed workspace deep links

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(control-ui): prefer newer workspace documents

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* refactor(control-ui): finalize workspace load ownership

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(control-ui): invalidate consumed workspace intent

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 17:30:26 -07:00
3b51889c3b fix(extensions): prevent corrupted UTF-8 in api.exec output (#108365)
* fix(extensions): preserve split UTF-8 in api.exec

* test(agents): cover incomplete exec UTF-8 at EOF

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-15 15:59:59 -07:00
7ea249463c fix(qa): handle Matrix CLI stream errors (#102698)
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-07-15 12:33:35 -07:00
c508e4a2b8 fix(workspaces): array bindings can select the wrong item for malformed pointers (#107317)
* fix(workspaces): reject malformed array indices in file bindings

* test(workspaces): cover canonical array pointers

Co-authored-by: xingzhou <zhangguiping@xydigit.com>

* test(workspaces): reject zero-padded array index

Co-authored-by: xingzhou <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: xingzhou <zhangguiping@xydigit.com>
2026-07-14 21:40:39 -07:00
095693ee05 fix(control-ui): preserve emoji in long build branch labels (#104901)
* fix(control-ui): preserve emoji in long build branch labels

* refactor(ui): harden Unicode build labels

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 13:54:49 -07:00
e035601b9a fix(agents): omitted image metadata reports inflated byte sizes (#106066)
* fix(agents): omitted image metadata reports inflated byte sizes

* fix(gateway): report decoded audio byte sizes

* refactor(agents): keep media sanitizers lean

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 07:17:41 -07:00
fe6e6a5072 fix(searxng): stop web search requests when runs are aborted (#104216)
* fix(searxng): cancel pending searches with parent runs

* fix(searxng): preserve parent cancellation

* refactor(web-search): isolate provider execution

* fix(web-search): use stable provider type

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 06:36:21 -07:00
8acbf209cd fix(gateway): prevent broken emoji in WebSocket log IDs (#105001)
* fix(gateway): preserve Unicode in WebSocket log IDs

* test(gateway): cover UTF-16-safe log IDs

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 02:41:55 -07:00
46457b3610 fix(ui): Sessions filters silently accept trailing text (#107072)
* fix(ui): reject partial session filter values

* fix(ui): validate session filters strictly

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 22:22:20 -07:00
6b0a835116 fix(diagnostics): prevent broken emoji in long model identifiers (#106986)
* fix(diagnostics): preserve Unicode boundaries in timeline attributes

* fix(diagnostics): keep timeline truncation within LOC guard

* test(diagnostics): strengthen Unicode timeline regression

* test(diagnostics): type Unicode boundary cases

* test(diagnostics): await wrapped timeline call

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 21:41:15 -07:00
ad7f849490 fix(agents): prevent local provider sidecars surviving canceled startup (#104070)
* fix(agents): prevent local provider sidecars surviving canceled startup

* test(agents): harden local service abort regression

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 20:02:13 -07:00
xingzhouandGitHub 88a45fe495 fix(chat): keep large paste previews Unicode-safe (#106328) 2026-07-13 16:00:18 -07:00
c3cb1af93c fix(transcripts): stop live capture when the agent run is canceled (#104123)
* fix(transcripts): stop live capture when the agent run is canceled

* fix(transcripts): preserve startup cleanup ownership

* fix(transcripts): keep runtime session type internal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-13 03:11:25 -07:00
fb48df4a0f fix(claude-cli): max-turn stops omit run and recovery context (#94130)
* fix(anthropic): handle max_turns stop reason and surface retry-limit details to users

* fix(anthropic): classify max_turns as length-limited

* fix(anthropic): preserve max_turns diagnostics

* fix(anthropic): preserve max_turns side-effect warning

* fix(claude-cli): max-turn stops omit run and recovery context

* fix(claude-cli): preserve max-turn terminal boundaries

* refactor(claude-cli): centralize terminal error conversion

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(claude-cli): warn before retrying max-turn failures

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(claude-cli): preserve max-turn stops through wrappers

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* fix(claude-cli): prioritize terminal max-turn output

---------

Co-authored-by: 张贵萍 <zhangguiping@zhangguipingdeMac-mini.local>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 19:57:34 -07:00
57c2d65ad5 fix(apps): reconcile slow Apple chat replies (#97722)
* fix(apps): reconcile slow chat replies

Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com>

* style(apps): wrap wait diagnostic

* chore(apps): refresh native i18n inventory

* chore: leave changelog release-owned

* style(apps): normalize Swift modifiers

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 17:01:40 -07:00
xingzhouandGitHub 8c98832a85 fix(mcp): reject hexadecimal timeout options (#104633) 2026-07-11 15:50:21 -07:00
4a0086d085 fix(sessions): prevent corrupted Unicode in persisted tool details (#104540)
* fix(sessions): prevent corrupted Unicode in persisted tool details

* test(sessions): consolidate UTF-16 persistence coverage

* test(sessions): build redaction fixture from placeholder

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 15:49:43 -07:00
2077ebe8b4 fix(exec): long retained process output corrupts boundary emoji (#104531)
* fix(process): preserve Unicode in captured output tails

* test(process): consolidate captured output coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 15:35:59 -07:00
xingzhouandGitHub fc0fd1bdda fix(ui): browser annotation prompts corrupt boundary emoji (#104396) 2026-07-11 14:20:45 -07:00
03558dc008 fix(openrouter): Fusion prompt corrupts boundary emoji in model IDs (#104433)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-11 12:11:36 -07:00
04037e35c0 fix(chat): tool titles corrupt boundary emoji in long inputs (#104464)
* fix(chat): tool titles corrupt boundary emoji in long inputs

* test(chat): simplify UTF-16 title boundary coverage

* test(chat): satisfy title boundary lint

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 10:45:04 -07:00
f73c5541fe fix(agents): cancel pending bundle LSP requests (#104110)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-11 22:02:43 +08:00
745cfc028e fix(codex): bound shared app-server startup waits (#89442)
* fix(codex): isolated cron reports Codex startup stalls

* fix(codex): isolated cron reports Codex startup stalls

* fix(codex): bound shared app-server startup waits

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

* test(codex): satisfy startup lifecycle checks

* test(codex): align deferred auth test type

* test(codex): type auth mock as async void

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 04:58:55 -07:00
af80736057 fix(qa-lab): keep bounded web snapshots UTF-16 safe (#104249)
* fix(qa-lab): keep bounded web snapshots UTF-16 safe

* fix(qa-lab): keep diagnostic truncation UTF-16 safe

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 04:49:00 -07:00
6595d1756b fix(discord): stream multipart uploads (#102972)
* fix(discord): bound multipart REST uploads
* Preserve Discord media upload payload limits
* fix(discord): stream multipart uploads

---------

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-07-11 10:10:41 +05:30
e009a41410 fix(agents): repair orphaned queued turns before assembly (#90759)
* fix(agent): keep orphaned user turns contextual
* test(agent): prove orphan repair targets active prompt
* fix(agent): repair orphaned user behind session metadata
* fix(agent): satisfy orphan repair CI types
* fix(agent): preserve orphan repair state entries
* fix(agent): filter repaired orphan from assembled history
* fix(embedded-agent): repair orphan session entry types
* fix(embedded-agent): remap replayed metadata labels
* fix(embedded-agent): skip dangling replay labels
* fix(agents): repair orphan history before assembly

---------

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-07-11 09:56:40 +05:30
85fa8af4bb fix(telegram): close evicted client-options cache transports after in-flight sends (#101783)
Long-running Telegram senders leaked HTTP transports: the client-options cache in extensions/telegram/src/send.ts created an owned undici dispatcher per account/network entry but evicted entries without closing it. Cache entries now own their transport; eviction retires the entry and closes the transport once the operation-level lease releases, so cache pressure never aborts an in-flight, retrying, or still-preparing send. Includes a real-socket e2e regression against a local Bot API server.

Co-authored-by: zhangguiping-xydt <zhangguiping-xydt@users.noreply.github.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-07-11 07:57:44 +05:30
babc287afe fix(slack): time out stalled external file uploads (#103442)
* fix(slack): time out stalled external file uploads

* fix(slack): scope external upload timeout

* fix(slack): restrict external upload transport

* fix(slack): restrict external upload transport

* fix(slack): preserve external upload retry safety

* test(slack): use compatible guarded fetch runtime

* test(plugin-sdk): update public export baseline

* fix(slack): harden external upload delivery

* refactor(slack): isolate upload completion

Keep ordinary Enterprise Grid traffic on the Bolt listener client. Use a team-scoped no-retry client only for one-shot external upload completion, while preserving the bounded raw-upload timeout and safe durable replay classification.

* fix(slack): refresh upload release metadata

* chore(slack): leave release notes release-owned

* fix(slack): classify failed uploads before completion

* fix(slack): keep upload completion untimed

* test(plugin-sdk): refresh public export baseline

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 23:52:35 +01:00
4257875448 fix(qa-lab): keep saved view text truncation UTF-16 safe (#103789)
* fix(qa-lab): keep saved view text truncation UTF-16 safe

* refactor(qa-lab): use semantic truncation helper

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 23:10:53 +01:00
xingzhouandGitHub 6f6c802ea5 fix(infra): keep restart log tails UTF-16 safe (#103757) 2026-07-10 22:50:25 +01:00
8d5f7e27b2 fix(sms): replayed Twilio webhooks process again after high inbound traffic (#101107)
* fix(sms): replayed Twilio webhooks process again after high inbound traffic

* fix(sms): harden Twilio replay saturation

* test(sms): expose response header spy

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 17:58:53 +01:00
4d004e2054 fix(logging): keep support diagnostics truncation UTF-16 safe (#103580)
* fix(logging): keep support diagnostics truncation UTF-16 safe

* docs(changelog): credit support diagnostics fix

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 16:43:47 +01:00
xingzhouandGitHub 328eaa3a23 fix(logging): keep redacted token hints UTF-16 safe (#103341) 2026-07-10 14:14:13 +01:00
87a652bc37 fix(fal): image generation hangs on slow generated-image downloads (#103071)
* fix(fal): timeout generated image downloads

* fix(fal): honor image operation timeout budget

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-10 06:08:03 +01:00
f1e7081b4d fix(active-memory): recall context breaks when recent turns contain emoji (#102877)
* fix(active-memory): keep recall query snippets utf16-safe

* test(active-memory): exercise recall hook for utf16 bounds

* test(active-memory): detect only unpaired surrogates

* fix(active-memory): bound timeout partials safely

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:03:34 +01:00
763ef215e0 fix(ui): keep event payload previews UTF-16 safe (#102625)
* fix(ui): keep event payload previews UTF-16 safe

* chore: use shared utf16 truncator in presenter

* fix(ui): use canonical utf16 truncator import

* refactor(ui): reuse canonical text truncation

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 15:01:17 +01:00
xingzhouandGitHub 4ad94febcb fix(agents): keep cleanup timeout details UTF-16 safe (#102565) 2026-07-09 10:17:59 +01:00
b23fdcfac9 fix(codex): avoid broken emoji in dynamic tool timeout logs (#102509)
* fix(codex): keep dynamic tool log fields UTF-16 safe

* test(codex): narrow dynamic tool response item

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 09:26:22 +01:00
4adfc30b90 fix(codex): app inventory error diagnostics stay UTF-16 safe (#102414)
* fix(codex): keep app inventory error messages UTF-16 safe

* refactor(codex): unify app inventory error truncation

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 07:31:18 +01:00
1017ea5bc8 fix(discord): prevent stale gateway error listeners after restart (#101617)
* fix(discord): remove gateway error listener on dispose

* fix(discord): preserve late gateway error guard

* fix(discord): retain late gateway diagnostics

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 04:25:37 +01:00
xingzhouandGitHub 4e29b2f5ab fix(slack): bound conversation info cache (#101562) 2026-07-07 05:55:00 -07:00
f14eb97ae7 fix(codex): honor Pro reasoning effort contracts (#101484)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-07 03:13:50 -07:00
de152b1f65 fix(plugin-sdk): align speech runtime packaging (#89899)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-07 07:38:41 +01:00
xingzhouandGitHub e80e8a2b67 fix(device-pair): mobile pairing rejects local IPv6 cleartext URLs (#101008)
* fix(device-pair): allow local IPv6 pairing URLs

* test(device-pair): cover IPv6 cleartext lower bound
2026-07-06 22:35:09 +01:00
565097fc10 fix(media-understanding): video auto-selection runs without a model (#99791)
* fix: require video media provider models

* fix video media test typing and skip coverage

* fix(media-understanding): preserve self-defaulting video providers

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-06 12:42:01 -07:00
f805bb4e02 fix(feishu): avoid mention forwarding when bot open id is unavailable (#100891)
* fix(feishu): avoid forwarding mentions without bot open id

* fix(feishu): require bot identity for mention forwarding

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 18:54:02 +01:00
xingzhouandGitHub 5aa7c6267c fix(irc): monitor stays disconnected after IRC socket closes (#100799) 2026-07-06 06:07:12 -07:00
d86cb67a4a fix(agents): MiniMax VLM can consume oversized success responses (#100694)
* Cap MiniMax VLM success response reads

* fix: share bounded MiniMax response reader

* test: return fresh MiniMax response bodies

* test: allow stream prefetch at MiniMax bound

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 12:03:53 +01:00
a8709996a2 fix(agents): Anthropic-compatible streams hang on oversized partial responses (#100686)
* fix: bound Anthropic SSE pending frame buffer

* fix(anthropic): document parser-local SSE cap

* docs: place Anthropic hardening under fixes

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 12:01:59 +01:00
xingzhouandGitHub 37022833c5 fix(anthropic): include Fable 5 in context1m wrapper (#100572) 2026-07-06 02:07:36 -07:00
xingzhouandGitHub cecb6cf600 fix(openai): keep missing-auth hint on default model (#100579) 2026-07-06 08:56:20 +01:00
xingzhouandGitHub a13acacd3c fix(discord): keep command previews emoji-safe (#99539) 2026-07-06 05:40:39 +00:00
7a49b160a4 fix(browser): downloads complete over CDP connections (#89416)
* fix(browser): surface navigate downloads in CDP mode

* Validate navigation downloads before saving

* fix(browser): observe navigation download capture timeouts

* refactor(browser): unify managed download capture

* test(browser): satisfy download fixture lint

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 02:26:20 +01:00
a77ea59ce7 fix(bedrock): bound Mantle model discovery fetches (#99961)
* fix(bedrock): bound Mantle model discovery fetches

* fix(bedrock): release rejected Mantle responses

* docs(changelog): position Bedrock Mantle fix

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-06 02:21:00 +01:00