What's new in 1.13.0
Sprint 1 foundations: correctness fixes and hardening that every operator and app developer should know about.
Public URL is configurable
The site, API examples, APRS bulletins, and beacon text no longer hardcode aprs.hemna.com (that hostname has no public DNS).
- New config option:
public_url(defaulthttps://services.aprslive.com) - Templates use
{{ public_url }}for copy-paste API examples - Bulletins and the station beacon comment use the same value
Callsign / tactical address validation
POST /api/v1/registry and admin create now reject invalid identifiers with HTTP 400.
APRS service names are tactical callsigns, not ITU amateur callsigns. Valid format:
- 3–9 uppercase alphanumeric characters in the base
- Optional
-SSID(1–2 alphanumeric characters; SSID must not start with0) - Total length (including hyphen + SSID) ≤ 9
Examples that pass: REPEAT, WXBOT, WHO-IS, EMAIL-2, WB4BOR-11, KG5JNC-10.
New registrations start as pending
Brand-new services are stored with status pending until:
- a successful health check promotes them to active, or
- an admin changes the status
Re-registration (heartbeat POST with the same callsign) preserves the current status. It will not:
- un-delete a soft-deleted service
- activate a pending service by itself
- resurrect a down service
Deleted services stay deleted until an admin undeletes them.
Scheduled backup and retention
The health-check scheduler can now run maintenance jobs:
- Retention (default on): delete health-check rows older than
retention_days(default 90) - Backup (default off): copy the SQLite DB to a timestamped file under
backup_dir
See config/registry.conf.example for backup_enabled, backup_dir, backup_interval_hours, retention_enabled, retention_days, and retention_interval_hours.
Docs / FAQ
- FAQ rate-limit text matches the real limit: 60 requests per minute per IP
- Operator and developer pages point at
services.aprslive.com
Upgrade notes
- Set
[registry] public_urlif you are not using the default public hostname. - Expect new services to appear as pending until the first successful health check (or admin approval).
- Enable
backup_enabled = truein production if you want nightly (or scheduled) DB copies.