native-ui: pass the resolved seat name to Claude Code as --name #236
Labels
No labels
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose#236
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Step 4 of the native UI build order.
Claude Code accepts
--name, and shows the value in the prompt box, the/resumepicker, and the terminal title. A composed session already knows its seat name, so this is identity for free.Scope
claude.--namerather than overwriting it.Why it is first among the remaining items
It is the only surface that needs no host mutation at all. No file lands in
~/.claude, so nothing has to be installed or converged, and it survives--safe-modealong with the status line.Done when
A launched Claude seat shows its name in the prompt box and terminal title, and a caller-supplied name still wins.
This issue is probably bigger than
--namealone. Claude Code also takes--settings <file-or-json>, which loads into theflagSettingsprecedence tier:That beats the user, project, and local settings files and loses only to policy.
theme,spinnerVerbs,spinnerTipsEnabled, andspinnerTipsOverrideare all in the schema that tier validates, andthemeaccepts acustom:prefixed slug.So the launch path can hand a composed session its whole native identity as launch arguments, with no host mutation:
--name <seat>for the prompt box and terminal title--settings <bundle>/claude-settings.jsonfor the theme selection, spinner verbs, and tipsnative-uialready emits exactly that settings shape per role, so the file needs no new format. Only the theme file itself still has to exist under<home>/.claude/themes/, which is the convergence half tracked in agentic-os#962.Worth deciding whether this issue grows to cover both flags or whether
--settingssplits out. They share one insight and one code path, so I lean toward one issue.Precedence and schema membership are read from the 2.1.221 binary. End-to-end selection through
--settingshas not been run and needs an interactive check, since print mode silently ignores settings files that fail validation.Landed on
mainas10a78e1, covering both flags as the comment above proposed.What ships
nativelaunch.RefreshresolvesSeatNamefrom the composed person: the selected seat's own name wins, then the role-owned agent identity, then the role. That mirrors the status line rather than inventing a second rule.claudeharness only,Refreshwrites the role'snativeuifragment to<bundle>/claude-settings.jsonand returns the path. Other harnesses still resolve a seat name, since a name is identity rather than a file.--name <seat>and--settings <path>ahead of the caller's arguments.Caller precedence
A caller-supplied flag wins in either the separate-value or the inline
--flag=valuespelling. Anything after a--terminator is harness input, so a--namepast the terminator does not suppress the launcher's own. Tests cover all four cases plus the three non-Claude harnesses.Verification
End-to-end
--settingstheme selection is confirmed interactively, recorded in detail on #241. A session launched with the engineer fragment renders the engineer theme even though~/.claude/settings.jsonselects a different custom theme, which is the precedence claim as well as the selection claim.Note for the rollout
The theme document the fragment names still has to exist under
<home>/.claude/themes/, which is agentic-os#962. Claude Code drops an unresolvablecustom:reference silently, so a host without the theme files loses the colors and keeps the name, the verbs, and the tips. That degradation is deliberate, not a gap.Docs: claude-launch-identity.md.