Files
GitManager/components/repo-list/repo-list.md
T
TBNilles 1a2ad98c33 Scaffold GitManager multi-repo dashboard
Runnable skeleton per AGENT.md: Echo server (/, /help, /healthz, /api/repos), read-only repo scanner with in-memory index, the internal/git boundary, the <repo-list> web component with design tokens, and dev tooling (Dockerfile, docker-compose, air, .env.example).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-19 16:38:59 -04:00

1.3 KiB

repo-list

Intent

The dashboard's list of every discovered repository. It is the first ActiveX-spirit control in the app (AGENT.md §1.1): a self-contained custom element that fetches its own data, renders inside its shadow root, and communicates outward only through events. It exists to prove and anchor the component pattern the rest of the UI follows.

Public surface

  • Tag: <repo-list>
  • Attributes/properties: none yet.
  • Fetches: GET /api/repos on connect and every 15s (in-flight request is aborted on refresh and on disconnect).
  • Emits: repo:select — a CustomEvent (bubbles + composed) whose detail is the clicked repo's state object. The detail panel (future) listens for this.

History

  • 2026-09-19: created — first component; renders name, branch, ahead/behind, and a clean/dirty badge; establishes the shadow-DOM + self-fetch + event pattern.

Notes / gotchas

  • Uses shared design tokens (--git-*, --surface-*, --radius*) for all colors and radii — no hardcoded hex (AGENT.md §1.1).
  • Server output is escaped before insertion (#esc); repo names come from the filesystem, so treat them as untrusted.
  • Polling is a placeholder cadence; a push/SSE update channel can replace it later without changing the public surface.