Commit Graph
289 Commits
Author SHA1 Message Date
IliesAllaliandClaude Fable 5.1 77eef8e8a0 placement(remariage): l'enfant de la lignée reste près de sa fratrie, la carte au-dessus du conjoint
- Sur une chaîne de remariage où l'enfant de la lignée est à un bout, toute la suite de conjoints (ex-époux
  compris) part du côté de la belle-famille et l'enfant reste du côté de ses frères et sœurs.
- La rangée des parents n'est plus réservée que sur la moitié de l'enfant : la carte de famille peut se
  poser juste au-dessus du conjoint.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 18:29:39 +02:00
IliesAllaliandClaude Fable 5.1 e2af4fb580 placement(familles): côté du conjoint, carte au plus près, bandeau et carte des familles sans fondu
- Un cluster se range du côté où son conjoint se trouve dans la lignée principale (seconde passe si la
  première construction l'avait mis de l'autre côté) ; le couple se tourne vers sa famille.
- La carte de famille se pose au plus près au-dessus du conjoint, en préférant le côté de sa famille.
- La carte inverse réserve sa place sous l'écho du conjoint dans le cluster (plus de chevauchement).
- La reconstruction d'un cluster ne laisse aucune trace (clusters imbriqués, chaînes posées, arêtes
  externes) : 0 chevauchement sur l'arbre réel, 8 à 0 sur asc-3.
- Bandeau à l'écran avec le nom et la taille de la famille où l'on est.
- Carte des familles : bascule nette sous une échelle, sans fondu ni glissement ; famille principale au
  milieu, familles par alliance en colonne de leur côté, traits de bloc à bloc avec les prénoms du mariage.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 17:54:20 +02:00
IliesAllaliandClaude Fable 5.1 c3d0ac30e4 Carte des familles v2 : blocs calculés par le placement, repli net, traits de bloc à bloc
Retours de Patch : pas d'animation, familles rangées comme sur le schéma, lien
plus naturel, bloc calculé dans l'arbre et non dessiné par-dessus.

- Le placement donne à chaque famille sa place réelle et sa place sur la
  carte (autour de la famille principale, en coordonnées de l'arbre).
- Passé le seuil de dézoom, une famille par alliance se replie net en son
  bloc, qui glisse de sa place réelle vers sa place sur la carte à mesure
  qu'on dézoome ; plus bas, la famille principale se replie aussi. Plus de
  fondu, plus de clic sur les blocs.
- Les traits entre familles vont de bord à bord, avec les deux prénoms du
  mariage. Le pont d'une carte de famille est un fil plein.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 17:19:15 +02:00
IliesAllaliandClaude Fable 5.1 71c8e1a93d Carte des familles : au dézoom, chaque famille devient une tuile
Maquette J retenue par Patch le 19/10 (« quand on dézoome pas mal, une
famille devient un gros bloc »). Entre les échelles 0,3 et 0,2 l'arbre
s'efface et les tuiles apparaissent : une par famille (la lignée principale
et chaque cluster), de taille constante à l'écran, avec le nom, six
portraits et le nombre de personnes ; un trait par mariage entre familles,
avec le prénom de la personne qui relie. Les tuiles se rangent autour de la
famille principale à distance d'écran fixe, quel que soit l'éloignement réel
des familles sur la toile. Un clic sur une tuile s'approche de la famille
(même mécanique que les pastilles). Le placement expose `result.families`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 17:11:22 +02:00
IliesAllaliandClaude Fable 5.1 fb02139929 Placement : carte de famille et pont, les grosses belles-familles en cluster
Patch a écarté le plan arrière (« beaucoup trop d'infos, 150 personnes en
plus, illisible ») et retenu la maquette A. Une belle-famille plus large que
deux écrans devient un cluster dessiné à part, sur les mêmes rangées, par le
même placement. À sa place, au-dessus du conjoint, une carte de famille
(nom, quatre portraits, nombre de personnes) reliée à lui par un pont en
pointillé. Dans le cluster, le conjoint apparaît dans sa fratrie (écho de
la même personne) avec, sous lui, la carte inverse de la lignée qu'il a
rejointe. Un clic sur une carte mène de l'autre côté (même mécanique que
les pastilles). Le fil des parents vers le conjoint du plan principal est
masqué, il va à l'écho.

Nouveau type de nœud « family » dans le placement et le rendu, deux
constantes de carte, deux textes anglais. Le plan arrière et son calque
sont retirés.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 16:57:01 +02:00
IliesAllaliandClaude Fable 5.1 5a069c25c5 Placement : prototype des deux plans, les grosses belles-familles en arrière-plan
Maquette F retenue par Patch le 19/10 au soir. Une belle-famille plus large
que deux écrans ne se colle plus devant : elle passe sur un plan arrière,
dessinée par le même placement, à l'échelle 0,55, ancrée pour que la place
fantôme de son conjoint coïncide avec lui (ses parents juste au-dessus de
lui, en retrait). Le plan avant garde ses rangées compactes.

Rendu : le plan arrière est dessiné d'abord sur un calque (couples, fils,
nœuds à leur échelle), composé sous le plan avant à 42 % avec un léger flou.
Le rayon des nœuds, la hauteur des lignes de fratrie et le culling suivent
l'échelle du nœud. Les filiations du plan arrière et le fil des parents
arrière vers leur enfant avant ne comptent ni pour les renvois ni pour les
niveaux de lignes.

Banc : le plan avant seul est mesuré, le nombre de personnes en arrière est
compté. Famille réelle de 385 : 202 personnes derrière, plan avant à 0
croisement et 7 fils de plus d'un écran (contre 9 et 15). Prototype : pas
encore de survol, d'échange des plans ni de masquage sous les portraits.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 16:47:14 +02:00
IliesAllaliandClaude Fable 5.1 b4df1a6b69 Placement : belle-famille à côté de son enfant, jamais au-dessus de la place des parents
Retours de Patch sur l'arbre réel (385 personnes) : de longs fils et des
parents séparés de leurs enfants.

- La plus grande lignée est construite d'abord (sinon une petite branche
  aspirait toute la lignée principale comme « famille du conjoint »).
- Pour remonter au sommet d'une famille, on passe par le sang de la
  référence quand un membre en est : on retombe sur la lignée principale,
  rien à attacher, la seconde filiation reste un renvoi.
- Une famille reliée deux fois dont le fil devrait traverser plus d'un écran
  devient une pastille.
- La belle-famille change de côté si l'autre côté la rapproche d'un écran
  ou plus ; le couple se retourne avec elle.
- Si une belle-famille est poussée loin par les descendants du couple, le
  couple se décale au bord de sa rangée d'enfants, de son côté.
- Au-dessus de chaque couple, la place de ses propres parents est réservée :
  les parents du conjoint se posent à côté, pas dessus.
- Les parents qui évitent un obstacle sur leur rangée restent au-dessus de
  leurs enfants plutôt que de sauter de l'autre côté.

Témoins des 14 archétypes relus. Banc : arbre réel, pastilles 0,
croisements 9 ; arbre fictif de 265, pastilles 0, croisements 1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 16:05:06 +02:00
IliesAllaliandClaude Fable 5.1 6950a9c21d Placement : plus jamais d'îlot, belle-famille posée depuis sa place idéale
Retour de Patch sur un arbre de 265 personnes : les familles « posées à
part » (trop loin pour être collées) faisaient une rangée d'îlots reliés
par des pastilles. Plus aucune famille n'est posée à part : une famille
collée garde son fil, aussi long soit-il.

La belle-famille part de sa place idéale (parents juste au-dessus de
l'enfant) et est poussée vers l'extérieur : sur les rangées de l'enfant et
en dessous (sa fratrie et leurs descendants), au-delà de tout ce qui est
déjà posé, jamais sous la ligne d'une fratrie ; sur les rangées au-dessus
(ses ancêtres, de petits couples), au premier trou libre, à côté des autres
ancêtres. Plusieurs belles-familles du même côté s'emboîtent comme des
parenthèses. Une rangée de lignes de fratrie peut prendre cinq niveaux.

Banc : famille réelle de 385, pastilles 2 → 0 ; descendance fictive de
1 454, pastilles 17 → 0 ; les 14 archétypes passent leurs invariants.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 15:43:12 +02:00
IliesAllaliandClaude Fable 5.1 02177d93b3 Placement : remariage, chaque union au-dessus de ses propres enfants
Retour de Patch sur un arbre de 265 personnes : dans un remariage, la fille
de la seconde union partait au bout de la fratrie entière et la ligne de son
union passait au-dessus des enfants de la première.

- Les enfants de chaque union restent groupés dans l'ordre des unions ; une
  belle-famille va du côté de son union, jamais au-delà des demi-frères.
- La chaîne se cale pour que chaque union soit au plus près au-dessus de son
  groupe : on garde, parmi les alignements possibles, celui où les lignes
  débordent le moins au-dessus des autres groupes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 15:30:09 +02:00
IliesAllaliandClaude Fable 5.1 c0d057a675 Placement : la belle-famille au bout de la fratrie, l'enfant marié avec elle
Retours de Patch sur un arbre de 102 personnes : une famille de conjoint se
glissait dans un trou du contour entre deux frères, et celle d'un enfant du
milieu se posait entre lui et ses frères, sa ligne passant au-dessus d'eux.

- La famille d'un conjoint est construite par la chaîne de l'enfant puis
  posée par le bloc du dessus, au-delà de toute l'étendue de la fratrie,
  jamais dans un trou.
- L'enfant dont le conjoint amène sa famille va au bout de sa fratrie, de
  son côté (l'ordre de naissance s'efface pour lui, choix de Patch), et sa
  belle-famille se colle à lui sans survoler personne.
- Le côté est hérité de la lignée : toutes les belles-familles d'une branche
  vont du côté où la branche est au bord de l'arbre.
- Le couple ne se tourne vers la belle-famille que si elle est vraiment
  attachée (un cousin marié garde son orientation naturelle).
- Le fil d'une famille collée est toujours dessiné ; pastille seulement pour
  une famille posée à part.
- Niveaux des lignes de fratrie : une ligne qui en contient une autre passe
  au-dessus ; entre deux lignes qui se chevauchent, celle dont l'union est à
  l'extérieur passe au-dessus (son fil n'entre qu'une fois, à l'enfant collé).

Banc : sur l'arbre de 102 personnes, pastilles 2 → 0 et croisements 3 → 0 ;
famille réelle de 385, pastilles 4 → 2 ; témoins des archétypes relus.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 15:22:31 +02:00
IliesAllaliandClaude Fable 5.1 e4ee286920 Placement : un seul arbre, la famille d'un conjoint se colle à lui
Avant, la famille d'un conjoint (ses parents, sa fratrie, ses ancêtres)
était posée au premier créneau libre, souvent au bout de l'arbre, et la
filiation devenait une pastille « Voir ». L'arbre se lisait comme plusieurs
arbres reliés par des pastilles.

Maintenant chaque famille de conjoint est construite entière depuis son
ancêtre le plus haut et collée au conjoint, de son côté, en poussant les
voisins pour faire la place. Le conjoint est tourné vers l'extérieur de sa
fratrie ; sa propre fratrie est dessinée en miroir s'il faut qu'il finisse
au bout, contre le couple ; un enfant déjà dessiné ailleurs garde une place
fantôme dans l'ordre de sa fratrie pour le centrage. Les lignées de la
personne de référence sont dessinées d'abord (le sang gagne) ; une famille
reliée deux fois (cousins, deux grandes lignées) n'est dessinée qu'une fois,
l'autre filiation reste une pastille si son fil croiserait une famille ; une
famille qu'il faudrait pousser de plus d'un écran est posée à part. L'ordre
des lignées ne dépend plus des effectifs (rangée, année, identifiant).

Les lignes de fratrie s'emboîtent : la ligne d'une famille qui en entoure
une autre passe au-dessus (_railLift posé par le placement, plus de hachage),
plus aucune superposition.

Mesuré par le banc (tools/layout-bench) : pastilles 4 → 2 sur une famille
réelle de 385 personnes, 78 → 12 sur une descendance fictive de 1 454 ;
les 14 archétypes passent leurs invariants, Marc et Nadia et l'issue #67
sans aucune pastille ni croisement.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 14:47:32 +02:00
IliesAllaliandClaude Fable 5.1 1664fc0771 Témoins des archétypes toujours en LF (comparés octet pour octet par vitest)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 14:14:47 +02:00
IliesAllaliandClaude Fable 5.1 3be95b1a0f Banc du placement v2 : invariants, défauts sur le tracé réel, archétypes en texte, stabilité
Le banc mesure maintenant le code de production (computeBlockLayout), sans
écran, en quatre étages lus dans l'ordre et jamais additionnés :

- invariants qui doivent valoir zéro (chevauchement, couple non adjacent,
  fratrie coupée ou hors de l'ordre choisi, rangée différente de la génération
  de parenté recalculée ici, années de naissance qui redescendent) ;
- défauts comptés sur la géométrie vraiment dessinée (renvois, lignes de
  fratrie au-dessus d'un portrait étranger, croisements, lignes et foyers plus
  larges qu'un écran, proches de la référence visibles dans un écran) ;
- quatorze archétypes (ordre d'une fratrie, issue #67, branche courte, Marc et
  Nadia, petit conjoint, fratrie de douze, remariage, cousins, oncle et nièce,
  parent seul, adoption, deux familles, belle-famille, trois familles
  enchaînées) rendus en texte, témoins dans __snapshots__/archetypes, testés
  par vitest ; deux échecs connus (belle-famille, trois-belles-familles) en
  attendant la règle « le sang de la référence garde son enfant » ;
- stabilité : retirer une feuille ne devrait déplacer que son foyer.

Les modèles ELK écartés en septembre, elk-common et l'ancienne mesure sur
segments droits sont supprimés, avec la dépendance elkjs. Le générateur
d'arbres fictifs (gen-fr.mjs) entre dans le dépôt ; les arbres réels restent
dans fixtures/, ignoré par git.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 14:14:03 +02:00
IliesAllaliandClaude Fable 5.1 d1e87d0eec Placement : rangées = génération de parenté depuis la personne de référence
La génération était comptée depuis le haut de chaque branche (profondeur sous
l'ancêtre le plus ancien documenté). Une branche courte mariée dans une branche
longue n'était tirée vers le bas qu'à une seule personne : ses parents, frères et
cousins restaient en haut, 3 à 6 rangées au-dessus de leur vraie génération
(26 % des personnes sur un arbre de 385, 35 % sur une descendance fictive de
1 454). L'issue #67 en était le symptôme en petit.

Les conjoints sont soudés, puis chaque foyer est visité en largeur depuis le
foyer de la personne de référence (rootPersonId, sinon la personne la plus
entourée) : parents une rangée au-dessus, enfants une rangée en dessous. Une
filiation en conflit (cousins de degrés différents, oncle et nièce) est comptée
dans generationConflicts et dessinée telle quelle. Une famille non reliée est
calée par ses années de naissance, sinon posée en haut.

Vérifié sans écran : sur les arbres de test, rangée dessinée = génération de
parenté pour 100 % des personnes hors conflits, et les médianes des années de
naissance montent de 25 à 35 ans par rangée. Sur le tracé réel, croisements
51 → 22 (descendance fictive), 129 → 25 (pres2020), 362 → 115 (royal92).

Closes #67

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-19 14:01:27 +02:00
IliesAllali ae8b473a25 Merge remote-tracking branch 'origin/main' into fix/generation-parente 2026-10-19 13:50:56 +02:00
IliesAllali c3bf4d2f64 Merge pull request #106 from IliesAllali/feat/fiche-glisser-fermer
Fiche : fermer en glissant vers le bas sur téléphone
2026-10-19 13:12:32 +02:00
IliesAllali 5adc48ba27 Merge pull request #110 from IliesAllali/fix/recherche-sous-bandeau
Recherche : résultats touchables en mode modification sur téléphone
2026-10-19 12:53:39 +02:00
IliesAllaliandClaude Opus 5.5 1ceec79d4f fix(recherche): resultats touchables en mode modification sur telephone
Sur telephone, la banniere « Mettre a jour l'arbre » descend sous le champ de
recherche et passait devant ses resultats : on ne pouvait plus toucher une
personne trouvee. La recherche ouverte passe devant la banniere et le bouton
« Creer mon arbre », les panneaux d'ajout restent devant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:51:00 +02:00
IliesAllali a88d06c513 Merge remote-tracking branch 'origin/main' into feat/fiche-glisser-fermer 2026-10-19 12:44:06 +02:00
IliesAllali 4483c88185 Merge pull request #108 from IliesAllali/feat/recadrage-forme
Recadrage : choisir la forme du cadre
2026-10-19 12:43:28 +02:00
IliesAllali fcd8ed51af Merge pull request #109 from IliesAllali/feat/plus-photo-direct
feat(arbre): clic sur « + photo » lance directement l'ajout de la photo
2026-10-19 12:36:35 +02:00
IliesAllaliandClaude Haiku 5.5 a2ce3117da feat(arbre): clic sur « + photo » lance directement l'ajout de la photo
Sur l'arbre, un clic ou un tap sur le cadre « + photo » (portrait vide,
propriétaire) ouvre le sélecteur de fichiers tout de suite, dans le geste
de l'utilisateur, puis la fenêtre de recadrage. La fiche s'ouvre aussi.

- renderers : zones « + photo » enregistrées au dessin, comme les pastilles de renvoi
- hook de clic : la zone passe avant la sélection de la personne
- administrateur avec Immich configuré en modification : le menu des sources
  s'ouvre dans la fiche, comme le badge
- PersonCard : l'effet qui lit la config Immich ne dépend plus de l'identité
  de onImmichChange (recréée à chaque rendu, il refermait le menu)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 12:33:30 +02:00
IliesAllaliandClaude Opus 5.5 92c1f25efb feat(recadrage): choisir la forme du cadre (rond, carre, polaroid, vertical, horizontal)
Le cadre suivait le format de la photo : une photo couchee donnait toujours un
cadre couche. Le recadrage propose maintenant les cinq formes de l'arbre, en
dessin, et la forme choisie est gardee avec le cadrage (avatarCrop.shape, sans
migration). L'arbre la respecte ; sans choix, rien ne change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:28:39 +02:00
IliesAllali 6c787fb0b8 Merge pull request #107 from IliesAllali/fix/menu-compte-arbre-courant
Menu du compte : l'arbre en cours n'est plus grisé
2026-10-19 11:12:26 +02:00
IliesAllaliandClaude Haiku 5.5 eb3db5f7c5 Menu du compte : l'arbre en cours n'est plus grisé
Dans « Mes arbres », l'arbre en cours s'affichait grisé comme un élément désactivé. Il garde maintenant sa couleur normale, avec une coche terracotta, et reste non cliquable.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 11:09:04 +02:00
IliesAllaliandClaude Haiku 5.5 6faaefebee Fiche : fermer en glissant vers le bas sur téléphone
La feuille de la fiche (PersonCard) se ferme en glissant sa poignée ou son en-tête vers le bas, comme le menu de la barre. Le geste est factorisé : logique pure dans utils/sheetDrag.js, hook dans hooks/useSheetDrag.js, utilisé aussi par NavMenu (poignée, seuil de 70 px inchangé).

- Le geste part seulement de la poignée et de l'en-tête. Jamais d'un champ de saisie, d'un libellé ni pendant une sélection de texte. Le contenu des onglets défile comme avant.
- La feuille suit le doigt (transform), ne monte jamais au-delà de sa position de repos.
- Fermeture au-delà d'un tiers de la hauteur, ou sur un lâcher rapide vers le bas. Sinon retour court.
- La fermeture passe par le même chemin que la croix (enregistrement automatique compris). Si l'enregistrement est refusé, la fiche revient et affiche son erreur.
- Mode feuille seulement (PHONE_QUERY et largeur de la feuille CSS). Sur ordinateur, rien ne change.
- prefers-reduced-motion respecté.

Tests : logique du geste (zones, direction, seuil, vitesse) en vitest. Recette Playwright iPhone 13 émulé, gestes tactiles CDP : fermeture par la poignée, retour après un petit glisser, lâcher rapide, défilement du contenu sans fermer, pas de geste depuis un champ, enregistrement puis fermeture, ordinateur inchangé, croix.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 11:06:35 +02:00
IliesAllali 0d08b0f148 Merge pull request #100 from IliesAllali/feat/barre-c
Barre : une pilule à droite, menus Ajouter/Corriger et compte (variante C)
2026-10-19 10:43:10 +02:00
IliesAllali dfc73858af Merge remote-tracking branch 'origin/main' into feat/barre-c
# Conflicts:
#	frontend/src/components/navbar/ContextualNavbar.css
2026-10-19 10:27:03 +02:00
IliesAllali 86e1d959a7 Merge pull request #101 from IliesAllali/feat/enregistrement-auto
Fiche : enregistrement automatique en quittant
2026-10-19 10:23:06 +02:00
IliesAllaliandClaude Opus 5.5 a54bcf9f18 fix(placement): rangées stables, couples tournés vers leurs familles, fil libre malgré les conjoints de la fratrie
- Rangées : le calage des ancêtres sans parents tourne jusqu'à stabilité. Un enfant descendu par son
  conjoint fait descendre ses parents et sa fratrie, au lieu de pendre plusieurs rangées sous eux.
- Couples : quand les deux conjoints ont leurs parents dans l'arbre et sont chacun du côté de la famille
  de l'autre, on les intervertit (même place, l'union au milieu). Les deux fils ne se croisent plus.
- Fil : les conjoints des frères et sœurs ne comptent plus comme une autre famille dans le test du renvoi.
  Un petit conjoint collé à un frère faisait passer le fil en pastille « Voir les parents ».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 10:21:23 +02:00
IliesAllali 29324252a7 Merge pull request #104 from IliesAllali/fix/barre-libelles-courts
Barre : plus de libellé en double sur ordinateur
2026-10-19 10:19:43 +02:00
IliesAllaliandClaude Opus 5.5 7fbf5beab0 fix(barre): le libellé court de la famille ne s'affiche plus sur ordinateur
Il n'était caché que dans le bloc téléphone : sur ordinateur on lisait « Ajouter un souvenir Souvenir ».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 10:17:25 +02:00
IliesAllali 6fd76ff7a4 Merge pull request #102 from IliesAllali/fix/vie-sans-date
Onglet Vie : une union sans date à sa place logique
2026-10-19 01:24:34 +02:00
IliesAllaliandClaude Opus 5.5 68ac2fa8f8 fix(vie): une union sans date a sa place logique, plus apres le deces du conjoint
Un mariage sans date tombait tout en bas de l'onglet Vie, apres le deces du
conjoint, ce qui ne voulait rien dire. Il se place maintenant juste avant le
premier enfant du couple, sinon avant la fin de l'union ou le deces du
conjoint. Aucune annee n'est inventee : colonne vide et « date inconnue ».
Seul ce qui n'a aucun repere reste en bas, et tout moment sans date le dit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 01:22:07 +02:00
IliesAllaliandClaude Haiku 5.5 d4416ef2ee barre : partager, souvenir propriétaire, aide pour tous, nettoyage
- Rond du compte : « Partager l'arbre » ouvre la fenêtre « La famille
  participe » (propriétaire).
- « Propositions à relire » ouvre la même fenêtre et la fait défiler
  jusqu'à la section (ancre #contrib-propositions).
- « Un souvenir » disponible pour le propriétaire, même parcours que
  le membre (choix de la personne, puis souvenirs).
- Aide : HELP_URL passé à tous les rôles.
- Suppression de .pz-lang--nav (plus aucune référence).

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 01:11:05 +02:00
IliesAllaliandClaude Haiku 5.5 a25f263451 fiche: enregistrer automatiquement en quittant la fiche
Les modifications en cours d'une fiche ne sont plus perdues quand on
change de personne, ferme la fiche, sort du mode modification, ouvre
un souvenir, ajoute une personne ou envoie les contributions.

- La fiche enregistre par le même chemin que « Enregistrer » (onSave),
  pour la personne quittée. Un échec ou une validation la garde ouverte
  avec le message d'erreur.
- Invité en contribution : les changements vont dans le brouillon, puis
  partent avec « Envoyer ».
- Un petit message confirme l'enregistrement. Rien n'est enregistré
  quand rien n'a changé, ni en démo.
- Un second enregistrement pendant l'envoi reçoit la même promesse
  (utils/saveOnLeave.js), sans double appel.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 01:08:26 +02:00
IliesAllaliandClaude Haiku 5.5 7d123d66ef barre: une pilule à droite, menus « Ajouter / Corriger » et compte
Variante C validée : une seule pilule en bas à droite (+ et compte), le
zoom reste à gauche. Le « Plus » et le second crayon disparaissent.

- « + » : Ajouter (souvenir, personne, mot ou dessin) et Corriger
  (proposer des changements, modifier l'arbre, modifier la démo).
- Rond du compte : identité, propositions à relire (pastille), arbres,
  paramètres, aide et langue sur une ligne, déconnexion. Sans compte :
  se connecter, créer mon arbre, aide, langue.
- Téléphone (moins de 768 px ou pointeur grossier) : feuille qui monte
  du bas, voile, poignée glissable. Ordinateur : popover ancré à la pilule.
- Barre d'annotation mobile conservée ; « Ajouter » et « Plus » ne font
  plus qu'un bouton.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 01:06:15 +02:00
IliesAllali e98125b796 Merge pull request #99 from IliesAllali/fix/test-limite-connexion
Test : délai de 20 s pour la limite des connexions
2026-10-19 00:22:08 +02:00
IliesAllali bc5c31f594 Merge pull request #97 from IliesAllali/fix/audit-1-1
Audit du 18/10 : import GEDCOM, transactions, arbre au repos, délai réseau, visites, sauvegardes
2026-10-19 00:21:23 +02:00
IliesAllaliandClaude Opus 5.5 b1a7a2f489 test: délai de 20 s pour le test de limite des connexions
Onze connexions avec vérification bcrypt dépassaient parfois 5 s sur la CI : quatre échecs le 18/10 sans lien avec les changements.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:19:58 +02:00
IliesAllali d44aae933b Merge pull request #96 from IliesAllali/feat/crayon-invite
Crayon pour les invités : proposer des changements
2026-10-19 00:14:30 +02:00
IliesAllali 14b5f0e99f Merge pull request #98 from IliesAllali/fix/infos-annee-seule
Fiche : un champ vidé pendant la saisie reste affiché
2026-10-19 00:11:33 +02:00
IliesAllaliandClaude Opus 5.5 6fa86d6716 fix(ci): le controle de restauration cree ses propres donnees
Le test de fumee supprime son arbre a la fin : le controle partait d'une base
sans arbre. Il cree maintenant un compte, un arbre et une personne par l'API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:11:28 +02:00
IliesAllaliandClaude Opus 5.5 85edf9ce2a fix(fiche): un champ vidé pendant la saisie reste affiché jusqu'à l'enregistrement
Avec l'onglet Infos qui n'affiche que les champs remplis (#93), vider un champ pour le retaper le faisait disparaître sous les doigts, et la frappe partait dans le champ suivant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:09:33 +02:00
IliesAllaliandClaude Haiku 5.5 6c5cacab0f fix(invite): libellés courts de la barre famille sous 420 px
Sous 420 px, « Ajouter un souvenir » et « Ajouter une personne » passaient
sur deux lignes : « Souvenir » et « Personne » tiennent sur une ligne. Le
libellé complet reste en aria-label et en title.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-19 00:08:21 +02:00
IliesAllaliandClaude Opus 5.5 217d503e20 fix(sauvegardes): restauration testee en CI, copie de la base avant migration en tout-en-un
- La CI joue les commandes de sauvegarde et de restauration du README sur une
  vraie installation compose (base videe, medias effaces) et verifie comptes,
  arbres, personnes, migrations et fichiers (tools/docker-restore-check.sh).
- README : restauration avec --if-exists, sinon pg_restore echoue sur une
  base vide. Sauvegarde avant chaque mise a jour, dite clairement.
- Image tout-en-un : copie de la base dans /data/backups avant d'appliquer une
  migration (5 gardees), demarrage arrete si la copie echoue.
- backup.sh : l'empreinte d'une archive de medias gardee disparaissait avec la
  rotation des fichiers d'empreintes, elle est recalculee.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:06:30 +02:00
IliesAllaliandClaude Opus 5.5 1504a1e124 fix(gedcom): import sans union d'une personne avec elle-meme ni boucle parent-enfant
Un fichier abime pouvait marier une personne a elle-meme ou faire de
quelqu'un son propre ancetre, ce que l'API refuse partout ailleurs. Le
controle se fait en memoire pendant l'import (les validateurs relisent tout
l'arbre a chaque lien), et la reponse compte les relations ecartees
(relationsSkipped).

Premier test de la route d'import.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:06:30 +02:00
IliesAllaliandClaude Opus 5.5 9c84bd0efc fix(visites): duree de conservation d'un an tenue, comptes supprimes anonymises
La purge des visites de plus d'un an ne passait qu'a l'ouverture de l'onglet
Visites par un administrateur : un arbre jamais consulte gardait tout. Elle
passe aussi a l'enregistrement d'une visite, au plus une fois par heure, pour
tous les arbres.

A la suppression d'un compte, ses visites d'autres arbres gardaient son
identifiant dans la cle du visiteur : elles restent comptees, sous une cle
anonyme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:06:30 +02:00
IliesAllaliandClaude Opus 5.5 51232d8150 fix(app): delai maximal sur les appels a l'API
Un reseau mobile qui decroche laissait l'app en chargement pour toujours.
30 s par appel, 5 min pour un envoi de fichier (corps de plus de 100 Ko),
3 min pour un import GEDCOM. Le message dit que le serveur ne repond pas.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:06:29 +02:00
IliesAllaliandClaude Opus 5.5 93307e41ab perf(arbre): la boucle d'animation ne recalcule plus rien au repos
Positions des noeuds et ensembles de recherche ou de chemin etaient recalcules
60 fois par seconde meme quand rien ne bougeait. Ils ne le sont plus que pour
une image a redessiner (ensemble de recherche construit a son changement).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 00:06:29 +02:00