Skip to content

feat(tui): brand the startup transcript with a quiet session header - #1022

Merged
TheGreatAxios merged 3 commits into
mainfrom
cl-7938-replace-startup-transcript-noise-with-corbits-code-branding
Sep 14, 2026
Merged

TheGreatAxios merged 3 commits into
mainfrom
cl-7938-replace-startup-transcript-noise-with-corbits-code-branding

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • The startup transcript opens with the Corbits Code wordmark and a single quiet essentials line (profile, model, effort, permission mode)
  • The landing lockup still plays during world load, then clears to the branded header ahead of the other deferred startup notices
  • Startup echoes (picker choice, permission notices) still land in the transcript but collapse when identical back-to-back, so repeats read once; the prompt border label gains a yolo mirror of the permission mode
  • The header is a startup snapshot: later /yolo or effort toggles move the prompt border label only

Verification

  • bun run check (typecheck, build, test) green
  • New tests cover the session header composer, the yolo mode segment, and the dedupe/flush-first transcript behavior

Fixes CL-7938

@linear-code

linear-code Bot commented Sep 14, 2026

Copy link
Copy Markdown

CL-7938

@TheGreatAxios
TheGreatAxios force-pushed the cl-7938-replace-startup-transcript-noise-with-corbits-code-branding branch from 20e10f1 to 1364367 Compare September 14, 2026 03:41
@TheGreatAxios

Copy link
Copy Markdown
Collaborator Author

Critic review · Request changes

Startup branding reads right at the behavior level: the header surfaceSystemNotice call sits immediately before the fire-and-forget block in wirePostStartup, so FIFO deferred order puts the header first; the mode segment is plumbed at all three live label sites (initial modelLabel, effort toggle, /yolo toggle — the effort toggle previously would have dropped mode); and the observe sequence guard in chrome.ts is sound (child rows share the module-level paint sequence via paintAppendStreamRow, so intervening child paint breaks the seq - 1 adjacency). Two issues before merge:

Blocking

  • src/tui/components/session-header.test.ts ("wordmark alone when no essentials apply", "wordmark leads the quiet essentials line") pins the literal wordmark "corbits code" instead of importing LOCKUP_WORDMARK (src/tui/lockup.ts:42). Per the AGENTS.md test rule ("assert the contract instead… This bar is a review and authorship rule"), a brand rename breaks these tests with zero behavior change. Assert composition against the imported constant.
  • src/tui/startup-transcript.test.ts pins other modules' copy: "Chose muse-spark." (model-picker wording) across the three dedupe tests, and "Permission prompts are disabled by your saved default (/yolo off to re-enable)." (owned by src/tui/runner/wiring.ts) plus the literal header string in the flush-order test. The contracts under test are duplicate-collapse and FIFO flush order — both hold with synthetic strings (build the header row via composeSessionHeader if the integration value is wanted).

Should-fix

  • src/tui/shell/chrome.ts (isDuplicateSystemEcho, new): equality is role + text only, ignoring agent (writer) and meta. Non-user rows feed writer-voice tracking (src/tui/shell/transcript.ts:58-63) — verified against current code that two same-text system rows from different writers flip the transcript to multi-voice. Back-to-back same-text system rows from different writers (multi-agent observe traffic) would collapse the second row and skip noteAgentVoice, losing the second-voice relabel. Cheap fix: include agent (and meta) in the comparison, plus a regression test with same-text / different-writer rows.

Nits (non-blocking)

  • prompt-action-bar-label.ts: mode?: string | undefined — the | undefined is redundant with ?.
  • session-header.ts: const WORDMARK = LOCKUP_WORDMARK adds a hop; fine either way.
  • The dedupe applies to all runtime system rows, not just startup echoes — accepted trade-off, noted so future repeating notices aren't a surprise.

Verdict

Request changes: fix the copy-pinning tests and the writer-blind dedupe comparison. No other findings in the wiring/chrome paths reviewed.

Tests asserted other modules' wording, so a brand or notice rename broke them with no behavior change; the suite now uses synthetic strings and the imported wordmark. Back-to-back system rows from different writers or with different labels no longer collapse, keeping the second-voice relabel.
@TheGreatAxios
TheGreatAxios merged commit 7165c3f into main Sep 14, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant