claude/compassionate-wing-ab5974 #64

Merged
nicolas merged 5 commits from claude/compassionate-wing-ab5974 into main 2026-05-15 22:39:48 +02:00
Owner
No description provided.
fix: les snapshots 'Approved by' étaient affichés dans la timeline de toutes
les sections. Correction par ajout d'une colonne section_id dans snapshots :
les snapshots d'approbation sont maintenant liés à leur section, et la vue
section filtre correctement (section_id IS NULL = checkpoint global conservé).

feat: HistoryPanel repensé avec deux onglets Document / Section.
- Document : timeline globale chronologique de tous les événements (appro,
  création, gel, review) avec badge de section coloré sur chaque entrée.
- Section : vue isolée pour la section active (comportement précédent, corrigé).
  Bascule automatique vers Section au clic dans le panneau gauche.
Lignes vides : ajout de lintOnLoad() — après la sync Yjs, si l'éditeur
a déjà du contenu (Yjs avait des paragraphes vides accumulés), on applique
lintContent et on dispatche une transaction normale (propagée à Yjs + DB).
Avant, lintContent ne s'appliquait qu'au save ou si Yjs était vide.

Curseur pick mode : les paragraphes avec data-para-id mais sans data-para-num
(bloc vide ProseMirror, ou section sans stream) recevaient cursor:not-allowed
— remplacé par un simple estompage (opacity 0.35). Les blocs vides trailing
(br:only-child) sont rendus quasi-invisibles et non-cliquables. Le signe
interdit n'apparaît plus dans les sections articles en mode pick.
Éditeur : suppression du marginLeft: depth*28 sur les sections — l'espace
central est toujours pleine largeur quel que soit le niveau d'imbrication.
La hiérarchie reste visible via le titre (h2/h3/h4) et le panneau gauche.

Refs externes → footnotes (deux points d'entrée) :
- Panneau droit (Refs) : deux boutons par référence quand un éditeur est actif
  · ↙ badge inline (comme la toolbar)
  · [n] insère une footnote dont le texte est la citation formatée (code — titre)
- Popover footnote : bouton '📎 From refs' ouvre un mini-picker filtrable ;
  cliquer une ref remplit le champ texte avec la citation complète.
languageBadge: 'EN' ajouté au style eu_commission — déclenche le pied de page
'EN │ N │ EN' avec tab stops centré/droite (était 'Page N / Total').

En-tête EU Commission : 'EN [tab droite] EN' au lieu du titre du document,
pour correspondre au format officiel des décisions (badge langue sur les deux
bords, pas de titre en en-tête).

decision_subhead : case ajouté dans renderEuPara() — rendu bold+italic,
aligné gauche avec espacement h3 (était paragraphe justifié sans style).
lintOnLoad nettoyait les paragraphes vides accumulés dans Yjs, mais
déclenchait aussi un autosave qui pouvait écraser le contenu DB du template
avec l'état Yjs courant (potentiellement obsolète).

Correction : tag 'lintOnLoad' sur la transaction → onUpdate ignore
l'autosave. Le nettoyage Yjs reste effectif (transaction normale,
non-isChangeOrigin), mais la DB reste autoritaire jusqu'à la prochaine
vraie édition utilisateur.

Résultat : la création de documents depuis un template affiche à nouveau
le contenu correct.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/docforge_ynh!64
No description provided.