Release notes

What changed, release after release.

All user-visible changes to CountClub. Internal-only changes (refactors, infra) are not listed here.

Version 1.7.0

July 10, 2026

Ajouté

  • Coach Léon peut préparer une dépense et relancer les débiteurs sur simple demande, toujours avec ta validation (beta)
  • Emails de bienvenue et de suivi pour bien démarrer (créer un count, ajouter une dépense, inviter des amis) et un récap mensuel de tes dettes et créances en cours
  • Icône trombone sur les dépenses qui ont un justificatif attaché
  • Scan de ticket : bouton « Annuler » pendant l'analyse

Modifié

  • Confirmation « Abandonner ce count ? » à la création, pour ne plus perdre ta saisie par erreur
  • Scan de ticket non bloquant : tu arrives directement sur la dépense, les champs se remplissent en arrière-plan
  • Hauteur des champs harmonisée sur les formulaires (plus lisible, et tolérant à l'agrandissement des polices)

Corrigé

  • Rappels de dette automatiques : ils ne partaient jamais, c'est réparé
  • Notification de clôture d'un count : elle n'était jamais envoyée, c'est réparé
  • Création d'un count avec beaucoup de participants : la première dépense pouvait en oublier certains, c'est réparé
  • Confettis de la première dépense : la vibration se répétait à chaque interaction, elle ne se joue plus qu'une fois
  • Android : plus de « flash noir » pendant les transitions en mode sombre
  • Notifications : libellé « Ouvrir les paramètres » rendu générique (au lieu de « iOS » sur Android)

Version 1.6.1

July 7, 2026

Corrigé

  • Mobile : depuis le menu « + », « Scanner un ticket » (ainsi que galerie / document) ouvrait puis refermait aussitôt l'appareil photo/scanner sur iOS — un écran natif était présenté pendant que la modale du menu se fermait ; l'ouverture est désormais différée après la fermeture de la modale (le bouton scan direct, sans modale, était déjà OK)

Version 1.6.0

July 6, 2026

Ajouté

  • **Scan & import intelligent de ticket** : le bouton scan ouvre un **scanner de document natif** (cadrage des bords en direct + capture et rognage automatiques — fini le « à côté » du ticket), et le menu « + » permet aussi d'importer une **photo** ou un **PDF** — dans tous les cas l'IA extrait montant, libellé, devise et date et pré-remplit la dépense (la pièce devient le reçu). Depuis une dépense ouverte, un bouton « Pré-remplir depuis le reçu » complète les champs vides. Gratuit, jusqu'à 30 lectures/jour.
  • Page « Qui doit quoi ? » : calculateur gratuit de partage de dépenses (qui rembourse qui, avec le minimum de virements) — interactif, sans inscription, réutilise le moteur de l'app. FR (`/qui-doit-quoi`) + EN (`/en/who-owes-what`), lien nav + footer, JSON-LD `WebApplication`/`FAQPage`/`HowTo`
  • Comparatifs sur countclub.app : « Tricount vs CountClub » et « Splitwise vs CountClub » (`/compare/…`, FR + EN) — fonctionnalités notées, prix, points forts/limites, verdict et FAQ
  • Comparateur interactif `/compare` : choisis 1 à 3 apps (CountClub, Tricount, Splitwise) et compare-les sur 33 fonctionnalités, avec filtre « différences »
  • Guide `/compare/guide` : synthèse « quelle app de partage de dépenses choisir » (vue d'ensemble des 3 apps, scénarios de choix, tableau récap, FAQ)

Modifié

  • Menu du site : lien « Comparatifs » ajouté au header et au footer (accès direct aux comparatifs `/compare`)

Corrigé

  • Mobile : léger « saut » vers le bas au premier affichage d'un onglet (contenu affiché une fraction de seconde trop haut, iOS surtout, visible car le changement d'onglet n'a pas d'animation qui le masque) — le composant `SafeAreaView` remesurait son cadre en asynchrone ; remplacé sur les onglets par un équivalent basé sur le hook `useSafeAreaInsets` (padding synchrone), couplé à `SafeAreaProvider` + `initialWindowMetrics` au root
  • Mobile : fin bandeau gris en bas de la liste des dépenses d'un count (le `SafeAreaView` sans `edges` colorait la zone d'inset du bas) — retiré via `edges={["top"]}`, la marge basse étant reportée dans le `paddingBottom` des listes de façon inset-aware (correcte sur home indicator iOS, gestes Android et barre 3 boutons Android)
  • SEO : `/pricing` (page supprimée au pivot 100 % gratuit) redirige désormais vers l'accueil au lieu de renvoyer une 404 — corrige le motif d'indexation signalé par Search Console

Technique

  • `[internal]` Texte « Notre modèle » de la page Partenaires (mobile) éditable depuis le BO (`admincountclub/config`, FR + EN) : champs `partnersModelBodyFr`/`partnersModelBodyEn` sur `AppConfig`, exposés via `/api/status` (CDN + cache app TanStack) ; l'app retombe sur son texte i18n embarqué si vide ou hors-ligne
  • `[internal]` Scan de ticket : route `POST /api/counts/[id]/scan-receipt` (Claude Haiku vision + tool-use `extract_receipt` validé Zod), rate-limit 30/jour/user via `AuditLog` (`receipt.scan`) + alerte Sentry, agent `receipt-scan-agent.ts`, schéma partagé `receiptScanResultSchema`. L'agent gère image **et PDF** (bloc `document` Anthropic). Mobile : FAB scan → **scanner de document natif** (VisionKit iOS / ML Kit Android via `react-native-document-scanner-plugin`, TurboModule/New Arch ; fallback caméra en Expo Go via `lib/document-scanner.ts` gardé par `appOwnership`), icône `ScanText` + menu « + » (manuel / galerie / document), imports galerie & PDF en OCR, bouton « Pré-remplir depuis le reçu » non destructif dans `new.tsx` (+ `prefillCurrency`/`prefillDate`). Politique de confidentialité : Anthropic ajouté comme sous-traitant.
  • `[internal]` BO audit-tests : onglets (Données / « Comment relancer ? »), pagination (20/page) et suppression de runs depuis l'UI (route `DELETE /api/admin/audit-runs/[id]`, super-user)
  • `[internal]` BO audit-tests : suivi SEO/GEO — type `seo` dans `AuditRun`, `./console audit-record --type=seo` interactif avec **score composite /100 calculé auto** (audit technique live du site — sitemap/robots/canonical/hreflang/JSON-LD — + croissance vs mois précédent + classement + engagement + indexation + backlinks), **commentaire d'analyse (`--notes`) et recommandations auto** stockés dans les détails du run, flags GSC + `--delete=<id>` + panneau checklist mensuelle SEO/GEO
  • `[internal]` Comparatifs migrés de l'app séparée `apps/compare` (domaines `*-vs-countclub.com`, retirés pour raison de marque) vers `apps/web` : pages statiques (SSG) par slug sous `[locale]/(marketing)/compare/`, data bilingue `src/lib/compare/`, design aligné countclub.app (tokens `ink`/`paper`/`accent` + marques verdict), sitemap étendu

Version 1.5.1

July 3, 2026

Modifié

  • Écran Remboursement : la confirmation « CountClub ne transfère pas l'argent » ne s'affiche plus que si le destinataire a des moyens de paiement (sinon aucune confusion possible), et son message est plus clair
  • Session mobile : on reste connecté jusqu'à 1 an au lieu de 30 jours → beaucoup moins de reconnexions
  • Email de bienvenue revu : plus complet et vendeur (étapes « comment ça marche », stats clés, relances automatiques, renvoi vers l'onglet Astuces), retrait de Count+ (app 100 % gratuite), et redirection vers la page support au lieu d'inviter à répondre à un `noreply@`

Corrigé

  • Android : icônes de la barre de navigation à 3 boutons désormais sombres (visibles sur le fond clair de l'app) — status + nav bar gérées via `SystemBars` sous edge-to-edge
  • Android : les boutons flottants ne sont plus masqués par la barre de navigation système (prise en compte de l'inset bas en edge-to-edge) — bouton « + » (nouvelle dépense) et Coach Léon dans un count, FAB des demandes de fonctionnalités, bouton de validation de l'import
  • Android : à la création d'un count, l'écran défile désormais quand on saisit un participant — le champ ne reste plus coincé sous le clavier
  • Plus de déconnexion intempestive sur une erreur d'authentification ponctuelle (401) tant que la session est valide ; et Face ID reste activé même si la session expire vraiment
  • Rejoindre un count via un lien en étant déconnecté : après connexion, la liste des membres se charge enfin (avant, on restait bloqué sur « Tu n'es pas dans la liste » — la réponse d'invitation non authentifiée restait en cache)
  • Liens ouverts app fermée (parrainage `/r/…` et invitation à un count `/join/…`) : le bouton retour ne bloque plus — il retombe sur l'accueil (ou l'écran de connexion) quand il n'y a pas d'écran précédent ; idem pour les écrans Fidélité et Parrainage atteints sans historique de navigation

Technique

  • `[internal]` BO : activer/désactiver Coach Léon (beta) pour un user depuis sa fiche (à côté de « Promouvoir super-user »), + tag « LÉON » et filtre « Coach Léon » dans la liste des users
  • `[internal]` Favicon BO : l'onglet navigateur affiche le « C » bleu (`/admincountclub/favicon.png`, lisible en petit) au lieu du wordmark ; l'icône PWA/installée (apple + manifest) reste le wordmark
  • `[internal]` Socle edge-to-edge Android : `react-native-edge-to-edge` (plugin + `SystemBars`) + `react-native-keyboard-controller` + `softwareKeyboardLayoutMode: resize` — base des correctifs insets bas et défilement clavier
  • `[internal]` Bench prod (`./console bench --target=prod`) : System Bypass IP DDoS auto (add au début / remove à la fin + attente de propagation), JWT signé avec le secret prod (`NEXTAUTH_SECRET_PROD`) et count résolu via l'API prod → vraies latences API en prod. Doc `/admincountclub/audit-tests` + `docs/bench-results/README.md` à jour

Version 1.5.0

June 28, 2026

Ajouté

  • Coach Léon 🐷 : un assistant qui répond à tes questions sur les comptes — qui doit quoi, qui paie la prochaine, et quelques blagues (beta)

Modifié

  • Coach Léon : indicateur de saisie animé pendant qu'il répond + message d'accueil raccourci
  • Effet visuel au tap sur les listes (counts, dépenses, soldes, remboursements)
  • Écran Remboursement : moyens de paiement copiables d'un tap + rappel que CountClub n'effectue pas le virement
  • Petit retour haptique à l'ouverture d'un count
  • Count soldé : confettis à la place de l'animation câlin (tape le bandeau pour en relancer)
  • Page Partenaires : nouvelle section « Notre modèle » (transparence sur le modèle fintech)

Corrigé

  • Accessibilité : le plafond d'agrandissement de la police est de nouveau respecté (cassé depuis le passage à React 19)
  • Dépenses : le bandeau « Mis à jour il y a… » ne s'affiche plus que si la mise à jour échoue ou traîne — fini le décalage du contenu
  • Counts soldés : ouverture instantanée et en-tête stable (plus de saut au chargement)
  • Onglets Dépenses/Soldes : le libellé actif ne reste plus grisé après un appui
  • Statut du profil (super-user, accès beta) rafraîchi au lancement, sans reconnexion
  • Modifier/supprimer un remboursement reste possible même quand le count est clôturé
  • Rappels de remboursement : le réglage se sauvegarde de nouveau sur l'écran de clôture
  • Connexion Face ID : profil et onglet Super User à jour (plus de données de la session précédente)
  • Notifications : pull-to-refresh, état des permissions rafraîchi, accès aux réglages même quand elles sont activées

Technique

  • `[internal]` Coach Léon : colonne `isCoachLeonBeta` (User) + model `CoachMessage` (rate-limit) + migration de backfill `COACH_LEON_BETA_EMAILS` + clé `COACH_LEON_ANTHROPIC_API_KEY` (fallback `ANTHROPIC_API_KEY`)
  • `[internal]` Exclure le dossier généré `apps/web/ds-types/` du lint web
  • `[internal]` Fix build iOS (EAS) : plugin local `with-google-modular-headers.js` force `:modular_headers` sur `GoogleUtilities`/`RecaptchaInterop` (sinon `pod install` casse en linkage statique avec `GoogleSignIn ~> 9.0`)
  • `[internal]` Nouvelle app `apps/compare` : sites comparatifs SEO/GEO (`tricount-vs` / `splitwise-vs-countclub.com`), data-driven, déploiement hors pipeline `deploy:web`

Version 1.4.0

June 19, 2026

Ajouté

  • Notifications mobile : préférences **par catégorie** (rappels de dette, nouvelle dépense, dette réglée, count clôturé, annonces) au lieu d'un on/off global
  • Pré-question avant le prompt de notation (« Tu apprécies CountClub ? ») : les avis positifs vont vers le store, les autres vers le support — protège la note
  • Écran d'intro au premier lancement (carrousel de 5 slides) + lien « Revoir l'intro » sur l'écran de connexion
  • Bannières d'annonces sur l'accueil mobile (une carte à la fois, validation au check), synchronisées entre devices
  • Animation de célébration « Le câlin 🤗 » quand toutes les dettes d'un count sont soldées, rejouable en tapant le bandeau « Tous les comptes sont bons »
  • Confettis à la première dépense d'un count

Modifié

  • États vides repensés (onglets Dépenses & Soldes) : cochon animé tappable + CTA clairs (« Nouvelle dépense », « Partager », « Créer / Rejoindre un count »), distinction « Aucune dépense » vs « Tous les comptes sont bons »
  • Onglet Soldes réorganisé : plan de remboursement remonté au-dessus des soldes par personne, tri des soldes via un action sheet
  • Swipe (counts & dépenses) : look minimaliste, icône en couleur sémantique, toute la case cliquable
  • « Fusion de soldes » renommé « Regrouper des soldes » partout
  • En-têtes de count : zones de tap agrandies ; astuces et wording de la bannière notifications mis à jour

Corrigé

  • Swipe gauche : les actions « Supprimer / Archiver / Plus » sortent de derrière la card au lieu d'apparaître dès le premier pixel

Version 1.3.2

June 4, 2026

Modifié

  • Titre d'une dépense : première lettre mise en majuscule automatiquement (à la création et à la modification), cohérent avec le nom du count et les noms des membres
  • Détail d'un membre depuis l'onglet Solde : suppression des CTA de gestion (Renommer / Promouvoir admin / Retirer). Cet écran redevient un détail en lecture seule, la gestion se fait uniquement depuis les Paramètres du count
  • Rejoindre un count : suppression du bouton « Je ne suis pas dans la liste » qui permettait l'auto-ajout. Si tu n'es pas dans la liste, tu vois un message t'invitant à demander à un admin de t'ajouter depuis les Paramètres
  • Bandeau parrainage sur l'accueil : marges latérales correctes même quand la liste de counts est vide (avant : edge-to-edge), texte revu (« Un ami t'a invité sur CountClub ? · Ajoute son code et gagne 50 points. Lui en gagne aussi. »)
  • Profil : champ « Email de contact » désormais éditable depuis le formulaire (Apple privaterelay uniquement). Avant, la bannière de saisie disparaissait une fois l'email rempli et il n'y avait plus aucun moyen de le modifier ou de le retirer. Laisse le champ vide pour le retirer

Corrigé

  • Onglets de répartition (Égal / Montants / Pourcentage / Parts) : taille de police qui rétrécissait drastiquement après sélection (effet de bord de `adjustsFontSizeToFit`). Retiré, on garde juste `numberOfLines={1}` avec ellipsis si dépassement

Version 1.3.1

June 4, 2026

Corrigé

  • Android : sur l'édition d'une dépense en mode Montants / Pourcentage / Parts, les champs de saisie n'étaient plus visibles (recouverts par le clavier) et impossible de scroller. Fix appliqué à tous les écrans avec formulaires (création/édition de dépense, création de count, paramètres, transfert, moyens de paiement, login/register/reset, clôture, emoji picker)

Version 1.3.0

June 4, 2026

Ajouté

  • Gestion d'un membre depuis Paramètres ET depuis la page Solde : tap sur un membre ouvre désormais un menu d'actions (Renommer, Promouvoir admin, Retirer). Plus besoin de chercher dans une expansion inline — même UI accessible depuis les deux contextes
  • Connexion Apple : si tu as choisi « Masquer mon email », l'app te propose d'ajouter une vraie adresse de contact (rappels + récupération de compte). Aussi disponible depuis le Profil
  • Un membre du count peut désormais être partagé entre plusieurs personnes (cas couple, compte commun) : les deux conjoints rejoignent le même membre depuis le lien d'invitation, partagent le solde, et reçoivent chacun leur rappel
  • Renommer un membre depuis les Paramètres du count : tap sur le membre → bouton « Renommer ». Disponible pour les admins (tout membre) et pour soi-même (son propre membre)
  • Code parrain à postériori : depuis Mes points, tu peux désormais coller le code (ou le lien `countclub.app/r/…`) d'un ami pendant les 7 jours qui suivent ta création de compte. Indispensable pour les comptes Google/Apple qui n'ont aucune saisie à l'inscription. Bandeau sur l'accueil pour les nouveaux comptes éligibles. Lien d'invitation = deeplink iOS + Android qui ouvre directement l'écran avec le code pré-rempli

Modifié

  • Profil : pastille avec l'initiale du prénom retirée — pas d'avatar cliquable tant que la photo de profil n'est pas implémentée

Sécurité

  • Anti-usurpation sur l'invitation à un count : impossible de rejoindre un membre administrateur déjà claimé via le lien d'invitation (ni via « Changer de membre »). L'élévation vers admin ne peut désormais se faire qu'avec une promotion explicite d'un admin existant. Côté UI les membres admin déjà claimés sont grisés, côté API la route claim renvoie 403

Corrigé

  • Bandeau gris superflu en bas des onglets (Accueil, Astuces, Profil, Super User) entre le contenu et la barre d'onglets
  • Accessibilité : si tu utilises « Larger Text » dans Réglages iOS, l'app ne casse plus sur les headers de modal (Nouvelle dépense, Paramètres, Moyens de paiement…) ni sur les onglets de répartition (Égal / Montants / Pourcentage / Parts). Le scaling système est suivi jusqu'à +20%, suffisant pour la lisibilité sans casser les layouts
  • Menus contextuels (long press sur un count ou une dépense) : bouton « Annuler » désormais toujours visible en bas du menu (sur iOS 18+, le bouton géré nativement n'apparaissait plus)

Version 1.2.2

May 28, 2026

Corrigé

  • Notifications push iOS : l'enregistrement du token fonctionne enfin — l'entitlement « aps-environment » manquait dans le build (cause de l'erreur « aucune autorisation aps-environment valide »)

Version 1.2.1

May 26, 2026

Modifié

  • Face ID / biométrie : ne propose plus le code du téléphone en repli — le visage (ou l'empreinte) est demandé directement
  • « Transfert de solde » renommé « Fusion de soldes » (cohérent partout) et désormais accessible depuis les Paramètres, au-dessus de « Changer de membre »

Corrigé

  • Hors connexion : une dépense ajoutée ou modifiée apparaît immédiatement avec un marqueur « en attente de synchro » (au lieu d'être invisible jusqu'au retour du réseau), et le pull-to-refresh ne fait plus attendre inutilement
  • Moyens de paiement : le formulaire d'ajout n'est plus masqué par le clavier (remontée automatique + scroll possible une fois un champ sélectionné)
  • Nom et prénom enregistrés avec une majuscule initiale (inscription, connexion Apple/Google, modification du profil)

Version 1.2.0

May 25, 2026

Ajouté

  • Membres : icône « lien » sur ceux ayant rejoint le count (onglet Soldes + Paramètres) et date d'arrivée sur leur fiche — permet de repérer qui n'a pas encore rejoint le count
  • Programme de fidélité « Le Club » : cumulez des points en parrainant vos amis (+100 par filleul, +50 de bienvenue), bientôt utilisables avec nos partenaires
  • Bandeau « Active les notifications » sur l'accueil, pour ne plus rater l'activation des rappels

Modifié

  • Menu d'un count allégé : Archiver et Supprimer déplacés dans les Paramètres (zone danger)
  • « Quitter le count » accessible depuis le menu (clic long / « ... ») d'un count dans la liste
  • Répartition en pourcentage et en parts : aperçu du montant par membre dans la devise, et champs de saisie compactés (plus de place pour les noms longs)
  • Profil : bouton « Enregistrer » remonté sous la langue (il concerne le profil, plus sous les moyens de paiement)
  • Roadmap : bouton « Retour » au lieu de « Profil » (revient à l'écran d'origine, ex. depuis les Astuces)
  • Rejoindre un count : plus d'ajout automatique — on réclame explicitement un membre existant, ou on s'ajoute comme nouveau participant avec confirmation

Corrigé

  • Champs de saisie (montant par payeur, montants/pourcentages/parts de répartition) rognés verticalement sur Android
  • Carte d'un count devenant translucide pendant le swipe (on voyait les actions à travers)
  • Indicateur de fraîcheur déplacé sur la ligne « Mes counts » : son apparition/disparition ne décale plus la liste
  • Notifications push : token (ré)enregistré automatiquement quand la permission est déjà accordée — corrige les notifs et le test qui échouaient (« token absent »)

Version 1.1.0

May 22, 2026

Ajouté

  • Aide sur le fonctionnement des devises à la création d'un count
  • Consultation en lecture seule d'une dépense sur un count clôturé
  • Actions par glissement sur un count (archiver, supprimer, plus d'options)

Modifié

  • Rappels automatiques limités à 3 échéances : 7, 14 et 30 jours
  • Nom du count et des membres : première lettre mise en majuscule automatiquement
  • Répartition par défaut : suppression de l'option « Montant »
  • Option « Dupliquer » accessible depuis le menu du count
  • Astuces : points de navigation cliquables pour aller directement à une astuce
  • Sélection automatique au focus des champs montant, répartition et parts d'une dépense pour les remplacer plus vite
  • Réordonnancement des moyens de paiement plus lisible (flèches agrandies, déplacement instantané)
  • Écran de règlement : badge « Préféré » sur le moyen de paiement prioritaire du destinataire
  • Ajout d'une dépense : un seul payeur par défaut (sélection en un tap), option « Plusieurs payeurs » pour répartir le paiement

Corrigé

  • Logo de l'icône Android trop grand qui débordait du cercle
  • Membre tout juste ajouté manquant dans l'onglet Solde jusqu'au rafraîchissement suivant
  • Lien d'invitation sur Android qui ouvrait le navigateur au lieu de l'app, et envoi automatique vers le store si l'app n'est pas installée
  • Moyens de paiement : l'ordre choisi n'était pas respecté sur l'écran de règlement

Version 1.0.27

May 19, 2026

Ajouté

  • Page Nouveautés sur le site et le Back Office

Corrigé

  • Champ d'ajout de membre masqué par le clavier sur Android lors de la création d'un count
  • Auto-validation du membre en cours de saisie au moment d'enregistrer (création et paramètres du count)