Skip to content

💄 feat(brand): monogramme @kbrdn1 sur le favicon, le header et les OG - #13

Merged
kbrdn1 merged 1 commit into
mainfrom
dev
Jul 25, 2026
Merged

💄 feat(brand): monogramme @kbrdn1 sur le favicon, le header et les OG#13
kbrdn1 merged 1 commit into
mainfrom
dev

Conversation

@kbrdn1

@kbrdn1 kbrdn1 commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Summary

Remplace le favicon par un monogramme dessiné pour le design system du site, et l'installe partout où la marque apparaît : les quatre boutons brand du header, le favicon et les deux images OG.

Le dessin retenu fait porter deux lectures par les mêmes traits — le cadre ouvert en bas-droite lit comme l'arobase du wordmark, et son montant gauche sert de barre au K, auquel le chevron vient s'accrocher. Aucune forme n'est ajoutée pour la lettre.

Le favicon précédent était hors système sur trois points : conteneur circulaire alors que --ui-radius: 0 est un parti pris affirmé, dégradé #FFAA00 → #C5690C dont aucune valeur n'existe dans la palette, et trois feGaussianBlur qui le rendaient illisible à 16 px.

Related Issue

Closes #12

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update
  • ♻️ Refactoring (no functional changes)
  • ⚡️ Performance improvement
  • 🎨 Style/UI update

Scope

Which parts are affected?

  • Homepage
  • Blog
  • UI Components
  • SEO
  • Projects
  • i18n / Translations
  • Configuration

Détail

Fichier Changement
app/components/ui/Logo.vue nouveau — <UiLogo>, masse neutre en currentColor, prop size
public/favicon.svg réécrit : valeurs figées + @media (prefers-color-scheme: dark)
public/favicon.ico regénéré en 16/32/48/64/128/256
Header.vue, BlogHeader.vue les 4 boutons brand (desktop + mobile), pas les items de dropdown
OgImage/*.satori.vue SVG inline plutôt que le composant

Le cadre est fait de quatre <rect> pleins et non d'un tracé en stroke : satori ne rend pas les strokes de façon fiable, et partager une seule géométrie évite que la version runtime et la version OG divergent. Les deux rendus ont été comparés au pixel près (bbox de différence nulle).

Vérifications

  • Image OG regénérée et inspectée : le cadre et le chevron sont bien rendus par satori
  • Header et BlogHeader rendus en thème sombre
  • favicon.svg rendu hors contexte document (en <img>, sans couleur à hériter) : la masse neutre bascule bien sur #e0e0e0
  • bun run lint : aucune erreur sur les fichiers touchés
  • bun run build : passe
  • nuxt typecheck : aucune erreur sur les fichiers touchés. Les 4 erreurs restantes sont antérieures à cette PR (pages/index.vue, server/api/github/contributions.get.ts, nuxt.config.ts)

Limite connue

Le .ico fige la masse neutre en #1a1a1a : correct sur un onglet clair, invisible sur un onglet sombre, où seul le chevron orange resterait. Le SVG est déclaré en premier (rel="icon" type="image/svg+xml") et s'adapte au thème, donc le .ico ne sert que de repli pour les vieux clients et les crawlers.

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my code
  • I have tested my changes locally
  • My changes generate no new warnings
  • I have updated the documentation if needed
  • TypeScript compiles without errors (make typecheck) — 4 erreurs subsistent dans le repo, toutes antérieures à cette PR et aucune sur les fichiers touchés (détail en Vérifications)
  • Linting passes (make lint)

Le favicon précédent était hors design system : conteneur circulaire
alors que --ui-radius vaut 0, dégradé #FFAA00 → #C5690C absent de la
palette, et trois ombres portées floutées illisibles à 16 px.

Le nouveau mark fait porter deux lectures par les mêmes traits : le
cadre ouvert en bas-droite lit comme l'arobase du wordmark, et son
montant gauche sert de barre au K, auquel le chevron vient s'accrocher.

Le cadre est fait de quatre <rect> pleins plutôt que d'un tracé en
stroke : satori ne rend pas les strokes de façon fiable, et partager
une seule géométrie évite que la version runtime et la version OG
divergent. Rendus comparés au pixel près, identiques.

- app/components/ui/Logo.vue : <UiLogo>, neutre en currentColor
- public/favicon.svg : valeurs figées + @media (prefers-color-scheme)
- public/favicon.ico : regénéré en 16/32/48/64/128/256
- Header et BlogHeader : les quatre boutons brand, pas les dropdowns
- OgImage/*.satori.vue : SVG inline, hors du composant

Le .ico fige le neutre en #1a1a1a : correct sur onglet clair, invisible
sur onglet sombre. Le SVG est servi en premier, le .ico ne sert que de
repli pour les vieux clients et les crawlers.

Refs #12

Claude-Session: https://claude.ai/code/session_011tQX9U1mEk7iux8G5R5vVz
@kbrdn1
kbrdn1 merged commit 1f9b4fa into main Jul 25, 2026
11 of 12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ [Feature]: nouveau monogramme de marque (favicon, header, OG)

1 participant