feat(dashboard): merge band activity with band conditions (#269)#290
Merged
arunderwood merged 11 commits intomainfrom Jan 7, 2026
Merged
feat(dashboard): merge band activity with band conditions (#269)#290arunderwood merged 11 commits intomainfrom
arunderwood merged 11 commits intomainfrom
Conversation
3c98a6d to
7ccbed6
Compare
Replace separate band condition cards with merged Band+Mode cards (e.g., "20m FT8", "40m CW") that combine real-time spot activity from PSKReporter with propagation forecasts from HamQSL. - Add band-activity card components with SOLID architecture - Create mode registry for extensible mode support (FT8, CW now; SSB, FT4 "coming soon") - Implement 70/30 weighted scoring (activity/condition) - Add band mapping utilities for enum/string conversion - Remove old bandConditionCards from propagation module - Create comprehensive test suite with accessibility tests Closes #269
MQTT connections may report as connected while subscription is broken or messages stop flowing due to broker-side issues. Adds application-level message liveness tracking that forces reconnection after 30 seconds without messages. This follows MQTT best practices - protocol-level keep-alive only detects TCP connection issues, not subscription or message flow problems.
- Vitest coverage: use text-summary for console, lcov file-only for cover-diff - Filter LCOV format lines from cover-diff output to show actual errors - Add clear error message when delta coverage thresholds not met - Fix Vitest 4 deprecation warning (poolOptions -> minWorkers/maxWorkers) Before: CI failed with pages of LCOV data and no clear error After: Shows "lines 77.16 < 80" and actionable error message
- Add cardRegistration.test.tsx for band-activity card definition - Add tests for isModeSupported and getModeDisplayName in modeRegistry - Add tests for isCombinedFavorable and getWeights in combinedScore Delta coverage now meets 80% line / 70% branch thresholds.
Remove LCOV filtering from test:delta - keep cover-diff output as-is.
- Simplify boolean return in isReceivingMessages() - Suppress generic exception catch with documented reason - Format cardRegistration.test.tsx with Prettier
Tests for checkForStaleConnection() and forceReconnect() private methods using reflection. Fixes delta coverage failure in CI.
- Use ContinentPath enum instead of string literals for activePaths - Fix BandActivityResponse fields (mqttConnected, bandCount, totalSpotCount) - Add helper function to handle createConfig union type safely - Use explicit ActivityCardConfig type for invalid config test - Add all required BandActivity fields in minimal test case
- Hide cards without activity data instead of showing placeholder - Fix card content overflow by removing dividers and tightening layout - Fix paths not showing as active (enum serialization bug)
…bility Backend was serializing ContinentPath using toString() which produced display values like "Trans-Atlantic (NA↔EU)" instead of enum names like "NA_EU". Frontend PathStatusGrid expected the enum name format.
363d60c to
ff4f895
Compare
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.
Summary
Replace separate band condition cards with merged Band+Mode cards (e.g., "20m FT8", "40m CW") that combine real-time spot activity from PSKReporter with propagation forecasts from HamQSL.
Test Plan
Closes #269