No description
Sections (top to bottom, all wrapped in a cascade-entry animation):
- greeting block: MONDAY · 11 MAY label, serif-italic "Good morning, X."
greeting (server time, Europe/Copenhagen), tenure line that uses
cab_joined_date for cab members and falls back to created_at
- ActivityTicker fed by getRecentActivity (hidden when empty)
- this-week Pulse card: live breathing dot + time-left countdown, italic
serif question, 2×2 grid of option buttons that submit a hidden-action
vote form. Once voted, options lock and show a distribution bar fill;
the user's choice keeps a terracotta border. Empty state when no pulse
is open.
- 2-col roadmap preview + council mark: three most-recently-updated items
with status dot (copper/ochre/muted), and the user's CouncilMark md with
the "{n} of 12 quarters" stat
- members-in-the-room: 4 chips for other CAB members seen within 5 min,
+N overflow chip; pulsing copper dot for the "online now" indicator
- two-column event row: dark indigo "members-only" card (next dinner or
summit) + light "office hours" card (next office_hours event). Hidden
per-card when no matching upcoming event exists.
Vote POST uses the existing admin form pattern (hidden action field,
redirect on success). Activity row for 'voted' is written inline here;
step 11 covers the other activity sources.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .claude | ||
| content | ||
| design | ||
| migrations | ||
| public | ||
| scripts | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| astro.config.mjs | ||
| CLAUDE.md | ||
| DECISIONS.md | ||
| HANDOVER.md | ||
| KNOWN_ISSUES.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| SPEC.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||