Files
nessar d53efb4be6 feat: rewrite the companion interface with Vue 3 and Vite (#14)
Move the interface sources to web/ (Vue 3 single-file components, a
reactive store, framework-free modules) and assemble them with Vite into
fixed asset names under the gitignored src/Compagnon/Web/, embedded in
the single plugin DLL. Templates are precompiled, no router or Pinia is
added and no inline script is emitted, so the script-src 'self' policy
still holds.

Extract the delicate logic - position estimation with its freshness
bounds and seeded window, history selection, help overlap, subtitle
validation and ASS cleanup, saved connection parsing - into modules
tested without a browser by node:test, injecting the clocks.

Build the interface in scripts/package.sh before the C# compile, bump
the plugin to 0.7.0, switch npm run typecheck to vue-tsc and document the
Vite dev proxy flow in the README.

Prove parity with the untouched end-to-end suite: 34 tests on the
disposable server with and without the /jellyfin prefix, stable gap
within 330 ms and seek recovery within 789 ms against the burnt-in
timecode. Record the decision in docs/adr/0003 and the evidence in
docs/validation/issue-14.md.
2026-09-18 14:21:04 +02:00

7 lines
76 B
Plaintext

**/bin/
**/obj/
node_modules/
.test-state/
test-results/
src/Compagnon/Web/