Show an "Open Wavelog" link beside the Wavelog API Key heading in the
OpenWebRX panel. The URL comes from the runtime WAVELOG_BASE_URL (exposed
via GET /v1/me and the OpenWebRX session response), so the private hostname
is never hardcoded in this public repo. The link is hidden when no base URL
is configured.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The CAT push only fired on band select (band center). Fine-tuning inside
OpenWebRX did not update Wavelog. Hook the per-operator live-state updates
(/v1/openwebrx/plugin/live-state) so the actual tuned frequency/mode is
pushed, trailing-debounced (WAVELOG_MIN_INTERVAL_MS, default 3000 ms) so
tuning does not flood the Wavelog API. Band-select push kept as immediate
feedback on band change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a CAT integration so the station's current frequency and mode are
reported to each operator's personal Wavelog logbook via Wavelog's radio
API (POST <baseUrl>/index.php/api/radio).
- New plugin rms.wavelog.cat (capability logging.cat.publish): posts
{key, radio, frequency, mode}. Base URL / radio name come from plugin
settings or env (WAVELOG_BASE_URL, WAVELOG_RADIO_NAME); no secrets in repo.
- Core hook in the OpenWebRX band-select flow pushes centerFreqHz + startMod
for the active operator, best-effort (never breaks the band change).
- Per-user Wavelog API key stored on the user record; PUT /v1/me/wavelog-key
to set it, returned by GET /v1/me and the OpenWebRX session issue response.
- UI: Wavelog API key field in the OpenWebRX panel (visible when generating
the session link), with i18n (de/en).
- Docs, .env.example entries, and a unit test for the mode mapping.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Use rms.auth.smtp_relay settings as the primary source for OTP mail transport (host/port/auth/tls/from/replyTo), with existing OTP/env values only as fallback. This lets OTP delivery work immediately when relay settings are already configured.
Treat requested OTP auth as globally available whenever an OTP auth method plugin is enabled, independent of per-user enabledAuthMethods. This keeps OTP usable for all users without requiring per-user method toggles.
Seed rms.auth.oauth plugin settings with a Google OIDC example while keeping the plugin disabled by default, add admin API/UI support to delete individual reservation entries, and extend auth flow handling for OAuth callback redirects and errors.
Introduce a new rms.auth.oauth auth method plugin for OAuth/OIDC code flow with standard provider settings (authorize/token/userinfo URLs, client credentials, scope, redirect URI and extra params). Add server callback handling and OAuth challenge state tracking, UI redirect/error handling, and keep the plugin disabled by default via manifest defaultEnabled=false.
Return auth.method_unavailable when a user requests an auth method that is not enabled for their account, rather than silently sending the smtp-link challenge. Also log requested/selected method details in auth.request_access audit entries for easier diagnostics.
Introduce a manual-release reservation hold on station state so auto slot activation is suppressed for the current reserved user until the reservation window ends or is removed. Clear the hold on activation/reservation updates and backfill missing hold fields for existing station state files.
Stop auto-activating reservation slots immediately after a manual station release. This ensures the 'Station deaktivieren' action actually leaves the station deactivated, while reservation ownership remains intact until the user deletes the reservation.
Add the reusable RMS core application (server, web UI, plugins, tests, tools) with generic defaults, GPL licensing, and maintainer context documentation so deployments can consume this repo as software source independent of station-specific overlays.