Skip to content

✨ feat(nav): navigation par pages et sommaire de la home - #83

Merged
kbrdn1 merged 9 commits into
devfrom
feat/#80-site-nav
Oct 19, 2026
Merged

kbrdn1 merged 9 commits into
devfrom
feat/#80-site-nav

Conversation

@kbrdn1

@kbrdn1 kbrdn1 commented Oct 19, 2026

Copy link
Copy Markdown
Owner

Summary

⚠️ Empilée sur #82, elle-même sur #81 : à merger dans l'ordre #81 → #82 → celle-ci (la nav mène aux deux nouvelles pages).

Navigation par pages

  • Le header ne renvoie plus vers les ancres de la home (À propos, Stack, Projets, Parcours). Il mène aux pages Parcours (/experience), Apps (/apps) et Blog, sur toutes les pages et sur mobile, où le menu n'existait que sur la home.
  • Le logo reste le chemin vers l'accueil (son menu de marque est inchangé).
  • Une seule liste (useSiteNav) pour le header, l'en-tête du blog et le footer. Avant, chacun avait sa copie.
  • aria-current="page" selon la route : un article appartient au blog.
  • L'en-tête du blog garde son lien « ← Portfolio ». Le footer liste Accueil, Parcours, Apps, puis le blog à part.

Sommaire de la home

  • Le même encadré que le sommaire des articles (BlogToc : section active, progression).
  • Posé hors de la colonne de 80rem, dans la marge, donc seulement à partir de 1700 px de large, où la marge peut le tenir.
  • Sections : à propos, blog, stack, projets (et l'activité GitHub), parcours.
  • La section courante suit le défilement : c'est l'ancien suivi du header, déplacé.
  • Un clic défile en tenant compte du header fixe, sans animation sous prefers-reduced-motion.

Clés i18n retirées parce que ce changement les rend orphelines : les anciennes ancres du footer et blogNav.articles. Nouvelles clés : nav.home/experience/apps/blog.

Related Issue

Closes #80

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

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

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)
  • Linting passes (make lint)
  • Formatting passes (bun run fmt:check)

Additional Notes

Vérifié en local :

  • aria-current sur la bonne entrée pour /experience, /apps, /blog ;
  • sommaire à 1920 px : dans la marge droite (x 1620 → 1796), section active « projets », progression 47 % ;
  • caché à 1440 px.

Sur le modèle éditorial d'isrod.eu/fr/experience (la mise en page, pas le
contenu) : intro, frise de tous les postes et formations, un « spread » par
poste et par formation (récit à gauche ; stack et missions à droite, « en
savoir plus » avec les pixels au survol), puis l'open source et la
disponibilité.

Open source : projets maintenus (gwm, vellum, LazyCurl, herdr-plugin-gwm,
claude-crosstalk, kbrdn-docs), contributions (winget, aqua-registry et
awesome-ratatui fusionnées, nixpkgs en revue) et signalements (issues à
snacks.nvim, CodexBar, terminal-browser, elasticlens), chacun relié à sa PR
ou son issue. Les canaux d'installation de gwm sont ceux de son README. Rien
d'autre que des faits : les récits reprennent les missions déjà écrites.

La home remplace les accordéons Parcours par un aperçu (une ligne par poste
et formation, lien vers la page). Données partagées dans app/utils/career.ts ;
Experiences.vue, Studies.vue, leur CSS d'accordéon et les clés devenues
orphelines partent ; les liens du footer visent la nouvelle page.

refs #78
Une carte par app, avec les pixels au survol : gwm (disponible), vellum (en
développement, pré-0.1 d'après son README) et LazyCurl (archivé : le libellé
du site, le dépôt n'est pas touché). Pour chacune : accroche, description,
fonctionnalités reprises du README, langage et licence (Apache-2.0 pour gwm,
MIT pour les deux autres), liens site, dépôt, versions ; pour gwm, les
commandes d'installation du tableau de son README.

La dernière version publiée vient de GitHub (/api/github/releases, GraphQL,
liste fixe, mise en cache une heure) au lieu d'être écrite en dur : elle
n'apparaît pas si GitHub ne répond pas. Titre, description et image OG
propres.

refs #79
Le header ne renvoie plus vers les ancres de la home (À propos, Stack,
Projets, Parcours) mais vers les pages : Parcours, Apps, Blog, sur toutes
les pages et sur mobile ; le logo reste le chemin vers l'accueil. Une seule
liste (useSiteNav) pour le header, l'en-tête du blog et le footer, avec
aria-current="page" selon la route (un article appartient au blog).

Le suivi de défilement du header part : le sommaire de la home le reprend.
Clés i18n des anciennes ancres du footer et de blogNav.articles retirées,
devenues orphelines.

refs #80
Le même encadré que le sommaire des articles (BlogToc : section active,
progression), posé hors de la colonne de 80rem, donc seulement à partir de
1700px de large, où la marge peut le tenir. Sections : à propos, blog,
stack, projets (et l'activité GitHub), parcours ; la section courante suit
le défilement, un clic y défile en tenant compte du header fixe (sans
animation sous prefers-reduced-motion).

refs #80
gwm : la démo de son README (docs/_capture/demo.gif, 3,6 Mo) en MP4 H.264 de
1280 px (683 Ko), avec la capture de la TUI (docs/2.tui/_assets/hero.png) en
webp comme affiche ; elle ne joue que visible à l'écran, et pas du tout sous
prefers-reduced-motion (l'affiche reste, avec les contrôles). LazyCurl : sa
capture (preview-app.png) en webp. vellum n'a encore aucune image. Textes
alternatifs décrivant ce que montrent les captures.

gwm est sous double licence MIT OR Apache-2.0 (badge du README) : affiché
comme tel au lieu de la seule licence détectée par GitHub.

refs #79
@kbrdn1
kbrdn1 merged commit f0f3cd5 into dev Oct 19, 2026
5 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.

1 participant