Skip to content

fix(ui): preserve desktop lobster run outcomes#103501

Merged
steipete merged 1 commit into
mainfrom
codex/fix-desktop-lobster-run-outcome
Jul 10, 2026
Merged

fix(ui): preserve desktop lobster run outcomes#103501
steipete merged 1 commit into
mainfrom
codex/fix-desktop-lobster-run-outcome

Conversation

@steipete

@steipete steipete commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Closes #103489

Related: #103426

What Problem This Solves

Fixes an issue where desktop Control UI users could see the sidebar lobster celebrate a failed or aborted run because the new sessions-only panel dropped the terminal run outcome. The narrow drawer kept the correct behavior, so the same session produced different reactions across responsive layouts.

Why This Change Was Made

The desktop panel now passes the existing resolveLobsterRunOutcome result through the same component property already used by the drawer and by the pre-#103426 shared render. The change adds symmetric panel/drawer regression coverage without changing the resolver, pet lifecycle, session contract, or visual layout.

User Impact

The desktop lobster can once again react honestly to terminal run state: failed and timed-out runs receive the error reaction, killed runs receive the aborted reaction, and successful runs remain unchanged.

Evidence

  • Pre-fix Blacksmith Testbox through Crabbox (tbx_01kx5c7d77sgck8mhyewtnpbrg): pnpm test ui/src/components/app-sidebar.test.ts failed only the two new desktop-panel cases (failed: expected error, got ok; killed: expected aborted, got ok) while both drawer controls and four existing tests passed.
  • Post-fix focused unit: the same command passed 8/8 tests.
  • Real Chromium mocked-Gateway E2E: sidebar-customization.e2e.test.ts passed 3/3, including the new desktop-to-drawer failed-outcome assertion (572 ms).
  • Hosted changed gate: pnpm check:changed -- ui/src/components/app-sidebar.ts ui/src/components/app-sidebar.test.ts ui/src/e2e/sidebar-customization.e2e.test.ts passed typecheck, lint, guards, and import-cycle checks (56.4 s).
  • Hosted pnpm format:check passed all three files; git diff --check passed.
  • Fresh Codex autoreview: clean, no accepted/actionable findings; overall patch confidence 0.9.
  • Merge-tree check with the separate vigil/pointer-cancel fix at b4c2a3c9c808 was clean (a49cf7960a13341e8c16f0a68361048fa6c95093).
  • Rebased exactly once onto pinned main a97633a9ad89; exact head is c7aa2eeae8d2, and the stable patch-id remained 4430301841e9da869d94495f59b3a4882d5152b4.
  • No screenshot is attached because this patch changes a runtime property rather than static pixels; the real-browser assertion proves the responsive component contract, while the lobster component's existing tests prove outcome-to-reaction rendering.

Landing is intentionally held behind security PR #103502 while exact-head CI runs.

AI-assisted: implemented and independently reviewed with Codex; the maintainer understands the one-line runtime change and the test matrix.

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui size: S maintainer Maintainer-authored PR labels Jul 10, 2026
@steipete
steipete force-pushed the codex/fix-desktop-lobster-run-outcome branch from 60e0d29 to c7aa2ee Compare July 10, 2026 07:09
@steipete
steipete merged commit 51c1c08 into main Jul 10, 2026
78 checks passed
@steipete
steipete deleted the codex/fix-desktop-lobster-run-outcome branch July 10, 2026 07:18
@steipete

Copy link
Copy Markdown
Contributor Author

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui maintainer Maintainer-authored PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Desktop lobster loses failed run outcome in session panel

1 participant