From 85d171adc836b34d252d3684ebe0ec2ffb604d62 Mon Sep 17 00:00:00 2001 From: Joerg Date: Fri, 23 Jan 2026 07:19:49 +0100 Subject: [PATCH] docs: document mode groups feature in CLAUDE.md and README.md Add documentation for the new configurable mode groups feature: - CLAUDE.md: Add modeGroups to Award Rule Options section - CLAUDE.md: Update Award Detail View section with mode group info - CLAUDE.md: Add to Recent Development Work (January 2026) - README.md: Add GET /api/awards/:awardId endpoint - README.md: Add new Mode Groups section in Features in Detail Co-Authored-By: Claude --- CLAUDE.md | 33 ++++++++++++++++++++++++++++++++- README.md | 21 +++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1be9b07..34bd686 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -362,6 +362,23 @@ To add a new award: - If `true`, only QSOs with `satName` field set are counted - Used for DXCC SAT award +**modeGroups**: Define mode groups for filtering in award detail view +```json +{ + "modeGroups": { + "Digi-Modes": ["FT8", "FT4", "MFSK", "PSK31", "RTTY", "JT65", "JT9"], + "Classic Digi-Modes": ["PSK31", "RTTY", "JT65", "JT9"], + "Mixed-Mode w/o WSJT-Modes": ["PSK31", "RTTY", "AM", "SSB", "FM", "CW"], + "Phone-Modes": ["AM", "SSB", "FM"] + } +} +``` +- Optional field at award definition level (not in `rules`) +- Key is the display name shown in the mode filter dropdown +- Value is an array of mode strings to include in the group +- Used to create convenient mode filters that combine multiple modes +- Awards without `modeGroups` work as before (backward compatible) + **filters**: Additional filtering options - `eq`: equals - `ne`: not equals @@ -443,7 +460,10 @@ The QSO page (`src/frontend/src/routes/qsos/+page.svelte`) includes advanced fil **Key Features**: - **Summary Cards**: Show total, confirmed, worked, needed counts for unique entities -- **Mode Filter**: Filter by specific mode or view "Mixed Mode" (aggregates all modes by band) +- **Mode Filter**: Filter by specific mode, mode group, or view "Mixed Mode" (aggregates all modes by band) + - Awards can define `modeGroups` to create convenient multi-mode filters + - Example groups: "Digi-Modes", "Classic Digi-Modes", "Phone-Modes", "Mixed-Mode w/o WSJT-Modes" + - Visual separator (`─────`) appears between mode groups and individual modes - **Table Columns**: Show bands (or band/mode combinations) as columns - **QSO Counts**: Each cell shows count of confirmed QSOs for that (entity, band, mode) slot - **Drill-Down**: Click a count to open modal showing all QSOs for that slot @@ -456,6 +476,8 @@ The QSO page (`src/frontend/src/routes/qsos/+page.svelte`) includes advanced fil **Column Sums**: Show unique entity count per column (not QSO counts) **Backend Changes** (`src/backend/services/awards.service.js`): +- `getAllAwards()`: Returns award definitions including `modeGroups` +- `getAwardById(awardId)`: Returns single award definition with `modeGroups` - `calculateDOKAwardProgress()`: Groups by (DOK, band, mode) slots, collects QSOs in `qsos` array - `calculatePointsAwardProgress()`: Handles all count modes with `qsos` array - `getAwardEntityBreakdown()`: Groups by (entity, band, mode) slots @@ -511,6 +533,10 @@ const params = new URLSearchParams({ - DXCC restricted to HF bands (160m-10m) only - Added DXCC SAT award for satellite-only QSOs - Removed redundant award variants (DXCC CW, DLD variants) +- Added `modeGroups` for configurable multi-mode filters in award detail view + - Per-award configuration of mode groups (Digi-Modes, Phone-Modes, etc.) + - Visual separator in mode filter dropdown between groups and individual modes + - DXCC and DLD awards include: Digi-Modes, Classic Digi-Modes, Mixed-Mode w/o WSJT-Modes, Phone-Modes **Award Detail View Improvements**: - Summary shows unique entity progress instead of QSO counts @@ -518,6 +544,11 @@ const params = new URLSearchParams({ - Satellite QSOs grouped under "SAT" column - Bands sorted by wavelength instead of alphabetically - Mode removed from table headers (visible in filter dropdown) +- Mode groups allow filtering multiple modes together (e.g., all digital modes) + +**Backend API Additions**: +- Added `GET /api/awards/:awardId` endpoint for fetching single award definition +- `getAllAwards()` now includes `modeGroups` field **QSO Management**: - Fixed DELETE /api/qsos/all to handle foreign key constraints diff --git a/README.md b/README.md index dffda41..6843f1f 100644 --- a/README.md +++ b/README.md @@ -258,6 +258,7 @@ The application will be available at: ### Awards - `GET /api/awards` - Get all available awards +- `GET /api/awards/:awardId` - Get single award definition (includes mode groups) - `GET /api/awards/batch/progress` - Get progress for all awards (optimized, single request) - `GET /api/awards/:awardId/progress` - Get award progress for a specific award - `GET /api/awards/:awardId/entities` - Get entity breakdown @@ -800,6 +801,26 @@ bun run db:studio ## Features in Detail +### Mode Groups (Award Detail View) + +The award detail view includes configurable mode groups for filtering multiple modes together: + +**Available Mode Groups** (varies by award): +- **Mixed Mode**: All modes aggregated by band (default view) +- **Digi-Modes**: FT8, FT4, MFSK, PSK31, RTTY, JT65, JT9 +- **Classic Digi-Modes**: PSK31, RTTY, JT65, JT9 (excludes FT8, FT4, MFSK) +- **Mixed-Mode w/o WSJT-Modes**: PSK31, RTTY, AM, SSB, FM, CW (excludes WSJT modes) +- **Phone-Modes**: AM, SSB, FM +- **Individual Modes**: CW, SSB, FT8, etc. + +The mode filter dropdown displays: +1. Mixed Mode (default) +2. Mode groups (configurable per award) +3. Visual separator (`─────`) +4. Individual modes + +Awards can define custom `modeGroups` in their JSON definition to add additional mode groupings. + ### Background Job Queue The application uses an in-memory job queue system for async operations: