diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3530eab --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog + +All notable changes to **adn-server** are documented here. Versioning follows [SemVer](https://semver.org/). + +## [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. +- Parrot entrypoint (`adn-parrot.py`) for TG 9990 echo/playback. +- 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. +- Parrot 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.yaml` as template; production YAML is not committed. +- **Wire:** HBP and OpenBridge on-wire formats unchanged vs legacy ADN DMR Server. + +[1.0.0]: https://github.com/ce5rpy/ADN-DMR-Peer-Server/releases/tag/v1.0.0 diff --git a/README.md b/README.md index e8b443e..c008dfa 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # ADN DMR Peer Server +**Version 1.0.0** — first stable release (SemVer). Compatible with **adn-monitor 1.0.0**. + ADN DMR conference bridge server. Configuration is YAML; the codebase follows clean architecture (domain, application, infrastructure). ## License diff --git a/pyproject.toml b/pyproject.toml index c437104..b0236b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "adn-server" -version = "0.1.0" +version = "1.0.0" description = "ADN DMR Peer Server" readme = "README.md" license = { text = "GPL-3.0-or-later" } diff --git a/src/adn_server/__init__.py b/src/adn_server/__init__.py index c5f7dbe..1d8b677 100644 --- a/src/adn_server/__init__.py +++ b/src/adn_server/__init__.py @@ -36,3 +36,5 @@ ############################################################################### """ADN DMR Peer Server — conference bridge (rewrite of bridge_master).""" + +__version__ = "1.0.0" diff --git a/src/adn_server/main.py b/src/adn_server/main.py index 37951c2..67703f2 100644 --- a/src/adn_server/main.py +++ b/src/adn_server/main.py @@ -159,9 +159,12 @@ def _looping_errback(logger: logging.Logger, failure): def main() -> None: + from . import __version__ + parser = argparse.ArgumentParser(description="ADN DMR Peer Server") parser.add_argument("-c", "--config", dest="CONFIG_FILE", default=None, help="Path to adn-server.yaml") parser.add_argument("--logging", dest="LOG_LEVEL", default=None, help="Override log level") + parser.add_argument("--version", action="version", version=f"adn-server {__version__}") args = parser.parse_args() project_root = os.path.dirname(os.path.abspath(__file__))