Réécriture de l'interface en Vue 3 + Vite, à comportement inchangé #14

Closed
opened 2026-09-18 13:46:27 +02:00 by nessar · 4 comments
nessar commented 2026-09-18 13:46:27 +02:00 (Migrated from 172.24.0.1:8928)

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.
nessar commented 2026-09-18 13:46:30 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #15

mentioned in issue #15
nessar commented 2026-09-18 14:21:10 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in commit d53efb4be6

mentioned in commit d53efb4be62ce5d5204f8b2f96c56122ac06f12f
nessar (Migrated from 172.24.0.1:8928) closed this issue 2026-09-18 15:15:38 +02:00
nessar commented 2026-09-18 18:50:51 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in commit 89e1964872

mentioned in commit 89e19648723fc6c131da8c9339470cbd074cd6a4

Preserved 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.

<!-- gitlab-to-gitea-history:49:Issue:14 --> Preserved 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](https://gitea.nessar.fr/attachments/2ad2945d-24a4-487e-8212-e757e9133d8f) (SHA-256 `1b5b7ee5351947d600d03f95c52e017e96433642f2e6457168f3e3384cd3f355`) [gitlab-49-issue-14.json](https://gitea.nessar.fr/attachments/0c8f2f2b-0497-4b08-ab3b-8f2f966444d6) (SHA-256 `e31bca39afab8d7375d5d4b1e35c3dcdbc078a880e5f553ad4999ce16003686a`) Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.
gitea-emergency added this to the Development project 2026-10-11 22:14:40 +02:00
gitea-emergency moved this to Closed in Development on 2026-10-11 22:14:40 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nessar/subtitle-compagnion#14