From 42cdea08f7cab227d3edf0a9cc6482530bf1c65f Mon Sep 17 00:00:00 2001 From: Sergey Morozik Date: Sun, 11 Oct 2026 12:11:10 -0400 Subject: [PATCH 1/3] docs: add Core 3.0.0b15 release notes Co-Authored-By: Kimi K3 --- docs/CHANGELOG.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 1f410ab87..8eec755b1 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -11,6 +11,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.0.0b15] — 2026-10-11 + +### Added + +- **Add an experimental SDR IQ panadapter as a scope source (MOR-3151, + MOR-3154, MOR-3155, MOR-3156, #4011, #4015, #4016, #4018).** A new + `rigplane.sdr` package defines the IQ source contract, and + `SoapyIqSource` implements it over SoapySDR through an optional `sdr` + extra, including a remote driver and reconnect. `IqFftScope` converts + IQ into scope frames, and a controller follows the radio VFO with + view shift or retune and freezes the scope during TX. The SDR scope + source is experimental in this beta and off by default unless + configured. + +- **Wire the SDR scope source into the server, CLI and Web UI + (MOR-3157, MOR-3158, MOR-3200, MOR-3201, MOR-3202, #4014, #4019, + #4020, #4021, #4022).** The Web UI renders the SDR scope source with + a status badge, a TX-frozen hold and a source selector, and a public + `sdr` status object exposes its state; environment configuration + controls the source. Zoom FFT gives real resolution for narrow spans, + and radios that have their own scope fall back between SDR and + hardware scopes at runtime. + +- **Add an experimental remote controller lease with admission and + transmit fences (MOR-3143, MOR-3144, #4002, #4003, #4012, #4013, + #4017).** One ephemeral controller capability with heartbeat and + expiry gates queued commands, and revocation fences new work before + retained cleanup completes. Admission is enforced across HTTP, + WebSocket and rigctld ingress and browser TX-audio ownership, and a + lost admission releases momentary holds. The remote controller lease + is experimental in this beta; production remote activation remains + off and default local operation is unchanged. + +- **Report a refused browser RX start through the existing info status + (MOR-3148, #4005).** `GET /api/v1/info` now retains the actual + RX-start refusal, including when no client WebSocket received the + error, and a confirmed successful start clears it. + +### Fixed + +- **Drop TX frames that lost admission during audio-session convergence + (MOR-3149, #4004).** A TX frame could pass admission, await audio + session convergence and reach the radio after revocation. The + submission guard is now rechecked immediately before the radio push, + and non-confirming results drop the frame. + +- **Declare the resolved audio route in server info (#4025).** + `/api/v1/info` omitted the active audio route, leaving remote + consumers unable to select one. The response now carries the + canonical route from the existing resolver, or null without an + attached radio; existing fields and protocol version 1 are unchanged. + +- **Request 50 ms input latency for Linux ALSA capture (MOR-3140, + #4001).** The Linux ALSA capture path now requests a 50 ms input + latency. + +### Known issues + +- Linux hardware audio acceptance remains pending. + ## [3.0.0b14] — 2026-10-06 ### Fixed @@ -4408,7 +4468,8 @@ These deprecation closures were announced in v0.19 and dropped on schedule. - Transport layer, authentication, CI-V commands, meters, PTT, keep-alive. - Clean-room Icom LAN UDP protocol implementation. -[Unreleased]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b14...HEAD +[Unreleased]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b15...HEAD +[3.0.0b15]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b14...v3.0.0b15 [3.0.0b14]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b13...v3.0.0b14 [3.0.0b13]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b12...v3.0.0b13 [3.0.0b12]: https://github.com/rigplane/rigplane-core/compare/v3.0.0b11...v3.0.0b12 From 47e94871e0de98aefbb41d0b47de683f42b643b5 Mon Sep 17 00:00:00 2001 From: Sergey Morozik Date: Sun, 11 Oct 2026 12:11:10 -0400 Subject: [PATCH 2/3] chore(release): bump version to 3.0.0b15 Co-Authored-By: Kimi K3 --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index cd9e10f67..437b2664d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "rigplane" -version = "3.0.0b14" +version = "3.0.0b15" description = "Multi-vendor radio control library and Web UI with native providers and planned Hamlib-backed CAT coverage" readme = "README.md" license = "MIT" diff --git a/uv.lock b/uv.lock index 55993fb95..4449be132 100644 --- a/uv.lock +++ b/uv.lock @@ -2125,7 +2125,7 @@ wheels = [ [[package]] name = "rigplane" -version = "3.0.0b14" +version = "3.0.0b15" source = { editable = "." } dependencies = [ { name = "aiohttp" }, From 9997c644bba3088cee674f01f0816317fd3ee850 Mon Sep 17 00:00:00 2001 From: Claude Fable Date: Sun, 11 Oct 2026 12:18:22 -0400 Subject: [PATCH 3/3] docs(changelog): state when remote controller admission is enabled in 3.0.0b15 The b15 notes claimed production remote activation remains off. After #4017 admission opens whenever the managed TX composition is installed, which the web and station commands always do; the sentence now says so. Co-Authored-By: Claude Fable 5.1 --- docs/CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 8eec755b1..55247c429 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -41,8 +41,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 retained cleanup completes. Admission is enforced across HTTP, WebSocket and rigctld ingress and browser TX-audio ownership, and a lost admission releases momentary holds. The remote controller lease - is experimental in this beta; production remote activation remains - off and default local operation is unchanged. + is experimental in this beta; its admission is enabled whenever the + managed TX composition is installed, which is the normal `rigplane web` + and `station` startup. - **Report a refused browser RX start through the existing info status (MOR-3148, #4005).** `GET /api/v1/info` now retains the actual