fix(team): restore team rendering + optimise PR #73 images - #76
Merged
Conversation
PR #73 pushed raw images straight to Blob (optimise-assets is a local publish step, not CI). Re-optimised in place (10MB -> 605KB): edmond 2.0MB->253KB, hugo 2.8MB->59KB, yoann 3.1MB->53KB, jeanne 1.8MB->240KB Jeanne's original was an S3 InvalidToken XML (failed Notion fetch), not an image; replaced with the real photo. All re-uploaded to the same Blob paths so frontmatter URLs are unchanged.
Contributor
|
🔍 Preview: https://website-llnw8k4l3-ocobo-22231b32.vercel.app Built from website |
displayOrder is now a mandatory non-skippable gate even when other fields are prefilled from a source — the Notion Organigramme has no order column, so it stays missing after prefill and was silently dropped (PR #73). Image downloads now verify the file is actually an image (file --mime-type) and use curl -f: an expired S3 URL returns a 200 XML error that curl saved as the avatar, shipping a corrupt image for Jeanne in PR #73.
This was referenced Jun 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
PR #73 (Edmond, mergée aujourd'hui) a introduit deux régressions. Ce correctif les traite et ajoute les garde-fous pour empêcher la récurrence.
Problème 1 — la section équipe ne s'affiche plus (critique)
Les 4 nouveaux membres n'avaient pas de
displayOrder. Le schéma du site (MemberFrontmatterSchema) le rend obligatoire etfetchMultiplefait du fail-fast : un seul fichier invalide fait tomber toute la liste d'équipe (régression identique à #59).➡️
displayOrder: 13–16ajouté à edmond / hugo / jeanne / thomas (ordre alpha par prénom, réordonnable).Problème 2 — images non optimisées + avatar corrompu
optimize-assetsest une étape locale du fluxpublish-content, pas la CI ; la PR #73 a poussé les images brutes (2–3 MB) directement sur Blob.➡️ Ré-optimisées en place (10 MB → 605 KB) et ré-uploadées sur les mêmes chemins Blob (URLs frontmatter inchangées) :
➡️ Avatar de Jeanne : l'original était un XML d'erreur S3 (
InvalidToken, fetch Notion échoué) — pas une image. Remplacé par la vraie photo.Prévention (pour ne pas re-régresser)
fix(schema):displayOrderrendu obligatoire dansteam-member.schema.js→pnpm validate/CI bloque désormais un membre sans ordre (c'était le trou qui a laissé passer fix(team): add displayOrder to clementine-du-pradel + harden skill #59 et feat(team): add Thomas Sionville, Jeanne Hebben, Edmond de Maistre, Hugo Moulon + update Yoann photo #73). + test de rejet.fix(new-content):displayOrder= garde-fou non-skippable même quand les autres champs viennent d'une source (l'Organigramme Notion n'a pas de colonne d'ordre) ; et les téléchargements d'images sont validés (file --mime-type+curl -f) pour rejeter les réponses d'erreur S3 sauvées comme avatar.Checks
pnpm validate✅pnpm test✅ (175/175, +1 nouveau)Encore hors scope
bio.endes 4 nouveaux membres sont en français (copie dufr) — à traduire séparément.