Commit Graph
15 Commits
Author SHA1 Message Date
IliesAllaliandClaude Opus 5.5 07e4fb11f9 1.2.0 : changelog, OIDC marqué expérimental, jamais relié à un compte à mot de passe
- 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>
2026-10-20 16:12:42 +02:00
IliesAllaliandClaude Opus 5.5 65900a4372 feat(comptes): connexion par un fournisseur OIDC (#115)
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>
2026-10-20 15:26:01 +02:00
IliesAllaliandClaude Opus 5.5 1b2d8ed6e2 feat(comptes): ALLOW_REGISTRATION ferme la création de compte (#113)
À 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>
2026-10-20 14:12:18 +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 d234171abb docs: le lien de démo du README ouvre la démo, plus l'accueil
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 20:48:48 +02:00
IliesAllaliandClaude Haiku 5.5 3a5fa42670 docs(readme): nom de l'auteur relié au portfolio iliesallali.design
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-13 18:41:19 +02:00
IliesAllaliandClaude Opus 5.5 333a11e84b Docker : le front lit l'adresse de l'API dans API_UPSTREAM
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>
2026-10-10 16:15:46 +02:00
IliesAllaliandClaude Opus 5.5 91abe47614 Docker : image tout-en-un pour Unraid et les NAS
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>
2026-10-09 17:42:14 +02:00
IliesAllaliandClaude Opus 5.5 3c263a708d Docker : images API et front publiées sur ghcr.io, installation sans cloner le dépôt
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>
2026-10-09 14:24:19 +02:00
IliesAllaliandClaude Opus 5.5 d7c86b5ae8 docs(readme): what each backup command saves, GEDCOM is not a backup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 15:14:53 +02:00
IliesAllaliandClaude Opus 5.5 f14af72c8d Liens d'aide et de vie privée réglables pour une instance auto-hébergée
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>
2026-09-30 17:56:04 +02:00
IliesAllaliandClaude Opus 5.5 6067cd0174 CONTRIBUTING, SECURITY et modèles GitHub en anglais, CHANGELOG 1.0.0
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>
2026-09-29 16:18:37 +02:00
IliesAllaliandClaude Opus 5.5 220f4ec643 README en anglais, le français passe dans README.fr.md
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>
2026-09-29 16:11:33 +02:00
IliesAllaliandClaude Opus 5 0c4cc20c97 Suppression des données par les utilisateurs, CI et auto-hébergement vérifié
Utilisateurs
- Suppression de compte depuis l'écran « Votre compte », confirmée par mot de passe :
  arbres possédés et médias effacés, email retiré des contributions, sessions fermées partout.
- Suppression d'arbre définitive, en base et sur le disque.
- Ajout d'un frère ou d'une sœur relié aux parents existants ; relations parent et enfant
  corrigées en mode démo.
- Liste d'attente retirée (route, envoi d'emails, dépendance Resend).

Projet ouvert
- CI : front, landing, backend avec vérification des migrations, test Docker de bout en bout.
- Déploiement lancé seulement après une CI réussie sur main.
- Image API : CLI Prisma installée à part pour que les migrations tournent au démarrage.
- SECURITY.md, CONTRIBUTING.md, modèles d'issue et de pull request.
- Migration renommée avec un nom descriptif, contenu identique.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:22:26 +02:00
IliesAllaliandClaude Opus 5 e8e2485dcd Parenthèse
Galaxie familiale : personnes, unions et filiations, photos, vidéos et voix sur chaque personne,
partage par lien avec consultation sans compte et contributions validées par le propriétaire.
Auto-hébergeable avec Docker. Licence PolyForm Noncommercial 1.0.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 15:49:05 +02:00