22 KiB
Changelog
All notable changes to adn-server are documented here.
v2.5.6 (2026-09-19)
Bug Fixes
- Write alias downloads atomically and validate checksum before persisting
(
aad30ba)
v2.5.5 (2026-09-18)
Bug Fixes
- Retry alias JSON downloads on a short poll instead of waiting a full STALE_DAYS cycle
(
f6cc0fe)
v2.5.4 (2026-08-19)
Bug Fixes
-
Keep hotspots connected when the security server is unreachable (
49114fe) -
Stop unit calls to 4000 from being broadcast to every peer (
62225c9)
v2.5.3 (2026-07-31)
Bug Fixes
-
Deliver a hotspot's own group call back to its other slot when subscribed there too (#67,
c788382) -
Deliver TG on both slots when static on one, dynamic on the other (#66,
6c28754) -
Dual-slot delivery for mixed static+dynamic TG subscriptions (#66,
6c28754) -
Strip NUL-padded CALLSIGN instead of showing raw bytes (#66,
6c28754)
v2.5.2 (2026-07-28)
Bug Fixes
- Deliver a group call on both slots when a peer has the TG on TS1+TS2
(
4360efa)
v2.5.1 (2026-07-25)
Bug Fixes
- Target private calls to the known hotspot instead of broadcasting
(
11970e0)
v2.5.0 (2026-07-23)
Bug Fixes
-
Don't attribute synthetic announcement PTT to a real connected peer (
99b6f8d) -
Log silent dynamic TG activation once per peer and TG (
278b10e)
Features
- Add HP3ICC acknowledgments to README
(
4bf378f)
v2.4.3 (2026-07-22)
Bug Fixes
- Forward OBP group voice to an HBP target only once per TG
(
6a66010)
v2.4.2 (2026-07-22)
Bug Fixes
- Default TALKER_ALIAS_SEND_DMRA off for legacy wire parity
(
169467e)
v2.4.1 (2026-07-21)
Bug Fixes
-
Accept NUL-padded RPTC callsigns in login check (#52,
5f2f69d) -
Deliver one DMRD when TG is on both OPTIONS slots (#53,
7ff3010) -
Strip NUL padding from monitor export and shared HBP fields (#52,
5f2f69d) -
Strip NUL padding from RPTO OPTIONS in logs and storage (#52,
5f2f69d)
v2.4.0 (2026-07-15)
Bug Fixes
- OBP_PROXY fan-in for centralized OpenBridge ingress
(
770523c)
Features
- Publish OBP keepalive connected status in dashboard_state
(
b27c166)
v2.3.3 (2026-07-13)
Bug Fixes
- Gate OBP source ensure when bridge source is already active
(
e140822)
v2.3.2 (2026-07-13)
Bug Fixes
- Inject scheduled voice via routing and restore monitor TX events
(
62f429a)
v2.3.1 (2026-07-13)
Bug Fixes
- Stop premature OBP monitor voice END events
(
cc4031a)
v2.3.0 (2026-07-10)
Chores
Features
v2.2.6 (2026-07-10)
Bug Fixes
- Block OBP during server announcements on inject-only masters
(
cae5d57)
v2.2.5 (2026-07-10)
Bug Fixes
-
Add ReportWire contract tests against report-v2 schema (#36,
c15430a) -
Add tests/fakes shim for application test decoupling (#36,
c15430a) -
Align OPTIONS static validity checks across routing and report (#36,
c15430a) -
Audit items 11-13 coverage, infra tests, and warning logs (#36,
c15430a) -
Audit refactors, report contract, and concurrent OBP downlink (#36,
c15430a) -
OBP DMRE source-server validation without ALLOW_UNREG_ID bypass (#36,
c15430a) -
Per-stream OBP bridge TX legs for concurrent MASTER downlink (#36,
c15430a) -
Ruff lint in OBP concurrent streams downlink test (#36,
c15430a)
v2.2.4 (2026-07-09)
Bug Fixes
-
Duplicate-safe TA embed phase and REPEAT VHEAD DMRA (B) (#34,
1567314) -
Exclude byte-identical duplicates from HBP rate counter (A.2) (#34,
1567314) -
Production ingress mitigations (UDP rcvbuf, rate limiter, TA embed) (#34,
1567314) -
Raise UDP SO_RCVBUF on voice listeners (C-LOCAL) (#34,
1567314)
Chores
v2.2.3 (2026-07-04)
Bug Fixes
v2.2.2 (2026-07-02)
Bug Fixes
-
Correct broken hotspot-proxy anchor link in special-numbers (EN) (
2ec900b) -
Reconcile logged_in against connected peers every 120s (
ab63a8c)
Chores
- Document OPTIONS line behaviour and self-service dashboard login (EN/ES)
(
81cf74d)
v2.2.1 (2026-07-01)
Bug Fixes
-
Add shared PASS= redaction for OPTIONS log lines (#28,
9de26ea) -
Elevate proxy attach rejection to WARNING for RPTC/RPTO (#28,
9de26ea) -
Fetch DB options when hotspot sends no RPTO after RPTC (#28,
9de26ea) -
Remove noisy CALL RX log on OBP DMRE voice header (#28,
9de26ea) -
Rework self-service RPTO to distinguish PASS, empty, and OPTIONS (#28,
9de26ea) -
Self-service RPTO handling, PASS redaction, and proxy log cleanup (#28,
9de26ea)
v2.1.1 (2026-06-22)
Bug Fixes
- Block downlink DMRD to busy hotspot RF slot per peer
(
ecca56f)
v2.1.0 (2026-06-22)
Bug Fixes
-
Allow same static TG on TS1 and TS2 for duplex routing (
e7d3dab) -
Inject-only contention, dynamic TG restore, and UA timer parity (#24,
c5cbdb2) -
Inject-only slot contention, monitor events, and UA timer display (#24,
c5cbdb2) -
Reject malformed peer OPTIONS for monitor and downlink (
08c648f) -
Slot contention, simplex RF mode, and static TG dedup (
1931682)
Documentation
- Document simplex downlink TS2 choice (MMDVMHost DMO parity)
(
49a9605)
Features
v2.0.6 (2026-06-22)
Bug Fixes
Chores
v2.0.5 (2026-06-21)
Bug Fixes
-
Remap REPEAT DMRD slot to peer OPTIONS for cross-slot downlink (#18,
5945d66) -
Restore cross-slot downlink and REPEAT monitor activity (#18,
5945d66)
Chores
v2.0.4 (2026-06-21)
Bug Fixes
- Cross-slot downlink and REPEAT monitor activity
(
f561b26)
Chores
- ci: Sync develop via merge after release
(
e05dc00)
v2.0.3 (2026-06-21)
Bug Fixes
v2.0.2 (2026-06-21)
Bug Fixes
-
Keep YAML SINGLE_MODE on multi-peer masters for dynamic TGs (#12,
47c7e33) -
SINGLE=0 multi-dynamic TGs and YAML SINGLE_MODE defaults (#12,
47c7e33)
Chores
v2.0.1 (2026-06-20)
Bug Fixes
Chores
v2.0.0 (2026-06-19)
Chores
- Add release workflow and semver versioning (semver from 2.0.0; no RC phase)
(
013b766)
[2.0.0-rc.4] - 2026-06-18
Added
- Docs (MkDocs EN/ES): bridges vs subscriptions, performance notes, report-proxy guide for legacy dashboards, Mermaid diagrams in architecture/monitoring pages.
Fixed
- Echo TG 9990 — excluded from SINGLE/UA session locks; inject-only monitor remap for echo TX legs; bridge TX report field 5 resolves hotspot radio id for ECHO/hotspot live chips.
- Dynamic TG restore —
sync_restored_dynamic_tgspassesnow=as keyword (fixes TypeError on echo startup after DB restore).
Compatibility
- Monitor: adn-monitor 2.0.0-rc.5.
[2.0.0-rc.3] - 2026-06-17
Added
- Dynamic TG persistence — per-peer user-activated TGs stored in MariaDB (
peer_dynamic_tgs); restored on hotspot reconnect (RPTC); sharedDATABASEblock with proxy self-service. - Server-owned migration — ensures
peer_dynamic_tgstable on startup (idempotent, same schema as adn-monitor004).
Fixed
- TG 4000 — clears all peer dynamic slots (memory + DB); emits
INGRESSBRDG_EVENT so monitor SINGLE=0 chips clear without stuck TX; TG 4000 is never stored as a UA session.
Compatibility
- Monitor: adn-monitor 2.0.0-rc.4.
[2.0.0-rc.2] - 2026-06-16
Fixed
- Cross-slot static TG downlink (legacy REPEAT parity): inject-only MASTER delivers group voice to hotspots when the TG is listed in TS1 or TS2 OPTIONS, regardless of incoming wire timeslot. Wire slot is unchanged; downlink index and
peer_should_receive_group_voicematch both OPTIONS lists.
Compatibility
- Monitor: adn-monitor 2.0.0-rc.2 (TS chip maps OPTIONS static slot on receive).
[2.0.0-rc.1] - 2026-06-12
First v2 release candidate since 1.0.0 (~70 commits). HBP/OpenBridge on-wire behaviour preserved.
Added
- Report v2 — JSON HELLO, slim
dashboard_stateTCP wire (no full topology/routing snapshots to monitor), bounded report queue, optional MQTT. - Unified binary —
adn-server.pywith--echo,--doctor,--no-proxy; wiring inbootstrap/peer_server.py. - Integrated proxy — in-process UDP fan-in (
PROXY), inject-only MASTER, self-service MySQL OPTIONS, peer blacklist/timers parity with legacy proxy. - Subscription routing —
SubscriptionStore+SubscriptionRouteras runtime authority; store-native timers, OPTIONS/static TG, in-band ON/OFF;MeshCodecRegistryon OpenBridge. - Inject-only production path — per-peer OPTIONS downlink filter, monitor topology expansion (virtual SYSTEM slots), CONFIG push on peer connect.
- Performance — O(1) BRIDGES source index; peer downlink index for inject fan-out; adaptive CONFIG_SND debounce on mass login.
Changed
- Architecture —
bridge_use_casessplit intorouting_use_cases+ mixins;RuntimeContextand atomic SIGHUP reload; DMR codecs vendored todomain/dmr/; mesh codecs extracted fromudp_hbp. - OPTIONS / static TG — event-driven refresh (RPTO, startup, reload, dmrd fallback) instead of 26 s periodic loop.
- Talker Alias — embed on local REPEAT; passthrough and dedupe fixes on relay path.
Fixed
- OpenBridge packet control and rate-limit parity with legacy.
- Echo playback when sequence byte wraps; echo TG 9990 bootstrap.
- Inject TG 4000: clear dynamics once per PTT per peer.
- Unit data (ARS/LRRP) downlink for 7-digit private calls; monitor TS chip (no spurious
PRIVATE VOICEon unit data). - OBP → HBP voice forwarding and downlink CPU under multi-peer inject load.
Removed
- Standalone
adn-parrot.py— useadn-server.py --echo. - Periodic 26 s
options_config_loop. - Legacy pickle CONFIG/BRIDGE snapshots on the server → monitor wire (monitor uses v2 slim ingest).
Compatibility
- Monitor: adn-monitor 2.0.0-rc.1 (report v2 slim wire, HELLO JSON).
- Wire: HBP and OpenBridge on-wire formats unchanged vs legacy ADN DMR Server.
- Config: same
adn-server.yamlshape; add optionalPROXY/SELF_SERVICE/REPORTS.MQTTsections.
1.0.0 - 2026-06-06
First stable public release.
Added
- Clean-architecture rewrite: domain, application, infrastructure layers.
- YAML configuration (
adn-server.yaml) with startup validation. - HBP MASTER/PEER and OpenBridge forwarding with legacy parity (loops, BCSQ, packet control).
- Talker Alias: DMRA packets and embedded LC overlay (UTF-8 / ISO-8859-1 / 7-bit formats).
- Voice: announcements, TTS pipeline, on-demand AMBE playback, recording.
- Echo playback entrypoint (
adn-server.py --echo,adn-echo.yaml) for TG 9990. - Monitor report TCP: HELLO JSON (mode v2), CONFIG_SND / BRIDGE_SND (pickle), BRDG_EVENT.
- Hot reload:
adn-server.yaml(SIGHUP),adn-voice.yaml(15 s loop), log reopen (SIGUSR2). - MkDocs user guide (EN/ES).
Fixed (highlights since parity baseline)
- OpenBridge packet control and ingress timing.
- Echo playback sequence preservation on long QSOs.
- Config validator accepts numeric MMDVM option fields in YAML.
- OBP END/TX reporting and STATUS lifecycle alignment with legacy.
Compatibility
- Monitor: adn-monitor 1.0.0 (HELLO v2 + legacy pickle report).
- Config: use
adn-server.example.yamlas template; production YAML is not committed. - Wire: HBP and OpenBridge on-wire formats unchanged vs legacy ADN DMR Server.