Commit Graph

74627 Commits

Author SHA1 Message Date
Peter Steinberger a8dfd37332 fix(discord): avoid replaying ambiguous voice deliveries (#117127)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:40:05 -07:00
Peter Steinberger 3c81eb4925 fix(ui): scope Gateway reconnect lineage to its target (#117125)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:38:17 -07:00
SunnyShu cbdbf6802b fix(models): expose runtime provider catalogs in browse views (#116857)
Use the resolved runtime config for discovery auth while preserving source SecretRef markers, keep full-catalog discovery unscoped, honor per-agent wildcards, and restrict discovered inventory to manifest-declared dynamic providers.

Fixes #115953
2026-08-01 08:37:43 +08:00
Peter Steinberger afa8fffab8 fix(gateway): retain avatar content length for HEAD requests (#117124)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:36:28 -07:00
Peter Steinberger 7dd74db836 fix: preserve completion delivery and truthful agent session state (#117119) 2026-07-31 17:35:14 -07:00
Peter Steinberger 45f274f757 fix(line): avoid replaying ambiguous auto replies (#117126)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:32:53 -07:00
Peter Steinberger 5d6f21122c fix(ui): canonical plugin settings, reconnect, and freshness ownership (#117047)
* fix(ui): unify memory and plugin config mutation ownership

* test(ui): prove committed memory refresh failures in Chromium

* fix(ui): preserve concurrent memory mutation outcomes

* test(ui): prove model setup reloads after reconnect

* test(ui): await mocked reconnect handshake before restoring model

* fix(ui): own model setup connection generations

* test(ui): use valid setup gateway hello fixtures

* test(ui): synchronize memory mutation owner regressions

* fix(ui): bind memory restart notices to executing gateway process

* fix(ui): scope setup and memory state to gateway connections

* fix(ui): prevent stale memory restart notice ownership

* fix(ui): separate gateway refresh warnings from restart notices

* test(ui): await current memory catalog before reconnect actions

* fix(ui): clear shared memory refresh warnings after authoritative updates

* test(ui): click the visible memory add-on switch host

* test(ui): assert canonical gateway refresh error text

* test(ui): align gateway fixtures and dead-code ownership

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:30:46 -07:00
Yuval Dinodia e8d546c8da fix(buzz): reconnect silently skips retained inbound messages (#116925)
* fix(buzz): page reconnect history instead of dropping older messages

On reconnect the Buzz gateway asked the relay for a single capped page of
room history and treated EOSE as a complete recovery. Any backlog larger
than the per-room replay limit was never requested again, so those messages
never reached handleBuzzInbound, the agent, or the session transcript, and
nothing reported the loss.

The room subscription now records how much history its first page returned
and, when that page filled the limit, pages older history through the relay
until it is exhausted. Each page is dispatched through the existing bounded
replay queue and the next page waits for queue capacity, so recovery stays
memory bounded. A room whose backlog cannot be paged past a single
timestamp is now reported instead of dropped silently.

Membership tracking moves to room-membership-tracker.ts because buzz-bus.ts
was already at the 700 line ceiling.

* fix(buzz): hold dispatch capacity while a history page is in flight

Catch-up asked the replay queue whether capacity existed and then issued the
relay query, but nothing held those slots. Live room events arriving while
the query was in flight could consume them, so admitting the page afterwards
could report overflow, which closes the dispatch queue and drops every
queued message before forcing a reconnect. A busy room with slow inbound
handlers could repeat that instead of finishing recovery.

Capacity is now reserved rather than sampled. reserveCapacity resolves with a
reservation that owns its slots until released, page events are admitted
through that reservation, and the reservation is released once the page is
enqueued. Live enqueues keep the full pending limit and are never rejected
earlier because a reservation is outstanding. An overflow reported through a
reservation means the relay exceeded the page it was asked for, so it is
reported as a history error instead of tearing down the session.

* fix(buzz): bound reconnect history pages

* fix(buzz): preserve replay reservations

* test(buzz): cover catch-up settlement paths

* fix(buzz): drain saturated history ranges

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-01 08:28:03 +08:00
Peter Steinberger 4f7fbcb34d fix(gateway): preserve icon metadata for HEAD requests (#117079)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:23:57 -07:00
Peter Steinberger f455eb76d8 fix(gateway): reject sends on closing node sockets (#117066)
* fix(gateway): reject sends on closing node sockets

* style(gateway): format node socket fixtures

* test(gateway): fix node socket state typing

* test(gateway): prove closing socket admission

* test(gateway): align WebSocket proof contracts
2026-07-31 17:21:30 -07:00
Peter Steinberger a1b41d5ddb refactor(channels): share Matrix and Slack progress draft composition (#117097) 2026-07-31 17:17:07 -07:00
Peter Steinberger e857d8e5c6 fix(ui): preserve Gateway opening timeout diagnostics (#117078)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:14:30 -07:00
Vincent Koc a1c689e375 fix(outbound): preserve fenced tool call examples (#117089) 2026-08-01 08:13:05 +08:00
Peter Steinberger 8ea6c43754 fix(ui): prevent stale sidebar sessions after switching filters (#117090) 2026-07-31 17:05:16 -07:00
Vincent Koc 89aadef6ef feat(plugins): externalize iMessage channel (#117101) 2026-08-01 08:01:18 +08:00
zw-xysk 08305dbb94 docs(config-channels): repair Discord, Slack, and Google Chat configuration examples (#106188)
* docs(config-channels): replace legacy allow:true with enabled:true for Discord, Slack, and Google Chat config examples

* docs(config-channels): repair channel configuration examples

Make the complete Discord, Slack, and Google Chat setup examples valid and keep Slack channel routing on stable IDs.

Co-authored-by: 赵旺0668001248 <zhao.wang1@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 16:58:02 -07:00
Peter Steinberger 9e4381eb1c refactor(channels): unify bundled channel setup contracts (#117106)
* refactor(channels): canonicalize bundled setup contracts

* test(matrix): use scoped environment fixtures
2026-07-31 16:57:29 -07:00
Peter Steinberger aae474ab97 fix(macos): stop dashboard windows flashing during reconnects (#117112)
* fix(macos): stop dashboard windows flashing during reconnects

* fix(macos): refresh native localization inventory
2026-07-31 16:56:35 -07:00
Peter Steinberger 533807ab61 refactor: consolidate secure channel approval reaction bindings (#117105) 2026-07-31 16:51:25 -07:00
Vincent Koc ee9a658a7d fix(ui): persist per-agent settings changes (#117107)
Closes #117046

Per-agent model, tool, skill, and node-binding edits in the Control UI were written to the retired `agents.list` shape, so the strict Gateway schema rejected them. Save failures could then be hidden by an immediate roster refresh.

Route all affected writers through the canonical keyed `agents.entries` resolver, preserve authored keys, reject unsafe keys, align adjacent cron and swarm readers, and keep failed saves dirty with the Gateway error visible in the active panel.

Validated with the exact Testbox changed gate, full CI, 314 focused UI tests, 11 Playwright scenarios, 42 Gateway config tests, clean autoreview, and ClawSweeper review.
2026-08-01 07:49:55 +08:00
Peter Steinberger 9ec20c4a1d refactor(plugins): reuse prepared manifest metadata (#117091) 2026-07-31 16:47:45 -07:00
Peter Steinberger b8b4a11b38 refactor(telegram): unify outbound media delivery (#117102) 2026-07-31 16:46:22 -07:00
Peter Steinberger e67df99edc refactor(gateway): consolidate operator approval resolution (#117095) 2026-07-31 16:45:01 -07:00
Peter Steinberger 2f875c5ad7 perf(gateway): skip large catalog prewarm (#117108) 2026-07-31 16:44:22 -07:00
wm0018 ccaf807fa0 docs(install): fix fly discord channel allow -> enabled to match schema (#102129)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 16:43:43 -07:00
Peter Steinberger 01cd336a63 refactor(discord): consolidate model picker navigation (#117093) 2026-07-31 16:43:34 -07:00
Peter Steinberger f94a790df5 refactor(agents): unify model selection policy ownership (#117098) 2026-07-31 16:42:09 -07:00
zw-xysk 124a68bd26 docs(multi-agent): replace legacy allow:true with enabled:true for Discord channel config examples (#106201)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 16:41:57 -07:00
Peter Steinberger 2fcb47ad1e refactor(test): derive changed-test routes from canonical owners (#117099)
* refactor(test): derive changed-test routes from canonical owners

* fix(test): type workflow owner descriptors for lint
2026-07-31 16:40:46 -07:00
Ishaan 83e0be6efe fix(restart): give the stale-pid lsof scan a 5s budget (#117036)
The initial stale-pid scan gave lsof a 2000 ms spawn budget. On macOS hosts with many mounted volumes, lsof can exceed that budget, leaving the stale listener in place and making gateway restart fail on the busy port.

Give only the initial lsof scan a 5000 ms default. Keep process and ancestor ps inspection at 2000 ms, and keep the post-kill poll at 400 ms. An explicit findGatewayPidsOnPortSync timeout continues to bound every child process used by that probe.

Add regressions for the split defaults and explicit override behavior. This is a bounded mitigation for the residual slow-scan case related to #116950; the broader macOS polling architecture remains tracked by #90548.

Reported by @NirvanaCh7.

Co-authored-by: guptaishaan <guptaishaan@users.noreply.github.com>
2026-08-01 07:38:09 +08:00
Peter Steinberger 7bae24760b refactor(ui): make sessions and navigation reliable across reconnects (#117103)
* refactor(ui): consolidate connection ownership and split control shell

* fix(ui): keep terminal session contract with reconciliation owner
2026-07-31 16:36:47 -07:00
Peter Steinberger f9377751dc fix(config): validate actual backup before recovery (#117100) 2026-07-31 16:35:48 -07:00
qingminlong 3fc7fb2813 docs: clarify Control UI pairing in private browsing (issue #113000) (#114111) 2026-07-31 16:34:40 -07:00
Peter Steinberger ea1d6cc35e refactor(memory): unify embedding provider adaptation (#117094) 2026-07-31 16:30:22 -07:00
Peter Steinberger e4d6e5603d refactor(ai): unify Anthropic streaming policy and usage accounting (#117086)
* refactor(ai): unify Anthropic streaming policy and usage accounting

* fix(ai): align shared cache TTL types with Anthropic SDK
2026-07-31 16:28:53 -07:00
Peter Steinberger 95e097246b refactor(agents): unify session write lease ownership (#117092) 2026-07-31 16:27:26 -07:00
Peter Steinberger 6d8f0a1365 fix(memory-wiki): protect notes with damaged human markers (#117104) 2026-07-31 16:26:08 -07:00
Peter Steinberger d0b6a92f85 fix(agents): honor bootstrap continuation skips for SQLite sessions (#117082)
* fix(agents): honor bootstrap continuation skips for SQLite sessions

* test(agents): remove obsolete bootstrap scanner mock import
2026-07-31 16:25:54 -07:00
Peter Steinberger 9a499d3c1b fix(ui): restore queued messages to the correct agent after reconnect (#117084)
* fix(ui): unify queued chat ownership across reconnects

* fix(ui): remove obsolete chat outbox codec exports
2026-07-31 16:24:26 -07:00
Peter Steinberger 510ace0fbb fix(telegram): avoid polling stalls from full thread-binding rewrites (#117081)
* fix(telegram): avoid rewriting every thread binding on activity

* test(telegram): satisfy thread-binding unbind contract
2026-07-31 16:22:33 -07:00
metaforismo 102a5915ef fix(ios): restore Magic Keyboard return in chat composer (#116042)
* fix(ios): restore hardware return in chat composer

* test(ios): cover hardware return composer flow

* fix(ios): route history keys through native editor

* fix(ios): satisfy composer lint gates

* test(ios): fix snapshot app lookup

* test(ios): keep snapshot helper nonthrowing

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-31 16:21:41 -07:00
Peter Steinberger 433bb3f954 fix(cli): make commands, completion, and JSON output reliable (#116033)
* fix(cli): make commands, completion, and JSON output reliable

* fix(cli): reconcile completion coverage with current main

* test(cli): keep test routing stable across isolation lanes
2026-07-31 16:20:34 -07:00
Peter Steinberger 4645d4a487 fix(browser): unify node routing and honor configured pins (#117087) 2026-07-31 16:16:44 -07:00
Peter Steinberger a5700f1725 refactor(doctor): share state migration ownership lifecycle (#117088) 2026-07-31 16:14:46 -07:00
Paco Cartones 955c8fe4af docs(nodes): system.run parameters were documented as non-existent CLI flags (#116930)
* docs(nodes): system.run parameters were documented as non-existent CLI flags

* docs(nodes): remove retired node env flags

Co-authored-by: Paco Cartones <253313177+pacocartones@users.noreply.github.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 16:11:24 -07:00
Peter Steinberger 5199ba0d30 refactor(agents): unify direct completion fallback delivery (#117085) 2026-07-31 16:10:08 -07:00
Peter Steinberger 604fd9be5f refactor(doctor): compact compatibility release inventory (#117077)
* refactor(doctor): compact compatibility release inventory

* fix(doctor): preserve string-safe compatibility lookup
2026-07-31 16:03:22 -07:00
Peter Steinberger 7453dc714d fix(memory): compact SQLite sessions after newly appended content (#117076)
* fix(memory): compact SQLite transcripts after post-usage growth

* test(memory): remove obsolete transcript fixture variable
2026-07-31 15:58:53 -07:00
Leon-SK668 b832287ba5 fix(discord): prevent REST failures from exposing credentials
Sanitize Discord REST failure details and structurally hash credential-bearing webhook scheduler route keys while preserving stable rate-limit grouping. Exact-head CI, autoreview, ClawSweeper, and focused redaction proof are green.

Co-authored-by: Alix-007 <li.long15@xydigit.com>
2026-08-01 06:55:28 +08:00
Ali Adnan de143f2760 docs: fix controlUi.root config value using unexpanded tilde (#114594) 2026-07-31 15:54:51 -07:00