Skip to content

feat: grid pager, fullscreen kiosk, network config sync - #43

Merged
keyldev merged 7 commits into
mainfrom
feat/grid-pager-kiosk-netsync
Jun 30, 2026
Merged

keyldev merged 7 commits into
mainfrom
feat/grid-pager-kiosk-netsync

Conversation

@keyldev

@keyldev keyldev commented Jun 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Paginate cameras within a layout (pager under the grid); only the
    current page streams, with background parallel tile teardown so page
    switches don't block on outgoing RTSP sessions
  • Desktop fullscreen kiosk for the live grid (F11 / Esc / toolbar button)
  • Network config auto-sync: mirror cameras+layouts from a shared file on
    startup with offline fallback; optional AES-GCM encrypted credential
    sync via a fleet passphrase (schema v2, passphrase kept in secrets)

Related

Type

  • Bug fix
  • Feature
  • Refactor / cleanup
  • Docs / CI
  • Other:

Checklist

  • Builds with 0 warnings (TreatWarningsAsErrors=true).
  • Tests pass (dotnet test); new Core logic has unit tests.
  • No layering violation — App references Core only (Infrastructure / Video / Devices wired via DI in a head).
  • Scope stays within one phase (didn't pull work from a later phase's "Не входит").
  • README / docs updated if public commands, options, or setup changed.

Platforms tested

  • Windows
  • Linux
  • macOS
  • Android
  • iOS
  • CI build only

Screenshots / notes

keyldev added 5 commits June 29, 2026 22:59
…ds (Slice A)

- Core: MajesticConfigField/Model/FieldEdit + IMajesticConfigSchema contract
- Core: pure value-kind-aware diff (ComputeEdits) + section grouping
- Devices: MajesticConfigSchema flattens scalars, read-modify-write back
- DI: register IMajesticConfigSchema; Core.Tests for the diff
- App: MajesticFieldRowViewModel + MajesticConfigSectionViewModel
- SingleCameraPage: collapsible schema-driven 'All settings' editor,
  grouped by section, type-specific controls (toggle/combo/numeric/text)
- video knobs enriched with curated brick-safe option lists; restart hint
- ApplyAllSettings diffs rows -> ComputeEdits -> ApplyEdits -> raw POST
- en/ru keys; schema injected into VM + factory
- App: IspFields collection (reuses isp-section row VMs), HasIsp/ShowIsp
- ApplyIspLive diffs only isp rows, POSTs, refreshes RawJson locally
  WITHOUT stream restart (Majestic re-reads image params at runtime)
- SingleCameraPage: Live ISP toggle (when HasIsp) + collapsible panel
- en/ru Isp/IspApply/IspApplied/IspEmpty keys
- Core: PrometheusTextParser + MajesticMetricSample (pure, tested)
- IMajesticClient.GetMetricsAsync -> GET /metrics; MajesticHttpClient impl
- App: Metrics panel (toggle, on-demand fetch, refresh, name/value list)
- en/ru keys; updated SnapshotServiceTests fake

Capabilities/endpoints tab deferred — no stable Majestic endpoint to target.
- parser: known-key enum map (codec/profile/size/ircut) -> safe combos,
  current value merged in so nothing is hidden
- editor: live field/section filter (search box)
- editor: modified marker + per-field and per-section revert
- live ISP rows re-baseline on apply; row VMs reuse Core ValuesEqual
- en/ru Search/Revert/RevertSection keys; PlaceholderText (no AVLN5001)
keyldev added 2 commits July 1, 2026 00:09
- ValuesEqual(Int) fell through to string compare when long.TryParse
  rejected a decimal-formatted value, flagging a spurious edit
- fall back to numeric (double) comparison; fixes the red CI theory case
- Paginate cameras within a layout (pager under the grid); only the
  current page streams, with background parallel tile teardown so page
  switches don't block on outgoing RTSP sessions
- Desktop fullscreen kiosk for the live grid (F11 / Esc / toolbar button)
- Network config auto-sync: mirror cameras+layouts from a shared file on
  startup with offline fallback; optional AES-GCM encrypted credential
  sync via a fleet passphrase (schema v2, passphrase kept in secrets)
@keyldev
keyldev force-pushed the feat/grid-pager-kiosk-netsync branch from 8d1aea3 to c750eeb Compare June 30, 2026 21:10
@keyldev
keyldev merged commit 93ea657 into main Jun 30, 2026
6 checks passed
@keyldev
keyldev deleted the feat/grid-pager-kiosk-netsync branch September 26, 2026 21:57
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