Peter Steinberger
6e4d387fed
fix(test): keep TUI PTY suites in their owner lane ( #119787 )
2026-08-05 18:28:17 -07:00
Peter Steinberger
b5d41f9005
fix(test): bound direct gateway server runs ( #119184 )
2026-08-04 03:38:39 -07:00
Vincent Koc
4bdf9ca789
fix(tui): block terminal controls in system messages ( #118998 )
...
* fix(tui): sanitize rendered system messages
* test(tui): keep PTY safety proof within lint budget
* test(tui): clarify terminal safety PTY proof
* test(tui): de-churn terminal safety harness
* fix(tui): sanitize connection status output
* test(tui): split PTY harness support
* fix(tui): sanitize selector and footer output
* fix(tui): harden terminal display boundaries
* fix(tui): harden terminal display boundaries
* fix(tui): harden terminal output boundaries
* test(tui): repair terminal safety proof
* test(tui): harden terminal safety oracle
* test(tui): type OSC terminator candidates
* fix(tui): authenticate current terminal rendering
* fix(tui): harden terminal output safety evidence
* test(tui): keep PTY cell type internal
* test(tui): reject literal tabs in PTY oracle
* test(tui): reject literal backspace in PTY oracle
2026-08-04 16:35:41 +08:00
Vincent Koc
45643863d7
fix(test): isolate shared state between test files ( #118781 )
...
* fix(test): isolate session suspension state
* fix(test): isolate nonzero worker exit coverage
* fix(test): keep suspension reset generations monotonic
* fix(test): isolate archived session UI mocks
* fix(deps): patch fast-uri and undici advisories
* fix(test): isolate stateful UI suites
2026-08-04 15:26:22 +08:00
Peter Steinberger
4553fada9c
fix(test): keep ui-e2e global setup lint-clean ( #118763 )
2026-08-03 09:55:37 -07:00
Peter Steinberger
73535e4ede
improve(ui): cut E2E shard runtime by reusing the bundle ( #118697 )
...
* test(ui): reuse bundled runtime across e2e files
* test(ui): isolate bundled E2E build output
* test(ui): align bundled E2E output paths
* test(ui): register E2E setup entrypoints
* test(ui): preserve bundled E2E gateway semantics
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
2026-08-03 08:01:44 -07:00
Peter Steinberger
c40faefcf5
fix(test): wait for gateway readiness and isolate reset-heavy suite ( #117725 )
...
* fix(ci): isolate gateway readiness and subagent reset tests
* fix(ci): isolate gateway readiness and subagent reset tests
* fix(test): wait for gateway readiness in shared fixture
* test(agents): isolate announce loop guard suite
* fix(test): observe gateway exit during readiness
* test: narrow gateway readiness process contract
2026-08-03 00:12:34 -07:00
Peter Steinberger
7aaf3023fc
fix(agents): make subagent restart recovery deterministic
...
Make subagent restart recovery registry-owned, durable before side effects, generation-fenced, and deterministic across cold restarts.
2026-08-03 11:57:51 +08:00
Peter Steinberger
0a1d103189
refactor(test): consolidate extension vitest configs ( #118366 )
2026-08-02 19:55:36 -07:00
Peter Steinberger
cbd4b8dec8
fix(memory): keep wiki search inside protected recall visibility ( #118265 )
...
* fix(memory): unify wiki session authorization
* build: expose memory core boundary declarations
2026-08-02 18:22:17 -07:00
Peter Steinberger
d6f66b69ff
improve(tests): consolidate embedded runner integration setup ( #118326 )
...
* test(agents): consolidate embedded runner integration harnesses
* test(agents): keep shared runner in owner config
* test(agents): keep compaction mock private
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
2026-08-02 18:10:53 -07:00
Peter Steinberger
ddb6a80bf7
test(agents): focus incomplete-turn owner coverage ( #118269 )
...
* test(agents): focus incomplete-turn owner coverage
* test(agents): satisfy incomplete-turn checks
* test(agents): simplify replay side-effect state
* test(agents): retain incomplete-turn entry coverage
---------
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local >
2026-08-02 17:08:08 -07:00
Peter Steinberger
6e87d3b5f3
test: gateway and CLI process-test hygiene ( #118042 )
...
* test: gateway and CLI process-test hygiene
* test: preserve CLI process timeout diagnostics
2026-08-02 10:12:30 -07:00
Peter Steinberger
57c6f76221
fix(test): prevent CLI process loader hangs ( #117830 )
2026-08-01 22:22:26 -07:00
Vincent Koc
acf28495b1
fix(ci): repair plugin prerelease validation ( #117562 )
2026-08-02 03:29:21 +08:00
Peter Steinberger
deabae48d3
fix(ci): keep PTY tests observable and wait for completed turns ( #117405 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 07:46:46 -07:00
Jacob Tomlinson
20ac22f647
fix(codex): guide recovery from unimported agent auth ( #116807 )
...
* fix(codex): diagnose unimported agent auth
Add agent-scoped Codex migration guidance and expose a validated --agent target so non-default credentials cannot be imported into the default agent store.
Fixes #116763
* fix(codex): surface auth migration before route planning
* fix(codex): scope auth migration recovery
* fix(codex): preserve API key auth fallback
* test: repair memory importer routing expectation
* test: drop superseded memory routing repair
* test(tui): report PTY progress verbosely
---------
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com >
2026-08-01 07:08:02 -06:00
Peter Steinberger
ad409a8285
fix(ui): preserve session, tool, archive, and focus ownership ( #117191 )
...
* fix(ui): unify tool, session, and keyboard interaction owners
* refactor(ui): separate archived session regression coverage
* test(ui): isolate memory plugin mutation mock registries
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 22:45:53 -07:00
Peter Steinberger
7e78de747b
refactor(ui): replace duplicated locale bundles with canonical translation memory ( #117157 )
...
* refactor(ui): generate locale bundles from canonical translation memory
* fix(ui): keep server-only locale config out of browser test helpers
2026-07-31 19:40:27 -07:00
Peter Steinberger
2fcb47ad1e
refactor(test): derive changed-test routes from canonical owners ( #117099 )
...
* refactor(test): derive changed-test routes from canonical owners
* fix(test): type workflow owner descriptors for lint
2026-07-31 16:40:46 -07:00
Peter Steinberger
4976eb38ab
fix(ui): honor Gateway readiness abort and subscription ownership ( #117048 )
...
* fix(ui): keep canceled gateway waits retired
* test(ui): bind Gateway readiness test helper callback
* test(ui): isolate server locale preference singleton
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 15:06:55 -07:00
Peter Steinberger
262f26355a
fix(tui): keep reset transitions isolated from stale input ( #116873 )
...
* fix(tui): fence reset session transitions
* fix(tui): explain blocked reset input
* test(tui): isolate reset transition PTY proof
* fix(tui): preserve input across session transitions
* test(tui): synchronize preserved reset draft proof
* test(tui): control reset submit timing
* test(tui): close reset PTY with EOF
* test(tui): exit reset PTY without submit buffering
* test(tui): synchronize reset PTY shutdown
* test(tui): widen reset PTY exit window
* test(tui): stabilize reset transition PTY proof
* test(tui): keep reset PTY harness bounded
* test(tui): split reset PTY fixture wiring
2026-07-31 14:18:34 -07:00
Vincent Koc
b3ce00b480
refactor(schema): share config validation runtime ( #116622 )
2026-07-31 12:40:48 +08:00
Peter Steinberger
d6dafac8a1
test(ui): isolate registry-sensitive suites ( #115860 )
2026-07-29 07:44:48 -04:00
loong
7bdd1f646b
fix(memory-host-sdk): resolve stable execPath for worker fork to survive Homebrew Node upgrades ( #99318 )
...
* fix(memory): survive Homebrew Node upgrades
Co-authored-by: 袁龙辉0668001277 <yuan.longhui@xydigit.com >
* test(whatsapp): isolate last-route coverage
* fix(deepinfra): preserve offline model compatibility
* test(memory): isolate migration cleanup lifecycle
* test: stabilize aggregate extension gates
* ci: retrigger pull request workflow
* test: preserve inherited Node options
* test(cli): tolerate cold hosted startup
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 06:49:02 -04:00
Peter Steinberger
d239a59d82
fix(ui): make Control UI ownership and permissions reliable ( #115364 )
...
* fix(ui): unify connection-owned gateway event dispatch
* fix(qa): keep hosted UI smoke evidence truthful
* fix(ui): make mobile navigation drawer an accessible modal
* refactor(ui): centralize settings search destinations
* fix(ui): own chat media resource lifecycles
* fix(ui): unify sidebar session scope ownership
* refactor(ui): remove obsolete navigation backdrop styles
* refactor(ui): isolate dashboard provider lease capabilities
* fix(ui): centralize gateway operator permissions
* style(ui): format gateway event regressions
* fix(ui): render live dashboard permissions immediately
* fix(ui): enforce approval grant authority
* fix(gateway): fence retired sockets after event gaps
* fix(ui): isolate sidebar gateway fixtures across shared workers
* test(ui): isolate singleton-sensitive browser suites
* fix(ui): retire stale catalog pagination on gateway reconnect
* fix(ui): restore drawer focus after native dialog dismissal
* fix(ui): seed drawer threads and preserve modal focus ownership
* fix(ui): isolate nested native drawer overlay lifecycle
* test(ui): prove isolated dashboard lease authorization
* fix(ui): bound settled managed image resources
* fix(ui): type native modal focus and shared test helper
* fix(ui): correct approval mock types and trim dead export
* fix(ui): keep settings section metadata private
* fix(qa): keep hosted coverage regression within lint limit
* refactor(ui): keep catalog presence in its session data owner
* fix(browser): regenerate bundled copilot runtime
* test(ui): split board lease authorization regressions
* fix(ui): snapshot gateway listener fanout without redundant spread
* fix(ui): bind chat media subscriptions to image lifetime
* fix(ui): extract overlay access lifecycle
* fix(ui): restore guarded media after Lit reconnection
* test(ui): localize board lease fixture title
* fix(ui): reuse system approval fixture labels
* test(ui): narrow managed media lifecycle source
* fix(ui): prevent retired board gateway clients from rolling back leases
* fix(ui): expose pairing to pairing-scoped operators
* fix(ui): preserve legacy device pairing access
* fix(ui): preserve responsive sidebar ownership
* fix(ui): preserve responsive navigation and prove media ownership
* fix(ui): retire revoked catalog and refresh pairing grants
* test(ui): align typed catalog fixtures with main
2026-07-28 16:42:05 -04:00
Peter Steinberger
6de618315a
refactor: centralize isolated agent test ownership ( #115340 )
2026-07-28 14:07:02 -04:00
Peter Steinberger
b3fc995e73
fix(ui): stop modal autofocus steal after the open animation ( #115168 )
...
* fix(ui): stop modal autofocus steal after the open animation
* test(ui-e2e): give expect.poll a CI-realistic deadline
2026-07-28 10:39:34 -04:00
ToToKr
d57e228c3a
docs(mistral): fix broken adjustable reasoning docs URL ( #114867 )
...
* docs(mistral): fix broken adjustable reasoning docs URL
The linked Mistral page 404s; the reasoning docs now live one path segment up. Verified: old URL returns HTTP 404, new URL returns HTTP 200 and documents reasoning_effort. oxfmt --check passed on the changed file.
* fix(ci): audit links inside docs components
* test(cli): isolate root help exit fixture
* test(ci): split embedded agent shard
* fix(ci): harden docs link projection
* test(ci): satisfy docs audit strict types
* test(ci): isolate incomplete-turn harness
* test(cli): document root help fixture boundary
* test(ci): isolate overflow compaction harness
* test(ci): isolate contaminated agent model tests
* test(ci): update isolated prefix routing
* test(ci): bound loaded streaming HTTP cases
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 06:55:02 -04:00
Peter Steinberger
c141496217
fix: full release validation avoids embedded-agent shard stalls ( #115019 )
...
* ci: use scoped embedded-agent timeouts
* ci: align frozen-target test watchdogs
* ci: align embedded-agent timeout assertions
2026-07-28 04:38:32 -04:00
Peter Steinberger
258cc84965
test(cli): isolate process exit coverage ( #114903 )
2026-07-28 00:41:49 -04:00
Peter Steinberger
f036ed43a2
fix(codex): prevent long conversations slowing on thread resume ( #114882 )
...
* fix(codex): reduce native thread resume overhead
* test(codex): register native attempt connection shard
* fix(codex): keep oversized rollouts on bounded fast path
2026-07-27 23:56:44 -04:00
Peter Steinberger
938749180e
refactor(nodes)!: retire arming leases for durable capability enablement ( #114892 )
...
* refactor(nodes): retire phone control leases
* fix(doctor): clean retired phone control state
* docs(nodes): document durable capability enablement
* docs(changelog): defer node enablement note
* fix(doctor): harden retired phone control cleanup
* fix(doctor): fail closed on unreadable lease state
* fix(doctor): validate retired lease journals
* fix(doctor): preserve deny-shadowed consent
* docs: refresh node authorization map
* fix(doctor): keep retirement helpers private
2026-07-27 23:51:30 -04:00
Peter Steinberger
37cf0c6064
improve: reduce GPT-5.6 coding harness overhead ( #114574 )
...
* improve: reduce GPT-5.6 coding harness overhead
* refactor: extract runtime parity timing helpers
* fix(qa): verify native apply-patch runtime parity
* fix(qa): use mock patch execution evidence
* fix(qa): preserve workspace templates in full syncs
* fix(qa): make rejected patch fixtures deterministic
* fix(qa): prove apply-patch workspace containment
* fix(qa): expose runtime prompt-cache usage
* fix(codex): confine forced private QA patch turns
* fix(qa): verify native patch execution and sandbox precedence
* fix(qa): execute native patches and prove disk mutation
* fix(codex): avoid duplicate native patch registration
* perf(agents): keep code mode catalog guidance compact
* fix(qa): make native Codex patch evidence deterministic
* fix(qa): recognize native sandbox denial errors
* fix(qa): advertise native Codex mock model capabilities
* fix(qa): seed native Codex mock model catalog at startup
* fix(qa): recognize native Codex patch denial results
* fix(ci): repair Codex harness parity checks
* fix(qa): distinguish unknown prompt-cache measurements
* fix(qa): accept native Codex project patch denials
* fix(ci): isolate runtime parity report contracts
* fix(codex): eliminate native runtime transport overhead
* fix(qa): consume runtime parity report contract
* fix(qa): compare matched runtime timing captures
* fix(qa): type native response delta context
* fix(qa): satisfy native codex websocket lint
2026-07-27 19:24:52 -04:00
Peter Steinberger
f0371e8d88
fix: stop blocked tool loops stalling until timeout ( #114673 )
...
* fix(agents): make global loop breaker reachable
Record loop-detector vetoes as typed no-progress outcomes so repeated blocked calls continue the existing streak without colliding with plugin or approval denials. Extract streak accounting into its own owner module and keep completed veto records out of argument reconciliation.\n\nFixes #109435 .
* test: harden isolated project routing
Route registry-sensitive UI tests through the isolated project for both focused and broad runs, centralize the isolated file list, and register the Codex prewarm test in the full extension shard.
* test(qa): prove global loop breaker runtime
Drive 31 identical read attempts through the real QA Gateway agent loop and verify the typed veto streak reaches the global circuit breaker before the turn returns a final marker.
* test: keep isolated UI files out of shared runs
Always exclude registry-sensitive files from the shared UI project and reject broad watch targets that would span shared and isolated projects.
2026-07-27 16:02:28 -04:00
Peter Steinberger
3dc3370d9e
fix(copilot): keep tool transcript groups structurally complete ( #114403 )
...
* refactor(copilot): make SQLite own transcripts
* fix(copilot): harden transcript event projection
* test(copilot): tighten transcript journal types
* fix(copilot): retain unmatched usage metadata
* refactor(copilot): commit tool groups atomically
* fix(copilot): break journal bridge import cycle
* fix(copilot): preserve grouped transcript replay
* test(copilot): cover opaque replay state
* fix(copilot): invalidate lossy transcript replay
* fix(copilot): guard transcript rewrite topology
* fix(copilot): drain transcript finalization
* fix(copilot): preserve resumed session history
* fix(copilot): dedupe replayed transcript snapshots
* fix(copilot): isolate transcript write hooks
* fix(copilot): track staged transcript identities
* fix(copilot): isolate ephemeral transcript events
* fix(copilot): coalesce assistant snapshots
* fix(copilot): invalidate unprojected SDK context
* fix(copilot): guard resumed transcript replay
* fix(plugin-sdk): expose strict transcript append
* fix(copilot): persist journal provenance safely
* fix(copilot): separate live and durable deltas
* fix(copilot): require durable projection ownership
* fix(copilot): preserve strict append typing
* fix(copilot): gate deferred session deletion
* fix(copilot): preserve transcript replay identity
* fix(copilot): retain cited replay history
* fix(copilot): require complete replay provenance
* fix(copilot): reject ambiguous assistant snapshots
* fix(copilot): return latest assistant snapshot
* chore(copilot): align transcript lint gates
* test(lint): cover Copilot line budgets
* test(ci): dedupe Codex prewarm shard
2026-07-27 15:42:00 -04:00
Peter Steinberger
f85a458a45
refactor(mobile): consolidate native gateway and voice lifecycles ( #114671 )
...
* refactor(mobile): consolidate native lifecycle ownership
* fix(ci): cover Codex prewarm and chat lifecycle proof
2026-07-27 14:52:02 -04:00
Peter Steinberger
e2fbd3b1ed
fix(tui): prevent wrapped terminal stress-test failures ( #114672 )
...
* fix(tui): stabilize wrapped terminal stress tests
* fix(ci): cover Codex prewarm in full-suite shard
2026-07-27 14:34:43 -04:00
qingminlong
a01319b27f
fix: account for CJK text in compaction estimates (issue #103930 ) ( #114386 )
...
* fix: account for CJK text in compaction estimates
* fix: share CJK compaction estimator
* fix: format CJK compaction estimator
* fix: make CJK regexes lint-safe
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 08:51:44 -04:00
Peter Steinberger
8d6971ecc9
fix(test): prevent SQLite worker teardown crashes ( #114567 )
2026-07-27 08:34:01 -04:00
Peter Steinberger
187b604e50
fix(telegram): release validation stalls in isolated test runs ( #114532 )
...
* fix(telegram): isolate extension tests from shared state
* test(telegram): extract isolated bot fixtures
* test(telegram): restore harness dependency type
2026-07-27 07:45:02 -04:00
Peter Steinberger
0f879595d4
test(vitest): route zod and undici through Bun-safe test resolutions ( #114520 )
2026-07-27 06:54:45 -04:00
Peter Steinberger
cca5b14785
feat(ui): path-based session and dashboard URLs ( #113883 )
...
* feat(ui): path-based session and dashboard URLs
* docs(ui): document control UI URLs
* fix(ui): finalize session path routing
* feat(ui): anchor session URLs on stable keys
* docs(ui): clarify stable session URL identity
* fix(ui): resolve session prefixes with full prefix and pagination
Query sessions.list with the full supplied prefix instead of an eight-char
truncation, and paginate up to a bounded page count so longer disambiguation
links resolve instead of being reported ambiguous. Zero strict-prefix matches
now fall through to literal-key resolution rather than rendering an empty
ambiguity view.
Also document the ~dot/~dotdot segment escape: peer ids reach session keys
trimmed and lowercased only (src/routing/session-key.ts), so a literal '.' or
'..' segment is reachable and browsers would normalize it away.
* fix(ui): synchronize committed session routes
* test(ui): split native shell host coverage
* fix(ui): thread configured mainKey through session URL builders
Reserved-set disambiguation needs the operator-configured mainKey at runtime, so
thread it from agentsList through every session path builder and the ClickClack
control URL. Unambiguous non-hex single-segment rests now resolve literally while
short-id-shaped rests still fail closed, which restores ClickClack channel
compatibility detection and control-link reconciliation.
Also bound prefix-resolution retries, preserve catalog thread identity, and keep
draft state on ambiguous candidate links.
* fix(ui): repair session URL CI integration
* perf(ui): lazy-load session route resolution
* perf(ui): isolate session prefix resolution
* perf(ui): defer session path parsing
* perf(ui): defer session navigation startup
* fix(ui): preserve first-run and literal session navigation
* fix(ui): satisfy session routing type and export gates
* fix(clickclack): preserve unscoped control link agent
* style(ui): satisfy chat page line limit
* refactor(ui): move chat page helpers to owning modules
* fix(ui): preserve destination session route identity
* fix(ui): preserve agent identity in session routes
* fix(ui): escape dots in literal session path segments
encodeURIComponent leaves periods intact, so a literal key segment like
channel:release.js produced /chat/main/channel/release.js. In-app navigation is
intercepted by the SPA, but a refresh, an external link, or a ClickClack link
would be served as a static asset request and never reach the app.
pathForWorkboardBoard already escapes dots for this reason; mirror it in both the
session URL contract and the ClickClack encoder, route the agent id through the
same segment encoder, and pin the case in both shared vector tables.
* fix(ui): stop bootstrap after teardown race
* refactor(ui): centralize session navigation targets
* fix(ui): consume bootstrap teardown abort
* fix(ui): canonicalize configured main session routes
* fix(ui): preserve distinct session references
* fix(ui): redirect released session query links
* fix(ui): make bootstrap teardown abort-safe
2026-07-26 12:46:04 -04:00
Franck MEYER
5e3007cc23
fix(ui): preserve session identity across gateway snapshots ( #113322 )
...
* fix(ui): preserve session identity across gateway snapshots
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
* test(ui): cover session identity transitions
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
* test(ui): model identity reconnect snapshot accurately
* style(ui): format session identity test import
* test(ui): isolate assistant identity snapshot coverage
---------
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-24 13:17:23 -07:00
Peter Steinberger
e085b379f8
refactor(agents): thread plugin metadata snapshots per turn ( #112769 )
...
* refactor(agents): thread plugin metadata snapshots per turn
* fix(agents): validate threaded plugin metadata
* fix(agents): preserve prepared metadata fallbacks
* fix(commands): preserve snapshot auth refs typing
* fix(commands): use indexed synthetic auth refs
* test(auto-reply): isolate completed goal session store
* test(agents): serialize embedded runner harness files
* test(auto-reply): serialize reply runtime files
* test(auto-reply): isolate goal context admission
* test(auto-reply): allow persisted goal admission under CI load
* test(agents): allow embedded harness warmup under CI load
2026-07-22 19:33:45 -04:00
Peter Steinberger
988e640c7a
test: finish stateless isolation cleanup ( #112704 )
2026-07-22 12:21:53 -07:00
Peter Steinberger
a8d19364f9
test: move stateless suites out of isolation ( #112578 )
2026-07-22 02:51:42 -07:00
Peter Steinberger
f2a3371656
test(ui): isolate full chat-pane lifecycle tests to fix core-runtime-media-ui flake ( #112566 )
...
The core-runtime-media-ui shard runs its ui config non-isolated for speed, but the
full chat-pane lifecycle tests instantiate the pane component, which relies on
chat-thread/chat-message module-level singletons (thread-state map, confirmation
dismisser WeakMap, module-scoped document context-menu listeners) and spies on those
modules. Under the shared non-isolated graph a stateful predecessor file can leave
those modules duplicated, so the pane binds to a different instance than the test's
spy/registry -- producing order-dependent flakes: `removeEventListener`-not-called
teardown assertions or 120s session-lifecycle hangs. Reproduced deterministically on
a Linux Node 24 Testbox (MAX_WORKERS=1); isolating a single file only shifted the
failure to a sibling pane test, so the whole full-pane family shares the fragility.
Route the 7 full-pane lifecycle test files through a new isolated jsdom lane
(vitest.ui-isolated.config.ts, isolate: true) for a fresh module graph; the other
~370 ui tests stay fast and non-isolated. Registered in both shard registries
(ci-node-test-plan.mjs, vitest.test-shards.mjs) and excluded from vitest.ui.config.ts.
Verified on Testbox: the deterministic single-worker media-ui shard goes from failing
to 5182 passed / 0 failed. Test-infrastructure only; no product code changes.
2026-07-22 00:14:33 -07:00
Peter Steinberger
b83af8157b
test(ui): reuse shared non-isolated workers ( #112493 )
...
* test: isolate OpenClaw home in shared setup
* test(ui): reuse shared workers for pure suites
* test(ui): align scoped runner contract
2026-07-21 21:08:12 -07:00
Peter Steinberger
f0c43dcf72
feat(ui): format international phone numbers for display ( #112400 )
...
* feat(ui): format phone numbers for display
* ci: track normalization package exports in Knip
2026-07-21 17:10:25 -07:00