Releases
This page is generated from the repository changelog.
0.1.1 — 2026-10-01
Section titled “0.1.1 — 2026-10-01”Protocol correctness, reliable Core sessions, and a read-only play-history exporter. Prepared and adversarially reviewed with Codex.
- Read-only JSON-lines history export with bounded paging, identity deduplication, newest-first ordering, explicit retrieval failures, and page/query cleanup. #18
- Published release history on GitHub Pages, generated from this changelog, with current onboarding, contributor checks, and validation guidance.
- Runnable SDK lint and PR validation for SDK/web tests and builds, documentation, and tracked, deterministic generated output. #21, #25
- Reject pending RPCs promptly on close or failed sends; buffer split/coalesced handshake records and reject premature closure. Cancel the handshake watchdog once established so healthy idle sessions remain open. #5, #17, #25
- Use immutable full struct schemas and stable member indexes across handwritten
and generated calls. Preserve captured
Sooloos.Broker.Api.*wire names when newer DLL metadata usesRoon.Broker.Api.*. #19 - Preserve nullable values with the correct Bool/Sooid/scalar encodings and retain pre-serialized nullable scalar Buffer compatibility. #22
- Correct the exported legacy
Arg.refListframing to match length-prefixedArg.collectionreference collections. #23 - Follow each search callback’s ordered memberships, including cached full entities. Decode DataList separately from Query and preserve populated objects across repeated PUSHSTUB frames, fixing repeated and concurrent searches. #24
- Recover the web backend with fresh, coalesced clients; reject stale session IDs; clear disconnected UI/pending state and ignore late HTTP/search responses. Read profile-scoped favorite state and preserve playlist/genre search sections. #25
- Align onboarding with current exports and validated environment configuration; keep the demo read-only and label historical mutation experiments accurately. #20
Compatibility
Section titled “Compatibility”Arg.refListremains exported but is deprecated; its invalid wire bytes are intentionally corrected. Prefer explicitArg.collectionconstruction.- A typename’s low-level struct declaration must remain immutable. Incompatible reuse and unknown/duplicate generated fields now fail explicitly.
- SDK search keeps its existing default result families. The optional third argument includes playlists and genres; the web opts in.
- The demo/history exporter accept
ROON_BROKER_IDas a legacy alias forROON_SERVER_BROKER_ID.
Validation and limits
Section titled “Validation and limits”- 145 SDK tests and 25 web tests pass, along with SDK lint/build, web typecheck/build, deterministic generation, docs build, and hosted CI.
- Read-only validation on Roon 2.73 build 1696 covered a 150-play export, repeated/concurrent and named-category search, favorite-state rendering, controlled test-client recovery, stale-action rejection, and a usable session after more than 23 seconds of idle time. One concurrent read timed out; bounded retries passed.
- No live favorite/metadata, playback, volume, power mutation, or Core restart was used for validation. Write transitions use mocks and existing protocol evidence. Most generated methods remain unverified against a live Core.
- This remains an experimental private-protocol client; broader version and streaming-provider compatibility is not established. The offline drift-checker proposal remains tracked in #16.
Thanks to @jnolen for the contributed close cleanup, handshake buffering, and original history exporter in #5, #17, and #18.
0.1.0 — 2026-10-01
Section titled “0.1.0 — 2026-10-01”First experimental baseline at 5a9b561: internal TCP/remoting client, object
graph, generated wrappers, corrected UnifiedSearch/stable-ID favorites/generated
collections, and MIT license. SDK validation passed 44 tests and the build;
web typecheck/build and documentation build passed. This baseline predates the
issue-fix batch above.