Files
orca/mobile/src
Jinjing 8e08e0f13a feat(native-chat): mark forks with a Fork prefix and a Forked from pill (#42370)
* feat(native-chat): mark forks with a Fork prefix and a Forked from pill

Derive the fork mark from the chat's forked-from link instead of the saved
name: new forks keep their source's name, tabs and chat lists show a muted
"Fork ·" prefix (a fork icon in narrow tabs), and the transcript divider
becomes a pill that opens the original. Older " fork" names are trimmed
only when they exactly match what the old build generated.

* fix(native-chat): open fork sources in local workspaces; fork mark polish

- Open the source from the Forked from pill whenever its host is reachable:
  a local workspace or a connected SSH target, and a connected remote runtime.
- Draw the Fork mark in the muted text color (not opacity), normal weight,
  and name a forked source with its mark in the tab hover card.
- Name a fork tab's close button after its marked title.
- Shorter ru/pt mark words; bdi around names; RTL-aware pill chevron.
- Re-read a watched source's parent when its marker refreshes.
- Mock server: MOCK_FORKED_CHATS scenario for the phone.

* fix(native-chat): name forked phone rows for screen readers; read source agent only

- Mobile worktree rows give a forked chat's label the "Fork: <name>" accessible name.
- An older fork's unnamed source reads the agent from the source's own summary,
  which its subscription already wakes for.

* fix(mobile): carry the fork mark on history rows, not a separate set

Session-history recordings capture the screen state as plain data; a fork
is now an optional field on its own row, so rows without forks are unchanged.

* test: drop copy-pinning fork tooltip cases

* fix(native-chat): show the fork icon on narrow tabs in the app

A later stylesheet repeats Tailwind's hidden utility, which beat the icon's
container-query display rule, so narrow fork tabs showed no mark. The icon
now renders only in tabs and uses its own display rules.

* chore(mobile): mock server answers a v2 hello like an older host

Current phones open with the v2 handshake; closing with 4001 lets them fall
back to the legacy handshake this mock implements.

* fix(mobile): mark a forked chat in its tab's action sheet title

* test(mobile): assert the fork sheet title's behavior, not its copy

* test(mobile): type the fork sheet test's stand-in props

* test: follow main's moved test rig and async fork-marker delivery
2026-11-14 12:36:12 -08:00
..