Repository source: docs/plans/site_favicons/site_favicons_step2_feature_description.md
Debug mode: enabled
Problem
chouse and qdb show the zenmemes "Z" favicon in browser tabs, bookmarks and the installed-app icon. The Z fits zenmemes but misrepresents the other sites. Only mitrapclub has its own icon today.
User Stories
As a
chousevisitor, I want the tab and bookmark icon to look like chouse so that I can tell it apart from zenmemes.As a
qdbvisitor, I want the tab and bookmark icon to look like a quote database so that I can find the tab among others.As a
zenmemesormitrapclubvisitor, I want my site's icon unchanged so that nothing familiar breaks.
Core Requirements
chouseandqdbeach serve their own 32x32.ico, used for the page icon link, the web manifest icon and the static build output, the same waymitrapclubdoes today.zenmemeskeeps the existing Z, andmitrapclubkeeps its current icon, both byte-identical.The default (Z) icon remains the fallback for any profile that does not opt in.
Icon motifs, to be confirmed at Step 2 approval:
chouse: a lowercase "c" glyph on the chouse theme color. Open to a different motif if you prefer.qdb: a quotation-mark glyph on the qdb theme color.Both are simple, high-contrast marks that stay legible at 16px and 32px.
Delivery Scope
Work type: Application change (two new icon assets plus per-profile opt-in through the existing
faviconpresentation slot).
Completion Boundary
Normal entry: a visitor loads any page, or the web manifest, on
chouseorqdb.End-to-end outcome: that site's own icon appears in the page head, the manifest and the static build output.
Needed recovery: if a profile does not opt in, it falls back to the default Z as today.
Release condition:
./v3 testpasses in full;zenmemesandmitrapcluboutput is unchanged.
Risks
Icon legibility at 16px. A detailed mark turns to mush in a tab. Earliest validation: view the candidate assets at 16px and 32px before Step 3 stages begin. Mitigation: single-glyph, high-contrast designs only.
Static build or cache not picking up the new paths. The static builder and service worker enumerate favicon paths explicitly. Earliest validation: build the static artifact for
chouseandqdbearly in Step 4 and confirm the icon files are emitted. Mitigation: reuse the same resolver the build already calls, so there is no second path list.Scope creep into a broader brand refresh. Mitigation: icons only, with no theme color, name or layout changes.
Shared Component Inventory
PresentationSlotRegistryfaviconslot: extend its choices; do not add a new mechanism.FaviconRegistry: add the two path entries; its resolver is already used by the layout, manifest renderer and static builder.SiteProfileRegistry:chouseandqdbprofiles opt in through theirfaviconpresentation slot.public/assets/favicon-mitrapclub.ico: the model for naming and location of the new assets.
Simple User Flow
Visitor loads a
chouseorqdbpage.The tab and bookmark show that site's icon.
The installed-app icon from the manifest matches.
Success Criteria
chouseandqdbpages, manifests and static builds reference their own distinct icons.zenmemesandmitrapclubrender byte-identical to before.The default fallback is still the Z.
./v3 testpasses in full.
Open Decisions For Approval
Confirm the
chouseandqdbmotifs above, or name different ones.Confirm
zenmemeskeeps the current Z unchanged and the default fallback stays the Z (both assumed above).
Waiting for "Approved Step 2" before drafting Step 3.