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
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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:
Detailaccepts no typed input —onSearchTextChangeexists only onList,Grid,FormandDropdown— so a detail-only chat command would have nothing to type intoInput needs a
List; full text needs aDetail. Dropping either pane breaks the feature, so the split is forced by the API rather than chosen.Verification
tsc --noEmitclean,eslint .cleanvici buildsucceeds