Repository navigation
v1.3.0 - 5-language UI, mass-mask, NVR-name sync
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=devoor 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) enCustom 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.PropertyChangedsubscription 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.NvrTitlePrivacySettings.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.0in de repo