* fix(native-chat): auto-rename the workspace on a structured chat's first turn
Structured native chat (Claude and Codex) never reached the first-work
workspace rename. The orchestrator has a single production caller, the
agent-hook server listener, and structured sessions never set
ORCA_PANE_KEY, so no hook event could ever be attributed to one. The
renderer knew this and suppressed pendingFirstAgentMessageRename for
structured launches at three sites, which also closed the gate the
folder-workspace title rename depends on.
The host's status feed already computes the exact edge: status 'working'
with a latestPrompt normalized the same way the hook payload is, and a
workspaceId that IS the worktree id. Publish that projection to the host,
thread it out to the runtime, and hand it to the same orchestrator the
hook path uses.
Re-projections of state the host already knew (restore, an arriving
subscriber) are flagged as replays and map to the orchestrator's existing
isReplay gate, so a host restart cannot rename off a stale journal.
One host and one journal serve both providers, so this covers Claude and
Codex together.
Verified in a live Electron instance, worktrees created through the real
composer and prompts sent through the real chat composer:
Codex langouste -> retry-helper-exponential-backoff
Claude prowfish -> parse-csv-headers
* fix(native-chat): preserve first-work rename across runtime and queued turns
* fix(native-chat): skip branch rename for folder projects
---------
Co-authored-by: Merge Sim <sim@local>