feat: conversations on the left, the transcript on the right #6

Merged
adrianbonpin merged 1 commits from feat/session-list into prod 2026-10-03 21:09:37 +00:00
Owner

The transcript was duplicated across both panes, which was the actual complaint. The left column is now the list of conversations and the right pane is the transcript of the selected one, so the two panes show different things.

Changes

  • The open conversation is marked with a check icon and an Open tag
  • Each row carries its own transcript as its detail, so moving the selection previews that conversation
  • Conversations are ordered most-recently-updated first, which keeps the one being chatted in at row zero — where Vicinae's selection reset lands
  • Return adapts: with text in the search bar it sends; with an empty bar it opens the highlighted conversation (sending an empty prompt was a no-op anyway)
  • The search bar accessory dropdown is gone. The left column is the conversation switcher now, so the dropdown only duplicated it

Speaker icons are not possible — evidence

I tried to use real icons in the transcript rather than emoji, and it does not work. MdImage.qml renders images block-level, centred, and capped at 200px tall (Math.min(_rawH, 200, maxImageHeight)), so an icon cannot sit inline next to a message.

I ran a live probe rendering three candidate sources:

Source Result
icon://person failed — alt text rendered as a caption
person (raw slug) failed — broken-image placeholder at ~200px
file://…/assets/extension-icon.png failed

So the labels are plain text (You / Lam), with the question dimmed as a blockquote and the answer as body text. markdown.ts records the reason so nobody retries it blind, and there is a test asserting the transcript renders no images.

Verification

  • tsc --noEmit clean, eslint . clean
  • 109 tests passing (was 108)
  • vici build succeeds
  • Verified on screen: one conversation row with an Open tag and check icon, the full transcript on the right, action bar reading "Open Conversation" while the search bar is empty
The transcript was duplicated across both panes, which was the actual complaint. The left column is now the **list of conversations** and the right pane is the **transcript of the selected one**, so the two panes show different things. ## Changes - The open conversation is marked with a **check icon** and an **`Open` tag** - Each row carries its own transcript as its detail, so moving the selection previews that conversation - Conversations are ordered **most-recently-updated first**, which keeps the one being chatted in at row zero — where Vicinae's selection reset lands - **Return adapts**: with text in the search bar it sends; with an empty bar it opens the highlighted conversation (sending an empty prompt was a no-op anyway) - The search bar accessory **dropdown is gone**. The left column is the conversation switcher now, so the dropdown only duplicated it ## Speaker icons are not possible — evidence I tried to use real icons in the transcript rather than emoji, and it does not work. `MdImage.qml` renders images **block-level, centred, and capped at 200px tall** (`Math.min(_rawH, 200, maxImageHeight)`), so an icon cannot sit inline next to a message. I ran a live probe rendering three candidate sources: | Source | Result | | --- | --- | | `icon://person` | failed — alt text rendered as a caption | | `person` (raw slug) | failed — broken-image placeholder at ~200px | | `file://…/assets/extension-icon.png` | failed | So the labels are plain text (`You` / `Lam`), with the question dimmed as a blockquote and the answer as body text. `markdown.ts` records the reason so nobody retries it blind, and there is a test asserting the transcript renders no images. ## Verification - `tsc --noEmit` clean, `eslint .` clean - **109 tests passing** (was 108) - `vici build` succeeds - Verified on screen: one conversation row with an `Open` tag and check icon, the full transcript on the right, action bar reading "Open Conversation" while the search bar is empty
adrianbonpin added 1 commit 2026-10-03 21:09:27 +00:00
The transcript was duplicated across both panes, which was the actual
complaint. The left column is now the list of conversations and the right
pane is the transcript of the selected one, so the panes show different
things.

- the open conversation is marked with a check icon and an "Open" tag
- each row carries its own transcript as its detail, so moving the
  selection previews that conversation
- conversations are ordered most-recently-updated first, which keeps the
  one being chatted in at row zero, where Vicinae's selection reset lands
- Return now adapts: with text in the search bar it sends, with an empty
  bar it opens the highlighted conversation (sending an empty prompt was a
  no-op anyway)
- the search bar accessory dropdown is gone. The left column is the
  conversation switcher now, so the dropdown only duplicated it.

Speaker icons in the transcript are not possible, so the labels are plain
text. MdImage renders images block-level, centred, and capped at 200px
tall, and all three candidate sources were tried in a live probe --
icon://person, a raw icon slug, and a file:// asset path -- and each one
fell back to rendering its alt text as a caption. markdown.ts records the
reason so nobody retries it blind.

Verified on screen: one conversation row with an Open tag and a check
icon, the full transcript on the right, and the action bar reading "Open
Conversation" while the search bar is empty. typecheck, eslint, 109 tests
and vici build all pass.
adrianbonpin merged commit 9b35fcef11 into prod 2026-10-03 21:09:37 +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#6