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.
Introduces logic to detect and enforce centrally managed email settings. When managed, email options are displayed as read-only and cannot be changed by users; attempts to save changes are blocked with a notice. The email options view now conditionally renders a read-only summary and test email form if management is enabled.
Changed the import logic to deduplicate LoTW users by callsign, keeping only the latest timestamp for each callsign. Updated batch insertion to process only unique callsigns and improved reporting to show both total records read and unique callsigns inserted.
Replaces direct joins to lotw_users with subqueries that select the latest (MAX) lastupload per callsign in Distances_model, Logbook_model, and Logbookadvanced_model. This ensures only the most recent LoTW upload per callsign is joined, improving data accuracy and preventing duplicate join results.
Replaces direct join with lotw_users table by joining a subquery that selects the latest lastupload per callsign. This improves performance and ensures only the most recent LOTW upload date is included for each callsign.
Introduces open registration settings in the options area, allowing administrators to enable or disable public user signup. Adds a registration options page, updates sidebar navigation, and implements a public signup form and controller logic. Also refines user model to ensure correct data types for user fields and updates language strings for registration. The login page now links to signup when open registration is enabled.
Enhanced Cypress logbook tests for reliability by adding waits for login and page load, and improved assertions for table and button presence. Updated login command to use environment variables for credentials, allowing more flexible test configuration.
Added a check for the page header and increased timeout for table existence to ensure the test waits for the page to fully load before verifying the station logbook entry.
Replaced several Font Awesome icons in the header navigation dropdowns for improved clarity and consistency. Updated icons for QSL, eQSL, statistics, awards, export options, backup, hardware interfaces, and version information. This enhances the visual representation and user experience across the interface.
Replaced Font Awesome icons for General Logging, Contest Logging, and Fast Log Entry links in both dashboard and header views to improve visual clarity and consistency.
Renamed 'Live QSO' to 'General Logging' and 'Live Contest Logging' to 'Contest Logging' in language file. Reordered contest and fast log entry links in the header dropdown for improved clarity.
Deleted the GitHub Actions workflow for the accessibility-alt-text-bot. This removes automated checks for alt text on issues, pull requests, and discussions.
Introduces user-facing JSON+ZIP export and import for stations, logbooks, and QSOs, including preview and progress views. Updates backup controller to allow all authenticated operators (level 2+) and replaces legacy backup card with new workflow in the UI. Adds new views for import preview and progress, supporting selective import and conflict handling.
Updated User_model to store user_callsign in uppercase using strtoupper when creating or updating users. Also added a style to the edit form input to visually enforce uppercase entry for callsign.
Added checks to return empty results when no user is logged in, preventing SQL errors and ensuring consistent behavior for unauthenticated access in logbook-related queries.
The DXCluster navigation link has been removed from the options sidebar. This streamlines the sidebar and may reflect a change in available features or navigation structure.
Ensures that the current font file path is always used in the AddFont function, rather than relying on a cached path from .mtx.php. This change improves reliability when loading font files.
Updated the FPDF_FONTPATH definition to remove the 'unifont/' subdirectory, as AddFont() automatically appends it. This ensures fonts are loaded correctly when generating PDFs.
Adds logging of actual errors during label generation for better debugging. Updates error messages to include the specific exception message, and ensures FPDF_FONTPATH is only defined if not already set.
Radio status now loads immediately on page load and updates every 2 seconds, with a loading spinner shown until data is available. The radio index page UI has been enhanced for better clarity, accessibility, and user feedback, including improved alert styling and more informative icons.