Commit graph

116429 commits

Author SHA1 Message Date
Peter Steinberger
2fe1956ea1
fix(apple): accept raw IPv6 gateway setup addresses (#129416)
Bracket IPv6 authorities in the shared endpoint URL owner and derive Watch
HTTPS from its validated WebSocket URL. Preserve stored hosts, credential
namespaces, encoded paths, and TLS policy.

Prove raw/bracketed/scoped hosts through shared setup parsing and Watch
configuration regressions: base failures, then 47 shared and five Watch
test functions passing with the repair.
2026-10-21 11:48:10 -07:00
Shakker
51ad689168
fix: hide prepare_pr from direct sessions (#179725)
Sessions without a writable managed sandbox no longer see the github_publish prepare_pr action; the tool and the Gateway now decide its availability with one shared predicate, and sandboxed managed-workspace sessions keep it unchanged.
2026-10-21 19:47:09 +01:00
Peter Steinberger
cc984848e1
refactor(ui): use native async state for agent automations (#179577)
* refactor(ui): use native async state for agent automations

Expose admitted Cron read and command completions to Solid boundaries and an action while the page and Cron owners retain scope, permissions, and write authority. Keep cached job rows mounted, preserve independent errors, and wait for all refresh reads to settle.

* test(ui): narrow agent cron RPC fixture parameters
2026-10-21 11:47:02 -07:00
Peter Steinberger
2a5eb682d8
refactor(ui): load system busyness with Solid lazy (#179743) 2026-10-21 11:46:38 -07:00
Peter Steinberger
ecac5fec49
perf(plugins): reuse resolved paths during registry reload (#179220)
* perf(plugins): reuse resolved paths during registry reload

* perf(plugins): retain missing-path checks on cache misses

Reuse only successful realpath facts, avoiding additional failed resolutions for missing disabled-plugin paths. Preserve complete fixture plugin entries in the reload benchmark.

* perf(plugins): qualify reload tails with paced diagnostics
2026-10-21 11:43:22 -07:00
Peter Steinberger
b8d75ff765
fix(config): honor environment-selected profile roots (#133252) 2026-10-21 11:42:47 -07:00
Peter Steinberger
c927604295
refactor(ui): settle image download cleanup (#179664)
* refactor(ui): settle image download cleanup

* test(ui): fix lightbox toast assertion typing
2026-10-21 11:38:19 -07:00
Peter Steinberger
2a597857a0
refactor(ui): use Solid async feedback for provider reads (#179503)
* refactor(ui): use Solid async feedback for provider reads

* fix(ui): observe provider core refresh readiness
2026-10-21 11:37:28 -07:00
Peter Steinberger
200d82b012
refactor(ui): use Solid actions for Web Push settings (#179517)
* refactor(ui): use Solid actions for Web Push settings

* fix(ui): preserve Web Push completion ownership
2026-10-21 11:36:11 -07:00
Peter Steinberger
e5e761515d
refactor(ui): render Mermaid with Solid async boundaries (#179228)
* refactor(ui): pair Mermaid theme observation with cleanup

* refactor(ui): render Mermaid layouts through async boundaries

* test(ui): settle HTML preview panel before counter click

* fix(ui): avoid JSX namespace shadowing in Mermaid types

* test(ui): await completed session diff refreshes

* test(ui): capture session diff refresh evidence

* test(ui): diagnose automation creation timeouts

* test(ui): wait for deferred agent startup request
2026-10-21 11:36:04 -07:00
Peter Steinberger
f28ad08275
fix(status): show auxiliary health warnings in deep reports (#117220) 2026-10-21 11:33:46 -07:00
Peter Steinberger
f3d9093006
fix(ui): keep chat at the end after footer-only growth (#179766) 2026-10-21 11:32:18 -07:00
Peter Steinberger
3c347af341
fix(release): verify bundled plugins against frozen source (#117650) 2026-10-21 11:32:07 -07:00
Peter Steinberger
85ac7fa10c
refactor(ui): store session descriptor request status (#179302)
* refactor(ui): store session descriptor request status

* test(ui): await managed run projection before releasing media

* test(ui): narrow managed media pane before querying progress

* test(ui): remove retired heartbeat defaults from gateway fixtures

* test(ui): wait for settled dashboard menu actions
2026-10-21 11:31:28 -07:00
Peter Steinberger
e18310f1ba
refactor(ui): consume browser dashboard requests with Solid (#179684) 2026-10-21 11:28:21 -07:00
Peter Steinberger
2e36582cde
perf(gateway): reuse prepared session list ordering facts (#179211)
* perf(gateway): reuse prepared session list ordering facts

Keep sort and pin facts with the revision-bound row selection snapshot, compare those facts without temporary tuples, and pass prepared sharing authorization inputs directly. Preserve canonical aliases and viewer-specific disclosure. Add reproducible owner measurements and fixed-fixture list response capture.

* test(ui): carry prepared session sort facts in the shared fixture

* refactor(gateway): narrow the session ordering type dependency

* perf(sessions): support uninterrupted RPC allocation samples

* fix(perf): allow unprofiled session list captures
2026-10-21 11:28:04 -07:00
Peter Steinberger
33ccaae2f5
refactor: remove private setup and scanner overrides (#179648) 2026-10-21 11:24:53 -07:00
Peter Steinberger
73ad32e20a
refactor(plugins): trust existing private owners and validated facts (#179748)
* refactor(plugins): reuse validated media and digest facts

* refactor(plugins): reuse private cleanup and collection owners

* refactor(browser): own fixed download capture policy

* refactor(qa): trust typed MCP stderr stream

* refactor(plugins): remove redundant private work

* refactor(plugins): reuse existing value and metadata owners

* refactor(plugins): trust private collection and display owners

* refactor(plugins): remove redundant private validation and results

* refactor(discord): keep private bounds and cleanup with owners

* refactor(plugins): trust process clocks and private operation owners

* fix(qa): preserve explicit gateway setup option
2026-10-21 18:24:27 +00:00
Peter Steinberger
43bb344a75
fix(computer): accept successful receipts from older Mac nodes (#137755) 2026-10-21 11:21:46 -07:00
Peter Steinberger
dcafae5661
fix(gateway): recover interrupted sessions after rejected dispatch (#179689)
* fix(gateway): recover interrupted sessions after rejected dispatch

* test(gateway): seed recovery fixtures through state owner

* fix(gateway): keep restricted CLI recovery actionable
2026-10-21 11:20:53 -07:00
Akshit Khokhani
4adf0ec56f
fix: avoid duplicate CLI progress replies in session history (#177417)
fix(cli-runner): don't append a duplicate of delivered progress replies to history

For optional CLI turns that only used the message tool, OpenClaw appended a joined copy of the progress replies that had already been delivered to the conversation history, so the history held them twice. The duplicate is no longer written.

Evidence: built Gateway with the CLI protocol boundary fixture. On main the history held the joined duplicate (twice); with this change it does not (twice), and session token totals stay correct across a restart. Production +22.

Thanks @akshitkhokhani.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-10-21 14:20:08 -04:00
Peter Steinberger
f481daa407
fix(ui): fit side menus before clipping (#179647)
* fix(ui): fit side menus before clipping

Use viewport height when sizing side overlays so native placement can
flip them before clipping. Keep a centered side fallback for menus too
tall for either anchored region, preserving bounded keyboard scrolling.

Cover low submenu triggers and tall middle-of-screen menus in both
text directions. This restores the nine-gateway switcher after the
navigation rail menu placement change.

* fix(ui): preserve consumer side-menu height budgets

Keep the shared side-overlay height rule below consumer panel styles in
specificity, including when lazy primitive CSS is inserted after layout CSS.
This restores all agent rows at enlarged text without changing submenu
viewport limits or positioning fallbacks.

Cover an earlier-loaded consumer height budget and keyboard access in both
browser engines. The original PR head reproduced the sidebar clipping in
three bundled runs; its merge base passed all three.

Also measure the current roster-menu icon inside its retained row. Reactive
menu updates can replace an SVG between child-locator resolution and style
evaluation; atomic sampling preserves the exact width assertion.
2026-10-21 11:19:42 -07:00
Peter Steinberger
b0c334e078
refactor(ui): use Solid actions for memory settings (#179451)
* refactor(ui): use Solid actions for memory settings

* fix(ui): clear memory add-on errors during retries
2026-10-21 11:19:26 -07:00
Peter Steinberger
c7f6887953
fix(plugins): bound session catalog pagination (#117233) 2026-10-21 11:18:30 -07:00
Peter Steinberger
60f9f3a49f
refactor(ui): add Solid async recipes and cron reference (#179123)
* refactor(ui): add Solid async recipes and cron reference

Document owner-backed reads, optimistic actions, keyed projections, lazy
routes, and coordinated loading with cron as the reference implementation.
Keep Gateway admission and write settlement in the existing plain owners.

Retire obsolete presentation actions synchronously on scope changes so a
pending write cannot hold a replacement connection or leak its optimism.

* fix(ui): preserve cron async consumer lifetimes

Keep pending table structure and independent scheduler readiness, scope the row projection to its presentation store, and retire optimistic feedback on owner and route changes. Preserve plain owner admission, selection contracts, and late write settlement. Include executable guidance for the tested Solid boundaries.

* fix(ui): preserve cron async reads across scope changes

* refactor(ui): record approved Solid runtime adoption budget

* fix(ui): follow renamed Solid route types

* test(ui): await clamped scroll idle without requiring a delta
2026-10-21 11:16:25 -07:00
Peter Steinberger
8417ae5645
refactor(ui): use native actions for outbox recovery (#179490)
* refactor(ui): use native actions for outbox recovery

* fix(ui): keep recovery dialogs outside pending actions

* fix(ui): publish recovered drafts after action commit
2026-10-21 11:15:44 -07:00
Peter Steinberger
f116f6d317
refactor(plugins): keep private preparation in its consumers (#179710) 2026-10-21 11:13:45 -07:00
Peter Steinberger
3347882ec3
test(scripts,channels,sessions): remove low-value tests (batch d398) (#179649)
* test(scripts): consolidate y0064 owner coverage

* test(scripts): further deslop y0064 fixtures

* test(telegram): deslop y0063 tests

* test(telegram): consolidate y0063 dispatch family

* test(release): deslop y0065 tests

* test(release): consolidate y0065 release test families

* test(release): share y0065 assertion harnesses

* test(auto-reply): deslop y0066 tests

* test(auto-reply): deduplicate y0066 owner coverage

* test(worktrees): deslop y0068 tests

* test(feishu): deslop y0067 tests

* test(update): deslop y0069 tests

* test(update): consolidate y0069 sibling coverage

* test(update): share y0069 custody and command fixtures

* test(config): deslop y0071 tests

* test(config): consolidate cold restoration publication proof

* test(gateway): deslop y0073 tests

* test(gateway): consolidate y0073 session families

* test(gateway): compact y0073 fixtures

* test(scripts): remove unused maturity assertion helpers

* test: preserve distinct contracts during batch replay

* test: align batch fixtures with current owners

* test(telegram): preserve owned admission audit fixture

* test(telegram): await resolved admission evidence

* test(telegram): preserve final delivery regression contracts

* test(telegram): align new commentary cases with shared fixture
2026-10-21 18:12:55 +00:00
Peter Steinberger
015b004fa8
refactor(infra): inline private platform helper defaults (#179691) 2026-10-21 11:12:39 -07:00
Peter Steinberger
96dc080717
perf(ui): defer optional chat boot modules (#179491)
* perf(ui): defer optional chat boot modules

Load media and optional status surfaces through local Solid loading boundaries, sharing media admission with Activity and pending New Session messages. Remove redundant JavaScript-only target preloads while retaining CSS-dependent preloads.

Same-machine builds reduce chat boot from 1,500,965 to 1,439,100 B gzip, startup by 1,324 B, and New Session by 2,498 B. Preserve transcript identity, queue recovery, and composer focus.

* test(ui): await deferred chat surfaces in consumer tests

Preserve media, queue, progress, focus, and permission assertions across lazy rendering. Back the boot image event with authoritative fixture history and remove four retired heartbeat settings from real-Gateway fixtures.

* perf(ui): skip empty chat status renderers

* fix(ui): remove chat status type cycles

* fix(ui): keep pending media inside message boundaries
2026-10-21 11:12:18 -07:00
Peter Steinberger
b2363ac8d7
refactor(ui): use async boundaries for channel status feedback (#179460)
* refactor(ui): use async boundaries for channel status feedback

Keep synchronous channel admission and canonical snapshots in the owner. Await admitted read receipts only for stateless notices, preserving cards, focus, detail dialogs, prior retry errors, and trailing config refreshes.

* test(ui): await A2UI host registration before catalog setup

Wait for the v0.8 renderer custom element before appending the test host and using its API. This removes the module-registration race observed in the full UI E2E lane without changing the catalog behavior assertions.

* refactor(ui): retain completed channel read resolver until retirement

* test(qa-lab): await reallowed placement readiness
2026-10-21 11:12:10 -07:00
Shakker
79ab1c4907
fix: avoid redundant catalog test compilation (#179765)
Avoid unnecessary repository-wide compiled subprocess preparation when the live-catalog isolation fixture runs its two selected files.
2026-10-21 19:09:42 +01:00
Shakker
79415fd00a
fix: show missing-answer notice for hidden acknowledgements (#179719)
Restores the canonical missing-answer outcome when acknowledgement-only replies are hidden, while preserving heartbeat, delivery, media, silence, and continuation behavior.
2026-10-21 19:09:09 +01:00
openclaw-mantis[bot]
5817d9262f
chore(ui): refresh control ui locales (#179720)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-21 18:06:37 +00:00
Peter Steinberger
3fb666f233
fix(plugins): reject ambiguous marketplace selections (#117416) 2026-10-21 18:06:24 +00:00
Shakker
aef1a7f8f7
fix: align Gateway and TUI fixture lifecycles (#179751)
Keep Gateway and TUI CI fixtures aligned with the process-owned usage, abort, queued-turn, shell-shutdown, and heartbeat lifecycle contracts they exercise.
2026-10-21 19:04:44 +01:00
alkor2000
3053be2bdb
fix(mattermost): batch rapid posts without losing interrupted input (#166499)
* fix(mattermost): batch rapid posts without losing interrupted input

* test(mattermost): cover steering behind deferred followups

* test(mattermost): cover steering past deferred DM followups

Co-authored-by: alkor2000 <200923177@qq.com>
Co-authored-by: jacobtomlinson <1610850+jacobtomlinson@users.noreply.github.com>
2026-10-21 18:03:22 +00:00
Shakker
73067e85a5
chore: remove retired heartbeat monitor residue (#179747)
Remove the unreachable heartbeat monitor reconciler and obsolete private exports while preserving Doctor migration, stored heartbeat compatibility, and live heartbeat routing.
2026-10-21 18:59:12 +01:00
Peter Steinberger
e8977af441
test(plugins): declare Telegram fixture channel ownership 2026-10-21 10:58:25 -07:00
Shakker
8bbe27d3c0
fix: keep held module failures inside context cleanup (#179715)
Ensures held lazy-module fetch failures settle through browser-context cleanup instead of escaping as unhandled rejections.
2026-10-21 18:57:53 +01:00
Peter Steinberger
7bd9b35646
refactor(logging): share diagnostic metric rounding (#179741) 2026-10-21 10:57:12 -07:00
Peter Steinberger
4a03e27230
ci(macos): restore runtime dependency for Swift tests
Keep package checks independent of Linux. Consume the successful producer artifact ID, including retained outputs on failed-job reruns, and preserve exact-revision verification without polling on an allocated Mac.
2026-10-21 10:56:28 -07:00
Peter Steinberger
5f29988954
test(ci): retain serial metadata expectations after repacking
Compatible singleton projections keep their two-worker ceiling when they merge into a serial row. Derive expected execution from canonical parent membership, preserving exact file and metadata comparisons across the source-owner and sibling planner tests. The inventory changes in f2c7e8dd33 exposed this stale expectation; planner behavior is unchanged.
2026-10-21 10:53:58 -07:00
Peter Steinberger
7c6c3926f0
perf(gateway): avoid payload copies during broadcast fanout (#179244)
* perf(gateway): share payload segments through websocket writes

* test(gateway): cover compressed fanout in memory soak

* test(gateway): complete segmented transport fixture adapters

* fix(gateway): preserve node event wire-byte diagnostics

* fix(gateway): preserve batching on sockets without vector writes

* fix(gateway): preserve optional socket write arguments

* fix(perf): align soak warmup and reset phases

* fix(perf): retain connected GitHub compression checks

* test(perf): retain RPC timing samples for valid tails

* fix(perf): settle fanout at measurement boundaries

* test(gateway): allow MCP parity bootstrap to finish
2026-10-21 10:52:14 -07:00
Peter Steinberger
5fdded4b39
perf(gateway): skip lifecycle bookkeeping for streamed content (#179197)
Resolve the active lifecycle generation only for lifecycle suppression and reuse the existing lazy loader for ordinary event dispatch. Preserve terminal preparation, generation checks, and broadcast output.
2026-10-21 10:52:03 -07:00
Shakker
23ce56cd3b
test: align sidebar rail geometry and focus (#179711)
Updates sidebar rail browser assertions to measure the rail-owned geometry and current focus treatment.

The Gateway submenu reachability repair now lives in the target branch via #179683; this commit retains only the two missing test-contract fixes.
2026-10-21 18:51:40 +01:00
Peter Steinberger
68486b54a8
perf(gateway): prepare workspace reconciliation differences once (#179734)
Carry the accepted manifest comparison through repeated preflights and directory
application. Send only changed nodes and their ancestors to the computation
worker, while preserving fresh target reads, conflict handling and authority
checks at every existing fence.

Extend the workspace benchmark with real staged reconciliation, sequential
fixtures and coordinated allocation/CPU measurements. Focused reconciliation,
recovery, managed-skill and hash-memo tests pass; independent Codex review is
clean at P0-P2.
2026-10-21 10:51:10 -07:00
Peter Steinberger
7bd7a3afd2
fix: honor the gateway probe overall timeout (#127197)
* fix: share the gateway probe timeout across discovery and connections

* test: type gateway probe mocks against the production contract
2026-10-21 10:51:04 -07:00
Peter Steinberger
34a7c7b35b
test(gateway,agents,plugins): remove low-value tests (batch d399) (#179650)
* test(gateway): deslop y0075 tests

Share repeated transcript, provider, provenance, and companion fixtures while preserving distinct authority and lifecycle cases. The completed-thread reset case is covered by the warm backing-reset context case; active-model reset cancellation remains covered separately.

CI-only validation: oxfmt, plain oxlint, and git diff --check passed. No tests or coverage run. Shard lines 11676 -> 11493; the 35% target was not safely achievable without dropping distinct behavior or changing fixture isolation.

* test(gateway): consolidate y0075 sibling fixtures

Merge recap freshness and incognito preflight siblings with their owner suites, keeping preflight state cold in a separate lifecycle. Share recap seed/RPC fixtures and remove duplicate Code Mode, catalog, visibility, label, and automation-registration proof covered by retained native or owner cases.

CI-only validation: formatting, plain oxlint, and diff checks passed; no test or coverage runs. Original shard files total 11179 lines versus 11676 initially. Including recap support growth, total is 11301 versus 11756, a 3.87 percent reduction; 35 percent remains unmet without removing distinct behavior.

* test(gateway): share y0075 cancellation and recap fixtures

Move immediate cold/warm cancellation cases into the service suite: preparation first awaits the observer, so these cases do not reach the native context reader. Preserve all eight cases, native hydration coverage, and four active-model cancellation cases. Share recap publication/patch assertions and remove redundant diagnostics and case counters.

CI-only static validation: oxfmt, plain oxlint, and diff checks passed. No tests, coverage, or builds run. Shard total 11676 -> 11047 lines; including recap support, 11756 -> 11169. The 35 percent target remains unmet without sacrificing distinct proof.

* test(update-cli): deslop y0076 tests

* test(update-cli): remove redundant y0076 owner replays

* test(auto-reply): deslop y0077 tests

* test(gateway): deslop y0079 tests

* test(gateway): remove y0079 owner replays

* test(state): deslop y0078 tests

* test(state): consolidate native borrow and read fixtures

* test(pr): deslop y0080 tests

* test(pr): remove redundant y0080 proof layers

* test(agents): deslop y0081 tests

* test(agents): deduplicate y0081 owner-level coverage

* test(plugins): deslop y0082 tests

* test(plugins): consolidate y0082 registry and loader proof

* test(plugins): consolidate y0082 lifecycle fixtures

* test(core): deslop y0083 tests

* test(core): deduplicate y0083 owner coverage

* test(core): share y0083 fixture and response setup

* test(gateway): deslop y0084 tests

* test(state): retain proofs whose consolidation conflicted

* test: retain distinct boundary proofs and repair replay fixtures

* test: drop CI-failing replay reductions

* test: retain suite inventory after planner contract failure

* test: repair fixture types and drop async listener rewrite

* test: retain synchronous managed auth HTTP fixture
2026-10-21 17:47:52 +00:00
Vyctor H. Brzezowski
310cc29944
improve: keep image actions inside chat previews (#179699)
* improve: keep image actions inside chat previews

* fix: preserve image approval action target
2026-10-21 11:46:25 -06:00