Files
orca/tests
brennanb2025andOrca 69f2fdc61a fix(onboarding): tighten first-repo gate edge cases and address review
- Strip `_legacySoftSkipMigrationDone` from `onboarding:get` /
  `onboarding:update` IPC responses so the main-only persistence
  discriminator never crosses to the renderer.
- Fall back to in-memory legacy-eligibility suppression in App.tsx if
  the seal IPC throws, so SSH reconnect / terminal restore continue;
  the seal is retried on next launch (idempotent).
- Latch `onboarding_step4_path_revealed` only on the `'main'` substep
  so a future auto-route into the SSH form doesn't double-fire it,
  guard the `beforeunload` abandonment emitter on `closedAt === null`
  to avoid spurious events between `closeWith` and React unmount, and
  register it with `capture: true` so it runs before App's flush.
- Keep `RemoteRepoStep`'s Add button disabled across the silent
  retry-as-folder path (`busyLabel` covers what `isAddingRemote`
  doesn't) so a second click can't dispatch a duplicate add.
- Re-entry guard `retryRemoteAsFolder` on `busyLabel` and clear the
  stale `activeWorktreeId` when `activateRepoForUser` falls into the
  empty-worktree-list branch, so users land on the new repo's home
  view rather than a previous repo's terminal.
- Make `completedPath` required (not optional) in `useCloseWith` so
  the funnel `onboarding_completed` event always fires on completion.
- Narrow `onboardingStep4PathRevealedSchema` to `path: z.literal('ssh')`
  to match the only emitter; widening is a one-line follow-up if we
  ever reveal `open_folder` / `clone_url`.
- Add an explicit `aria-label` to the SSH CTA button so role+name
  locators (and assistive tech) get a clean computed name; update the
  e2e gate test to use the exact name and poll `closedAt` after Esc.
- Rewrite the design doc to align with the as-shipped surface.

Co-authored-by: Orca <help@stably.ai>
2026-05-11 10:25:50 -07:00
..