Skip to content

🔖 chore(release): v1.0.2 - #50

Merged
kbrdn1 merged 16 commits into
mainfrom
dev
Sep 19, 2026
Merged

kbrdn1 merged 16 commits into
mainfrom
dev

Conversation

@kbrdn1

@kbrdn1 kbrdn1 commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Summary

Promotion de la 1.0.2 vers main. C'est une release de contrôles : le site servi est identique à la 1.0.1 (git diff v1.0.1 ne touche rien en dehors de docs/, scripts/, .github/, du changelog et de CLAUDE.md). Ce qui change, c'est ce qui se trouve entre un changement et la prod :

Pas de candidat : il n'y a aucun changement d'exécution à valider en preprod.

Après ce merge, le tag v1.0.2 sera posé sur main, jamais avant.

Related Issue

Closes #48

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
  • 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)

Screenshots (if applicable)

N/A

Additional Notes

Détail dans changelogs/1.0.2.md. Merge en --admin (approbation requise, pas de second reviewer), uniquement après les 4 checks verts, conformément à docs/RELEASE.md.

https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J

kbrdn1 and others added 16 commits September 19, 2026 06:29
….0.1

- Linked issue s'applique aux PR vers dev aussi (validate-pr.yml n'a
  aucune condition sur la base) ; Refs ne passe pas ; éditer le corps
  relance le check, un rerun rejoue l'ancien corps.
- Étape 4 : main exige une approbation en plus des checks ; les
  promotions passent en --admin (enforce_admins à false).
- Étape 6 : /api/health ne distingue pas l'image du tag de celle du
  filet deploy.yml ; la release se vérifie sur son run et gh release view.
- « Revenir en arrière » affirmait qu'un tag rejoué reconstruit l'image
  et recrée la release : release.yml saute le build et fait un edit.
  L'étape 5 disait déjà l'inverse, le fichier se contredisait.

Plus le rattrapage d'un Deploy prod en échec (#42) et une référence
morte (« cf. contrainte 2 »).

closes #43

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
…ejoue les notes du tag

Le bloc sur l'approbation coupait la phrase sur required_linear_history,
dont le « pour ça » renvoyait alors au merge admin ; il passe après, la
phrase d'origine redevient intacte. `--admin` ignore aussi les checks
requis : seule l'attente des checks verts protège. Un tag rejoué remet
les notes de l'arbre du tag, pas une correction faite depuis. « Toutes
les promotions » devient la liste vérifiée (#29, #32, #41).

closes #43

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
…run du tag

L'étape 5 disait « sans effet de bord » là où « Revenir en arrière » dit
que les notes sont réécrites depuis le tag : l'étape 5 renvoie désormais
à ce paragraphe. `gh run list --branch vX.Y.Z` isole le run du tag (un
dispatch s'affiche sous main). L'ordre filet / tag dépend du verrou, et un
cut avec candidat a plus de deux PR : les deux formulations sont
corrigées. L'avertissement --admin tient en une phrase.

closes #43

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
scripts/og-smoke.sh sert le build .output, lit l'og:image de /, /blog et
/blog/gwm, exige 200 + image/png puis compare chaque image octet par
octet à scripts/og-smoke/<nom>.png. `--update` régénère les références.

Le rendu est déterministe entre plateformes : les références générées
sur macOS arm64 sont identiques au bit près aux images servies par la
prod (linux x64), d'où cmp plutôt qu'une comparaison tolérante — et pas
d'ImageMagick à installer en CI. L'écart provoqué par la police de repli
ne touche que 0,7 à 1,4 % des pixels : un seuil à 1 % aurait laissé
passer la home.

Vérifié en rouge : un dégradé satori coupé sur deux lignes → 500 sur /
et /blog ; main.css en guillemets simples → les trois images diffèrent.

refs #44

Claude-Session: https://claude.ai/code/session_01FjWD67sbmUDe36TfidqzhX
Les images OG sont rendues à la requête : ni le lint, ni le typecheck,
ni le build ne les exécutaient. Le step réutilise le .output du job,
pas de second build.

refs #44

Claude-Session: https://claude.ai/code/session_01FjWD67sbmUDe36TfidqzhX
La police de repli ne venait pas de `--font-sans: 'Inter'` (theme.css en
guillemets simples ne change aucun pixel) mais de main.css :
nuxt-og-image 6.1 ne reconnaît l'entrée Tailwind que par `@theme` ou un
`@import "tailwindcss"` en guillemets doubles (dist/chunks/tw4.mjs), et
main.css n'a pas de @theme. CLAUDE.md le dit désormais, et remplace la
comparaison manuelle des images OG par scripts/og-smoke.sh.

closes #44

Claude-Session: https://claude.ai/code/session_01FjWD67sbmUDe36TfidqzhX
…n du tag

`gh run list --branch vX.Y.Z` ne voit pas un rattrapage en
workflow_dispatch (rangé sous main) : sur la v1.0.0 il ne montre que le
run en échec alors que la release est publiée. Le job release dépend de
deploy, qui fait le contrôle /api/health : `gh release view` suffit. Le
titre de la contrainte dit ce que le check exige (un mot-clé de
fermeture), pas une fermeture.

closes #43

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
📝 docs(release): corrige quatre passages démentis par le cut de la v1.0.1
Retours de review :
- aucun curl n'était borné : un rendu OG qui bloque aurait mangé les 15
  minutes du job sans nommer la page. -m 30 sur les pages et les images ;
- sous set -e, un serveur mort en cours de run faisait sortir le script à
  l'affectation, sans ligne FAIL ni log. Les deux curl ne coupent plus le
  script, et un échec affiche la fin de server.log — c'est là que satori
  laisse la cause d'un 500 (css-gradient-parser sur un dégradé coupé) ;
- l'en-tête attribuait encore la police de repli à 'Inter' dans le CSS,
  alors que la cause est @import 'tailwindcss' dans main.css.

refs #44

Claude-Session: https://claude.ai/code/session_01FjWD67sbmUDe36TfidqzhX
✨ feat(og): smoke test des images OG contre des références
#45 n'avait pas d'entrée sous [Unreleased] ; les notes de la 1.0.2
doivent couvrir tout ce que dev porte depuis la 1.0.1.

refs #48

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
Badge de version et terminal (tag, image, /api/health) passent de 1.0.1
à 1.0.2 ; rien d'autre ne change.

refs #48

Claude-Session: https://claude.ai/code/session_01P5DUscqftnE27pbmuUqL5J
@kbrdn1 kbrdn1 added the documentation Improvements or additions to documentation label Sep 19, 2026
@kbrdn1
kbrdn1 merged commit 958bb73 into main Sep 19, 2026
8 checks passed

This branch had an error being deployed

1 failed deployment
preprod — 450900df Deployed Sep 19, 2026 by kbrdn1 via Deploy preprod on VPS #57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🔖 [Release]: v1.0.2

1 participant