Add a persisted `force_amsat` OscarWatch user option, expose it on the user edit form, and keep the AMSAT upload setting in sync when OscarWatch status uploads are enabled. The controller now defaults unchecked values correctly and shows a notice when OscarWatch disables direct AMSAT uploads or when the override keeps both enabled.
Adds full user-setting support for OscarWatch SAT status uploads: new per-user `status_upload` option initialization, save/load wiring, and session hydration. The user edit page now includes an enable/disable selector plus a “Test Token” action that calls a new `validate_oscarwatch_token` controller endpoint to verify tokens against OscarWatch and return clear JSON status messages. Logbook SAT upload logic is updated so AMSAT and OscarWatch uploads are handled independently based on their respective user toggles.
This adds optional OscarWatch integration for SAT QSOs: users can store an OscarWatch API token in account settings, and Cloudlog now reports SAT status uploads to OscarWatch alongside AMSAT uploads when enabled. It includes payload building, mode remapping for common satellites/modes, timestamp/grid handling, and error logging for failed submissions. The edit flow was also updated to load/save these options for the correct edited user, and the account label was generalized from “AMSAT Status Upload” to “Satellite Status Upload.”
Introduce an experimental browser-based remote audio feature: bump migration version to 270 and add a migration to add a remote_operation flag to the users table. Add server-side support to User and QSO controllers/models to read/save the remote_operation option (stored via user_options_model) and expose isRemoteOperationEnabled to views and session updates. Add UI: a Remote Operation card on the QSO page, a modal component for detailed settings, a toggle in the user edit page, and conditional loading of assets/js/remote-operation.js. Add a large client-side implementation (assets/js/remote-operation.js) implementing WebRTC signalling, device selection, level meters and diagnostics. Minor session/session-update and helper changes to keep UI state in sync.
Remove inline CSS rules from application/views/user/edit.php: deleted .user_edit custom properties (--gh-border, --gh-muted, --gh-bg-subtle) and .settings-nav .list-group-item styles (cursor, margin-bottom). This cleans up duplicated/unused styling that should be provided by global stylesheets.
Revamp user edit view into a responsive two-column settings UI: add sidebar navigation, GitHub-like styles, and JS to switch setting panes. Reorganize and present existing options (main menu, map params, default values, Hams.at, AMSAT, Mastodon, hardware, QSO form) as cards inside accordion panes, remove duplicated blocks, and align the save button. Changes improve usability and navigation in application/views/user/edit.php.
Introduce a user-controllable option to show/hide the "View QSL Cards" link in the Logbook menu. Controller: initialize menu_show_qsl_cards, load/save the 'show_qsl_cards' menu option and sync it to the session during profile updates. Model: fetch the 'show_qsl_cards' option and expose user_show_qsl_cards in the user data. Views: add a checkbox in the user edit form to control the setting, remove the duplicate SSTV storage card UI, and update the header to robustly read the session value and conditionally render the QSL menu item. Defaults to showing the menu item when the option is unset.
Move the "Show SSTV Images" menu checkbox out of its previous standalone section and into a new "Storage Options" card. Removed the old <hr> and explanatory paragraph and added a new card column with a header, brief description, and the existing checkbox so image-related menu controls are grouped together and the form layout is cleaner.
Introduce a user preference to show or hide the "View SSTV Images" menu item. Controller: initialize menu_show_sstv_images, load/save the 'menu:show_sstv_images' option and set session user_show_sstv_images when profile is saved. Model: fetches the menu option and exposes user_show_sstv_images (and has_eqsl_credentials) in the returned user data. Views: add a checkbox to the user edit form to toggle the setting, and conditionally render the eQSL/SSTV menu items in the header based on session flags. This lets users control visibility of the SSTV menu entry from their profile.
Introduce a DX Cluster tab to the QSO view and user settings. This change:
- Enables a new qso_form option 'dxcluster_tab' in controllers (Qso.php, User.php) so the tab can be toggled per-user.
- Adds a user preference toggle in the user edit view to show/hide the DX Cluster tab.
- Implements the DX Cluster UI in the QSO index view: tab button, controls (band select, hide RBN), spot table and click-to-fill behavior.
- Adds client-side JS to manage a WebSocket to wss://dxc.cloudlog.org, maintain and render recent spots in a DataTable, persist filter preferences, sync band selection with the QSO form/radio, and batch-check worked status via the dxcluster/check_worked endpoint.
Files changed: application/controllers/Qso.php, application/controllers/User.php, application/views/qso/index.php, application/views/user/edit.php.
Introduce per-user visibility settings for QSO form fields and tabs. Load qso_form options in QSO and User controllers (with sensible defaults), apply them to the qso view to conditionally render fields/tabs, and save changes from the user edit form. Add a QSO Form accordion in user/edit.php exposing switches for each field/tab, update user save logic to persist each option, and include client-side JS in qso/index.php to toggle USA state/county and DOK fields based on DXCC selection. Files changed: application/controllers/Qso.php, application/controllers/User.php, application/views/qso/index.php, application/views/user/edit.php.
Add a day/night greyline (terminator) overlay to the dashboard map.
- New assets/js/leaflet/L.Terminator.js: a Leaflet polygon plugin that computes the solar terminator for a given time and exposes L.terminator().
- Load the terminator script in the footer and register a Greyline overlay layer with start/stop interval updates (refreshes every minute). Updates are managed when the overlay is added/removed or when the map unloads to avoid orphaned timers.
- Expose the greyline as a toggleable overlay in the map layer control and add markers to a dedicated markersLayer overlay (instead of adding them directly to the map).
- Add a user preference checkbox to application/views/user/edit.php (Enable Dashboard Map Greyline Layer) and wire saving/reading of the dashboard_map_greyline option in application/controllers/User.php and application/controllers/Dashboard.php. Default behavior is enabled when not set.
This change lets users enable/disable the visual day/night terminator on the dashboard map and ensures proper lifecycle handling for updates and marker layering.
Introduce a user preference to treat satellite QSOs as "worked" for DXPedition status and wire it through the UI, controller, and model. Changes: add dashboard_dxpedition_sat_worked default and POST handling in User controller, add checkbox to user settings view to toggle the option, update Workabledxcc_model to optionally include satellite results when computing workedBefore via a new shouldIncludeSatelliteWorked() helper, and tweak upcoming_dxccs view styling and row classes to visually indicate worked vs needed DXPeditions. This makes DXPedition cards respect users' preference for counting satellite contacts.
Add callsign uniqueness checks and prevent demotion of the last admin. Introduces ECALLSIGNEXISTS and ELASTADMIN constants, new model methods (exists_by_callsign, count_admin_users, would_remove_last_admin) and integrates checks into add/update flows to return appropriate error codes. Update User controller to add validation callbacks (check_unique_callsign, check_last_admin_role) and wire errors into multiple user actions. Update signup/edit views to display callsign and usertype validation feedback using Bootstrap invalid-feedback and improve alert layout.
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.
Introduces functionality to send a welcome email with credentials to new users upon creation and allows admins to resend a reminder email (without password) to existing users. Adds email templates, UI options for sending emails, and improves user management interface with new actions and enhanced layout.
Enforces that Clublog usernames are valid email addresses throughout the application, reflecting Clublog's policy change to no longer accept callsigns as usernames. Updates validation in controllers, models, and views, adds a migration to clear non-email usernames, and updates language files in multiple languages to clarify the requirement.
1/ Update French tag value for files :
account_lang.php --> done
adif_lang.php --> done
admin_lang.php --> done
awards_lang.php
contesting_lang.php --> done
eqsl_lang.php --> non change
export_lang.php
filter_lang.php
general_words_lang.php --> in progress
gridsquares_lang.php
lotw_lang.php
menu_lang.php
notes_lang.php --> done
options_lang.php
qslcard_lang.php --> done
qso_lang.php
station_lang.php
statistics_lang.php --> done
2/ addition of a space (on 1 line of the adif file for each language) to standardize the structure of the files
3/ standardize css form-control for 1 field on add/edit user view
Squashed commit of the following:
commit 595f620d9e
Author: phl0 <github@florian-wolters.de>
Date: Wed Nov 1 13:58:05 2023 +0100
Update languages
commit f670a06059
Author: phl0 <github@florian-wolters.de>
Date: Wed Nov 1 13:55:04 2023 +0100
Added user option for enabling QSO end time logging
commit 36d9a95ebb
Merge: 54d5bb53352931b1
Author: phl0 <github@florian-wolters.de>
Date: Wed Nov 1 12:18:39 2023 +0100
Merge branch 'dev' into qsoTime
commit 54d5bb535b
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:14:58 2023 +0200
start/end times for other languages
commit c5f6bb0cab
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:14:42 2023 +0200
Hide end time if only differs in seconds as we only display minutes
anyway ...
commit d519d88604
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:14:29 2023 +0200
use start as end time if end is not set separately
commit f2588ad132
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:13:43 2023 +0200
reset timers on form reset
commit 2b7ee4e48c
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:13:27 2023 +0200
Strip seconds from session time variable
commit e0c35aa0cf
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:13:11 2023 +0200
Adapt contest logging
commit 5368ef25f3
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:12:50 2023 +0200
Make date field a little smaller
commit ad2d7e756c
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:12:30 2023 +0200
Add button to reset start time
commit f56e031946
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:11:09 2023 +0200
Copy start to end time on focus out
commit b741d0428d
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:10:45 2023 +0200
Only min and sec for post QSO template
commit 77314edd31
Author: phl0 <github@florian-wolters.de>
Date: Fri Oct 27 10:08:49 2023 +0200
Basics for QSO end time logging