Skip to content

feat: majestic control center#42

Merged
keyldev merged 6 commits into
mainfrom
feat/majestic-control-center
Jun 30, 2026
Merged

feat: majestic control center#42
keyldev merged 6 commits into
mainfrom
feat/majestic-control-center

Conversation

@keyldev

@keyldev keyldev commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • 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

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 6 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)
- 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
@keyldev keyldev merged commit 9108d3b into main Jun 30, 2026
6 checks passed
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