- 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>
Entrée « Quelqu'un ailleurs » dans le menu +. On tape un nom, une année et un lieu.
Liens préremplis vers Gallica, FranceArchives, Mémoire des hommes, Léonore, Geneanet,
Open Archives, WikiTree, FreeBMD et FamilySearch, ouverts par le navigateur.
Le serveur interroge les décès INSEE depuis 1970 (matchID) et WikiTree quand
SEARCH_SOURCES les nomme ; MATCHID_TOKEN au-delà d'une centaine de recherches.
Un résultat ajouté ne remplit que les champs vides, passe la personne à vérifier
et garde la source dans sa note.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- OIDC : une identité n'est plus reliée automatiquement à un compte existant qui a un mot de passe.
L'inscription ne vérifie pas l'adresse, un tiers aurait pu créer ce compte avec l'email de la victime et lire
ce qu'elle y met ensuite. Refus avec oidc_email_taken et un message clair (FR, EN). Trouvé par la relecture
de sécurité avant la release.
- Tests OIDC : chaque connexion simulée a sa propre adresse (limite de 20 appels par minute et par adresse).
- CHANGELOG 1.2.0, OIDC marqué expérimental dans les deux README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OIDC_ISSUER, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET et OIDC_REDIRECT_URI
ajoutent « Se connecter avec … » à l'écran de connexion. Tout le protocole
passe par openid-client 6 : découverte, PKCE S256, state et nonce, échange
du code, vérification de l'ID token (signature, émetteur, audience, dates).
State, nonce et vérificateur PKCE vivent dans un cookie signé, httpOnly,
SameSite=Lax, qui lie le retour au navigateur qui a commencé la connexion.
Le compte est trouvé par (émetteur, sub), sinon relié par email vérifié,
sinon créé sans mot de passe si ALLOW_REGISTRATION le permet (instance
vide comprise). Retour vers l'app par un jeton de passage de 60 s, à usage
unique, dans le fragment, échangé contre une session.
PASSWORD_LOGIN=false retire les mots de passe Parenthèse. Un compte sans
mot de passe se supprime en retapant son email, dans les 15 minutes qui
suivent une connexion. Code OIDC masqué dans les journaux.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
À false, POST /auth/register répond 403 registration_closed et l'app ne
propose plus de créer un compte (accueil, connexion, porte d'un arbre
partagé, menu du visiteur). Les comptes existants se connectent et créent
leurs arbres, le partage par lien et mot de passe ne change pas.
Une instance sans aucun compte accepte quand même le premier, sous un
verrou de transaction PostgreSQL (deux inscriptions simultanées n'en
créent qu'un). GET /auth/options expose l'état à l'écran d'accueil.
Défaut true : rien ne change pour les instances existantes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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>
Le conteneur web relayait l'API vers `api:4000`, écrit en dur. Sur un réseau
partagé entre plusieurs applications (Umbrel), ce nom peut appartenir à une autre.
L'adresse vient maintenant de API_UPSTREAM, `api:4000` par défaut : rien ne
change pour les installations existantes. L'image tout-en-un garde sa propre
configuration. La CI lance un second front qui joint l'API par le nom de son
conteneur et repasse le test de fumée.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Une seule image (PostgreSQL 15, API, nginx) qui crée sa base et ses secrets dans /data au premier
démarrage. Publiée par images.yml sous ghcr.io/iliesallali/parenthese-aio, testée en CI (démarrage
à vide, redémarrage, test de fumée).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Après chaque CI verte sur main (et sur un tag vX.Y.Z), le workflow Images construit
parenthese-api et parenthese-web en amd64 et arm64, les pousse sur ghcr.io, puis teste
une installation dans un dossier vide avec docker-compose.yml et .env pour seuls fichiers.
docker-compose.yml tire ces images (PARENTHESE_VERSION, latest par défaut) et garde le
build depuis les sources en repli. Demande faite sur r/GenealogieFR.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
VITE_HELP_URL et VITE_PRIVACY_URL remplacent les pages de parenthese.io,
qui restent la valeur par défaut. Documenté dans les deux README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Les versions françaises passent dans CONTRIBUTING.fr.md et SECURITY.fr.md.
Convention mise à jour : tout texte visible passe par t() avec sa traduction.
Modèles d'issue et de pull request en anglais, le français reste accepté.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Licence et façon dont le projet a été fait en tête, capture de la démo anglaise,
section sur les traductions. Les deux versions à jour : un seul mot de passe de
partage, « arbre » plutôt que « galaxie », interface en deux langues.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>