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.
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.
* 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
* 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
* 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
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>
* 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.
* 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
* 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
* 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
Restores the canonical missing-answer outcome when acknowledgement-only replies are hidden, while preserving heartbeat, delivery, media, silence, and continuation behavior.
Keep Gateway and TUI CI fixtures aligned with the process-owned usage, abort, queued-turn, shell-shutdown, and heartbeat lifecycle contracts they exercise.
Remove the unreachable heartbeat monitor reconciler and obsolete private exports while preserving Doctor migration, stored heartbeat compatibility, and live heartbeat routing.
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.
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.
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.
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.
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.