Replace inline DB queries in Dxcluster with a new Logbook_model::check_if_dxcc_worked_in_logbook method to centralize DXCC existence checks (per-band and overall). Remove several debug log statements from Dxcluster. Add client-side logic in dxcluster and qso views to enforce a CW↔RBN rule: when mode is 'cw' the "hide RBN" option is forced off and the checkbox is disabled (and restored when leaving CW), and apply that lock on load and mode changes. Also disable track-band when the user manually changes band in the QSO cluster UI.
Add UI controls for mode and "New DXCC" filtering to the DX Cluster and QSO views, persist selections in localStorage, and wire them into existing spot filtering and rendering logic (including auto-unhide of RBN when CW is selected). Extract shared helper functions into a new assets/js/dxcluster-utils.js (DXCluster) providing isRbnSpot, getBandFromFrequency, detectModeFromFrequency, and detectMode, and update views to use these helpers. Also adjust badge logic to prioritize truly new DXCC, include the new script, and ensure spots are held until worked status is known for new/DXCC-band filtering.
Restrict RBN spot detection to skimmers that end with a literal '#' after the callsign. Previously the code matched hyphen followed by '#' or digits (/\-[#\d]+$/), which could misclassify numeric SSIDs like '-1' as RBN spots. The check now matches hyphen + one or more literal '#' characters (/\-#+$/) and simplifies trimming by removing the temporary uppercase variable.
Moved the country name badge to appear after the worked status icon in the DX cluster callsign display for improved clarity and logical grouping of status indicators.
Set explicit widths for DX cluster table columns and display a country name badge in the DX Call column when available for improved readability and user experience.
Enhances DX Cluster by showing DXCC entity and worked status per spot, including new band/country indicators. Adds radio selection and QSY functionality, updates UI with improved filters and spot marker styling, and provides user feedback for frequency actions.
Introduces a new API endpoint in Dxcluster.php to batch check if callsigns have been worked, with band-specific and overall status. Updates the DX Cluster view to display worked status icons next to callsigns and asynchronously fetches status for visible spots, improving user awareness of worked contacts.
Introduces UI controls to filter DX spots by band and to hide RBN spots, with user preferences saved in localStorage. Filtering logic is implemented in JavaScript, including band detection from frequency and RBN spot identification.
Revamps the DX Cluster page to use a modern card/table layout, real-time spot updates via WebSocket, and DataTables for enhanced interactivity. Adds connection status indicators, frequency click-to-copy, and age-based row styling. Removes legacy AJAX spot lookup code from the footer.
Refactored Dxcluster controller to use header and footer layouts. Removed standalone HTML structure from dxcluster/index.php to fit within the site layout. Added 'Open Bandmap' button and supporting JavaScript to qso/index.php for easier access to the bandmap from the QSO page.
Introduces a UI toggle and supporting logic for enabling or disabling automatic bandmap tracking of the selected radio's frequency. The bandmap now polls the radio endpoint and updates the view to follow the radio frequency when auto-tracking is enabled. Also adjusts the bandmap popup width in the cluster index view.
The bandmap now displays only the bands configured for the current user, using a new Bands model method to retrieve and order them. The band selection dropdown in the bandmap view is dynamically generated based on user bands, with a fallback to defaults. Additionally, the selected radio is now persisted in localStorage and synchronized across selects, and the bandmap window width was adjusted for better display.
Introduces a new Dxcluster controller with authorization checks and two views: a main index page and an interactive bandmap for real-time DX spots visualization. The bandmap view includes a WebSocket connection to a DX Cluster server, dynamic spot rendering, zoom, band selection, and user interface enhancements.