Commit Graph

78555 Commits

Author SHA1 Message Date
Jesse Merhi cf1ac91609 test(ui): assert structured receipt count 2026-08-10 20:15:29 +10:00
Jesse Merhi ce852958bd test(ui): cover mounted and receipt wizard submissions 2026-08-10 20:15:29 +10:00
Jesse Merhi 402305f003 fix(ui): align wizard control states 2026-08-10 20:15:29 +10:00
Jesse Merhi 66196b7bf7 Control UI: pair wizard cancel and primary actions 2026-08-10 20:15:29 +10:00
Jesse Merhi 767bbb49d7 Control UI: preserve disabled wizard hover states 2026-08-10 20:15:29 +10:00
Jesse Merhi 84ad551e27 Control UI: size wizard actions for touch 2026-08-10 20:15:29 +10:00
Jesse Merhi 0368d89ebd Control UI: clarify wizard interactions 2026-08-10 20:15:29 +10:00
Peter Steinberger 719af0ccd6 fix(state): recheck ownership after WAL transition
Before returning a successful immutable ownership result, recheck whether a WAL appeared and rerun through SQLite normal read-only access. Add a deterministic real-SQLite regression that commits the ownership row after the immutable connection opens.
2026-08-10 03:08:24 -07:00
Peter Steinberger 9185e53da1 refactor(state): simplify ownership WAL retry
Keep the immutable-first ownership probe and WAL-aware corruption retry in one bounded connection loop. The selected location makes the retry single-shot while preserving handle cleanup and the no-mutation cold-family path.
2026-08-10 03:08:24 -07:00
Peter Steinberger c3775a8f21 test(ui): stabilize checkbox alignment proof
Poll both fixed-width selection rails together and compare their trailing edges so the browser assertion measures settled popover geometry instead of sampling different points in the open animation.
2026-08-10 03:08:24 -07:00
Peter Steinberger 020ba72f8d fix(state): close ownership WAL transition race
Retry an immutable ownership probe through SQLite normal read-only access when a WAL appears during the open and produces a false corruption result. Treat a WAL without SHM as live state, and cover that rebuildable-index boundary with a real database-family regression.
2026-08-10 03:08:24 -07:00
Peter Steinberger 7c8192bc03 fix(state): preserve rollback journal recovery
Treat only live WAL sidecars as requiring a normal read-only ownership connection. Keep rollback journals on immutable preflight inspection so the canonical writable lifecycle remains the sole owner of crash recovery.
2026-08-10 03:08:24 -07:00
Peter Steinberger 1e95c471a0 fix(state): read live WAL ownership safely
Use WAL-aware read-only access when SQLite journal sidecars are live, while retaining immutable inspection for quiescent database families. This prevents false corruption during concurrent state initialization without mutating cold databases or changing the schema.
2026-08-10 03:08:24 -07:00
Peter Steinberger c68606b812 fix(ui): align automation session checkmark
Keep Web Awesome checkbox semantics while rendering the selection state in the sidebar filter shared trailing rail. Add mocked-browser coverage for the hidden native mark and one-pixel alignment invariant.

Co-authored-by: Vyctor H. Brzezowski <krzyszchweski@gmail.com>
2026-08-10 03:08:24 -07:00
Alex Knight c740885ad1 fix: exec approvals fail with a pairing prompt when the device pairing lacks operator.approvals (#121529)
* fix: exec approvals fail with a pairing prompt when the device pairing lacks operator.approvals

Local approval-runtime gateway calls sent the shared device identity in
addition to the process-local approval-runtime token, so the connect was
re-evaluated against that device paired scope baseline and rejected with
"scope upgrade pending approval" whenever operator.approvals was missing
from the pairing record. Nothing could clear it from inside the session:
the prompt that would approve the upgrade is delivered by the call that
was rejected.

Make the two requester credentials exclusive by passing the resolved
approval-runtime token into the identity resolver, matching the rule
createOperatorApprovalsGatewayClient already follows. Remote,
env-selected, and gatewayUrl-override approval calls still require a
stable device identity, as does approved node.invoke system.run replay.

Closes #121525

* fix(lint): drop dead applySessionHints import in media-only reply test

4b0151682e removed the only use of applySessionHints from this test but
left the import, so oxlint fails no-unused-vars on main and blocks the
merge gate. The vi.mock("./body.js") factory keeps the entry because
get-reply-run-context.ts still calls it.
2026-08-10 20:04:55 +10:00
Peter Steinberger 8395145ef0 test: remove duplicate re-export coverage (#121547) 2026-08-10 03:03:36 -07:00
Jesse Merhi 260628f4fa perf(ui): keep cancel capability within startup budget 2026-08-10 20:01:24 +10:00
jesse-merhi 2300de7162 Gateway: negotiate Custodian wizard cancellation 2026-08-10 20:01:24 +10:00
Jesse Merhi d31c20c416 docs: preserve protocol changelog spacing 2026-08-10 20:01:24 +10:00
Jesse Merhi c30c98c028 chore: refresh plugin SDK contract 2026-08-10 20:01:24 +10:00
Jesse Merhi 99ddbdbdf0 docs: preserve changelog section spacing 2026-08-10 20:01:24 +10:00
Jesse Merhi e863839577 docs: remove release-owned cancel notes 2026-08-10 20:01:24 +10:00
Jesse Merhi ae16f6ba87 Gateway: align cancellation ownership mock 2026-08-10 20:01:24 +10:00
Jesse Merhi d9d0b30ce3 System agent: keep wizard cancel local 2026-08-10 20:01:24 +10:00
Jesse Merhi a964bc2018 Docs: note Custodian wizard cancellation 2026-08-10 20:01:24 +10:00
Jesse Merhi 890a4b0089 Control UI: add direct Custodian wizard cancel 2026-08-10 20:01:24 +10:00
Peter Steinberger ca4dc1bc9e fix(cloud-workers): preserve reclaim teardown failures (#121520)
* fix(cloud-workers): preserve reclaim teardown failures

* fix(test): remove unused session hint import
2026-08-10 03:00:27 -07:00
Peter Steinberger c034670b72 fix(codex): keep authenticated user identity in agent turns (#121511)
* fix(codex): preserve authenticated sender context

* test(codex): type sender recorder fixture

* fix(codex): scope sender context to user turns
2026-08-10 02:54:04 -07:00
Vincent Koc 27d2af2298 fix(qa): await gateway artifact startup (#121453)
Punchcard-Session: amber-workshop-workshop-36
2026-08-10 17:53:07 +08:00
Peter Steinberger 024caf1e51 fix(plugin-sdk): external plugins typecheck across SDK entrypoints (#121512)
* fix(plugin-sdk): dedupe declaration dependency types

Keep Zod declarations owned by the published dependency across partitioned SDK declaration builds, and compile an isolated external consumer that mixes the documented runtime and schema entrypoints.

* fix(plugin-sdk): narrow package type regression guard

Keep the cross-entrypoint assignment and exported-schema checks while excluding unrelated declaration-library diagnostics. Inline the temporary consumer and carry the current-main unused-import repair required for green CI.
2026-08-10 02:52:28 -07:00
Peter Steinberger 2ed1a62d06 refactor(macos): consolidate gateway readiness ownership (#121510)
* refactor(macos): unify gateway readiness ownership

* chore: re-fire CI after startup_failure race

* chore(i18n): refresh native inventory after readiness consolidation
2026-08-10 02:52:22 -07:00
Peter Steinberger fe9bd7583e fix(models): migrate catalog credentials into SQLite (#87166)
* fix(models): migrate catalog credentials into SQLite

* refactor(models): share catalog JSON parser
2026-08-10 02:47:51 -07:00
Pavan Kumar Gondhi 1ff50d7e7d fix(matrix): require owner access for verification actions (#121532) 2026-08-10 15:15:50 +05:30
Peter Steinberger 890a5e895b fix: onboarding stalls or loses progress during interrupted setup (#121415)
* fix: harden onboarding recovery flows

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94a-32da-757b-bff1-caefb6302cd1

* refactor: consolidate onboarding state lifecycles

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94a-32da-757b-bff1-caefb6302cd1

* test: model canonical onboarding config writes

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94a-32da-757b-bff1-caefb6302cd1

* fix: compose onboarding locks across gateway surfaces

Amp-Thread-ID: https://ampcode.com/threads/T-019fe94a-32da-757b-bff1-caefb6302cd1

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-10 02:45:14 -07:00
Peter Steinberger b85f421278 refactor: avoid gateway loopback for session tools (#121474)
* refactor(agents): avoid loopback gateway calls

Amp-Thread-ID: https://ampcode.com/threads/T-019fe991-c41e-736c-89e4-479bb4974faa

* fix(gateway): preserve request timeout errors

Amp-Thread-ID: https://ampcode.com/threads/T-019fe991-c41e-736c-89e4-479bb4974faa

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-10 02:44:01 -07:00
Peter Steinberger bab4546b41 refactor(gateway): remove dead rpc surfaces (#121387) 2026-08-10 02:41:57 -07:00
Dallin Romney 0296785c5f fix(ci): validate frozen extended-stable candidates (#120986)
* fix(ci): support frozen extended-stable validation

* fix(ci): avoid map spread in release config projection

* refactor(ci): use suite config mutation for frozen candidates

* fix(ci): keep frozen candidate config private

* refactor(qa): expose config mutation

* fix(qa): preserve config mutation in runtime pairs
2026-08-10 17:40:46 +08:00
Peter Steinberger 3a1f645228 fix(ui): prevent duplicate initial prompts during session startup (#121498)
* fix(ui): unify initial prompt handoff projection

Route create-time prompts through the canonical session projection so live persistence and delayed history adopt one stable bubble. Preserve inline attachment content across reconnects and authoritative identity handoff while removing duplicate matching and post-reducer mutation paths.

* fix(ui): preserve initial prompt projection contracts

* fix(ci): restore exact-head validation
2026-08-10 02:38:33 -07:00
Peter Steinberger 815494955d feat: stream live edit diff progress (#121528)
* feat(agents): stream live edit diff progress

* fix(agents): keep live diff state internal

* fix(lint): remove unused import breaking main lint

* perf(agents): throttle live diff parsing
2026-08-10 02:38:25 -07:00
Peter Steinberger 69a414bd0c test(ui): consolidate session pin coverage (#121539) 2026-08-10 02:37:47 -07:00
Peter Steinberger b54fafa272 fix(codex): preserve operator input request ownership (#121171) 2026-08-10 02:32:13 -07:00
Peter Steinberger 019bd9a59f fix(ui): keep typing indicator in the composer footer (#121438)
* fix(ui): keep typing indicator in the composer footer

Keep typing activity in the fixed-height Control UI composer footer so collaborators no longer shift the textarea.

Render up to three author avatars before the localized typing label.

* test(ui): target the typing label in E2E

* fix(ui): hide typing avatars from the status announcement

Status text already names typers; role=img avatars made screen readers announce names twice. Addresses ClawSweeper P2.
2026-08-10 02:20:50 -07:00
Peter Steinberger 72c4f26a4e refactor(sessions): collapse session accessor aliases (#121516)
* refactor(sessions): collapse session accessor aliases

Declaration ownership moved to defining modules; no name or signature changed.

* test(auto-reply): remove stale session hint import
2026-08-10 02:20:18 -07:00
Ayaan Zaidi 2d627a0c25 feat(skills): repair used skills in turn (#121522)
* feat(skills): repair used skills in turn
* fix(skills): bind repair to used skill receipt
* fix(skills): preserve explicit repair review

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-10 14:42:41 +05:30
Peter Steinberger 6f917dfabb test(macos): remove remaining coverage exercisers (#121413)
* test(macos): remove remaining coverage exercisers

* test(macos): remove dead skills typealias

* test(macos): remove unused skill config constructor
2026-08-10 02:08:34 -07:00
Pavan Kumar Gondhi c9d39979f2 fix(ci): read dependency guard state from trusted metadata [AI] (#121505)
* fix(ci): bind dependency guard state to head

* test(ci): isolate dependency guard state forgeries
2026-08-10 14:32:49 +05:30
Peter Steinberger a77dd02a04 fix(plugin-sdk): restore API baseline manifest (#121527) 2026-08-10 02:02:12 -07:00
Vincent Koc a994d2ad5f fix(qa): provide protocol base to evidence runs (#120710)
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com>

Punchcard-Session: amber-workshop-workshop-36
2026-08-10 16:59:58 +08:00
Peter Steinberger 560d172ae7 chore(scripts): prevent new wrapper shadowing (#121456)
* chore(scripts): prevent wrapper shadowing

* chore(scripts): refresh wrapper baseline
2026-08-10 01:40:44 -07:00
Peter Steinberger 83dfd44eca fix(terminal): always emit full intro art (#121501)
* fix(terminal): always emit full intro art

Open-time request.cols is the pre-fit boot grid (the client resizes right
after open), so the 40-column gate suppressed the art on real terminals.
Live-verified against a dev gateway on post-merge main.

* test(terminal): align intro banner fixture
2026-08-10 01:30:37 -07:00