Earlier updates, newest first.Page 33 of 36
Railway Deployment
- Fixed the missing Prisma runtime client that caused container startup failures.
- Railway now explicitly uses the tested Dockerfile and regenerates Prisma before migrations.
- CI now builds and launches the production container and verifies its health endpoint.
Security, Reliability & Operations
- Strengthened administrator permissions and closed role-escalation loopholes.
- Only System Owners can create or manage administrators, and users cannot suspend or demote themselves.
- Added centralized protection for every Administration page.
- Added rate limiting for login, signup, password changes, uploads, and contest entries.
- Reduced account-discovery risk during login and strengthened session cookies and session limits.
- Added security headers, safer error pages, and audit records for important changes.
- Passwords remain securely hashed and are never displayed to administrators.
- Added SQLite foreign-key protections, indexes, integrity checks, and concurrent-write safeguards.
- Added verified online SQLite backups and automatic cleanup of expired data.
- Railway now refuses to start without persistent storage for the database and uploads.
- Added a durable email outbox so failed deliveries are retried automatically.
- Added membership, approval, upcoming-event, and license-expiration email notifications.
- Added a functional mobile navigation menu and improved small-screen layouts.
- Expanded automated security, database, upload, radio-frequency, export, desktop, and mobile testing.
Contest Desk Layout
- Moved the scorecard closer to the top and reduced extra spacing so more of the Contest Desk fits on screen.
Contest Desk Entry Form
- Simplified the logging area and made automatic mode selection respect a mode that the operator selected manually, such as CW.
Automatic Band & Mode
- Band and mode now populate from the entered frequency before submission.
Contest Modes & Time
- Replaced SSB with LSB and USB and changed displayed contest times to the 24-hour format.