Skip to content

Rewrite ScanNTune as a Vue web app and retire the C# desktop and WASM app#21

Merged
jaak0b merged 15 commits into
masterfrom
feature/vue-web-rewrite
Jul 5, 2026
Merged

Rewrite ScanNTune as a Vue web app and retire the C# desktop and WASM app#21
jaak0b merged 15 commits into
masterfrom
feature/vue-web-rewrite

Conversation

@jaak0b

@jaak0b jaak0b commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Why

The C# Avalonia-on-WebAssembly build froze during analysis: wasm there is single-threaded (so the OpenCV work ran on the sole UI thread), interpreted, linked at -O0, and boxed into a 256 MB heap. True multithreading in the browser needs cross-origin-isolation headers GitHub Pages cannot set. Web is the only target, so the app is rewritten as a plain web app that runs the same measurement pipeline off the main thread.

What

  • New app under web/: Vue 3 + TypeScript + Vite + Vuetify. The CV engine is ported 1:1 to TypeScript and runs in a Web Worker via OpenCV.js, so analysis never blocks the UI, needs no special headers, and is fast. Native HTML file/number inputs replace the whole Avalonia mobile-input workaround saga.
  • Measurement integrity preserved: every engine stage is validated against the same TestData_2solid.png fixture at the same tolerances (23 rings, ~0 skew, isotropy) via Vitest, plus Playwright over real scans (the card recovers ~23.6 px/mm; the two-scan flow completes on 35 MP scans without freezing).
  • C# solution removed: src/, the C# workflows, and the C#-only root tooling are deleted. Kept: web/, the coupon model (calibration_coupon.scad/.stl), and img/.
  • CI/deploy: web-ci.yml builds + unit-tests + e2e-tests on PRs and master; deploy-web.yml publishes web/dist to GitHub Pages on push to master (served at https://jaak0b.github.io/ScanNTune/). The e2e scan fixtures are stored in Git LFS.

Verification

npm run build clean, 60/60 Vitest pass, 3/3 Playwright e2e pass over the real scans.

@jaak0b jaak0b merged commit 66d1b25 into master Jul 5, 2026
2 checks passed
@jaak0b jaak0b deleted the feature/vue-web-rewrite branch July 5, 2026 01:13
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