Le champ « Un lien YouTube » acceptait tout lien en youtube.com, mais la
visionneuse ne lisait que watch?v= et youtu.be : un lien d'intégration
(/embed/), un Short ou un direct s'enregistrait puis s'affichait « Lien
YouTube invalide », et le code <iframe> du bouton Intégrer était refusé.
Une seule fonction (utils/youtube.js) retrouve l'identifiant de la vidéo
dans le lien de la barre d'adresse, de partage, d'intégration, nocookie,
un Short, un direct ou le code <iframe> complet. La saisie enregistre
toujours le lien watch?v= et la visionneuse s'appuie sur la même fonction,
donc les liens /embed/ déjà enregistrés se lisent aussi.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- utils/richText.jsx : withEmphasis et richText, écrits six fois dans les composants
- useAuth : openSession, commun à la connexion et à l'inscription
- TreeDropdown retiré (rendu nulle part, tenu par un seul test), 52 entrées du dictionnaire anglais sans texte dans le code
- backend : sealed-secret.ts (chiffrement commun au mot de passe de partage et à la clé Immich), cleanGedcomPlace en un exemplaire, fonctions sans appelant (recordTreeUnlockFailure, resetOidcConfiguration, readMediaPeople, annotationPhotoRelativePath), exports internes refermés
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
- CSS : règles des anciens écrans (assistant de création, gestionnaire de souvenirs, réglages, lecteur vidéo), keyframes et variable sans lecteur
- Fonctions sans appelant : mockData (3), treeApi (stats, audit), getMediaToken, drawPathLabel, NavButton
- Fichiers-barils navbar/ et search/ remplacés par des imports directs
- Galaxy : le placement par blocs est le seul chemin
- api/client.js : bearer(token) remplace 59 en-têtes écrits à la main ; import dynamique inutile de client.js retiré
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Une personne avec deux conjoints isolés ou plus (sans parent ni enfant
dans l'arbre) voyait leurs petits portraits s'enchaîner à 40 px : noms
et dates les uns sur les autres, chacun collé au précédent. Le petit
portrait reste collé à son conjoint ; à côté d'un autre conjoint, l'écart
normal revient. Le cas d'un seul conjoint isolé ne bouge pas.
Banc : deux archétypes (plusieurs-petits-conjoints, trois-petits-conjoints).
L'invariant « couples séparés » ne compte plus une personne à trois
conjoints ou plus : elle n'en touche que deux sur sa rangée.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La traduction automatique (Chrome, Vivaldi…) transformait « FR · EN » en
mots (« EN » → « IN ») sur une page affichée dans une autre langue que celle
du navigateur.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Sebastian <fridgee@duck.com>
LANGUAGES décrit chaque langue (nom, région des dates, dictionnaire) ; la
détection, la région des dates, le bouton de choix et les liens d'aide
s'en servent. Un texte absent d'un dictionnaire retombe sur l'anglais, puis
sur le français. Rien ne change pour le français et l'anglais.
Le test exige toujours l'anglais ; pour les autres langues, il signale les
textes pas encore traduits sans échouer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Sebastian <fridgee@duck.com>
Un enfant du conjoint d'un parent était nommé « Brother-in-law » en anglais,
et un enfant d'un seul parent en commun « Brother ». Le nommage lit
maintenant la suite des pas : up,down = demi (Half-brother, Demi-frère),
up,spouse,down = Stepbrother en anglais ; le français garde Beau-frère,
usage courant pour le quasi-frère.
Closes#218
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
Les guides, l'aide, la vidéo et les pages vie privée (public/, copiés sans Vite) n'avaient aucune
mesure. src/pages.js, construit par Vite avec une empreinte et posé au build dans chaque page par
scripts/inject-pages.mjs, envoie les mêmes événements que la page d'accueil (page_viewed, scroll_depth_50
et 100, signup_cta_clicked) et video_played sur /video/. Les liens vers l'app gardent le ?source=
d'arrivée au lieu de la provenance fixe de la page. Page vie privée (fr, en) complétée.
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>
org.opencontainers.image.version vaut X.Y.Z sur un tag et la sortie de git describe
sur main (1.5.9-11-gd5f9da6), au lieu de « latest ».
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>
/video/ sur parenthese.io : la vidéo validée par Patch le 03/11, en 16:9 sur
ordinateur et 9:16 sur téléphone (la seconde ne se charge qu'au besoin), aperçu,
balises og:video et JSON-LD VideoObject, bouton vers l'arbre d'exemple
(source=video). Lien à donner dans les mails de presse et aux créateurs.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
/en/family-tree-gift/, pendant du guide de Noël français (hreflang dans les deux sens,
lien English et Français dans le pied de page), lien dans le pied de page des huit pages
anglaises, plan du site. « family tree gift » : 590 recherches par mois aux États-Unis,
1 900 en décembre (DataForSEO, 02/11).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Nouvelle page /arbre-genealogique-cadeau-noel/ sur le gabarit des guides (HowTo et FAQPage
en JSON-LD, français seul), lien dans le pied de page des huit pages françaises, plan du site.
Bouton avec source=guide-noel. En ligne avant mi-novembre pour être classée en décembre
(« arbre généalogique cadeau » x3,4 en décembre).
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>