Skip to content

feat(nav): rendre l'oubli d'une destination impossible (Phase 1, lot 1)#262

Merged
thierryvm merged 1 commit into
mainfrom
feat/nav-destination-registry
Jul 25, 2026
Merged

feat(nav): rendre l'oubli d'une destination impossible (Phase 1, lot 1)#262
thierryvm merged 1 commit into
mainfrom
feat/nav-destination-registry

Conversation

@thierryvm

@thierryvm thierryvm commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Premier lot de la Phase 1 de la refonte UX. Aucun changement visuel — il ferme la cause structurelle du bug que tu as signalé, et ajoute le lien manquant.

Le défaut

/app/commitments (« Engagements ») était inatteignable depuis la nav mobile : déclaré dans le header desktop (hidden lg:flex) et nulle part ailleurs. Hors du cockpit, la page n'existait plus sur téléphone.

La cause n'est pas le lien manquant, c'est qu'on pouvait l'oublier. Les destinations étaient déclarées trois fois — tableau privé dans BottomTabBar, JSX en dur dans MoreSheet, JSX en dur dans Header — sans rien pour les relier.

Le correctif

src/components/layout/app-destinations.ts, module server-safe, déclare les 7 destinations une seule fois. Les trois surfaces le consomment.

Le test lit le système de fichiers dans les deux sens : une route sans entrée échoue, et une entrée pointant vers une route supprimée échoue aussi (sinon on rendrait un lien 404 sur les trois surfaces sans que rien ne bronche). Falsifiabilité vérifiée : registre amputé d'Engagements → rouge ; restauré → vert.

Décisions que plan-reviewer a corrigées avant que j'écrive une ligne

  • Les libellés restent différents par surface : la barre dit « Cockpit »/« Factures », le header dit « Tableau de bord »/« Charges ». Une clé unique aurait silencieusement réécrit une copie rédigée pour chaque contexte.
  • Les icônes et clés i18n restent hors du registre (server-safe + clés next-intl typées) mais deviennent exhaustives par le type : une destination sans icône ne compile pas.
  • Le champ s'appelle mobilePlacement, pas surface — le header desktop rend la liste complète en l'ignorant. Un champ nommé surface aurait invité un futur lecteur à filtrer dessus et à faire disparaître des destinations du desktop.
  • Les ids ne sont pas des noms de dossier : bills/app/charges, simulate/app/simulator, parce qu'ils sont gravés dans les data-testid assertés par les suites unitaire et e2e.

Ce que la validation e2e a révélé

Un test existant a échoué à cause de ce changement : le lien ajouté rehausse le sheet, et Playwright clique le centre d'un élément par défaut. Le backdrop étant fixed inset-0, son centre est le milieu du viewport — désormais couvert par le sheet. Le clic atterrissait sur le sheet.

L'intention du test était juste, son point de clic était devenu faux : il vise maintenant la bande exposée en haut, ce que fait un utilisateur.

À retenir pour le lot de redesign : le sheet grandit avec son contenu et occupe déjà une part notable d'un iPhone SE. La répartition barre/sheet devra être arbitrée sur pièces.

Preuve

Vérification Résultat
npm run test 1659 / 1659
typecheck · lint · lint:use-server 0 erreur
e2e bottom-tab-bar iPhone 14 12 / 12, specs authentifiées comprises
e2e bottom-tab-bar iPhone SE 12 / 12

Ces specs s'auto-skippent en CI (pas de SUPABASE_SERVICE_ROLE_KEY), donc la CI ne peut pas valider ce lot : la passe locale était exigée par la revue, elle a été faite. Deux frictions consignées dans le rapport — playwright.config.ts ne charge pas .env.local, et e2e:auth sert un build prod où le rate limit échoue en fermé sur l'Upstash factice.

Limite assumée

Sur /app/commitments, aucun onglet ne porte aria-current — même comportement qu'/admin aujourd'hui. Résolu au lot de redesign.

Rapport : docs/prs/PR-nav-destination-registry-report.md

Summary by Sourcery

Introduire un registre unique, sûr côté serveur, pour les destinations de navigation du cockpit et relier toutes les surfaces de navigation à celui-ci afin d’éviter que certaines routes deviennent inaccessibles, notamment en exposant Engagements sur mobile sans modifier la conception visuelle.

New Features:

  • Ajouter un registre partagé des destinations de l’app consommé par la barre d’onglets du bas, la feuille Plus sur mobile et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Rendre la destination Engagements (/app/commitments) accessible depuis le mobile via la feuille Plus, en veillant à ce qu’elle soit atteignable en dehors de la carte du cockpit.

Enhancements:

  • Refactorer la barre d’onglets du bas, l’en-tête desktop et la feuille Plus pour dériver leurs destinations du registre partagé tout en conservant des libellés et icônes exhaustifs et sûrs au niveau du typage pour chaque surface.
  • Ajuster l’interaction e2e mobile avec le fond de la feuille Plus pour cliquer sur la zone exposée plutôt que sur son centre, afin que la fermeture reste fiable lorsque la hauteur de la feuille change.

Documentation:

  • Ajouter un rapport de PR détaillé documentant le registre des destinations de navigation, son objectif, la stratégie de test, les considérations d’i18n et les limites UX connues.

Tests:

  • Ajouter des tests basés sur le système de fichiers qui imposent une cohérence bidirectionnelle entre les dossiers de routes /app et le registre des destinations de navigation, y compris les invariants de placement mobile et l’atteignabilité de la racine du cockpit.
  • Étendre les tests unitaires de la barre d’onglets du bas et les spécifications e2e iOS mobile pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris Engagements, sont rendues, atteignables et se comportent correctement.
Original summary in English

Summary by Sourcery

Introduce a single, server-safe registry for cockpit navigation destinations and wire all navigation surfaces to it to prevent routes from becoming unreachable, notably exposing Engagements on mobile without changing the visual design.

New Features:

  • Add a shared app destination registry consumed by the bottom tab bar, the mobile More sheet, and the desktop header to centralise cockpit navigation.
  • Make the Engagements (/app/commitments) destination accessible from mobile via the More sheet, ensuring it is reachable outside the cockpit card.

Enhancements:

  • Refactor the bottom tab bar, desktop header, and More sheet to derive their destinations from the shared registry while keeping per-surface labels and icons exhaustive and type-safe.
  • Adjust the mobile e2e interaction with the More sheet backdrop to click the exposed area rather than its centre so dismissal remains reliable as sheet height changes.

Documentation:

  • Add a detailed PR report documenting the navigation destination registry, its purpose, test strategy, i18n considerations, and known UX limits.

Tests:

  • Add filesystem-based tests that enforce bidirectional consistency between /app route folders and the navigation destination registry, including mobile placement invariants and cockpit root reachability.
  • Extend bottom tab bar unit tests and mobile iOS e2e specs to verify all registry-declared sheet destinations, including Engagements, are rendered, reachable, and behave correctly.

Nouvelles fonctionnalités :

  • Ajouter un registre de destinations d’app « compatible serveur » consommé par la barre d’onglets inférieure, la feuille « Plus » et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Exposer la destination des engagements dans la navigation mobile via la feuille « Plus », en garantissant qu’elle reste accessible en dehors de la carte de cockpit.

Améliorations :

  • Refactoriser la barre d’onglets inférieure, l’en-tête desktop et la feuille « Plus » pour qu’ils dérivent leurs destinations du registre partagé, tout en conservant des libellés et icônes spécifiques à chaque surface, rendus exhaustifs via TypeScript.
  • Ajuster l’interaction e2e mobile avec l’arrière-plan de la feuille « Plus » afin qu’elle clique de manière fiable sur la zone exposée à mesure que la hauteur de la feuille change.

Documentation :

  • Ajouter un rapport de PR détaillé documentant le registre de destinations de navigation, sa raison d’être, la stratégie de tests et les limites UX connues.

Tests :

  • Ajouter des tests basés sur le système de fichiers qui garantissent la cohérence bidirectionnelle entre les routes /app et le registre de destinations de navigation, et qui valident les invariants de placement mobile.
  • Étendre les tests unitaires de la barre d’onglets inférieure et les spécifications e2e iOS pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris les engagements, sont rendues et accessibles.
Original summary in English

Summary by Sourcery

Introduire un registre unique, sûr côté serveur, pour les destinations de navigation du cockpit et relier toutes les surfaces de navigation à celui-ci afin d’éviter que certaines routes deviennent inaccessibles, notamment en exposant Engagements sur mobile sans modifier la conception visuelle.

New Features:

  • Ajouter un registre partagé des destinations de l’app consommé par la barre d’onglets du bas, la feuille Plus sur mobile et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Rendre la destination Engagements (/app/commitments) accessible depuis le mobile via la feuille Plus, en veillant à ce qu’elle soit atteignable en dehors de la carte du cockpit.

Enhancements:

  • Refactorer la barre d’onglets du bas, l’en-tête desktop et la feuille Plus pour dériver leurs destinations du registre partagé tout en conservant des libellés et icônes exhaustifs et sûrs au niveau du typage pour chaque surface.
  • Ajuster l’interaction e2e mobile avec le fond de la feuille Plus pour cliquer sur la zone exposée plutôt que sur son centre, afin que la fermeture reste fiable lorsque la hauteur de la feuille change.

Documentation:

  • Ajouter un rapport de PR détaillé documentant le registre des destinations de navigation, son objectif, la stratégie de test, les considérations d’i18n et les limites UX connues.

Tests:

  • Ajouter des tests basés sur le système de fichiers qui imposent une cohérence bidirectionnelle entre les dossiers de routes /app et le registre des destinations de navigation, y compris les invariants de placement mobile et l’atteignabilité de la racine du cockpit.
  • Étendre les tests unitaires de la barre d’onglets du bas et les spécifications e2e iOS mobile pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris Engagements, sont rendues, atteignables et se comportent correctement.
Original summary in English

Summary by Sourcery

Introduce a single, server-safe registry for cockpit navigation destinations and wire all navigation surfaces to it to prevent routes from becoming unreachable, notably exposing Engagements on mobile without changing the visual design.

New Features:

  • Add a shared app destination registry consumed by the bottom tab bar, the mobile More sheet, and the desktop header to centralise cockpit navigation.
  • Make the Engagements (/app/commitments) destination accessible from mobile via the More sheet, ensuring it is reachable outside the cockpit card.

Enhancements:

  • Refactor the bottom tab bar, desktop header, and More sheet to derive their destinations from the shared registry while keeping per-surface labels and icons exhaustive and type-safe.
  • Adjust the mobile e2e interaction with the More sheet backdrop to click the exposed area rather than its centre so dismissal remains reliable as sheet height changes.

Documentation:

  • Add a detailed PR report documenting the navigation destination registry, its purpose, test strategy, i18n considerations, and known UX limits.

Tests:

  • Add filesystem-based tests that enforce bidirectional consistency between /app route folders and the navigation destination registry, including mobile placement invariants and cockpit root reachability.
  • Extend bottom tab bar unit tests and mobile iOS e2e specs to verify all registry-declared sheet destinations, including Engagements, are rendered, reachable, and behave correctly.
Original summary in English

Summary by Sourcery

Introduire un registre unique, sûr côté serveur, pour les destinations de navigation du cockpit et relier toutes les surfaces de navigation à celui-ci afin d’éviter que certaines routes deviennent inaccessibles, notamment en exposant Engagements sur mobile sans modifier la conception visuelle.

New Features:

  • Ajouter un registre partagé des destinations de l’app consommé par la barre d’onglets du bas, la feuille Plus sur mobile et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Rendre la destination Engagements (/app/commitments) accessible depuis le mobile via la feuille Plus, en veillant à ce qu’elle soit atteignable en dehors de la carte du cockpit.

Enhancements:

  • Refactorer la barre d’onglets du bas, l’en-tête desktop et la feuille Plus pour dériver leurs destinations du registre partagé tout en conservant des libellés et icônes exhaustifs et sûrs au niveau du typage pour chaque surface.
  • Ajuster l’interaction e2e mobile avec le fond de la feuille Plus pour cliquer sur la zone exposée plutôt que sur son centre, afin que la fermeture reste fiable lorsque la hauteur de la feuille change.

Documentation:

  • Ajouter un rapport de PR détaillé documentant le registre des destinations de navigation, son objectif, la stratégie de test, les considérations d’i18n et les limites UX connues.

Tests:

  • Ajouter des tests basés sur le système de fichiers qui imposent une cohérence bidirectionnelle entre les dossiers de routes /app et le registre des destinations de navigation, y compris les invariants de placement mobile et l’atteignabilité de la racine du cockpit.
  • Étendre les tests unitaires de la barre d’onglets du bas et les spécifications e2e iOS mobile pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris Engagements, sont rendues, atteignables et se comportent correctement.
Original summary in English

Summary by Sourcery

Introduce a single, server-safe registry for cockpit navigation destinations and wire all navigation surfaces to it to prevent routes from becoming unreachable, notably exposing Engagements on mobile without changing the visual design.

New Features:

  • Add a shared app destination registry consumed by the bottom tab bar, the mobile More sheet, and the desktop header to centralise cockpit navigation.
  • Make the Engagements (/app/commitments) destination accessible from mobile via the More sheet, ensuring it is reachable outside the cockpit card.

Enhancements:

  • Refactor the bottom tab bar, desktop header, and More sheet to derive their destinations from the shared registry while keeping per-surface labels and icons exhaustive and type-safe.
  • Adjust the mobile e2e interaction with the More sheet backdrop to click the exposed area rather than its centre so dismissal remains reliable as sheet height changes.

Documentation:

  • Add a detailed PR report documenting the navigation destination registry, its purpose, test strategy, i18n considerations, and known UX limits.

Tests:

  • Add filesystem-based tests that enforce bidirectional consistency between /app route folders and the navigation destination registry, including mobile placement invariants and cockpit root reachability.
  • Extend bottom tab bar unit tests and mobile iOS e2e specs to verify all registry-declared sheet destinations, including Engagements, are rendered, reachable, and behave correctly.

Nouvelles fonctionnalités :

  • Ajouter un registre de destinations d’app « compatible serveur » consommé par la barre d’onglets inférieure, la feuille « Plus » et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Exposer la destination des engagements dans la navigation mobile via la feuille « Plus », en garantissant qu’elle reste accessible en dehors de la carte de cockpit.

Améliorations :

  • Refactoriser la barre d’onglets inférieure, l’en-tête desktop et la feuille « Plus » pour qu’ils dérivent leurs destinations du registre partagé, tout en conservant des libellés et icônes spécifiques à chaque surface, rendus exhaustifs via TypeScript.
  • Ajuster l’interaction e2e mobile avec l’arrière-plan de la feuille « Plus » afin qu’elle clique de manière fiable sur la zone exposée à mesure que la hauteur de la feuille change.

Documentation :

  • Ajouter un rapport de PR détaillé documentant le registre de destinations de navigation, sa raison d’être, la stratégie de tests et les limites UX connues.

Tests :

  • Ajouter des tests basés sur le système de fichiers qui garantissent la cohérence bidirectionnelle entre les routes /app et le registre de destinations de navigation, et qui valident les invariants de placement mobile.
  • Étendre les tests unitaires de la barre d’onglets inférieure et les spécifications e2e iOS pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris les engagements, sont rendues et accessibles.
Original summary in English

Summary by Sourcery

Introduire un registre unique, sûr côté serveur, pour les destinations de navigation du cockpit et relier toutes les surfaces de navigation à celui-ci afin d’éviter que certaines routes deviennent inaccessibles, notamment en exposant Engagements sur mobile sans modifier la conception visuelle.

New Features:

  • Ajouter un registre partagé des destinations de l’app consommé par la barre d’onglets du bas, la feuille Plus sur mobile et l’en-tête desktop afin de centraliser la navigation du cockpit.
  • Rendre la destination Engagements (/app/commitments) accessible depuis le mobile via la feuille Plus, en veillant à ce qu’elle soit atteignable en dehors de la carte du cockpit.

Enhancements:

  • Refactorer la barre d’onglets du bas, l’en-tête desktop et la feuille Plus pour dériver leurs destinations du registre partagé tout en conservant des libellés et icônes exhaustifs et sûrs au niveau du typage pour chaque surface.
  • Ajuster l’interaction e2e mobile avec le fond de la feuille Plus pour cliquer sur la zone exposée plutôt que sur son centre, afin que la fermeture reste fiable lorsque la hauteur de la feuille change.

Documentation:

  • Ajouter un rapport de PR détaillé documentant le registre des destinations de navigation, son objectif, la stratégie de test, les considérations d’i18n et les limites UX connues.

Tests:

  • Ajouter des tests basés sur le système de fichiers qui imposent une cohérence bidirectionnelle entre les dossiers de routes /app et le registre des destinations de navigation, y compris les invariants de placement mobile et l’atteignabilité de la racine du cockpit.
  • Étendre les tests unitaires de la barre d’onglets du bas et les spécifications e2e iOS mobile pour vérifier que toutes les destinations de feuille déclarées dans le registre, y compris Engagements, sont rendues, atteignables et se comportent correctement.
Original summary in English

Summary by Sourcery

Introduce a single, server-safe registry for cockpit navigation destinations and wire all navigation surfaces to it to prevent routes from becoming unreachable, notably exposing Engagements on mobile without changing the visual design.

New Features:

  • Add a shared app destination registry consumed by the bottom tab bar, the mobile More sheet, and the desktop header to centralise cockpit navigation.
  • Make the Engagements (/app/commitments) destination accessible from mobile via the More sheet, ensuring it is reachable outside the cockpit card.

Enhancements:

  • Refactor the bottom tab bar, desktop header, and More sheet to derive their destinations from the shared registry while keeping per-surface labels and icons exhaustive and type-safe.
  • Adjust the mobile e2e interaction with the More sheet backdrop to click the exposed area rather than its centre so dismissal remains reliable as sheet height changes.

Documentation:

  • Add a detailed PR report documenting the navigation destination registry, its purpose, test strategy, i18n considerations, and known UX limits.

Tests:

  • Add filesystem-based tests that enforce bidirectional consistency between /app route folders and the navigation destination registry, including mobile placement invariants and cockpit root reachability.
  • Extend bottom tab bar unit tests and mobile iOS e2e specs to verify all registry-declared sheet destinations, including Engagements, are rendered, reachable, and behave correctly.

…missing one

/app/commitments shipped unreachable from mobile navigation: declared in the
desktop header (hidden lg:flex) and nowhere else, so outside the cockpit card
that links to it the page did not exist on a phone. Reported in production by
@Thierry.

The defect worth fixing is not the missing link, it is that forgetting one was
undetectable. Destinations were declared three times — a private array in
BottomTabBar, hardcoded JSX in MoreSheet, hardcoded JSX in Header — with nothing
tying them together. app-destinations.ts is now the single declaration, and its
test reads the filesystem in both directions: a route with no entry fails, and
an entry pointing at a deleted route fails too. Verified falsifiable — removing
commitments from the registry turns it red.

Icons and i18n keys deliberately stay out of the registry. It is server-safe (no
React) and next-intl keys are typed against fr-BE.json, so only literals compile.
Each surface keeps a Record<AppDestinationId, …>, which gives the same
exhaustiveness: a destination without an icon or a label does not build.

Labels stay per-surface, and that is the point. The bar says Cockpit / Factures
/ Simuler where the desktop header says Tableau de bord / Charges / Simulateur.
One shared key would have silently rewritten copy written for each context.

The field is called mobilePlacement rather than surface because the desktop
header renders the full list and ignores it. A field named surface on a registry
consumed by three surfaces reads as "filter on me", and doing that in Header
would make destinations vanish from desktop — the very bug class this module
prevents. Ids are not folder names either: bills lives at charges, simulate at
simulator, and both are baked into data-testids the e2e suite asserts on.
Harmonising them would break two suites for nothing.

Nothing else changes: same classes, same labels, same rendering, plus the
Engagements link in the sheet. The visual redesign is the next lot.

One existing e2e test failed because of this change, and it was informative. The
extra link makes the sheet taller, and Playwright clicks an element's centre by
default — the backdrop is fixed inset-0, so its centre is the viewport middle,
now covered by the sheet. The click landed on the sheet and dismissed nothing.
The test's intent was right, its click point had become wrong: it now aims at
the exposed strip a user actually taps, and stays correct whatever the sheet's
height. Worth carrying into the redesign lot: the sheet grows with its content
and already takes a real share of an iPhone SE screen.

Validated locally at 12/12 on iPhone 14 and iPhone SE, authenticated specs
included — they are seededUser-gated and auto-skip in CI, so they cannot cover
this lot automatically. Two frictions worth recording: playwright.config.ts does
not load .env.local, so a direct run skips the seeded specs even when the key
exists; and npm run e2e:auth serves a production build where rateLimit fails
closed against the placeholder Upstash URL, breaking the first login. The pass
was therefore run against the dev server, where it fails open — a fidelity gap
that concerns Server Action compile timing, not navigation rendering.

Known and accepted: /app/commitments lights up no tab (same as /admin today),
resolved when the bar/sheet split is arbitrated in the redesign lot.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ankora Ready Ready Preview, Comment Jul 25, 2026 10:56pm

@github-actions github-actions Bot added status:review-needed Ready for review type:feat New user-facing feature labels Jul 25, 2026
@sourcery-ai

sourcery-ai Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

🧙 Sourcery examine votre pull request !


Conseils et commandes

Interagir avec Sourcery

  • Lancer une nouvelle revue : Commentez @sourcery-ai review sur la pull request.
  • Poursuivre les discussions : Répondez directement aux commentaires de revue de Sourcery.
  • Générer un ticket GitHub à partir d’un commentaire de revue : Demandez à Sourcery de créer un ticket à partir d’un commentaire de revue en y répondant. Vous pouvez aussi répondre à un commentaire de revue avec @sourcery-ai issue pour créer un ticket à partir de celui-ci.
  • Générer un titre de pull request : Écrivez @sourcery-ai n’importe où dans le titre de la pull request pour générer un titre à tout moment. Vous pouvez aussi commenter @sourcery-ai title sur la pull request pour (re)générer le titre à tout moment.
  • Générer un résumé de pull request : Écrivez @sourcery-ai summary n’importe où dans le corps de la pull request pour générer un résumé de PR à tout moment, exactement à l’endroit où vous le souhaitez. Vous pouvez aussi commenter @sourcery-ai summary sur la pull request pour (re)générer le résumé à tout moment.
  • Générer le guide du relecteur : Commentez @sourcery-ai guide sur la pull request pour (re)générer le guide du relecteur à tout moment.
  • Résoudre tous les commentaires Sourcery : Commentez @sourcery-ai resolve sur la pull request pour marquer tous les commentaires Sourcery comme résolus. Utile si vous avez déjà pris en compte tous les commentaires et ne voulez plus les voir.
  • Ignorer toutes les revues Sourcery : Commentez @sourcery-ai dismiss sur la pull request pour ignorer toutes les revues Sourcery existantes. Particulièrement utile si vous voulez repartir de zéro avec une nouvelle revue – n’oubliez pas de commenter @sourcery-ai review pour lancer une nouvelle revue !

Personnaliser votre expérience

Accédez à votre dashboard pour :

  • Activer ou désactiver des fonctionnalités de revue telles que le résumé de pull request généré par Sourcery, le guide du relecteur et d’autres encore.
  • Modifier la langue de la revue.
  • Ajouter, supprimer ou éditer des instructions de revue personnalisées.
  • Ajuster d’autres paramètres de revue.

Obtenir de l’aide

Original review guide in English

🧙 Sourcery is reviewing your pull request!


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@thierryvm
thierryvm merged commit e5c7eeb into main Jul 25, 2026
12 checks passed
@thierryvm
thierryvm deleted the feat/nav-destination-registry branch July 25, 2026 23:06
thierryvm added a commit that referenced this pull request Jul 26, 2026
…SEO (#265)

Handoff de fin de session. Documentation uniquement, 1 fichier.

**Livré** : #261 (redirections localisées), #262 (registre des
destinations de nav), #263 (sélecteur de langue), #264 (SEO) — toutes
mergées.

**Reste à faire, ordonné** : le lot 2 de la refonte UX en tête, avec les
trois limites que le lot 1 s'est explicitement interdit de traiter
reprises comme entrées plutôt que laissées à re-découvrir. Puis la
reconnexion fantôme, sans diagnostic à ce jour. Puis les dettes tracées.

**Frictions d'environnement consignées** parce qu'elles ont coûté du
temps deux fois chacune : `playwright.config.ts` ne charge pas
`.env.local`, `e2e:auth` sert un build prod où le rate limit échoue en
fermé sur l'Upstash factice, la variable est `E2E_BASE_URL`, et le port
3000 appartient à un autre projet.

Miroir dans le vault Obsidian, slug vérifié via `_index.md`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:review-needed Ready for review type:feat New user-facing feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant