Skip to content

Chat: model family marks for workers (#714, D285) - #735

Merged
contursofran merged 19 commits into
mainfrom
agent/714-model-icons
Nov 11, 2026
Merged

contursofran merged 19 commits into
mainfrom
agent/714-model-icons

Conversation

@contursofran

Copy link
Copy Markdown
Owner

Part of #714 (slice A: model icons).

What changes

  • In the chat, a worker that sent a note shows the mark of its model family in place of its 6px dot: in the note lines and in the work group's fold row (D285).
    • Claude: the mascot (assets/icons/claude-mascot.svg).
    • OpenAI (Codex): assets/icons/brands/openai.svg (Simple Icons 16.37.0, CC0).
    • DeepSeek: assets/icons/brands/deepseek.svg (Simple Icons 16.37.0, CC0).
    • Any other program keeps the dot.
  • The family comes from what contr already knows of the worker: Worker.Model, else ModelOf(profile), else Worker.Command. No new read (chatview.FamilyOf).
  • State: the mark takes the dot's ink (blocked ink-100, working ink-88, idle/done ink-30, now WorkerInk). A working worker's mark hops as the working Claude mascot does (still under Reduce Motion). No hue (D259, D261): the mascot is grey here too.
  • The sidebar and the tabs are not changed.
  • Docs: docs/spec/ChatView.md (Worker mark row, Work group), docs/DECISIONS.md D285, NOTICE (marks also name the model family).
  • Sheet part ChatWorkerMarks: the three families plus a shell, each working, idle and blocked, in Dark and Light.

Steps

  1. FamilyOf and the family marks (family.go).
  2. dot() draws the mark when the family is known (view.go), and Chat.ModelOf is wired from deps.ModelOf.
  3. Tests, sheet part, docs.

Pre-check

  1. Tests: TestFamilyOf (claude, codex, deepseek, unknown) failed with the DeepSeek case removed; TestWorkerMarkByState (working, idle, blocked, done, plus an unknown program that keeps the dot) failed with the mark path off; TestWorkerInk failed with working set to ink-100.
  2. Plan: all brief items are done. The mark is 12px, not the 14px glyph size, so a fold row with many marks stays short.
  3. Contract: D285 is used in the code, the spec and DECISIONS.
  4. Up to date: main is merged in. The merge left a duplicate chat-paths fixture key in cmd/contr/e2e_see_test.go; it is removed. This branch started from Chat: brand marks of known servers on call lines (#709 S4, D274) #734, which contains Chat: the composer shows Claude Code's suggested next prompt (#727, D281) #733, so the diff shows their changes until they merge.
  5. Diff read: no debug output.
  6. Coverage: slice A of Chat: model icons for workers, GitHub icons for PRs and issues #714 is done. Slice B (GitHub icons for PRs and issues) is not in this PR.
  7. Duties: the dot still shows for unknown programs, and so does its ink logic (now WorkerInk).
  8. Evidence: scripts/sheet.sh ChatWorkerMarks, Dark and Light, checked by eye.

Checks

  • scripts/check.sh: passed locally.
  • No e2e test covers the note dots, so no e2e test was run.

A connector, plugin or other MCP call of a known server shows the
monochrome Simple Icons mark of the server in ink-48 in place of the
kind icon. One table in chatview/tools.go maps the server name.
A worker of the Claude, OpenAI or DeepSeek family shows its mark in
place of its 6px dot, in the dot's ink, and hops while it works.
Another program keeps the dot. Adds the OpenAI and DeepSeek marks of
Simple Icons.
@contursofran
contursofran marked this pull request as ready for review November 11, 2026 18:58
@contursofran
contursofran merged commit fe44502 into main Nov 11, 2026
3 checks passed
@contursofran
contursofran deleted the agent/714-model-icons branch November 11, 2026 18:58
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