ManTag x36 · V1.0 — browser build

Supported family: Uniden x36 (UBCD3600XLT / BCD436HP)

Architecture:
- Browser UI: index.html
- USB/Web Serial: scanner data and x36 GSI parsing
- LINE IN: audio recording
- Local bridge on 127.0.0.1:8765: local WAV storage/playback and retention
- Dropbox sync worker: ManTag_SYNC.ps1
- No scanner LAN audio and no Waterfall

Start:
1. Extract the complete ZIP to a local folder.
2. Run START.bat.
3. In the browser press CONNECT USB and select the scanner COM port.
4. For recording press CONNECT LINE IN and select/allow the PC audio input.

Trial: up to 20 committed LOG calls per scanner ESN.
License product: X36, scanner-bound.

x36 browser fix 2026-09-05:
- Scanner SN cache is now product-specific for x36 and no longer shared with ManTag 200/SDS200.
- x36 SN parser accepts SN / ESN / Serial Number forms and normalizes separators.
- LIVE Favourite/System/Department/Channel vs frequency/status information restored to 50:50.

FIX2
- SN/ESN flow restored exactly from supplied ManTag_x36_V1_0.
- LIVE hierarchy/details split fixed to 50:50.
- No experimental SN commands; browser architecture otherwise unchanged.

FIX3
- IMPORTANT: x36 browser storage is now fully isolated from ManTag 200/SDS200.
- x36 ESN cache: mantag_x36_scanner_esn_v1
- x36 ESN check timestamp: mantag_x36_scanner_esn_checked_at_v1
- x36 trial counters use their own prefix.
- x36 license key storage is separate: mantag_x36_license_v1
- Existing SDS200 browser ESN/license cannot be reused by x36.
- Physical x36 ESN read flow remains the proven original x36 implementation.
- LIVE UI remains 50:50; parser and other application functions unchanged.

FIX4
- x36 ESN activation bug fixed:
  a successful physical ESN read from the CURRENT USB connection is reused by ACTIVATE.
  ACTIVATE no longer immediately re-enters the scanner menu and fails after the ESN was already read.
  Cached ESN alone is not treated as a physical verification; in that case activation still forces a physical read.
- x36 LIVE UI fixed at source/cascade level:
  Favourite/System/Department/Channel = 50%
  Frequency/Mode/SIG/DMR details = 50%
- Removed the phantom second liveGrid column left over from the Waterfall layout.
- No parser changes. No LAN/Waterfall restored.

FIX5
- Rechecked against the originally supplied working x36 build.
- The original x36 Settings > See Scanner Information > Firmware Version ESN sequence/parser is retained.
- Browser adaptation: every CONNECT USB now forces one physical x36 ESN read.
- Cached ESN can no longer substitute for the physical read of the current USB session.
- ACTIVATE does NOT enter the scanner menu a second time; it uses only the ESN physically verified during the current connection.
- Disconnect invalidates that physical verification.
- UI from FIX4 is unchanged (approved 50:50 layout).
- No parser/UI/audio/logging changes.

FIX8
- Final x36 SN parser correction based on real UBCD3600XLT RAW response.
- Scanner returns SN as: <PlainText Text="SN37602078000583" />
- Previous parser incorrectly required "SN:" with a colon, therefore returned no ESN.
- Parser now accepts both "SN37602078000583" and "SN:37602078000583".
- Diagnostic UI removed.
- USB transport remains unchanged from stable FIX5.
- Approved 50:50 UI unchanged.

FIX8 SHOW S/N
- Added customer-facing SHOW S/N button to the license window.
- SHOW S/N reads/uses the corrected x36 scanner S/N flow and displays the number for registration.
- When browser permissions allow, the displayed S/N is also copied to clipboard.
- No RAW diagnostic output.
- Activation, USB transport, parser, approved 50:50 LIVE UI and all other functions unchanged.

FIX9
- Fixed final x36 scanner verification typo.
- forceScannerVerification() incorrectly used /^\\d{12,18}$/ which matches a literal backslash+d.
- Corrected to /^\d{12,18}$/ so the physically read numeric x36 S/N is accepted.
- This explains why S/N was visible at top of LICENSE window but SHOW S/N and ACTIVATE rejected it.
- No USB, parser, UI, logging, audio or license-format changes.

FIX10
- Fixed DMR LINE IN recording lifecycle.
- CALL_END/CALL_START recorder operations are now serialized.
- Prevents browser MediaRecorder stop/start overlap during rapid conventional ANALOG/DMR classification changes.
- DMR parser and LOG logic unchanged.
- UI, USB, S/N, licensing and approved 50:50 layout unchanged.

FIX11
- LIVE online detail layout changed to match SDS200:
  Row 1: TYPE / FREQ / MODE
  Row 2: SIG / RSSI
  Row 3: CTCSS / DCS
  Row 4: CC / SLOT / TGID / UID
- Values, IDs and live data bindings unchanged.
- Approved 50:50 LIVE split unchanged.
- Recording FIX10, USB, S/N and licensing unchanged.

FIX12
- Restored RECORD LED behavior for x36 LINE IN.
- SDS200 lights RECORD from LAN bridge status; x36 has no LAN audio, so the LED previously had no controller.
- RECORD_STARTED -> green LED ON.
- RECORD_READY / RECORD_ERROR / RECORD_DISCARDED -> LED OFF.
- Recording pipeline, DMR FIX10, USB, S/N, licensing, 50:50 UI and FIX11 online layout unchanged.

FIX13
- Normal x36 USB CONNECT now respects the existing Scanner S/N cache.
- Changed CONNECT from forced physical readEsn(true) to cached readEsn(false).
- Existing RECHECK_MS remains 30 days.
- ACTIVATE physical scanner verification remains unchanged.
- SHOW S/N behavior, licensing, USB, recording FIX10, RECORD LED FIX12, UI and logging unchanged.

FIX14
- Corrected FIX13 license verification regression.
- Normal USB CONNECT still uses the existing 30-day cached Scanner S/N.
- ACTIVATE and SHOW S/N now physically read/verify Scanner S/N when the current connection has only a cached S/N.
- If the scanner was already physically verified in the current connection, no duplicate physical read is performed.
- License format, USB transport, recording, DMR, RECORD LED, UI and logging unchanged.
