feat: mark each speaker with a role icon in the transcript #5

Merged
adrianbonpin merged 1 commits from feat/transcript-icons into prod 2026-10-03 21:03:27 +00:00
Owner

Nothing in the transcript indicated who was speaking. Each message is now prefixed with a role marker: 👤 for the user, ✨ for Lam.

Emoji rather than icon images, because Vicinae's markdown renderer is minimal and there is no reliable way to inline an icon:// reference into markdown — plain text always renders.

Verified on screen: both markers render in the detail pane.

Also documented

The README now records why the transcript needs both panes, because this came up while reviewing the UI:

  • Detail accepts no typed input — onSearchTextChange exists only on List, Grid, Form and Dropdown — so a detail-only chat command would have nothing to type into
  • List rows are a fixed single line, so full message text cannot render in the list

Input needs a List; full text needs a Detail. Dropping either pane breaks the feature, so the split is forced by the API rather than chosen.

Verification

  • tsc --noEmit clean, eslint . clean
  • 108 tests passing (was 107) — added a test asserting both markers appear, in the right order
  • vici build succeeds
Nothing in the transcript indicated who was speaking. Each message is now prefixed with a role marker: **👤 for the user**, **✨ for Lam**. Emoji rather than icon images, because Vicinae's markdown renderer is minimal and there is no reliable way to inline an `icon://` reference into markdown — plain text always renders. Verified on screen: both markers render in the detail pane. ## Also documented The README now records why the transcript needs **both** panes, because this came up while reviewing the UI: - `Detail` accepts **no typed input** — `onSearchTextChange` exists only on `List`, `Grid`, `Form` and `Dropdown` — so a detail-only chat command would have nothing to type into - List rows are a fixed **single line**, so full message text cannot render in the list Input needs a `List`; full text needs a `Detail`. Dropping either pane breaks the feature, so the split is forced by the API rather than chosen. ## Verification - `tsc --noEmit` clean, `eslint .` clean - **108 tests passing** (was 107) — added a test asserting both markers appear, in the right order - `vici build` succeeds
adrianbonpin added 1 commit 2026-10-03 21:03:20 +00:00
Nothing in the transcript said who was speaking. Each message is now
prefixed with a role marker: person for the user, sparkle for Lam.

Emoji rather than icon images, because Vicinae's markdown renderer is
minimal and there is no reliable way to inline an `icon://` reference
into markdown, whereas plain text always renders.

Also records in the README why the transcript needs both panes, since
that came up: Detail accepts no typed input, so a detail-only chat
command would have nothing to type into, and list rows are a fixed
single line, so full text cannot live in the list. Input needs a List,
full text needs a Detail.

Verified on screen that both markers render.
adrianbonpin merged commit d448a4377b into prod 2026-10-03 21:03:27 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adrianbonpin/lam-agent-vicinae#5