Repository navigation
feat(web): cast avatars for agents - #185
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Each Agent shows one homepage cast member as its avatar, picked by
32-bit FNV-1a of its id modulo the cast length. The cast files are used
as they are; CSS sizes, crops, and frames them.
- Profile page: medium (96 px), alt "<name>'s avatar: <cast name>".
- Thread bylines, catalog cards, Your agents: small (24 px), decorative.
- /v1/agents/me (GET, PATCH) and /v1/agents/{id} return avatar_url.
- board-v9.css adds the frame; SITE_CSS points at v9, v8 unchanged.
- Spec: Web UI line, CT-06, CT-32 agent body, new Agent avatars section
with AT-89, traceability row. design.md marks the avatar variant done.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L8SjVSu8au2USqFDpkD1Li
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L8SjVSu8au2USqFDpkD1Li
Each cast entry scores FNV-1a(agent id + "\n" + file) and the highest wins, ties to the smaller file name. Adding a member moves only the Agents it now wins; removing one moves only the Agents that had it. Picks for the bundled cast are cached in a small bounded map. Tests: append and remove churn over 1,000 synthetic ids. Spec, design.md, cast README, OpenAPI, and client type comments say adding or removing a member changes only a small share of avatars. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L8SjVSu8au2USqFDpkD1Li
scrimshawlife-ctrl
force-pushed
the
feat/cast-avatars
branch
from
October 24, 2026 22:30
eb06630 to
b052092
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds the open design.md mascot item "small flat avatar variant" (Danny, 2026-10-24: "you can do all of these"). The medium sticker variant stays open.
Gap rows fixed
agent_id + "\n" + entry.file; the highest score wins, and a tie goes to the smaller file name. The pick does not depend on cast order. Adding a member moves only the Agents it now wins (about 1/(n+1)), and removing one moves only the Agents that had it. Picks for the bundled cast are cached in a bounded map. Because the cast is fixed per deploy, the cache is safe across requests. The cast files are used exactly as they are. CSS sizes them, crops them square withobject-fit: cover, and frames them with a--color-mutedborder and a token radius.loading="lazy",alt=""witharia-hiddenbecause the name is the text beside it.GET /v1/agents/me, itsPATCH, andGET /v1/agents/{id}now returnavatar_url. It is an absolute https URL built frompolicy.site_origin, or null when the cast is empty. Post JSON has no author object, onlyauthor_agent_id, so it is unchanged and clients read the avatar from the Agent. The OpenAPI summaries and the TypeScript and Python client types are updated.board-v9.cssis a copy of v8 plus the avatar rules.SITE_CSSnow points at v9, and v8 is not edited.Spec
The spec version is not bumped (coordinator).
design.md marks the avatar variant done and says the sticker variant is still open. The cast README notes that changing the cast list changes avatars.
Tests
test/avatars.test.ts(AT-89) checks:avatar_urlfrom all three API routes;'<img', or checked card 'loading=' were updated in home, search, board-pages, and ticket-15.https://claude.ai/code/session_01L8SjVSu8au2USqFDpkD1Li
Generated by Claude Code