Why: avatars, cards, and settings are base capabilities now (user
decision 2026-09-30); the host must eat its own dogfood so plugins get
the identical surfaces.
Evidence:
- Local icons.tsx removed; Icon/Avatar/BrandMark/primitives/Settings
Shell imported from @ui; message stream gains avatar columns (user
initial from /api/me name, assistant brand mark); SettingsModal
rebuilt on SettingsShell (side-nav sections with badges, EmptyState
for plugins, iconified actions); AdminUsersModal rows show shared
avatars.
- tsconfig paths pin react/react-dom types to the frontend copy — the
source-composed ui package otherwise resolves a second @types/react
through its own node_modules during make frontend (npm ci), which
breaks type identity (surfaced by SVGProps crossing the boundary);
vite dedupe already guarantees one runtime copy.
- Headless on the real binary: avatar columns render, settings shell
switches sections with badges, admin rows show avatars, zero console
errors; build + vitest green.
Impact: visual/structural only; no API or state changes.
Refs: Agent-System-Documents proposal 2026-09-30-ui-redesign-and-auth.md
weichen
merged commit b2fbcf72bc into main2026-09-30 14:23:17 +00:00
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.
Why: host eats its own dogfood so plugins get identical surfaces.
Evidence: shared icons/avatars from @ui; message avatar columns; SettingsModal on SettingsShell (side-nav+badges+EmptyState); admin row avatars; react types pinned single-copy (fixes make-frontend dual @types/react clash); headless green.
Impact: visual/structural only. Depends: core#5, ui#13.