Skip to content

Dashboard: warn about problems before program time - #148

Merged
ww8l merged 2 commits into
mainfrom
dashboard-warnings
Oct 27, 2026
Merged

ww8l merged 2 commits into
mainfrom
dashboard-warnings

Conversation

@ww8l

@ww8l ww8l commented Oct 27, 2026

Copy link
Copy Markdown
Owner

A warning icon on the dashboard's stat cards lists what will go wrong at program time — before a radio is connected. Click it for the affected records; each one opens where you fix it.

Channels

  • DMR channels in a codeplug with no talkgroup (the same test the programmers warn on)
  • DMR channels in a codeplug with no color code
  • Off Air channels in a codeplug
  • RepeaterBook records over a year old (note)
  • DMR channels with no talkgroup that no codeplug uses yet (note)

Zones/Groups — empty; not in any codeplug
Scan Lists — empty; not in any codeplug; naming channels their codeplug leaves out
Codeplugs — no radio profile; no zones; changed since last programmed; what programming would drop or change

Orange triangle = something will be lost or wrong when programmed. A grey ⓘ marks a card whose only items are notes.

How the codeplug checks work

  • What programming would drop or change: radios with a codeplug programmer (D890UV, D578UV, MD-380, TM-D710) run their own pure preview() — the same planner program uses — so the dashboard says what program time will say. A seed-table version of this check was wrong for the MD-380, which splits a long list into numbered zones where an AnyTone truncates. Skipped channels (by-design band/mode exclusions) and three purely descriptive messages are left out. Other radios get the memory-count and fixed-zone checks.
  • Changed since last programmed: migration 0021 adds codeplugs.programmed_fingerprint, an MD5 of the resolved payload + profile settings + memory group, stamped on program and export. A digest rather than edit timestamps, because a restore re-inserts every row (timestamps would flag every codeplug) and an edit put back is no change. RepeaterBook refresh stamps are excluded.

Channels gains a ?open=<id> link so a warning can open one channel.

Verified

  • npm run ci green locally (tsc, vite build, cargo check/test/clippy).
  • New test: the fingerprint is stable, ignores a RepeaterBook refresh, moves on a channel or zone edit, and returns when an edit is put back.
  • The full command was run against a copy of the dev database (≈40 ms): 2 DMR channels without a talkgroup in a codeplug, 3 without a color code, 3 unused scan lists, and 3 program-time problems on the MD-380 codeplug.
  • Popovers checked in the browser with stubbed IPC.

Not verified

  • "Changed since last programmed" is empty for every existing codeplug until it is programmed or exported once on this build.
  • A future new channel column will mark every codeplug changed once.
  • No radio was involved; the preview path is pure.

🤖 Generated with Claude Code

ww8l and others added 2 commits October 27, 2026 14:31
An orange triangle on a stat card opens a list of the problem records:
DMR channels with no talkgroup (the same test the programmers warn on at
program time), zones/groups and scan lists not in any codeplug, and
codeplugs with no radio profile. Clicking a channel opens it via a new
?open=<id> link on the Channels page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each stat card's warning popover now holds several sections:

- Channels: DMR channels in a codeplug with no talkgroup or no color code,
  Off Air channels in a codeplug, year-old RepeaterBook records, and (as a
  grey note) DMR channels no codeplug uses yet.
- Zones/Groups and Scan Lists: empty ones, and scan lists naming channels
  their codeplug leaves out.
- Codeplugs: no zones, changed since last programmed, and what programming
  would drop or change. Radios with a codeplug programmer answer through
  their own pure preview(), so the dashboard matches program time exactly
  (the MD-380 splits a long list where an AnyTone truncates it).

"Changed since last programmed" compares a digest of the resolved payload,
profile settings and memory group, stamped at program/export time
(migration 0021). A digest rather than edit timestamps, because a restore
re-inserts every row and an edit put back is no change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ww8l
ww8l merged commit 9ae623d into main Oct 27, 2026
3 checks passed
@ww8l
ww8l deleted the dashboard-warnings branch October 27, 2026 22: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