Mode column in the per-QSO table, readable (FM/SSB/CW) #15

Merged
hermes-agent merged 2 commits from feature/entry-mode-column into main 2026-10-29 18:50:04 +00:00
Owner

The manager's entry drill-in showed no Mode column, so the mode could not be controlled at all.

What the column does

The shared per-QSO table (entrant preview, confirmation, manager drill-in, live sessions view) gains Mode, rendered in the reglement's own vocabulary:

  • USB/LSB are accepted and read as "SSB" (owner rule: never disapproved) - the same normalisation the flag layer and the live logger apply, one definition in app.rules.flags.
  • EDI numeric codes never reach the table - 1/2/6 are translated at parse time since cc28b0b.
  • A disallowed mode keeps its RAW value ("DG", "RY") with a per-row MODE_NOT_ALLOWED marker, so the manager sees exactly what was logged and adjudicates it - never a rejection.
  • A blank mode renders as an em dash: the EDI standard allows an empty mode column, so absence is not a finding.

Verified live

Entry 1 (PD1SCO): FM/SSB shown per row. Entry 4 (PD9MODE): DG and RY rows raw + marked.

Tests: 312 (5 new).

The manager's entry drill-in showed no Mode column, so the mode could not be controlled at all. ## What the column does The shared per-QSO table (entrant preview, confirmation, manager drill-in, live sessions view) gains **Mode**, rendered in the reglement's own vocabulary: - **USB/LSB are accepted and read as "SSB"** (owner rule: never disapproved) - the same normalisation the flag layer and the live logger apply, one definition in `app.rules.flags`. - **EDI numeric codes never reach the table** - 1/2/6 are translated at parse time since cc28b0b. - **A disallowed mode keeps its RAW value** ("DG", "RY") with a per-row `MODE_NOT_ALLOWED` marker, so the manager sees exactly what was logged and adjudicates it - never a rejection. - A blank mode renders as an em dash: the EDI standard allows an empty mode column, so absence is not a finding. ## Verified live Entry 1 (PD1SCO): FM/SSB shown per row. Entry 4 (PD9MODE): DG and RY rows raw + marked. Tests: **312** (5 new).
The manager's entry drill-in showed no mode, so the mode could not be controlled
there at all. The shared per-QSO table (preview, confirmation, manager drill-in and
the live sessions view) gets a Mode column fed by a display helper:

- The mode is rendered in the reglement's own vocabulary: FM, SSB, CW. SSB's
  emission labels USB/LSB are ACCEPTED and read as "SSB" (owner: do not disapprove
  them), the same normalisation the flag layer and the live logger apply - so a
  logged USB is an ordinary SSB row, no finding.
- EDI's numeric mode codes never reach the table (1/2/6 are translated at parse
  time); a mode outside the reglement keeps its RAW value ("DG", "RY") with a
  MODE_NOT_ALLOWED marker on that row, so the manager can adjudicate what was
  actually logged.
- A blank mode renders as an em dash - EDI allows an empty mode column by the
  standard, so absence is not a finding.

Verified on the running stack: entry 1 (PD1SCO) shows FM/SSB per row; entry 4
(PD9MODE) keeps DG and RY with the marker. Tests: 312 (5 new).
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
public/vrza-contestrobot!15
No description provided.