La publication de ce ticket ne constitue pas une autorisation de démarrer son implémentation.
What to build
Réécrire l'interface du Compagnon (src/Compagnon/Web/app.js) en Vue 3, assemblée par Vite et écrite en TypeScript, sans changer le comportement ni le contrat DOM vérifié par la suite existante. Extraire la logique pure — estimation de position, fraîcheur des observations, sélection de l'historique, association de l'aide par chevauchement, nettoyage ASS — dans des modules sans framework couverts par node:test. Décision consignée dans ADR 0003.
Acceptance criteria
La suite de bout en bout existante (tests/*.test.mjs) passe sans aucune modification : mêmes identifiants, classes et libellés accessibles.
Le comportement visible est identique (mêmes messages, mêmes bornes de suivi, même horloge locale entre deux observations) et le style est inchangé (style.css conservé) ; aucune refonte visuelle dans ce lot.
La logique pure vit dans des modules TypeScript sans dépendance à Vue, avec des tests unitaires node:test ; npm run test:unit est disponible.
Les sources vivent hors de src/Compagnon/Web/, qui devient généré et ignoré par Git ; scripts/package.sh construit le front avant la compilation C# et produit toujours un DLL unique.
Les fichiers servis gardent des noms fixes (index.html, app.js, style.css) et la CSP script-src 'self' reste valable : aucune évaluation à l'exécution, aucune ressource externe, pas de router ni de Pinia.
npm run typecheck s'appuie sur vue-tsc sur les sources front.
La version du plugin est portée à 0.7.0 (package.sh, README) ; le README décrit le nouveau flux de développement (vite dev avec proxy Jellyfin, construction du paquet).
Un rapport de validation docs/validation/issue-N.md consigne la parité prouvée.
La publication de ce ticket ne constitue pas une autorisation de démarrer son implémentation.
## What to build
Réécrire l'interface du Compagnon (`src/Compagnon/Web/app.js`) en Vue 3, assemblée par Vite et écrite en TypeScript, sans changer le comportement ni le contrat DOM vérifié par la suite existante. Extraire la logique pure — estimation de position, fraîcheur des observations, sélection de l'historique, association de l'aide par chevauchement, nettoyage ASS — dans des modules sans framework couverts par `node:test`. Décision consignée dans [ADR 0003](docs/adr/0003-construire-l-interface-avec-vue-et-vite.md).
## Acceptance criteria
- [ ] La suite de bout en bout existante (`tests/*.test.mjs`) passe sans aucune modification : mêmes identifiants, classes et libellés accessibles.
- [ ] Le comportement visible est identique (mêmes messages, mêmes bornes de suivi, même horloge locale entre deux observations) et le style est inchangé (`style.css` conservé) ; aucune refonte visuelle dans ce lot.
- [ ] La logique pure vit dans des modules TypeScript sans dépendance à Vue, avec des tests unitaires `node:test` ; `npm run test:unit` est disponible.
- [ ] Les sources vivent hors de `src/Compagnon/Web/`, qui devient généré et ignoré par Git ; `scripts/package.sh` construit le front avant la compilation C# et produit toujours un DLL unique.
- [ ] Les fichiers servis gardent des noms fixes (`index.html`, `app.js`, `style.css`) et la CSP `script-src 'self'` reste valable : aucune évaluation à l'exécution, aucune ressource externe, pas de router ni de Pinia.
- [ ] `npm run typecheck` s'appuie sur `vue-tsc` sur les sources front.
- [ ] La version du plugin est portée à 0.7.0 (`package.sh`, README) ; le README décrit le nouveau flux de développement (`vite dev` avec proxy Jellyfin, construction du paquet).
- [ ] Un rapport de validation `docs/validation/issue-N.md` consigne la parité prouvée.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
La publication de ce ticket ne constitue pas une autorisation de démarrer son implémentation.
What to build
Réécrire l'interface du Compagnon (
src/Compagnon/Web/app.js) en Vue 3, assemblée par Vite et écrite en TypeScript, sans changer le comportement ni le contrat DOM vérifié par la suite existante. Extraire la logique pure — estimation de position, fraîcheur des observations, sélection de l'historique, association de l'aide par chevauchement, nettoyage ASS — dans des modules sans framework couverts parnode:test. Décision consignée dans ADR 0003.Acceptance criteria
tests/*.test.mjs) passe sans aucune modification : mêmes identifiants, classes et libellés accessibles.style.cssconservé) ; aucune refonte visuelle dans ce lot.node:test;npm run test:unitest disponible.src/Compagnon/Web/, qui devient généré et ignoré par Git ;scripts/package.shconstruit le front avant la compilation C# et produit toujours un DLL unique.index.html,app.js,style.css) et la CSPscript-src 'self'reste valable : aucune évaluation à l'exécution, aucune ressource externe, pas de router ni de Pinia.npm run typechecks'appuie survue-tscsur les sources front.package.sh, README) ; le README décrit le nouveau flux de développement (vite devavec proxy Jellyfin, construction du paquet).docs/validation/issue-N.mdconsigne la parité prouvée.mentioned in issue #15
mentioned in commit
d53efb4be6mentioned in commit
89e1964872Preserved GitLab #14 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 0; visible source notes: 3.
gitlab-49-issue-14.md (SHA-256
1b5b7ee5351947d600d03f95c52e017e96433642f2e6457168f3e3384cd3f355)gitlab-49-issue-14.json (SHA-256
e31bca39afab8d7375d5d4b1e35c3dcdbc078a880e5f553ad4999ce16003686a)Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.