NewTon DC Tournament Manager v5.0.1-beta.9 makes QR scanning work everywhere — even on Windows Enterprise desktops where Chrome’s native BarcodeDetector is unavailable. A JavaScript fallback library decodes QR codes from camera frames without any native API dependency. The result preview now tells operators exactly why a scanned result can’t be applied, and the lollipop counter only appears when it’s actually possible.
jsQR Fallback for Desktop Browsers
Chrome’s BarcodeDetector API delegates to the Windows Shape Detection API, which requires the Media Feature Pack — a component often missing on Windows Enterprise editions. On these systems, BarcodeDetector reports as undefined even with Experimental Web Platform features enabled.
NewTon now includes jsQR (v1.4.0, ~250KB, zero dependencies) as a fallback. When BarcodeDetector is absent, video frames are rendered to a canvas and decoded in JavaScript. The camera handling, CRC verification, and payload processing remain identical — only the decoding layer changes.
Both the Tournament Manager (js/qr-bridge.js) and the Chalker (chalker/js/chalker.js) share the same detection pattern:
BarcodeDetector available → native detection (no change in behaviour)
When a scanned result QR cannot be applied, the preview now shows a specific explanation above the Close button instead of silently offering only Close:
Wrong tournament — “This result belongs to a different tournament.”
Wrong server — “This result was generated by a different Tournament Manager instance.”
Match not found — “Match FS-1-2 was not found in this tournament.”
Already completed — “Match FS-1-2 has already been completed.”
Not yet ready — “Match FS-1-2 is not yet ready — waiting for players to advance.”
Not started — “Match FS-1-2 has not been started yet.”
Conditional Lollipop Counter
The lollipop +/− counter in the QR result preview is now context-aware:
No visit of 3 in the match → lollipop row hidden entirely (a lollipop is impossible without a score of 3)
Only one player had a visit of 3 → only that player gets the counter; the other cell shows “—”
Both players had a visit of 3 → both counters shown as before
Applies to both the normal result preview and the QR Payload Inspector in the Developer Console.
Release Notes & UI Polish
Inline styles removed — download button style attributes replaced with CSS classes (btn-download-top, btn-download-bottom) across all 27 release notes files. Fixes margin being silently stripped by the strict CSP on the deployed site.
“Latest release” link — five versioned release notes pages were missing the link at the top of their Previous Releases list. Added.
Demo banner link order — newtondarts.com moved before “View on GitHub” in the Docker demo site banner.
Files Changed
lib/jsQR.js — new: jsQR v1.4.0 QR decoding library
chalker/lib/jsQR.js — identical copy for Chalker
js/qr-bridge.js — detectQRCode() helper with BarcodeDetector/jsQR fallback; isQRScanAvailable(); result preview status messages; conditional lollipop row
chalker/js/chalker.js — same detectQRCode() and isQRScanAvailable() helpers; startQRScanner() updated
tournament.html — jsQR.js script tag; demo banner link order