aterm: window titles are ordered so truncation eats the only part that differs #1252

Closed
opened 2026-08-26 02:48:56 +00:00 by coilyco-ops · 1 comment
Member

Part of #1245.

Titles run 42 to 55 characters and every one opens with personality glyphs, a seat name, and a long role display name. Window managers and Cmd-Tab truncate near 30 characters, so what survives is the section that barely varies between windows. The working directory, which is what actually separates two platform windows, never appears at all.

First 34 characters, four of seven roles:

⟐ ◆ Angie [she] (Developer Platfor
⬟ ◆ Olaf [he] (Systems Administrat
≡ ◆ Lucia [she] (Agent Evaluation 
✦ ✧ Delphi [she] (Frontend Design 

Full titles for comparison:

⟐ ◆ Angie [she] (Developer Platform Engineer) // acting
✦ ✧ Delphi [she] (Frontend Design Engineer) // acting

// acting is the default expression and appears on every window, so the tail carries no discriminating information either.

What to do

Rebuild buildTitle as workspace, then role and seat, then name. Derive the workspace from the git repository and branch when --working-directory is a checkout, falling back to the directory basename. maxTitleRunes truncation then eats the decorative tail instead of the payload.

Note

Carrying the seat in the title was considered and cut. Two windows of the same role and different harness do produce a byte-identical title, verified, but the title space is better spent on the workspace. The seat shows up in the identity card instead.

aterm/brand.go, buildTitle.

Part of #1245. Titles run 42 to 55 characters and every one opens with personality glyphs, a seat name, and a long role display name. Window managers and Cmd-Tab truncate near 30 characters, so what survives is the section that barely varies between windows. The working directory, which is what actually separates two platform windows, never appears at all. First 34 characters, four of seven roles: ``` ⟐ ◆ Angie [she] (Developer Platfor ⬟ ◆ Olaf [he] (Systems Administrat ≡ ◆ Lucia [she] (Agent Evaluation ✦ ✧ Delphi [she] (Frontend Design ``` Full titles for comparison: ``` ⟐ ◆ Angie [she] (Developer Platform Engineer) // acting ✦ ✧ Delphi [she] (Frontend Design Engineer) // acting ``` `// acting` is the default expression and appears on every window, so the tail carries no discriminating information either. ## What to do Rebuild `buildTitle` as **workspace, then role and seat, then name**. Derive the workspace from the git repository and branch when `--working-directory` is a checkout, falling back to the directory basename. `maxTitleRunes` truncation then eats the decorative tail instead of the payload. ## Note Carrying the seat in the title was considered and cut. Two windows of the same role and different harness do produce a byte-identical title, verified, but the title space is better spent on the workspace. The seat shows up in the identity card instead. `aterm/brand.go`, `buildTitle`.
Author
Member

Re-checked on main at d24e5d5a. The finding holds, the sample strings in the body do not.

buildTitle in aterm/brand.go:51 is unchanged: glyphs, then seatAnnotation, then // <expression>, then the optional task title. No workspace segment anywhere, and maxTitleRunes still truncates the tail.

Live aterm platform claude --dry-run today:

⟐ ◆ Angie [she] (Agentic Platform Engineer) // acting

52 runes, still opening with the two glyphs and still carrying no working directory.

Stale fixtures to not copy. The body quotes Developer Platform Engineer, Olaf [he], and Lucia [she]. Role display names and seat names have turned over since: platform is now Agentic Platform Engineer with seat Angie, sysadmin is Systems Administrator with Vera, eval is Evaluation Engineer with Evie, frontend is Design Engineer with Delphi. Whoever takes this should re-derive the truncation evidence from the live roster rather than pasting the table above, which is exactly what #1259 exists to prevent.

Re-checked on `main` at `d24e5d5a`. **The finding holds, the sample strings in the body do not.** `buildTitle` in `aterm/brand.go:51` is unchanged: glyphs, then `seatAnnotation`, then `// <expression>`, then the optional task title. No workspace segment anywhere, and `maxTitleRunes` still truncates the tail. Live `aterm platform claude --dry-run` today: ``` ⟐ ◆ Angie [she] (Agentic Platform Engineer) // acting ``` 52 runes, still opening with the two glyphs and still carrying no working directory. **Stale fixtures to not copy.** The body quotes `Developer Platform Engineer`, `Olaf [he]`, and `Lucia [she]`. Role display names and seat names have turned over since: `platform` is now `Agentic Platform Engineer` with seat Angie, `sysadmin` is `Systems Administrator` with Vera, `eval` is `Evaluation Engineer` with Evie, `frontend` is `Design Engineer` with Delphi. Whoever takes this should re-derive the truncation evidence from the live roster rather than pasting the table above, which is exactly what #1259 exists to prevent.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#1252
No description provided.