Un enfant d'un membre qui porte le nom d'un onglet entre dans cet onglet (nom de naissance d'abord,
homonymes sans lien laissés dehors), avec son couple ; l'autre parent est estompé. Nouveau réglage
d'affichage : proches de l'autre côté à 0, 1, 2 ou 3 liens, 1 par défaut. Libellés des réglages
d'affichage réécrits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
share_copied quand le propriétaire copie le lien, le mot de passe ou le message d'invitation
(what, seasonal pour le message de Noël), ou crée le lien d'un co-gestionnaire (manager_invite).
Rien de ce qui est copié ne part. La page vie privée (fr, en) décrit maintenant tout ce que l'app
mesure : démo, modifications comptées sans leur contenu, propositions, partage.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L'événement ne partait que de la fenêtre d'envoi (App.jsx) : les raccourcis de la fiche passent par
handleSubmitContributionSession sans lui, d'où zéro proposal_sent en 60 jours pour deux propositions
relues. L'événement part maintenant de la fonction commune, après réponse du serveur, avec le statut
(pending, ou approved pour un co-gestionnaire).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le message d'invitation de décembre (SIGNUP_PROMPTS) propose d'enregistrer
une histoire de famille racontée à table, en plus des vieilles photos.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
minimatch < 11.0.1 (déni de service par amplification des globparts). Seul eslint
en dépend, outillage de dev ; Dependabot ne peut pas monter la version lui-même
(eslint demande ^10), d'où l'override. Lint, 359 tests, build, npm audit à 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le moment du couple arrivait bien chez les deux, mais ses souvenirs n'étaient cherchés
que parmi ceux de la fiche ouverte. L'onglet Vie et la fenêtre d'un moment du couple
lisent aussi les souvenirs du conjoint ; une photo du conjoint s'ouvre à son nom.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Même mot que les liens de parenté depuis #204 : « spouse » suppose un mariage,
« conjoint » non.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dans la démo, l'inscription n'était que dans le menu du rond de profil et dans un
lien après une modification. Elle devient le bouton noir de la barre du bas ;
« Modifier » reste à côté en clair (crayon seul sur téléphone) et quitte le noir.
« Créer mon arbre » quitte le menu du rond pour ne pas apparaître deux fois.
Seulement sur l'instance qui invite à s'inscrire (SIGNUP_PROMPTS, inscription
ouverte), sans compte, et pas dans la démo intégrée à la landing (?embed).
Clic suivi : create_account_clicked, via=demo-barre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Depuis l'accueil à deux choix (18/10), un visiteur sans session arrivé par
app.parenthese.io/?source=… tombait sur « Que voulez-vous faire ? » au lieu
de l'arbre d'exemple. Tous les liens de diffusion (presse, créateurs, groupes)
sont écrits sans ?demo, dont plusieurs déjà envoyés.
Sans session et avec ?source : la démo, comme avant. Sans paramètre : l'accueil
à deux choix reste. ?account=register et les liens de famille ne changent pas.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ordinal() : il manquait le $, un cousin au 4e degré s'affichait « {n}th cousin »
- Great-uncle et great-great-uncle, la forme courante, au lieu de granduncle
- « First cousin once removed », sans virgule
- Style du dépôt (guillemets simples, sans points-virgules)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seuls l'arbre et la fiche appliquaient le cadrage enregistré du portrait. Les miniatures
(auteur et « Sur la photo » dans la visionneuse, recherche, liens de la fiche, ajout d'un
proche, compte, menu du compte, choix d'un souvenir, recherche ailleurs) affichaient la
photo brute. Un composant commun, PortraitThumb, place l'image avec imagePlacement,
comme la fiche. Signalé par Phyll sur Discord (29/10).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Pour un enfant ou un frère, une virgule sépare les prénoms : une personne par prénom, mêmes liens,
nom et dates pour chacune (vides et doublons ignorés, 20 au plus). Parent et conjoint gardent un seul
prénom. Vaut pour le propriétaire, la famille (brouillons) et la démo ; la bulle dit « Paul, Marie et
Jean … sont sur l'arbre ». Sur téléphone, aucune fiche ne s'ouvre et la caméra cadre toute la fratrie
(focusPersons dans Galaxy, qui attend la remise en place de l'arbre). person_added porte batch.
Le corps de l'ajout passe dans addOne : relire avec git diff -w.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
- La famille sans compte trouve « Faire le mien » en bas du menu Ajouter ; la ligne quitte le menu du
compte. Après l'inscription, l'arbre de la famille est rattaché et l'assistant de création s'ouvre.
- Démo : les messages des liens et la bulle après « Enregistrer et quitter » proposent l'inscription
(lien cliquable, message gardé 6 s). La démo lit aussi les options de l'instance.
- Message d'invitation de Noël du 1er décembre au 6 janvier.
- SIGNUP_PROMPTS (API, /auth/options.signupPrompts) : éteint par défaut, allumé pour l'instance hébergée
dans ecosystem.config.cjs, toujours coupé quand l'inscription est fermée. README, .env.example, OpenAPI.
- Mesures : via sur create_account_clicked et account_screen_viewed, source arbre-partage ou demo
quand l'adresse n'en porte pas.
- « Quitter l'édition ? » dans la démo ne dit plus que les modifications restent sur l'appareil :
la démo n'enregistre rien et tout disparaît au rechargement.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Un lien d'arbre ou de démo collé dans WhatsApp ou Messenger s'affichait sans
image, avec pour seul texte la description destinée aux moteurs. L'app sert
désormais les mêmes balises pour toutes ses adresses : un titre, une phrase et
l'image de la démo (copie de celle de la landing). Rien ne vient de l'arbre
partagé, aucun nom de famille ne part chez les robots d'aperçu.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Avant, « + Enfant » sur la fiche d'Isabelle (un seul conjoint, Robert) rattachait l'enfant à Isabelle seule :
il pendait sous elle et un parent « Inconnu », loin de ses frères et sœurs. Il passe maintenant par les liens
du couple (getCoupleParentLinks), comme un frère ou une sœur, pour la démo, la famille qui propose et le
propriétaire. Sans conjoint, avec plusieurs conjoints, ou en adoption : l'enfant reste au seul parent choisi.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Une espace insécable seule ne suffit pas : Chrome coupe après un tiret demi-cadratin. Le gluon U+2060
devant l'espace insécable garde « – 1995 » d'un bloc (vu sur la fiche de Robert, démo, 1440 px).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Nom d'un onglet : le nom le plus porté par ses membres (naissance, sinon usage), et non plus celui
de la seule personne de référence. Deux onglets
au même nom : le plus petit prend le nom suivant le plus porté chez lui, les prénoms de la charnière
en dernier recours.
- Changer d'onglet garde la personne charnière à sa place et à son zoom : seules les familles autour changent.
- Survol d'un onglet : la charnière s'allume dans l'arbre affiché (halo de la recherche), sans texte.
- Barre rangée comme l'arbre (chaque famille après celle par laquelle on y entre), groupée par branche
(10 px dans une branche, 16 px entre branches), trait d'union entre deux onglets dont le second part
du premier, terracotta sur le chemin de l'onglet ouvert.
- Pastille de retour : même place que celle de l'aller, flèche retournée (« ‹ Famille X · n »).
- Nombre d'un onglet : « n personnes » au survol.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
L'âge d'une personne vivante était l'année en cours moins l'année de naissance : né en décembre,
on prenait un an dès janvier. Même défaut pour l'âge au décès et les âges de l'onglet Vie.
Quand les deux dates sont complètes, l'âge se compte au jour près (utils/age.js) ; une année seule
garde la différence des années.
Fixes#198
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Un couple naît « mariage » dès qu'un enfant a deux parents : la frise disait « Épouse X » pour tous.
Elle dit maintenant « En couple avec X », et « Mariage avec X » seulement quand c'est dit (date, lieu ou
documents de mariage, case cochée). Toucher la ligne d'un couple (administrateur) ouvre sa fiche avec
« C'était un mariage », la date (même approximative) et le lieu ; PATCH /unions accepte startPlace et
startDatePrecision. Le prénom d'un proche (conjoint, enfant, frère ou sœur, parent) ouvre sa fiche et
amène la caméra sur lui.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sur téléphone, la fiche de la personne de départ ne s'ouvre plus à l'arrivée : elle couvrait le bas de
l'écran et la personne avec, laissant un écran vide. La personne de départ arrive à 40 % de la hauteur
au lieu de 56 %. Toucher quelqu'un dans l'arbre le remonte dans le tiers du haut, au-dessus de la fiche,
comme le fait déjà la recherche (focusPerson). Ordinateur inchangé.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#181 faisait arriver le recul à 0,5 : les prénoms y restent dessinés mais font
6,5 px, et un arbre de 35 personnes s'ouvrait en entier, illisible. Retour à
0,95 (prénoms à 12 px), le recul s'arrête là.
Sous 768 px, la réglette de zoom reste ouverte en bas à gauche : la personne de
départ se centre dans la largeur qu'elle laisse libre au lieu du milieu de
l'écran.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Relevés par la recette de la 1.5.5 :
- « Odette est supprimé·e » : accordé quand le sexe est connu (supprimée, supprimé), « ·e » seulement quand
il ne l'est pas ; même chose pour le message d'échec. L'anglais ne change pas (« was deleted »).
- Sous 768 px, le bandeau (et la notification après un ajout, même classe) passait sur la réglette de zoom,
toujours ouverte en bas à gauche : il commence maintenant à 72 px du bord.
- Sur ordinateur, le bord du bouton de zoom dépassait sous une fiche ouverte : il est caché tant que la
fiche est là.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ctrl+K, de n'importe où, ouvre la recherche d'une personne, ou y remet le curseur si elle est ouverte.
- La loupe dit son raccourci au survol : « Rechercher une personne (Ctrl K) », « (⌘K) » sur Mac.
- Dans le menu « Modifier », « Ctrl E » à droite de « Modifier l'arbre » (raccourci qui existait déjà
sans être dit). Composant Kbd, caché sur écran tactile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Croix de la recherche (36 px) et de la fiche (40 px), onglets de la fiche (34 px de haut), petits boutons,
« + » en pastilles, ajout et retrait d'un lien : une zone invisible déborde autour de chacun sur écran
tactile (pointer: coarse) jusqu'à 44 × 44 px. Rien ne bouge à l'œil, et rien ne change à la souris.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
À la première ouverture d'un arbre, la caméra part serrée sur la personne de
départ et recule en 1,1 s (ease-out quint) jusqu'à la vue d'arrivée. Chaque
personne apparaît quand elle entre dans le champ, la personne de départ dès la
première image. Le premier geste (glisser, molette, recherche) arrête le recul.
- Un grand arbre s'ouvre à 0,5 au lieu de 0,95 : on voit la famille autour,
les prénoms restent lisibles.
- Ensuite (arbre modifié, autre onglet de famille), rien ne s'anime : l'arbre
s'affiche net. Avant, la cascade se rejouait à chaque modification.
- Un portrait qui entre part de 92 % de sa taille en fondu, en 360 ms (30 % en
700 ms avant).
- Mouvements réduits : pas de recul, un fondu de 200 ms.
Avant, la cascade partait des générations les plus anciennes : sur un grand
arbre ouvert sur la personne de départ, l'écran restait vide près de 3 s.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La fiche, posée en bas à gauche, ne couvre le haut que si son contenu est long.
Une fiche courte poussait la barre à droite pour rien.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Onglet Vie : pendant le premier chargement, la place de la frise au lieu de « Pas encore de date
connue », qui s'affichait puis disparaissait une seconde plus tard.
- Propositions à relire, co-gestionnaires, visites, paramètres de l'arbre, sources de recherche : des
lignes grises à la forme de ce qui arrive, au lieu d'un « Chargement… ».
- Composant Skeleton : rien avant 300 ms (une réponse rapide ne fait pas clignoter), aucun mouvement,
libellé pour les lecteurs d'écran.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Les photos partent en taille réelle, sans miniature : sur un réseau lent, une vignette restait un carré
vide et un portrait montrait ses initiales. Chaque photo et chaque portrait a maintenant un aperçu flou
aux bonnes couleurs (une chaîne de 28 caractères), affiché jusqu'à l'arrivée de l'image, sans fondu.
- Base : media_items.blurhash et persons.avatarBlurhash (migration additive 20261027_001).
- API : calculé à l'envoi d'une photo et d'un portrait (sharp, 32 px), publié dans le graphe ; les autres
chemins (Immich, import GEDCOM, propositions acceptées) et les photos d'avant sont rattrapés en tâche de
fond (lots de 25, puis une passe par minute). Un fichier illisible reçoit un aperçu vide.
- Navigateur : vignettes de la fiche, de la frise et du gestionnaire de souvenirs, portrait de la fiche,
portraits et souvenirs dessinés sur l'arbre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Quand l'arbre affiché est celui de la famille de départ, il ne dépend pas de
la liste des onglets : il s'affiche tout de suite, la liste est calculée dans
galaxy/familyTabsWorker.js et la barre suit, sans geler la page. Les pastilles
prennent le nom et le compte de leur onglet à l'arrivée de la liste.
Calcul sur place comme avant dans un autre onglet, à l'arrivée par le lien
d'un onglet, sans Worker ou si le worker échoue (couples de l'arbre affiché
remis). Une demande en cours est abandonnée dès qu'une autre part.
Royal92 (3 010 personnes) : arbre utilisable en 1,6 s au lieu de 8,7 s,
barre des onglets à 6 s sans bloquer (médianes de 3, machine chargée).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>