Problem
Member pickers on Zone edit and RX group list edit show too little identifying information. Operators cannot reliably tell which channel or talk group they are adding or reordering — especially when names are similar, export qualifiers differ, or multiple repeaters share a town name.
Zone edit — missing callsign
Route: /zones/:id/edit · Component: ZoneMemberPicker.tsx
Both Available and In zone lists render checkboxes with channel.name only:
<Checkbox label={ch.name} … />
Filters also search name only (placeholder="Search by name…").
Callsign (channel.callsign) is the primary on-air identifier for repeaters and is shown elsewhere (channel list callsign column, map popups via channelDisplayLabel). It must appear in the zone member picker.
Expected
- Each row shows callsign and name — e.g.
GB7GL — Glasgow or callsign as primary with name dimmed secondary (match existing list/map conventions).
- Filter matches callsign or name.
- Empty callsign: fall back to name only (no stray separators).
Related (optional same PR)
Zone detail member table (zones/detail.tsx) also omits callsign — consider aligning for consistency.
RX group list edit — missing DMR ID and type in list column
Route: /rx-group-lists/:id/edit · Component: RxGroupListMemberPicker.tsx
MemberOption carries name only. Rows show the display name; Available adds a Talk group / Private badge, but neither column shows the DMR ID (TalkGroup.number / Contact.identifier).
The In list column is worse: name + timeslot select only — no type badge, no DMR ID.
Operators need the numeric ID to distinguish e.g. multiple regional talk groups with similar names, or a private contact vs group call with the same label.
Expected
- Available and In list rows show:
- Name (existing)
- DMR ID —
TalkGroup.number or Contact.identifier (label e.g. "ID" or inline 2355)
- Kind — talk group vs private call (badge or short label; reuse existing badge styling)
- Filter matches name or DMR ID.
- Unresolved / empty ID: show
—.
Reference
Detail/report table RxGroupListMembersTable.tsx already shows Type and Timeslot — extend that pattern with an ID column there too if trivial, so edit and detail stay aligned.
Acceptance criteria
Relates to
- #12 — zone CRUD
- #13 — TG/RGL/contact CRUD
Workflow note
Small UI fix — one PR, conventional commit(s). Branch from origin/main.
Problem
Member pickers on Zone edit and RX group list edit show too little identifying information. Operators cannot reliably tell which channel or talk group they are adding or reordering — especially when names are similar, export qualifiers differ, or multiple repeaters share a town name.
Zone edit — missing callsign
Route:
/zones/:id/edit· Component:ZoneMemberPicker.tsxBoth Available and In zone lists render checkboxes with
channel.nameonly:Filters also search name only (
placeholder="Search by name…").Callsign (
channel.callsign) is the primary on-air identifier for repeaters and is shown elsewhere (channel list callsign column, map popups viachannelDisplayLabel). It must appear in the zone member picker.Expected
GB7GL — Glasgowor callsign as primary with name dimmed secondary (match existing list/map conventions).Related (optional same PR)
Zone detail member table (
zones/detail.tsx) also omits callsign — consider aligning for consistency.RX group list edit — missing DMR ID and type in list column
Route:
/rx-group-lists/:id/edit· Component:RxGroupListMemberPicker.tsxMemberOptioncarriesnameonly. Rows show the display name; Available adds a Talk group / Private badge, but neither column shows the DMR ID (TalkGroup.number/Contact.identifier).The In list column is worse: name + timeslot select only — no type badge, no DMR ID.
Operators need the numeric ID to distinguish e.g. multiple regional talk groups with similar names, or a private contact vs group call with the same label.
Expected
TalkGroup.numberorContact.identifier(label e.g. "ID" or inline2355)—.Reference
Detail/report table
RxGroupListMembersTable.tsxalready shows Type and Timeslot — extend that pattern with an ID column there too if trivial, so edit and detail stay aligned.Acceptance criteria
Relates to
Workflow note
Small UI fix — one PR, conventional commit(s). Branch from
origin/main.