Skip to content

fix: réveiller la session avant d'écrire les .env (bug reconnect-last 1er essai)#6

Merged
pascalsaussier-edifice merged 1 commit into
mainfrom
fix-reconnect-warm-session
Jun 26, 2026
Merged

fix: réveiller la session avant d'écrire les .env (bug reconnect-last 1er essai)#6
pascalsaussier-edifice merged 1 commit into
mainfrom
fix-reconnect-warm-session

Conversation

@pascalsaussier-edifice

Copy link
Copy Markdown
Collaborator

Résumé

Corrige le bug remonté : sur reconnect-last (ou sélection de l'historique sur un connect), les tokens générés ne fonctionnent pas au 1er essai ; relancer la commande règle le problème.

Contexte

Une session OAuth2 ENT n'est pleinement active qu'après une première requête authentifiée. loginAndGetCookies capture les cookies du 302 (redirect: 'manual') sans finaliser la session côté serveur. Résultat : au 1er essai les cookies écrits dans le .env pointent vers une session pas encore initialisée → rejetés ; au 2e essai ça passe.

Particulièrement visible sur reconnect-last/historique car skipConfirm: true supprime toute pause entre le login et l'écriture du .env.

Changements

  • EnvSyncService.warmSession : après login et avant d'écrire les .env, sonde /auth/oauth2/userinfo (réutilise isSessionAlive) jusqu'à ce que la session réponde — la sonde réalise la première requête authentifiée qui finalise la session.
  • Best-effort : si le réseau échoue ou si le budget de sondes (5 × 400 ms) est épuisé, on écrit quand même le .env (on ne casse pas une connexion qui marcherait).
  • Test ajouté : withAliveSequence([false, true]) vérifie qu'on sonde bien la session fraîche (bon sessionId) jusqu'à réponse vivante avant d'écrire le .env.

Comment tester

  1. pnpm run build
  2. Faire un reconnect-last à froid (après une longue inactivité).
  3. Vérifier que les tokens fonctionnent dès le 1er essai, sans relance.

Suite de tests : pnpm test → 46 tests OK. Typecheck + lint OK.

🤖 Generated with Claude Code

Une session OAuth2 ENT n'est pleinement active qu'après une première
requête authentifiée. loginAndGetCookies capturait les cookies du 302
sans finaliser la session, donc au 1er essai les tokens écrits dans le
.env pointaient vers une session pas encore initialisée (rejetés), puis
acceptés au 2e essai. Surtout visible sur reconnect-last/historique
(skipConfirm supprime toute pause entre login et écriture).

warmSession sonde /auth/oauth2/userinfo (réutilise isSessionAlive)
jusqu'à ce que la session réponde, avant d'écrire les .env. Best-effort :
on écrit quand même si le réseau échoue ou si le budget de sondes est
épuisé.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@damienromito damienromito left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'ai pu tester, tout fonctionne. Par contre en relisant le code je n'ai pas compris ce qui n'allait pas ^^

@pascalsaussier-edifice
pascalsaussier-edifice merged commit 44ca84f into main Jun 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants