ruview @ v1230
integrity
- size
- 59.6 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: cog-ha-matter (ADR-116 P4): live mDNS responder + handle
Closes the mDNS half of P4. runtime::start_mdns_responder binds
multicast via mdns_sd::ServiceDaemon::new, builds the
ServiceInfo from MdnsService::to_service_info (iter 9), and
registers — returning a typed handle that owns both daemon and
fullname.
Handle shape:
pub struct MdnsResponderHandle { daemon: ServiceDaemon, fullname: String, }
impl MdnsResponderHandle { pub fn fullname(&self) -> &str; pub fn shutdown(self) -> Result<(), mdns_sd::Error>; } impl Drop for MdnsResponderHandle { /* best-effort */ }
Why explicit shutdown + best-effort Drop: a clean shutdown
sends a goodbye packet so HA's discovery integration sees the
service leave (good UX — no stale device card). Drop is the
fallback for panics / process termination but swallows errors
since panicking-in-Drop would mask the real failure.
1 new live-I/O test:
- mdns_responder_fullname_concatenates_instance_and_service_type
— actually binds multicast on the loopback adapter, registers,
asserts the fullname contains
_ruview-ha._tcp, then shutdown()s. Confirmed working on Windows; CI environments where multicast bind is filtered will hit the gracefully- skipping early return rather than failing the suite.
64/64 cog tests green (63 → 64).
ADR-116 P4: mDNS half ✅ (record-builder + ServiceInfo + live responder), witness half ✅ (chain + JSONL + file + Ed25519). Last piece is the embedded rumqttd broker so external mosquitto becomes optional.
Co-Authored-By: claude-flow ruv@ruv.net
Docker Image:
ghcr.io/ruvnet/RuView:07b792715f8be98c1a821d5ffe497a2fe475984c
download
curl -fL -o v1230.zip https://ratatoskr.space/pkg/ruview/v1230.zip
printf '%s %s\n' '898451588eccd4d4e622b7d0c7a9931ea3ec6c0cd836541edcb4279dbd6f94fc' 'v1230.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1230.zip"
$out = "v1230.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "898451588eccd4d4e622b7d0c7a9931ea3ec6c0cd836541edcb4279dbd6f94fc") { throw "sha256 mismatch" }
curl -fL -o v1230.tar.gz https://ratatoskr.space/pkg/ruview/v1230.tar.gz
printf '%s %s\n' 'cda1aa9fa4b9691bd4283a4a93182e5b7585a4ccf5f79c63215bb82deabe481b' 'v1230.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1230.tar.gz"
$out = "v1230.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "cda1aa9fa4b9691bd4283a4a93182e5b7585a4ccf5f79c63215bb82deabe481b") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1230.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.zip
printf '%s %s\n' '898451588eccd4d4e622b7d0c7a9931ea3ec6c0cd836541edcb4279dbd6f94fc' 'v1230.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.zip"
$out = "v1230.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "898451588eccd4d4e622b7d0c7a9931ea3ec6c0cd836541edcb4279dbd6f94fc") { throw "sha256 mismatch" }
curl -fL -o v1230.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.tar.gz
printf '%s %s\n' 'cda1aa9fa4b9691bd4283a4a93182e5b7585a4ccf5f79c63215bb82deabe481b' 'v1230.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.tar.gz"
$out = "v1230.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "cda1aa9fa4b9691bd4283a4a93182e5b7585a4ccf5f79c63215bb82deabe481b") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1230.zip | zip | 59.6 MiB |
blake3-24 d7e71a5040c031351902b4b32907e8aed4793757f2e7c57b
sha256 898451588eccd4d4e622b7d0c7a9931ea3ec6c0cd836541edcb4279dbd6f94fc
sha1 2786fd1a1d6eff2b58f648251d82e93a1929c2e5
|
| v1230.tar.gz | tar.gz | 58.1 MiB |
blake3-24 a7ed04a32d73587e7becccb733b71e0d4cc7d39c5b9b2c58
sha256 cda1aa9fa4b9691bd4283a4a93182e5b7585a4ccf5f79c63215bb82deabe481b
sha1 e5b004014b358bb87a604c59cc1cb374b6438428
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1230.tar.gz"],
integrity = "sha256-zaGqn6S5aRvUKDpKkxguW3WFpMz195xjIVu4Leq+SBs=",
strip_prefix = "ruview-v1230",
)
.url = "https://ratatoskr.space/pkg/ruview/v1230.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.tar.gz"],
integrity = "sha256-zaGqn6S5aRvUKDpKkxguW3WFpMz195xjIVu4Leq+SBs=",
strip_prefix = "ruview-v1230",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1230.tar.gz",