Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖 Carolopedia › Services › Build Initiatives › All activities › INI-999977
📋
📖About
All 35 Carol apps render their own index.html with no consistent identity strip. User asks for: (a) every app to show its owner in the header, (b) every app to display reliably (already mostly true — 35/35 on gateway), (c) mobile-friendly design (mostly via Tailwind already), (d) every app to carry Carol's portrait clickable back to /dev/apps/. Solution: a shared 40px top strip injected into each index.html with idempotent marker comment. Owner inlined per-app at injection time (read from registry). Strip uses Tailwind responsive classes — collapses to vertical stack on narrow viewports.
⚖️Decisions
- Single shared header strip injected into each index.html via Python script — not a runtime template engine. Owner name is inlined per-app at injection time (read from registry.apps + registry.agents). — Each Carol app is a standalone FastAPI instance with its own index.html. A runtime template would require touching every app.py. Static injection is simpler and reversible. (Orion)
- Idempotent injection: marker HTML comment <!--CAROL_HEADER_v1--> guards against double-injection on re-run. — Future runs (re-deploy, manual edits) shouldn't stack multiple headers. (Orion)
- Carol portrait sourced from /dev/carolopedia/static/avatars/agent/agt-008.png — already on disk, served by Carolopedia app. — Reuse the canonical agent portrait. No new asset needed. (Orion)
✅Success criteria
- grep -l 'CAROL_HEADER_v1' apps/*/index.html returns 35 file paths. (must_have)
- curl test of all 35 app ports returns 200/2xx/expected codes. (must_have)
- Visual on /dev/apps/, /dev/initiatives/, /dev/org/, /dev/constitution/ shows the same header strip with the correct owner per app. (must_have)
- Browser dev-tools mobile viewport (375px wide) renders the header without overflow — owner block stacks below name on narrow screens. (must_have)
- Regression diff vs prior run: 0 NEW FAILURE. (must_have)