81359e229ef0ae35f1dc31316d4ca3594bad166e
Problem: In prod überschrieben ensureMicrohamSettings und
ensureOpenWebRxBandmapSettings ihre Plugin-Settings bei JEDEM Start aus
ENV → UI-Änderungen gingen bei Deploy/Neustart verloren. rms.wavelog.cat
hatte gar kein ensure* → seine (nicht-geheime) ENV-Config wirkte zwar via
getSetting-Fallback, war aber nie in plugin-state und damit in der Admin-UI
unsichtbar ("funktioniert, wird aber nicht angezeigt").
Fix (Modell: State gewinnt, ENV seedet):
- ensureMicrohamSettings + ensureOpenWebRxBandmapSettings auf fill-if-missing
umgestellt: ENV seedet ein Feld nur, wenn es in plugin-state fehlt; danach
bleibt der gespeicherte/UI-Wert erhalten und überlebt Deploys.
- Neues ensureWavelogSettings (fill-if-missing) seedet baseUrl/radioName/
timeoutMs aus ENV → in der UI sichtbar, UI-Edits persistent.
- vswr-/oauth-ensure* waren bereits fill-if-missing (unverändert).
- Secret-Plugins (SMTP/oauth-Secrets/debug-Token) bewusst NICHT geseedet
(dürfen nicht in plugin-state.json/UI landen).
Hinweis: Dazu gehört eine Deploy-Repo-Änderung (entfernt die per-Deploy-
Löschung der Bandmap-Keys in deploy.yml), sonst würde Bandmap weiter
re-geseedet.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merge pull request 'TX-Audio: speechnorm Auto-Level + überarbeitete EQ-Oberfläche' (#5) from feat/eq-speechnorm-autolevel into main
RMS Software
RMS Software is a generic remote-station control platform with a web UI, passwordless authentication, plugin-based hardware integration, and OpenWebRX+ orchestration.
This repository is intentionally station-agnostic. Site-specific deployment, host bindings, and operational overrides belong in a separate deployment repository.
Core Features
- Passwordless auth via email link and OTP methods
- JWT access/refresh session model with role-based permissions
- Plugin runtime with capability provider switching
- OpenWebRX+ session/ticket integration and managed band/profile support
- Station lifecycle controls (activate/deactivate, ownership, safety locks)
- Rotor, RF route, TX/PTT and VSWR integration via plugins
- Activity/audit logs and SSE event stream for live UI updates
Quick Start
- Copy
.env.exampleto.env. - Install dependencies:
npm ci
- Start development mode:
npm run dev
- Open
http://localhost:8080.
Plugin Overview
Core and plugin docs:
- Core:
docs/core-overview.md - Plugin index:
docs/plugins/README.md
Auth
rms.auth.smtp_relay: email link challenge delivery through SMTP relayrms.auth.otp_email: OTP challenge delivery through emailrms.auth.oauth: OAuth/OIDC authorization-code login (disabled by default; configurable authorize/token/userinfo/client settings)
Google example (plugin settings):
authorizeUrl:https://accounts.google.com/o/oauth2/v2/authtokenUrl:https://oauth2.googleapis.com/tokenuserInfoUrl:https://openidconnect.googleapis.com/v1/userinfoscope:openid email profileemailField:emailclientId:<google-client-id>.apps.googleusercontent.comclientSecret:<google-client-secret>redirectUri:<public-base-url>/v1/auth/oauth/callback(or leave empty to auto-derive)
Station & Access
rms.station.shell: station activation/deactivation command executionrms.station.access.policy: export effective access list for OpenWebRX policies- Hardware guide:
docs/hardware-station-shell-guide.md
OpenWebRX+
rms.openwebrx.bandmap: managed band/profile integrationrms.openwebrx.guard: OpenWebRX safety and consistency guard
TX/PTT/Audio
rms.tx.control.native: native TX on/off command providerrms.tx.state.file: file-based TX state providerrms.tx.audio.core: core TX audio session managementrms.microham: microHAM provider for PTT/audio related capabilities- Hardware guides:
docs/hardware-tx-control-guide.md,docs/hardware-microham-guide.md
RF/Hardware
rms.rfroute.shell: RF route switching via shell commandsrms.rotor.hamlib: rotor control via hamlib/rotctl- Hardware guides:
docs/hardware-rfroute-guide.md,docs/rotor-rot1prog-guide.md,docs/rotor-alfaspid-rak-rot1prog-manual-notes.md - Manufacturer PDF copy:
docs/RAK_Rot1Prog.pdf
VSWR
rms.vswr.native: native VSWR command providerrms.vswr.nanovna: NanoVNA-based VSWR providerrms.vswr.report_reader: reads and serves VSWR report artifacts- Hardware guide:
docs/hardware-vswr-nanovna-guide.md
Ops/Help
rms.debug.remote: remote debug snapshot/log providerrms.help.basic: basic UI help content provider
Repository Boundaries
This repository contains:
- generic software source (
server,public,plugins) - generic defaults (
.env.example)
This repository does not contain:
- station-specific hostnames, hardware paths, or production secrets
- deployment overlays for specific stations
Recommended layering for deployments:
- RMS Software defaults
- Station-specific overlay repository
- Server environment variables (highest priority)
License
GPL-3.0-only. See LICENSE.
x
Description
Remotestation-ARCG ist die modulare Steuer- und Betriebsplattform für die ARCG-Remote-Station.
Die Software kombiniert eine moderne Web-UI mit passwortloser Authentifizierung, Rollen-/Freigabe-Workflow und pluginbasierter Hardware-Anbindung für OpenWebRX+, TX/PTT, Rotor, RF-Route und SWR/VSWR.
Kernmerkmale:
Passwortloser Login (E-Mail-Link/OTP), JWT Access+Refresh, Rollenmodell (admin, approver, operator)
Stationsbetrieb mit Besitzlogik, Reservierung/Zeitfenster, Wartungsmodus, Audit-Log
OpenWebRX+ Integration inkl. Session/Ticket-Handling, Band-/Profilsteuerung, Sicherheits-Guards
Plugin-System mit Capability-Providern (jede Hardware-Integration austauschbar)
API-first Architektur (Web-UI + Android/Clients über dieselben Endpunkte)
Languages
JavaScript
92.3%
CSS
4%
HTML
3.7%