Files
orca/src
Neil ae426bfbeb fix(diff): restore Monaco's focus and navigation behaviour, and repair the search and error paths
A code review found defects that thirteen prior review rounds missed, two of them regressions
against the renderer this replaced. Every e2e spec clicks into a diff before exercising a
shortcut, which is precisely the action that masked the first one.

- The Pierre host was never focused on mount. Monaco's DiffViewer.handleMount called focus() on
  every single-file mount (combined rows did not), so opening a file from the sidebar left Cmd+F
  and F7 dead until the user clicked. autoFocusHost restores it for the single-file tab only.
- F7 reset to the first hunk on every re-parse, because registerDiffNavigator always cleared the
  cursor and DiffViewer re-registers whenever fileDiff identity changes. The cursor now survives
  a re-registration of the same file and clamps if the hunk count shrank.
- A highlight rejection that settled before the parse snapshot committed was overwritten by the
  success path, so once the worker pool latched failed every read-only diff rendered unhighlighted
  with no error and no Retry.
- An edit scope stayed reserved when Pierre never emitted complete, permanently demoting that row
  to throwaway :concurrent: sessions and losing undo history.
- Cmd+H forced the additions side without writing sideRef, so the next Cmd+F retargeted Original
  and tore down the replace row.
- Pure deletions fell back to an old-file line number, so Original-side search expanded an
  unrelated collapsed hunk instead of revealing the match.
- The search onPostRender identity lived in the options memo, and Pierre treats a changed
  onPostRender as forceRender, so every match step fully re-rendered the mounted range.
- The error boundary resetKey was built from tab identity and path, neither of which moves when
  content changes, so a caught render throw stayed latched through saves and rewrites. It now uses
  the content-derived cacheKey, and the comment describes what the code does.
2026-09-11 23:07:25 -07:00
..