Commit Graph

81255 Commits

Author SHA1 Message Date
Peter Steinberger 3fe833dfa4 fix(memory): preserve requested corpus outcomes (#126530) 2026-08-19 20:57:32 -07:00
Ayaan Zaidi ade0fb2189 fix(auto-reply): restore ambient room event silence (#126527)
Restore intentional silence for undirected room events while retaining visible-answer recovery for mentions, commands, and ordinary requests.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-20 09:26:40 +05:30
Vyctor H. Brzezowski 916eef4e99 fix(ui): balance completed-work spacing (#126303)
* fix(ui): balance completed-work spacing

* fix(ui): preserve touch work spacing

* fix(ui): balance touch work spacing

* fix(ui): open completed-work spacing
2026-08-20 00:17:32 -03:00
Shakker 441f0a3388 fix: allow backing out of agent imports (#126515) 2026-08-20 04:10:44 +01:00
Shakker 32223ac536 fix: group agent imports in onboarding 2026-08-20 04:10:44 +01:00
Peter Steinberger 35e0bc22ea fix(memory): distinguish missing file reads (#125979)
* fix(memory): distinguish missing file reads

* test(memory): keep adapter identity assertion bound

* fix(memory): preserve statusless manager reads
2026-08-19 20:08:50 -07:00
Jacqueline Henriksen eed64163b6 refactor(cli): make multi-agent operations agent-owned (#123871)
* refactor(cli): make multi-agent operations agent-owned

* fix(cli): keep provider setup on agent target

* fix(cli): preserve legacy operation ownership

* fix(cli): align capability target calls with current resolver

* fix(cli): preserve operation-specific agent errors

* fix(cli): keep allowlist selection agent-scoped

* fix(cli): preserve agent-owned model operations

* fix(cli): preserve list-form agent rosters

---------

Co-authored-by: Josh Lehman <550978+jalehman@users.noreply.github.com>
2026-08-19 19:54:00 -07:00
Josh Avant 29cfd195d1 fix(memory): honor turn tool policy during automatic recall (#126482)
* fix(memory): bind prompt recall to turn tool policy

* test(plugins): update hook contract inventory

* fix(memory): bind recall to active run lifecycle

* docs(plugins): define prompt authority contract

* test(plugins): track prompt authority type guard

* fix(plugins): revalidate prompt authority per handler
2026-08-19 19:21:51 -07:00
Peter Steinberger 53bd316553 fix(telegram): finalize streamed questions in place (#126248)
* fix(telegram): finalize streamed questions in place

* test(telegram): align partial question delivery coverage

* fix(telegram): propagate partial question finalization

* test(telegram): assert typed partial delivery error
2026-08-19 19:15:46 -07:00
Patrick Erichsen 6eb9344e7d fix(ui): preserve dashboard side-panel selection (#126511) 2026-08-19 19:11:13 -07:00
Peter Steinberger e001542388 fix(skills): keep workshop revisions atomic (#126485)
* fix(skills): keep workshop revisions atomic

* fix(skills): keep proposal artifact paths stable

* fix(gateway): preserve proposal inspect schema

* fix(gateway): hide proposal generation paths

* fix(skills): sync proposal generation files
2026-08-19 19:03:10 -07:00
Peter Steinberger 19316660e4 fix(agents): consolidate ambient owner resolution (#126504) 2026-08-19 18:54:32 -07:00
Peter Steinberger 53fb8220ce fix(package): bound installed worker artifact parsing (#126491)
* fix(package): bound worker artifact parsing

Keep canonical self-contained worker bundles above the generic dist-file cap while enforcing an 80 MiB limit before installed-package verification reads or parses them.

* fix(package): bound every verifier read

Route the context-engine and dependency scans through one root-dist pre-read policy, exclude plugin-owned extension assets from the root marker contract, and cover the public verifier flow.
2026-08-19 18:47:38 -07:00
Peter Steinberger 4118f31d89 fix(llama-cpp): make endpoint auth transitions reproducible (#126498) 2026-08-19 18:37:28 -07:00
Peter Steinberger bfc6bd3da5 fix(cli): honor inherited tasks options (#117528)
* fix(cli): honor inherited tasks options

* test(cli): classify task flow JSON support
2026-08-19 18:24:11 -07:00
Peter Steinberger 3bfc9bc804 fix(process): keep signal forwarding through child errors (#126493) 2026-08-19 18:14:28 -07:00
Peter Steinberger 3201a9f1db fix(acp): close unhealthy runtime handles (#126494) 2026-08-19 18:10:33 -07:00
Peter Steinberger 0961247d94 fix(discord): route polls through canonical delivery (#126250)
* fix(discord): route polls through canonical delivery

* test(discord): align canonical poll action coverage

* test(gateway): isolate canonical poll fallback coverage

* fix(gateway): align canonical poll capability
2026-08-19 18:07:21 -07:00
Peter Steinberger af3b86091f fix(telegram): preserve direct-message topic routing (#126207)
* fix(telegram): preserve direct message topic identity

* fix(telegram): break topic routing import cycle
2026-08-19 18:00:56 -07:00
Peter Steinberger 41009e765c fix(agents): stop after terminal dynamic tool results (#126208)
* fix(agents): preserve terminal tool results across bridges

* fix(agents): scope terminal results to completed tool batches
2026-08-19 17:54:58 -07:00
Peter Steinberger c6ecfd26e5 fix(outbound): preserve first-reply behavior through durable delivery (#126205)
* fix(outbound): preserve reply facts through durable delivery

* fix(protocol): regenerate message action models

* fix(outbound): complete reply fact custody
2026-08-19 17:52:12 -07:00
Peter Steinberger 8b15dc9447 refactor: share media and process runtime helpers (#126490)
* refactor(media): share video description requests

* refactor(process): expand buffered runtime options
2026-08-19 17:48:49 -07:00
Peter Steinberger 0a86702241 feat(github): authorize agent identities from Settings (#126474)
* feat(github): add device authorization lifecycle

* fix(github): harden device authorization lifecycle

* fix(github): refresh native tool display snapshot

* fix(github): refresh config and UI baselines

* refactor(github): break OAuth identity import cycle

* test: make gateway retry deadline assertion scheduler-safe
2026-08-19 17:41:58 -07:00
Vyctor H. Brzezowski 3aff572d74 fix(ui): dismiss session hovercard before its menu opens (#126345)
* fix(ui): dismiss session hovercard before menu

* test(ui): keep hovercard regression focused

* fix(ui): dismiss catalog session hovercards

* test(ui): use typed catalog session key
2026-08-19 21:41:25 -03:00
Peter Steinberger 177828aa75 fix(cron): honor failure alert thresholds (#126483)
* fix(cron): honor failure alert thresholds

Per-run Gateway announcements bypassed threshold, cooldown, and opt-out policy. Make the scheduler the sole owner of failure notification decisions.

* fix(cron): preserve safe failure details

Keep trusted failure detail proof on the scheduler-authorized transport and remove the obsolete Gateway event-context handoff after the ownership consolidation.

* test(cron): assert alternate failure route isolation
2026-08-19 17:25:14 -07:00
PollyBot13 035853b921 fix(state): migrate exact v14 session schema (#126354) 2026-08-19 17:25:04 -07:00
Vyctor H. Brzezowski 02be7fea97 improve(ui): unify resize handles (#125066)
* improve(ui): unify resize handles

* perf(ui): trim resize handle startup cost

* fix(ui): stop resize drags on blur

* perf(ui): absorb resize blur cleanup

* perf(ui): unify resize drag listener target

* refactor(ui): unify resize drag state

* perf(ui): remove duplicate resize styles

* refactor(ui): let layouts own resize edges

* fix(ui): preserve resize interaction contracts

* test(ui): satisfy resize event lint
2026-08-19 21:11:39 -03:00
Peter Steinberger 17de76ed73 fix(diffs): use canonical auth rate limiter (#126484) 2026-08-19 17:09:30 -07:00
Vyctor H. Brzezowski e741649856 fix(ui): keep prose fences fully visible (#126346) 2026-08-19 21:05:51 -03:00
Peter Steinberger c4c9f6d464 fix(logging): report unavailable log tails (#126481)
Only missing-path metadata failures remain empty successes. Operational filesystem errors now reach existing Gateway, UI, CLI, channel, and diagnostics error paths.\n\nCloses #126467
2026-08-19 17:00:06 -07:00
Peter Steinberger 13fd888281 fix(tui): stop auth child on exit (#126476) 2026-08-19 16:57:28 -07:00
Peter Steinberger c5fd6252a7 fix(mcp): preserve resolved tool failures (#126472) 2026-08-19 16:44:01 -07:00
Peter Steinberger b740c68bb5 fix(pr): distinguish owner review from independent approval (#126475) 2026-08-19 16:37:34 -07:00
Patrick Erichsen 1762f43a34 docs: preflight release validation imports (#126471) 2026-08-19 16:25:50 -07:00
Patrick Erichsen 7d3471f129 docs: add release validation handoff (#126456)
* docs: add release validation handoff

* docs: label release validation campaigns

* fix: match release validation label exactly

* docs: structure release validation reports
2026-08-19 16:25:38 -07:00
Vyctor H. Brzezowski 16b09ad307 fix(ui): sync Terminal with live theme changes (#126297)
* fix(ui): sync terminal with live theme changes

* test(ui): cover terminal theme lifecycle

* test(ui): supply resolved theme in gateway fixture
2026-08-19 20:21:26 -03:00
Peter Steinberger 6ca7b43263 fix: preserve worker lease during cleanup recovery (#126465) 2026-08-19 16:17:54 -07:00
Peter Steinberger bdceeeb88c fix(qa): preserve terminal script failures (#126466) 2026-08-19 16:16:21 -07:00
Markus Hartung 4970ed2357 fix(matrix): accept Room v12 IDs without server suffix (#123931)
* fix(matrix): recognize room version 12 room IDs (no :server suffix)

Room version 12 (MSC4291) dropped the trailing ":server" from room
IDs -- they are now a hash of the create event. Every place in the
Matrix plugin that treated "!" + ":" as the signature of an
already-resolved room ID silently discarded valid v12 room IDs as
unresolved instead of using them directly:

- channels.matrix.rooms config resolution (config.ts) dropped the
  entry entirely, so group rooms could never pass the groupPolicy
  "allowlist" gate on a v12 homeserver -- messages were dropped with
  no reply and no default-level log line, since the only trace is a
  verbose-only debug log.
- The invite auto-join allowlist validator and the interactive
  group-room setup resolver in onboarding.ts had the same check
  duplicated, so a user typing a v12 room ID during setup would be
  told it was invalid.
- session-route.ts's per-room DM recipientSessionExact check had the
  same gap for room-kind sends.

Runtime auto-join (auto-join.ts) already only checked for the "!"
sigil, which is why joining a v12 room worked while responding in it
did not -- this made the bug hard to spot from the join path alone.

Fix: add a single canonical isMatrixRoomId predicate next to the
existing isMatrixQualifiedUserId in target-ids.ts (user IDs and
aliases still require ":server" per spec; only room IDs changed) and
reuse it at all four sites instead of repeating the stale check.

Confirmed live against a real Room v12 homeserver (Conduit): the
server's own /joined_rooms response returns bare "!<hash>" room IDs
with no colon.

* docs(matrix): document suffixless room version 12 room IDs

Room version 12 (MSC4291) dropped the ":server" suffix from room
IDs. Document that the suffixless "!room" form is accepted anywhere
the docs previously only showed "!room:server", matching the
target-ids.ts fix landed in this same PR.

* fix(matrix): update stale Room v12 guidance text

* docs(matrix): accept suffixless Room v12 IDs in the group-policy guide

docs/channels/matrix.md already documents that channels.matrix.groups
accepts the suffixless !room form on room version 12+, but the
group-policy guide (docs/channels/groups.md) still only listed
!room:server, contradicting the channel doc an operator on a v12
homeserver would actually be following.

Addresses the ClawSweeper P2 finding on PR #123931.

* fix(matrix): advertise suffixless Room v12 IDs in onboarding placeholders

The invite auto-join and group-room setup prompts' placeholder text
still showed only `!roomId:server`, even though the retry note,
validation, and unresolved-room diagnostic already accept and describe
the suffixless `!roomId` form on room version 12+. An operator on a
v12 homeserver would see their homeserver's own room IDs contradicted
by the very placeholder guiding them through setup.

Updated both placeholders to list the suffixless form alongside the
existing examples, matching the phrasing already used in
docs/channels/matrix.md and the invite retry note. Added
configureRoomsAccess/roomsAllowlist options to the shared
createMatrixUpdateKeepCredentialsPrompter test harness (mirroring the
existing inviteAutoJoin option) so the group-room setup flow can be
exercised without duplicating the base prompter setup, then added
focused tests asserting the exact placeholder text for both prompts.
Verified both new tests fail against the pre-fix placeholders and pass
after.

Addresses the two ClawSweeper P2 findings on PR #123931.

* test(matrix): restore only allowlisted environment keys

* fix(matrix): reject empty room identifiers

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-19 16:12:05 -07:00
Erick Kinnee 6ac998eba8 fix(gateway): scope session list model catalog to each row's agent
Unscoped sessions.list resolved one completed catalog (the default
agent's) and stamped it onto every row, so a multi-agent listing
projected the default agent's thinking levels and context caps onto
sessions owned by other agents whenever provider/model collided.

Resolve a per-agent completed catalog map for unscoped listings (each
configured agent's snapshot, read-only, never starts discovery) and
select the catalog by the row's sessionAgentId. The list cache fence
now advances when any row owner's catalog revision changes.

Plain-array callers (search/resolve/direct listSessionsFromStore) are
unchanged; scoped requests resolve exactly one agent's catalog.
2026-08-20 00:11:29 +01:00
Erick Kinnee ee70dbcb14 test(ui): split dynamic catalog convergence e2e test into its own file
Keeps chat-flow.models-reasoning.e2e.test.ts under the 1000-line max-lines
budget; the ratchet forbids new suppressions. The moved test is unchanged.
2026-08-20 00:11:29 +01:00
Erick Kinnee 09d419683e test(ui): cover dynamic catalog projection convergence 2026-08-20 00:11:29 +01:00
Erick Kinnee cc445a32bb fix: refresh dynamic model metadata in session controls 2026-08-20 00:11:29 +01:00
Josh Avant a4f17833ad fix(gateway): make config revision tokens opaque (#126464)
* fix(gateway): make config revision tokens opaque

* test(gateway): cover config revision key startup phase
2026-08-19 16:10:27 -07:00
Peter Steinberger 88345d984b fix(package): restore root tarball budget (#126448)
Exclude maintainer-only docs, shrink the Crabbox worker wallpaper, and keep installed dependency scans compatible with canonical self-contained worker bundles without changing release budgets.
2026-08-19 16:07:15 -07:00
Josh Avant 9a9e688e99 fix(tailscale): preserve privileged route conflicts (#126449) 2026-08-19 16:03:56 -07:00
Ben Badejo 20af8688dd fix(codex): refresh stale isolated Computer Use bundles (#126080)
* fix(codex): refresh stale isolated Computer Use bundles

* fix(codex): satisfy Computer Use CI contracts

* fix(codex): constrain Computer Use bundle refresh

* test(codex): guard Computer Use cache fixture

* fix(codex): contain native Computer Use refresh paths

* fix(codex): keep service path type private

---------

Co-authored-by: Benjamin Badejo <ben@benbadejo.com>
Co-authored-by: Josh Lehman <550978+jalehman@users.noreply.github.com>
2026-08-19 16:02:23 -07:00
Peter Steinberger 2fe6c0206d fix(discord): retain attachment-only reply context (#126204) 2026-08-19 15:55:55 -07:00
Peter Steinberger 6afb2ce88f fix(onboard): provision named first-agent state (#126463)
Refs #126454
2026-08-19 15:49:14 -07:00
Josh Lehman 841f25eae6 fix(codex): accept newer desktop app-server versions (#126450) 2026-08-19 15:36:54 -07:00