Skip to content

Un seul endroit pour les ports, un seul lanceur par geste - #36

Merged
Shaenn merged 4 commits into
mainfrom
un-seul-endroit-pour-les-ports
Aug 25, 2026
Merged

Un seul endroit pour les ports, un seul lanceur par geste#36
Shaenn merged 4 commits into
mainfrom
un-seul-endroit-pour-les-ports

Conversation

@Shaenn

@Shaenn Shaenn commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Deux chantiers qui se tiennent : les ports cessent d'être recopiés, et les
lanceurs cessent d'être doublés.

Les deux ports ne sont plus écrits qu'à un endroit

Ils vivaient à neuf : deux fois dans quasar.config.ts (l'écoute et la cible du
proxy), dans server/env.ts, dans le verbe stop, dans les deux scripts
PowerShell, dans l'en-tête et le défaut de free-ports.mjs, et dans le schéma de
CLAUDE.md. Aucun des neuf ne vérifiait les autres, et rien ne cassait
bruyamment quand l'un décrochait : un proxy qui pointe dans le vide, un stop
qui libère un port que personne n'occupe.

Ils vivent désormais dans ports.json, à la racine. Du JSON plutôt qu'un module
TypeScript pour rester lisible hors du monde TypeScript — ConvertFrom-Json côté
PowerShell, AddJsonFile pour un back C#.

PORT garde la priorité côté serveur, et free-ports.mjs accepte toujours des
ports en argument : c'est ce qui permet une seconde instance sans toucher au
fichier partagé.

Les lanceurs délèguent, PowerShell s'efface

dev.ps1 attendait que le port réponde pour ouvrir le navigateur — travail que
quasar.config.ts fait déjà seul par devServer.open, si bien que le lancement
ouvrait deux fenêtres. Cette logique retirée, plus rien ne justifiait PowerShell :
stop.ps1 ne faisait qu'appeler free-ports.mjs, et les .bat ne faisaient
qu'appeler les .ps1.

Restent dev.bat et stop.bat, qui ne font que déléguer à pnpm dev:all et
pnpm stop — le double-clic pour qui préfère ça à un terminal, et une seule
commande de lancement, celle du manifeste.

Au passage

pnpm preview manquait : build puis start, un seul processus qui sert
dist/spa et l'API, comme en production. La commande existait de fait, en trois
gestes qu'il fallait connaître.

CLAUDE.md, les deux README et les deux CONTRIBUTING disent ce que les
commandes font maintenant.

Vérification

pnpm verifie passe : lint sans relevé, typecheck sur les trois projets, 517
tests verts.

🤖 Generated with Claude Code

Shaenn and others added 4 commits August 25, 2026 16:51
Ils vivaient à neuf : deux fois dans quasar.config.ts (l'écoute et la cible du
proxy), dans server/env.ts, dans le verbe `stop`, dans les deux scripts
PowerShell, dans l'en-tête et le défaut de free-ports.mjs, et dans le schéma de
CLAUDE.md. Aucun des neuf ne vérifiait les autres, et rien ne cassait bruyamment
quand l'un décrochait : un proxy qui pointe dans le vide, un `stop` qui libère un
port que personne n'occupe.

ports.json et non ports.ts, pour rester lisible hors du monde TypeScript —
ConvertFrom-Json côté PowerShell, AddJsonFile pour un back C#.

`PORT` garde la priorité côté serveur, et free-ports.mjs accepte toujours des
ports en argument : c'est ce qui permet une seconde instance sans toucher au
fichier partagé.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dev.ps1 attendait que le port réponde pour ouvrir le navigateur — travail que
quasar.config.ts fait déjà seul par devServer.open, si bien que le lancement
ouvrait deux fenêtres. Cette logique retirée, plus rien ne justifiait
PowerShell : stop.ps1 ne faisait qu'appeler free-ports.mjs, et les .bat ne
faisaient qu'appeler les .ps1.

Restent dev.bat et stop.bat, qui ne font que déléguer à `pnpm dev:all` et
`pnpm stop` — le double-clic pour qui préfère ça à un terminal, et une seule
commande de lancement, celle du manifeste. Ils gardent la fenêtre ouverte sur un
échec, sans quoi un démarrage qui rate se referme avant qu'on ait lu pourquoi.

Les commentaires de free-ports.mjs et server/env.ts parlaient encore des scripts
PowerShell au présent ; ils ne le font plus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`stop` n'énumère plus les ports : free-ports.mjs les lit lui-même dans
ports.json.

`preview` manquait — build puis `start`, un seul processus qui sert dist/spa et
l'API, comme en production. La commande existait de fait, en trois gestes qu'il
fallait connaître.

CLAUDE.md ne listait que dev:all et les vérifications : il dit maintenant ce que
chacune des cinq commandes de lancement fait, et d'où viennent les deux ports.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Rien de visible à l'écran : les ports tiennent dans un fichier, les lanceurs
tiennent dans le manifeste. Un correctif d'outillage, donc un correctif de
version.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shaenn
Shaenn merged commit 08def2f into main Aug 25, 2026
1 check passed
@Shaenn
Shaenn deleted the un-seul-endroit-pour-les-ports branch August 25, 2026 14:58
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.

1 participant