Added migration 243 to tag Cloudlog as version 2.8.6 and updated the migration version in config. Improved SOTA awards table to display a message outside the table when no results are found. Modified the SOTA index page to trigger filter refresh on 'Apply' and adjusted DataTables language options for empty states.
Introduces a new section in the maintenance page allowing manual updates of reference data files (Clublog SCP, LoTW Users, DOK, SOTA, WWFF, POTA) via AJAX buttons with loading indicators. Adds corresponding UI-friendly controller methods with authorization checks and improves the WWFF update logic to process CSV files line by line for better memory efficiency.
Introduces the ability to add comments to QSOs by enclosing text in angle brackets, updates the UI to display a new Comment column, and documents the feature in the syntax help. The JavaScript logic is updated to extract, display, and save comments with each QSO.
The RST sent and received columns have been removed from the SOTA awards table for a cleaner display. The colspan for the 'nothing found' row was also updated to match the new column count.
Refactors the SOTA CSV download process to stream data directly to a temporary file using cURL, improving memory efficiency and error handling. Replaces the previous string-based CSV extraction with a file-based approach, and adds more robust error messages for file and download failures.
Replaces the old SOTA model with a new Sota_model, adds CSV-based summit metadata caching, and introduces new controller endpoints and view components for SOTA table, stats, and map fragments. The SOTA award page now supports filtering, improved statistics, and interactive mapping using summit coordinates. Updates .gitignore to include the new SOTA CSV, and refactors SOTA data refresh logic for reliability and maintainability.
Updated the SQL query to use 'station_id in (...)' instead of 'station_id = ...' in the subquery, ensuring correct filtering when multiple station IDs are provided.
Introduces a new POTA awards dashboard with HTMX-powered filtering, statistics, progress bars, and a Leaflet map of worked parks. Adds new controller endpoints, model methods for filtered queries and park metadata, and modular view components for table, stats, progress, and map. Updates language files for new stats labels and enhances the update process to cache the full POTA parks CSV for richer features.
Introduces a 'Created Date' field to the note edit form, allowing users to set or update the creation date of a note. The model is updated to handle and save the optional 'created_at' value when provided.
Updated the logic to display 'N/A' for invalid or empty created_at values, including the '0000-00-00 00:00:00' placeholder, ensuring more accurate date representation in the notes view.
Introduces a migration to add a created_at timestamp to the notes table. Updates the Note model and Notes controller to support filtering notes by creation date, and enhances the notes view to include date filter fields and display the created date for each note. Migration version is incremented to 242.
Introduces note categories with support for filtering, assigning, and managing categories. Adds category selection and creation to add/edit forms, category filtering to the notes list, and modals for deleting/merging categories and confirming note deletion. Updates controller and model logic to handle categories, and improves UI for notes management.
Introduced a useragent_helper with a function to generate a compliant User-Agent string for Cloudlog, and updated QRZ API calls in Qrz controller and Logbook_model to use this helper. This ensures consistent and QRZ-compliant User-Agent headers for all outgoing requests.
Introduces migration 241 to update the application version to 2.8.5 and trigger the version info dialog for users. Updates the migration version in the configuration accordingly.
Corrects the logic for assigning DXCC ID when the country is set and dxcc_id is 0 by fetching the DXCC ID from the callsign lookup. This ensures the correct DXCC ID is used in these cases.
Improves the IOTA awards page with a modernized layout, enhanced filter section, and updated tab navigation. Adds a search box for filtering IOTA table entries by island group name or IOTA number, and refines summary table presentation. Improves accessibility and user experience with better styling and responsive design.
Normalizes COL_GRIDSQUARE and COL_VUCC_GRIDS to empty strings if null to prevent strlen warnings under PHP 8. Ensures correct display of grid information in search results.
Eliminated unnecessary calls to updateCqStatistics and updateWasStatistics on page load and after table filtering/sorting. Statistics are now handled by server-side calculations and page reloads, simplifying the client-side logic.
Introduces a statistics summary section, quick preset filters, and CSV export functionality to the WAS awards page. Adds sortable columns, a search box, and updates the UI for better usability. JavaScript logic is included to update statistics dynamically based on visible table rows and to handle filtering, sorting, and exporting. Also improves the CQ statistics logic for consistency.
Added advanced filter panel with quick presets, improved statistics summary, and milestone progress display to the CQ awards page. Enhanced the CQ table with search and sortable columns, and implemented CSV export functionality. Updated footer scripts to support new table interactions and filter presets.
Reordered the filters section to appear before the statistics summary and continent breakdown in the DXCC awards index view for improved user experience and logical flow.
Refactored get_continent_qsos to use a single SQL query for fetching DXCC entities and their worked/confirmed status, replacing multiple per-entity queries. This improves performance and simplifies the code.
Refactored the distances filter form for better layout and usability, added a reset button, and enhanced the display of statistics with metric cards. Implemented session-based caching in Distances_model to reduce repeated calculations and speed up responses. Updated JavaScript to auto-load charts, show loading spinners, and improve error handling and dynamic UI updates.
Updated get_total_countries to filter by active station's locations and apply additional validation filters for country and DXCC fields, aligning logic with Dashboard validation.
Introduces DXCC statistics and continent breakdown features to the awards page, including new controller endpoints for DXCC QSOs, QSOs by status, and continent QSOs. Updates the DXCC model to provide continent and milestone statistics, and enhances the awards view with summary cards, continent progress, table search, sorting, and modal dialogs for QSO details.
Introduces the Personal Propagation Advisor, allowing users to analyze their own QSO data to determine the best times, bands, and modes for working specific DXCC entities. Adds a new controller, model methods, view, JavaScript, and language strings in multiple languages. Updates navigation and footer to support the new feature.
Updated the call to getAdifLine in Logbook_model to include a second parameter set to true. This may enable additional functionality or formatting in the ADIF line generation for Clublog integration.
The third parameter in array_search was set to true, enforcing strict type comparison. This has been removed to allow non-strict comparison, which may improve matching for satellite names.
Replaced checks for QSO accessibility with stricter write permission checks across controllers and models. Added a new check_qso_is_writable method to Logbook_model to ensure only authorized users can modify or delete QSOs, including shared logbook scenarios. Updated QSO, Qsl_model, and Sstv_model to use the new permission logic for all write operations.
Introduces migration 240 to update the application version to 2.8.4 and trigger the version info dialog for users. Updates migration configuration to reflect the new version.
Introduced an 'Embed Code' modal in the logbooks index to allow users to easily copy iframe code for embedding their logbook widget. Also added a 'Powered by Cloudlog' attribution to the widget view for better visibility and credit.
Enhanced the QSO access logic to allow access if the QSO belongs to the user or is part of a user's active logbook, including shared permissions. Added a guard in the controller to prevent accessing missing or inaccessible QSOs, redirecting with a notice if access is denied.
Updated Logbooks controller to use profile_clean for station lookup and added a notice for missing stations. Enhanced Setup_model to count logbooks a user owns or has permissions for, ensuring accurate logbook statistics for users with shared access.
Fixes#3389
Added a check and error log for missing station_callsign during QRZ import. This helps identify records with incomplete data and prevents potential issues when processing QSOs.
Wrapped assignments of 'dxcc_name' with checks to ensure the entity is an array and contains a 'name' key. This prevents potential errors if the entity lookup fails or returns unexpected data.
Adds a check to ensure that if a QSO is not found or not accessible, the user is redirected to the dashboard with a notice. This prevents errors when attempting to access non-existent or unauthorized QSOs.
Introduces migration 239 to update the application version to 2.8.3 and trigger the version info dialog for users. Updates the migration version in the configuration to 239.
Changed the tooltip text for the LIVE badge from 'Switch to POST mode' to 'Switch to Manual mode' to better reflect the action performed when switching modes.
Enhanced the unsaved changes detection to show a custom Bootstrap modal when navigating away from QSO entry via internal links, while retaining native browser dialogs for external navigation. Refactored the LIVE/POST mode switch to avoid triggering the beforeunload warning. Added a custom modal for confirming navigation away from QSO entry, and updated related JavaScript logic for better user experience.
Added a check for the 'manual' URL parameter to bypass CAT data updates and reset the UI when manual QSO entry is active. This ensures that CAT updates do not interfere with manual logging workflows.
Introduces migration 238 to update the application version to 2.8.2 and trigger the version info dialog for users. Updates the migration version in the configuration to 238.
Simplifies the QRZ data download process by removing the custom date selection logic. Now, all QRZ data is downloaded regardless of the date specified in the request.
Added FontAwesome icons to options pages and sidebar for better visual distinction. Improved the options index page with overview cards for each settings category. Updated CSS for active and hover states in the options sidebar, providing a more modern and user-friendly interface. Added a subscription management link to the header if configured.