* fix(test): retire shared read pools between files
Retire the shared state-read worker singleton with its state database lifecycle after drain. Otherwise a new file can reuse a pool whose cleanup callback belongs to a retired lifecycle and leak a mocked fleet reply into real workspace snapshots.
Extend the native ordered lifecycle regression with three reader generations. It reproduces the exact workspace snapshot failure before the mapping and passes afterward; 20 standalone qualification runs pass. Production behavior and persistent state are unchanged.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* refactor(update): simplify update execution and finalization
Remove unused Git, in-place package, and deferred service-load paths. Keep the existing staged publication, activation, and post-core completion owners while preserving recovery and live-authority checks.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* refactor(update): simplify update execution and finalization
Worked on by:
- @steipete
- @fuller-stack-dev
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
OpenClaw-Publication: 743c012b-39e8-4ed9-bac5-d815971d0dd3
* test(update): follow staged install and completion owners
Repair the CI fixtures for parent-owned plugin completion and mandatory native package staging. Preserve authority refusal, legacy child publication, original Bun ownership, launcher relocation, and caller environment assertions.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* fix(ui): publish chat rail position and keyboard entry together
Route visibility observation through the existing layout commit so current position, retained virtual markers, and the roving Tab stop are published together. Preserve keyboard exploration inside the rail and existing native Tab assertions.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* fix(ui): preserve dropdown focus while opening
Initialize focus when the popup becomes usable, before animation completion can overwrite newer keyboard or consumer intent. Fence reentrant focus handlers with the existing transition owner and preserve both published distributions.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* refactor(update): simplify update execution and finalization
Worked on by:
- @steipete
- @fuller-stack-dev
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
OpenClaw-Publication: ba5d7a68-6088-4a5a-904b-756271e7f6a3
* refactor(update): simplify update execution and finalization
Worked on by:
- @steipete
- @fuller-stack-dev
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
OpenClaw-Publication: 768c6d92-2bf8-49dc-b4ea-3b297caae4c0
* fix(ui): wait for popup readiness before initial focus
Observe the existing popup owner on fresh mounts before assigning initial focus. Preserve cancellation, listener cleanup, warm reopening, and the existing positioning initializer.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* refactor(update): simplify update execution and finalization
Worked on by:
- @steipete
- @fuller-stack-dev
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
OpenClaw-Publication: 71ac1ff4-5100-45dc-a1c2-669513c2925f
* chore(ci): refresh updater qualification after main repairs
Refresh the unchanged reviewed updater tree after canonical main fixes 7952e08424 and f76d38a4ac landed. The historical Node fixture and unique worker inventory contracts are verified. This is the required fresh push after the known red-main repair, not a rerun to conceal unexplained failures. Prior staging and release-tooling timeout evidence remains in the PR.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* fix(ui): keep agent-menu initial focus with its dropdown owner
Use standard autofocus for the enabled selection and initialize focus once in the existing dropdown owner. Preserve later keyboard and outside focus, canceled transitions, and native autofocus roving state. Keep both published distributions aligned.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* refactor(update): simplify update execution and finalization
Worked on by:
- @steipete
- @fuller-stack-dev
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
OpenClaw-Publication: fd1dd065-beee-49b7-ad32-3c67d84c0013
* fix(tooling): retain upstream Node compiler policy in staging fixtures
Apply canonical main 7205715961 (#154509) byte-for-byte. The shared script shim preserves explicit compiler flags and the real staging fixture uses the existing Node shutdown policy.
The prior hosted staging timeouts remain documented; this fixes the independently demonstrated policy gap without claiming that a passing replay establishes their cause. No timeout, retries, production defaults, or assertions are relaxed.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* fix(test): begin Discord starvation timing after audio consumption
The continuous-start notification follows AudioPlayer.play(), while the SDK can still be buffering the resource. Signal fixture readiness from the first real non-silence source packet instead of starting the measurement before playback.
The added readiness assertion fails with zero consumed packets on the original helper. Preserve the real worker/direct-port/encoder path, intentional main-thread starvation, packet and gap assertions, and the existing test timeout. Production voice behavior is unchanged.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* chore: refresh CI after upstream database fixture drainage repair
Canonical main now contains 103115f2f0, which awaits database resource drainage before deleting the manual skill-library fixture. The failed merge-ref job used its parent fd578cb8a6 and retained a reclamation lease after root deletion.
Refresh the required synthetic merge-context checks after that confirmed main repair. No authored source or reviewed tree changes; retain tree 8e29f281f882e327641bd9c4fe343ec0e4ee9153 and the existing scoped proof. The separate sidebar reconnect failure remains under bounded investigation, not claimed fixed by a replay.
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
---------
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
* fix(ui): stop redundant sidebar and background session work
* fix(ui): preserve keyboard selection while dropdowns open
* fix(ui): retain menu selection during rapid reopen
* fix(ui): wait for popup activation before initial menu focus
* fix(ui): keep picker focus during fast keyboard navigation
* chore(ui): shrink removed focus assertion budgets
* fix(gateway): classify websocket opening timeouts for recovery
* test: close media handles in cloud dispatch policy proof
* fix(test): serialize mock resolution in the Vitest owner
* chore(deps): advance cooled dependencies and major upgrades
* test(logging): migrate failed-sink regression to tslog 5
* test: retain dependency upgrade coverage within lint limits
* fix(deps): preserve compiler launches, Matrix sync and chat metadata
Keep copied script harnesses independent of declaration modules and preserve
Windows executable prefixes after admission. Audit the Matrix sync guard for
42.3, align CI toolchain/cache pins, and refresh session facts after accepted
model-catalog invalidation without relying on picker timing.
* fix(ui): preserve scoped session reconciliation after catalog refresh
Retire superseded select animations and listeners through one accepted transition owner. Keep repeated, canceled, and interrupted show/hide calls settled, and reconcile first-render and disabled updates through the same owner.
Preserve both Web Awesome distributions and public declarations. Cover reopening, cancellation, remount, disabled teardown, and existing selection behavior with browser regressions.
Cloud session Desktop availability could remain stale after approval, replace an explicitly selected source during placement changes, or lose a dispatched worker to its discovery deadline. Offline Continue on Gateway also needed to retire the exact old owner while retaining cleanup responsibility, and aborted model calls could be reported as ordinary transport failures.
Consolidate Desktop inventory and session updates, retain explicit source/control/popout intent through placement updates, and retire the discovery deadline after dispatch. Move teardown orchestration to its canonical owner, preserve the exact abandonment decision through retries, and keep ordinary reclaim dependent on physical cleanup acknowledgment. Reuse the canonical diagnostic terminal owner and remove the duplicate adapter.
Apply the maintainer-approved, exact-version noVNC 1.7.0 repair: consume ignored extended-clipboard payloads so the following framebuffer message is parsed correctly. Load Desktop-only English with the existing lazy viewer, consolidate package-bin resolution, and register the unchanged retention subprocess with the existing compiled test-fixture owner.
Proof on head 8211f9f3: 57 Desktop unit and 39 real-browser tests; full runtime-change gate plus focused fixture checks; full package/install verification; one real Linux model turn completing five CUA select-all/type cycles with 13 computer results and 20 uninterrupted passive WebVNC observations. Normal reclaim synchronized the exact 300-byte file and completed provider cleanup with no pending reconciliation. Earlier native Windows/macOS, stale-authority and offline-continuation proof retains its original build identity in the PR. The AWS Mac and Dedicated Host remain intentionally retained.
Related: #136018; openclaw/crabbox#1724, openclaw/crabbox#1740, openclaw/crabbox#1743, openclaw/crabbox#1782. No configuration, SQLite schema, or public protocol change. See PR #136297 for dependency provenance, review dispositions, production/test LOC classification, and explicitly unresolved diagnostic follow-ups.
Keep one active submenu ancestor branch at the dropdown owner and retire it at close start, including slot loss and disconnection. Preserve the earlier hide/reopen animation repair and synchronize the existing Web Awesome 3.12.0 patch hash.
Fixes#135613. Covers the original sibling/back/down failure, nested branches, and close/reopen lifecycle behavior with 21 Chromium owner cases. Logical dependency runtime shrinks by 41 lines per distribution.
* fix(ui): keep reopened dropdowns dismissible
Repair Web Awesome 3.12.0's dropdown visibility owner so reopening during
hide restores dismissal ownership and fences stale animation completion.
Preserve tooltip-first Escape, native Tab/pointer dismissal, canceled-hide
submenus, and retained-node cleanup/remount behavior.
Consolidate the owner's keyboard submenu handling and cover the lifecycle
with real-browser regressions plus the Control UI catalog flow. Keep the
approved dependency exception exact-versioned; no consumer workaround or
budget/baseline change.
* fix(ui): settle interrupted dropdown and submenu animations
Repair the CI-exposed lifecycle gaps in the approved Web Awesome 3.12.0
patch: native animation completion settles cancellation before start,
and the submenu owner fences visibility and focuses only once. Preserve
public submenu Promise and no-element contracts in both distributions.
Add failing-before browser coverage and verify the three affected Control
UI flows. No dependency version, budget, or baseline changes. The local
startup gzip gate remains explicitly waived (+68 bytes); required CI is
not waived.
Follow-up to #135006; fixes the connected failures behind #134997.
* fix(ui): preserve submenu opening notification order
Restore the upstream event-before-expansion contract in the approved
Web Awesome patch. Embedded appearance controls must observe a closed
submenu during its opening notification to initialize keyboard focus.
Keep the shared appearance consumer and its custom-editor guard intact.
Extend the existing repeated-request browser regression and verify the
sidebar, header, compact, and custom-emoji flows. The local startup-size
gate remains explicitly waived (+92 bytes); required CI is not waived.
Follow-up for #135006 and #134997.
* fix(test): join Windows gateway closure after taskkill
Keep the existing close allowance after Windows taskkill's synchronous
termination sequence, when Node can observe exit and pipe-close events.
Drain naturally exiting children before targeting a dead PID, and retain
failed cleanup when termination or inherited-pipe closure is unverified.
Preserve timeout constants and POSIX deadline/escalation behavior. Add
pre-fix failing regressions for queued natural closure and blocking
termination, with held-pipe and unverified-tree controls.
Bounded CI follow-through for #135006. The UI dependency patch and runtime
Gateway code are unchanged.
Validate Vitest arguments before config evaluation while preserving awaited
CPU/heap capture, native help, repeated-option errors, and configured runners.
Reuse native checks in the explicitly approved exact-version Vitest patch
instead of duplicating its option catalog or running a second config pass.
Refs #132855 (profiler CLI validation regression).
Follow-up to #132224 (awaited profiling completion ownership).
Carry Windows ACL world-principal classification through @openclaw/fs-safe@0.2.2 so Anonymous Logon, Guests, Interactive, Network, and Local SID/principal variants are treated as world-equivalent in filesystem audit findings.
Also add regression coverage, changelog coverage, a narrow lint cleanup, and a UI test isolation fix needed by the current CI shard.
Co-authored-by: dwc <118101032587@njust.edu.cn>