Les légendes des médias ne sont plus jamais affichées sous les images des
annonces et des séances. Le titre de l'image s'affiche uniquement quand
« Afficher le titre des images en légende » est cochée ; sinon, aucune
légende. WordPress remplit automatiquement la légende à l'upload à partir
des métadonnées EXIF/IPTC du fichier (ex. « Screenshot » pour les captures
macOS), ce qui faisait apparaître un texte malgré la case décochée.
Les <div></div> vides en fin de corps creusaient désormais un espace avant
les mots-clés : masquées via :has(~ …), sélecteur passé en @at-root
interpolé car Ruby Sass 3.7 supprime sinon silencieusement le :has().
- Accueil : bouton « Toutes les manifestations scientifiques » (au lieu de
« Tous les événements »), titre de la page cible
- Accueil : diaporama Ouvrages et revues trié par date d'événement /
de publication (thalim_event_date_order) et non par date de création
- Admin : bloc « Type d'annonce » de retour dans la colonne de droite —
le groupe Pods s'appelle désormais `categorie`, la metabox est donc
#pods-meta-categorie
- Pages membres : « Mis à jour le » lit la date de dernière modification
du profil (user meta thalim_profile_updated, posée sur profile_update et
à la sauvegarde Pods) au lieu de user_registered (date de migration) ;
ligne masquée tant que le profil n'a pas été réenregistré
- Single : interligne et espacement des corps collés depuis un webmail
(<div> par paragraphe, <div></div> vides) — SCSS seulement, CSS à compiler
Les règles `.scroll-spinner` et leurs keyframes étaient enfermées dans le
bloc `/* … */` legacy de `_category.scss` : Sass recopie ces commentaires
verbatim, les trois points n'avaient donc aucun style et restaient
invisibles pendant le chargement AJAX. Bloc sorti du commentaire (le
legacy reste en place), points allégés (5 px, gris) et marge haute
élargie.
Le modifieur `--reserve` réserve la place en permanence et n'anime que
l'opacité, au lieu de basculer `display` : plus de saut de mise en page
ni à l'apparition ni à la disparition. `infiniteScroll.js` bascule
désormais la classe `is-loading`.
Le `rootMargin` de l'observer passe à 700 px pour que la requête parte
plus tôt, et le loader de l'agenda est supprimé (markup + JS).
Claude-Session: https://claude.ai/code/session_01WQLwtNFa1LNaN7QTAbYkZx
Le premier item du popover était grisé en dur (`:first-of-type`), donc
affiché comme actif quel que soit l'axe courant. La classe `is-active`
est désormais posée en Twig sur l'axe actif (ou sur « Tous les axes »
hors mode taxonomie), et le style suit cette classe.
Ajout d'un hover en `background-image` (calque translucide) plutôt qu'en
`background-color`, pour un assombrissement identique sur les lignes
blanches et grises du zébrage.
Claude-Session: https://claude.ai/code/session_01WQLwtNFa1LNaN7QTAbYkZx
Avec la structure de permaliens /%category%/%postname%/, la règle
(.+?)/([^/]+)(?:/([0-9]+))?/?$ lit un dernier segment numérique comme un
numéro de page : l'article répond 404 tout en restant listé partout.
Deux chemins produisaient un tel slug :
- un titre vide à la première publication — le cœur retombe alors sur l'ID
du post et ne régénère plus jamais le slug ensuite, même titre corrigé ;
c'est ce que provoquait post-title-required.php, qui laisse le post
s'écrire en publish avant d'annuler son statut ;
- un titre légitimement numérique (« 1917 »).
- inc/post-slug-guard.php : filtre wp_unique_post_slug limité à post/page,
suffixe les slugs purement numériques (1917 → 1917-2). Les nav_menu_item
et attachments, dont les slugs numériques sont normaux, ne sont pas touchés.
- pods-save-error-handler.php : l'annulation de statut vide aussi post_name
quand le titre est vide, pour qu'il se régénère depuis le vrai titre.
Les deux articles déjà touchés en prod restent à re-sluguer à la main.
Claude-Session: https://claude.ai/code/session_011w7RzAHv4r1Yahnm2NwDDG
Le champ adresse (single + séances) était rendu brut : les retours à la ligne
saisis au back-office n'apparaissaient pas. Application de nl2br + esc_html à la
source (les templates le rendent en |raw), pour afficher les adresses sur
plusieurs lignes tout en gardant la sortie échappée.
Le verrouillage de la catégorie sur « Séance de séminaire » était attaché via
$(window).on('load') depuis $(document).ready. Dans l'iframe de la modale Pods,
l'événement load est déjà émis quand ce code s'exécute, donc le handler ne se
déclenchait jamais (révélé par un changement de timing de chargement WP/jQuery).
Exécution immédiate si document.readyState vaut déjà 'complete', sinon attente
de load comme avant.