hermes-agent/apps/desktop/e2e
ethernet b818c427c8 fix(desktop): mount one worktree dialog instead of one per composer
Every CodingStatusRow mounted its own WorktreeDialog and subscribed to the
same global `$newWorktreeRequest` token, so a single ⌘⇧B with two composers on
screen opened two stacked dialogs — dismissing the front one revealed an
identical empty dialog behind it, which read as the dialog "staying open" after
creating a worktree.

Mount it exactly once in the sidebar (beside ProjectDialog) and drive it from a
`$worktreeDialog` atom, mirroring how the project dialog already works. One
mount cannot double-open. Every entry point (⌘⇧B, the rail's kebab, the
sidebar's + button) now publishes intent instead of rendering its own copy; the
rail and the button pin their own repo so a tile's kebab still targets that
tile's worktree.

The target is resolved at open time by `resolveWorktreeRepoPath`, which walks
the focused surface's cwd then the entered project's root, validating each
candidate against the repo-status probe cache — a project's root folder is not
necessarily a git repo, so existence alone isn't proof. That makes the resolver
the sole authority, so the hotkey no longer pre-gates on `$repoStatus` and now
works from a detached session that sits inside a project. When nothing in reach
is a repo it is a silent no-op: a worktree only exists inside a repo, so there
is nothing to report.

Also adds a project picker to the dialog so the repo can be retargeted before
naming the branch.

E2E: extends worktree-branch-status.spec.ts with a 10-branch repo, visual
snapshots of the base-branch picker and the convert-branch view, a geometry
assertion that the picker isn't clipped by the dialog (fails headlessly on
regression rather than waiting for a human to compare diff images), and a
two-composer test asserting one keypress opens exactly one dialog. Tests 1 and
4 fail against the previous code and pass now.
2026-08-05 11:43:09 -04:00
..
boot-failure.spec.ts
boot.spec.ts
chat.spec.ts
correction-session-switch.spec.ts
fix-electron-tracing.ts
fixtures.ts feat(desktop): default UI zoom to Appearance 90% preset 2026-07-28 04:00:55 -05:00
hidden-history-messages.spec.ts
image-attachment-resume.spec.ts
interim-messages.spec.ts
large-session-resume.spec.ts test(desktop): wait for backfill before the duplicate-count baseline 2026-07-27 01:44:42 -05:00
launch-packaged-app.spec.ts
mock-backend-setup.spec.ts
mock-server.ts
onboarding.spec.ts
queue-turn-boundary.spec.ts
real-session-builder.ts
right-pane.spec.ts perf(desktop): isolate right pane layout work 2026-08-03 13:39:33 +05:30
session-compression-and-queue-stop.spec.ts test(desktop): isolate compression from slash completion 2026-07-26 23:34:29 -07:00
sidebar-states.spec.ts
submit-drift.spec.ts
test.ts
tile-unread-bug.spec.ts
visual-snapshot.ts
warm-resume-jitter.spec.ts fix(desktop): expect keep-alive tabs not to repaint on reactivation 2026-07-26 05:11:46 -05:00
worktree-branch-status.spec.ts fix(desktop): mount one worktree dialog instead of one per composer 2026-08-05 11:43:09 -04:00