Repository navigation
Dashboard: warn about problems before program time - #148
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
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
preview()— the same plannerprogramuses — 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.0021addscodeplugs.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 cigreen locally (tsc, vite build, cargo check/test/clippy).Not verified
🤖 Generated with Claude Code