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.
7 lines
76 B
Plaintext
7 lines
76 B
Plaintext
**/bin/
|
|
**/obj/
|
|
node_modules/
|
|
.test-state/
|
|
test-results/
|
|
src/Compagnon/Web/
|