Skip to content

v1.3.0 - 5-language UI, mass-mask, NVR-name sync

Choose a tag to compare

@0ldManPlaying 0ldManPlaying released this 08 May 21:02
· 46 commits to main since this release

v1.3.0 — major feature release

Grootste release sinds v1.0. Vijf talen, mass-mask noodgesture, privacy-default modus, NVR-naam sync, drag/drop in Setup, en nog veel meer. Volledig generaliseerd voor breder gebruik dan alleen zorginstellingen — geschikt voor kantoren, recepties, hotels, scholen, zorgomgevingen.

Nieuw

Multi-language UI (5 talen)

  • NL, EN, DE, FR, ES volledig vertaald (~226 keys per taal, professioneel-formele toon)
  • Setup → Beheerder → Taal: dropdown met native namen (Nederlands / English / Deutsch / Français / Español)
  • First-run language picker: bij eerste opstart een modale taalkeuze, voorgeselecteerd op Windows UI-cultuur
  • MSI deployment hook: msiexec /i InteractiveMask-1.3.0.msi /qn INTERACTIVEMASK_LANGUAGE=de voor SCCM/Intune mass-rollout zonder UI-prompt
  • Live language-switching via INotifyPropertyChanged, geen restart nodig

Mass-mask gesture (long-press)

  • Houd de muisknop 500 ms ergens op het scherm vast → alle tegels tegelijk maskeren of vrijgeven
  • State-guard: mass-unmask alleen als alle tegels gemaskeerd zijn; gemengde state weigert om accidentele privacy-doorbraak te voorkomen
  • Authenticatie volgt de bestaande policy (PIN of AD)
  • Optionele bevestigingsdialoog voor mass-unmask, in te schakelen via Setup → Privacy
  • Mass-mask negeert per-tegel auto-unmask timers (caregiver-away scenario)

Privacy-default mode

  • Setup → Privacy → "Standaard zichtbaarheid": kies tussen OversightDefault (klassiek: tegels starten zichtbaar, klik beschermt) en PrivacyDefault (alle tegels starten geblurd, klik onthult tijdelijk)
  • Auto-rollback timer in privacy-default brengt tegels automatisch terug naar geblurd
  • Optionele auth bij elke onthulling in privacy-default mode
  • Geschikt voor kantoorruimtes, recepties, hotels, scholen, zorginstellingen

NVR camera-naam sync

  • Setup → Cameras → "Namen ophalen vanuit NVR": pull camera-titels rechtstreeks vanuit de NVR via request_device_status
  • Twee aparte velden: NvrTitle (read-only, NVR is bron-van-waarheid) en Custom Label (admin-bewerkbaar). Sync overschrijft alleen NvrTitle.
  • Geen tweede login: hergebruikt de live NVR-sessie van Display, ontwijkt concurrent-session conflicten
  • Per-tegel overlay-balk: NVR-titel links, custom label rechts, beide togglebaar via Setup → Privacy → Tegel-overlay

Drag/drop tile reordering

  • In Setup → Cameras: grip-icoon links bij elke rij om de slot-volgorde te wijzigen via slepen
  • Slot-nummers worden automatisch hernummerd

Kleinere features

  • Apply-knop in Setup naast Save: wijzigingen direct toepassen zonder venster te sluiten
  • About-tab: versie, uitgever, copyright, open-source componenten, integraties (IDIS Direct IP NVR's), bug-rapportage via mailto, IDIS website link
  • 5×5 grid (25 tegels) toegevoegd
  • IDIS-watermerk (10% opacity) in lege tegels
  • Hover-camera info (verwijderd na feedback — info zit nu permanent in de overlay-balk)
  • Aspect-ratio fix: niet-16:9 camera's (4:3, 5:4, 1:1 fish-eye, 21:9) worden nu volledig getoond met letterboxing in plaats van cropping
  • Setup-venster vergroot naar 1180 × 1000 px, content-tabs scrollen niet meer

UI-polish

  • Volledig dark-themed ComboBox met eigen template (closed control + popup + items)
  • Impliciete RadioButton/CheckBox styling — geen zwarte tekst meer op donkere achtergrond
  • Setup → Privacy: "Tegel-overlay" card voor de beide tonen-toggles
  • Generieke toon: "verzorgers/bewoners" → "operators/tegels" door alle talen heen, voor bredere markt-toepasbaarheid

Onder de motorkap

Pre-release code-review opgeleverd vier HIGH-issues, alle gefixt:

  • Mass-mask PIN-bookkeeping (security): counter werd één keer voor de hele batch verhoogd; eerste unmask draineerde counter naar 0 en clearde session-PIN. Nu per nieuw-gemaskeerde tegel.
  • Long-press timer leak: per click een nieuwe DispatcherTimer die kon orphan-en bij gemiste mouse-up. Nu één gedeelde timer.
  • StreamChoices static-event leak: Strings.PropertyChanged subscription per Setup-open zonder unsubscribe. Nu IDisposable + Closed handler.
  • Privacy.Mode live-apply desync: mode-flip swap'te het settings-object zonder de tegelstate te re-primen. Nu structural change → restart prompt.

Plus 3 medium fixes: dead _lastCameraNames field weg, sync abortte bij eerste falende NVR (nu continue + accumulate errors), redundante DataGrid CommitEdit.

ConfigService persistence (kritieke fix)

Nieuwe v1.3 velden waren in-memory wel toegevoegd maar nooit echt naar config.json geschreven. Pre-release-fix bracht alle nieuwe velden in de Stored-DTO's:

  • CameraSlotSettings.NvrTitle
  • PrivacySettings.Mode, ShowMassUnmaskConfirm, PrivacyDefaultRequireAuthOnReveal, ShowCameraLabel, ShowNvrTitle

Bestaande v1.2 configs blijven werken (System.Text.Json vult missende keys met de defaults; gedrag identiek aan v1.2).

Installer

  • Self-contained MSI (109 MB) met .NET 9 + WindowsDesktop + ASP.NET Core ingesloten — installeert op schone Windows 10/11 x64 zonder runtime
  • EV-Authenticode ondertekend (IDIS Nederland BV via SafeNet token, SHA-256, DigiCert timestamp) — geen SmartScreen-waarschuwingen, klaar voor SCCM/Intune

Upgrade vanaf v1.2.0

Reguliere MSI-installatie. Bestaande config.json migreert automatisch:

  • v1.2 PrivacySettings velden blijven hun waarde behouden
  • Nieuwe v1.3 velden krijgen veilige defaults (OversightDefault mode, custom label aan, NVR-titel uit, geen confirm-dialoog)
  • Bestaande NVR's en camera-bindings ongewijzigd

Links

  • Release MSI: zie hieronder als bijlage (109 MB)
  • Volledige changelog: git log v1.2.0..v1.3.0 in de repo