Skip to content

chat: the chats tree looks like the file tree - #7

Merged
foxnne merged 1 commit into
chat/no-samplefrom
chat/tree-look
Oct 16, 2026
Merged

foxnne merged 1 commit into
chat/no-samplefrom
chat/tree-look

Conversation

@foxnne

@foxnne foxnne commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Stacked on #6 (and #5 below it).

What changes

The Chats sidebar tree now looks like the workbench's file tree:

  • Row height: labels use the file tree's padding (3, no margin) instead of dvui's default
    label padding (6), so a row is 26pt tall like a file row, not 32pt.
  • Fonts: body font for folders and chats; a client's row ("Agents") takes the heading font,
    as the open folder's row does at the top of the file tree (was bold body).
  • Icon and caret colours: the file tree's tint, each row's colour from core.palette (or
    Host.fileRowFillColor, as the file tree asks) by its place in the tree, counted the way the
    file tree counts folders, faded into the window fill by the pointer's distance from the row.
    Was a flat grey.
  • Text colour: a chat open in a tab reads in the window's text colour, as an open file
    does; others in the control text colour.
  • Expander: rounded corners (8) and the 450ms fold of the file tree's folders.
  • Hover, press and selected fills, branch padding, indent (14), glyph slots and caret were
    already the file tree's, and are unchanged.

The age at the right of a chat row and the + on a group row are the chat's own and stay, padded
like the labels so they don't make the row taller.

Fizzy's core has no shared tree-row style. core.widgets gives the glyph slot
(treeRowGlyph, treeRowIconOptions), the caret (treeCaret) and hoverRestFill, but the
row's fills, label padding, fonts, expander options and the pointer-distance icon tint are
written only inside the workbench's files.zig (drawRow, editableLabel, filterLabel).
This PR copies those values and says where they came from; fizzy is unchanged. A shared
core.widgets tree-row style would let both trees (and the next one) take it from one place.

Also: rows are named for demo tapes (chat.group:<client>, chat.group:<client>:<folder>,
chat.chat:<path>), free when no tape asks for anchors. The captures below were driven by them.

How it was seen

macOS, Debug fizzy from main, sandbox profile with an agent client and two folders of
seeded chats. A demo tape opened the workbench explorer on a demo folder (expanded src, opened
main.zig, hovered README.md), and another opened Chats, expanded fizzy, opened one chat and
hovered the next. Cropped side by side at 2x: row pitch is 53px in both trees, the caret and
first glyph sit at the same x, selected and hovered rows have the same rounded fill, the open
row's name has the same warm text colour, the top row's heading weight matches, and icons are
tinted from the palette and fade with distance from the pointer in both. zig fmt --check
clean.

🤖 Generated with Claude Code

Its rows now take the workbench file tree's look, value for value: label padding 3 and no
margin (a row was 32pt tall, now 26pt, as a file row is), the body font, the heading font on a
client's row as on the open folder's, the expander's rounded corners and 450ms fold, and the
icon tint: each row's palette colour by its place in the tree, counted as the file tree counts
folders, faded into the window by how far the pointer is. A chat open in a tab reads in the
window's text colour, as an open file does. Fizzy's core holds the glyph slots and the caret but
not the row style itself, so the values are copied from `files.zig`.

Rows are also named for demo tapes: `chat.group:<client>`, `chat.group:<client>:<folder>`,
`chat.chat:<path>`.
@foxnne
foxnne marked this pull request as ready for review October 16, 2026 14:36
@foxnne
foxnne added this pull request to stack #12 October 16, 2026 14:53
@foxnne
foxnne merged commit 9ef249a into main Oct 16, 2026
6 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