Audit complet de mise en forme — Liste à puces/numérotée (4e élément)

Implémente toutes les options manquantes identifiées pour les listes :
typographie complète, style/position/couleur/taille de puce (validés
selon le kind), puce personnalisée en SVG pour les listes à puces,
padding uniforme par élément (nouveau, il n'y en avait aucun), espacement
entre éléments réglable, et tous les attributs de boîte partagés sur la
liste entière. Bordure/fond/padding par élément individuel et sous-listes
imbriquées volontairement différés (portée actée avec l'utilisateur
avant implémentation : transformeraient le stockage des éléments en
objets structurés, chantier bien plus lourd).

Trois ajouts transversaux bénéficiant à plusieurs éléments : sections
"Contenu"/"Conteneur" dans tous les panneaux de propriétés, alignement
vertical du contenu dans son bloc (Titre/Paragraphe/Liste/Image
légendée), et une option pour retirer un thème appliqué ("Aucun modèle"
dans la modale, avec une nouvelle fonction db.remove_document_theme).

Quatre bugs réels trouvés et corrigés en chaîne pendant la validation
avec le thème "Sécurité incendie" : un badge de thème s'affichait
au-dessus du texte au lieu d'à côté ; le correctif a d'abord fait
disparaître les puces/numéros natifs de TOUTES les listes (bug plus
grave que celui corrigé) ; puis un marqueur natif redondant apparaissait
à côté du badge du thème ; puis une règle CSS site-large de spécificité
supérieure empêchait silencieusement ce dernier correctif. Chaque étape
vérifiée par navigateur automatisé sur un support jetable.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-26 15:13:14 +02:00
co-authored by Claude Sonnet 5
parent 8f879f6321
commit 4db1269348
17 changed files with 1080 additions and 34 deletions
+2
View File
@@ -80,6 +80,7 @@ from .supports.create_support import create_support
from .supports.delete_support import delete_support
from .supports.get_document_theme import get_document_theme
from .supports.list_supports import list_supports
from .supports.remove_document_theme import remove_document_theme
from .supports.set_document_theme import set_document_theme
from .supports.support_dir import support_dir
from .supports.support_meta import support_meta
@@ -122,6 +123,7 @@ __all__ = [
"support_meta",
"delete_support",
"get_document_theme",
"remove_document_theme",
"set_document_theme",
"ONBOARDING_TYPES",
"DEFAULT_ONBOARDING_TYPE",
+2
View File
@@ -9,6 +9,7 @@ from .delete_support import delete_support
from .ensure_document_pages_schema import ensure_document_pages_schema
from .get_document_theme import get_document_theme
from .list_supports import list_supports
from .remove_document_theme import remove_document_theme
from .set_document_theme import set_document_theme
from .support_connection import connect_support, install_support_teardown_safety_net
from .support_dir import support_dir
@@ -25,6 +26,7 @@ __all__ = [
"get_document_theme",
"install_support_teardown_safety_net",
"list_supports",
"remove_document_theme",
"set_document_theme",
"split_slug",
"support_dir",
+15
View File
@@ -0,0 +1,15 @@
from .support_connection import connect_support
def remove_document_theme(slug: str) -> None:
"""Retire le thème appliqué (retour utilisateur du 26/09/2026 :
"aucun modèle" dans la modale doit "revenir à un document de base")
— supprime la LIGNE `_meta` plutôt que d'y stocker une valeur vide,
pour que get_document_theme continue de renvoyer `None` (son
contrat documenté : "aucun thème n'a jamais été appliqué"), jamais
une chaîne vide qui violerait silencieusement ce contrat pour tout
appelant qui compare à `None`."""
conn = connect_support(slug)
conn.execute("DELETE FROM _meta WHERE key = 'theme'")
conn.commit()
conn.close()