ruview @ v0.10.0
integrity
- size
- 60.3 MiB
- downloaded
- last checked
release notes
RuView v0.10.0 — HOMECORE: native Rust port of Home Assistant
Builds on the v0.9.0 APPLE-FABRIC release. Where v0.9.0 shipped the Python-based Apple Home / HAP bridge as scripts + docs, v0.10.0 lands the native Rust + WASM + TypeScript port of Home Assistant — HOMECORE — covering ADRs 126–134 (and a Rust-native re-implementation path for ADR-125).
Merged via PR #800 (squash). Tracked at #798.
What shipped
8 new Rust crates (v2/crates/homecore*)
| ADR | Crate | Tests | What |
|---|---|---|---|
| 127 | homecore |
20 | State machine (DashMap), event bus, service registry, entity registry |
| 130 | homecore-api |
18 | HA wire-compat Axum REST + WebSocket on :8123 (more than the 4 originally claimed) |
| 128 | homecore-plugins |
10 + 14 integ | Wasmtime 42.0.2 + InProcess runtimes, JSON-over-linear-memory ABI |
| 125 | homecore-hap |
17 | Apple Home HAP bridge — P1 trait surface + 11 accessory types (HAP-1.1 server itself feature-gated to P2 via hap-server feature flag, honestly documented) |
| 132 | homecore-recorder |
(lib + smoke) | SQLite + ruvector semantic index, FNV-1a 64-bit attr dedup bit-exact against HA db_schema.py |
| 129 | homecore-automation |
34 | YAML triggers/conditions/actions + MiniJinja templates (4 HA globals) |
| 133 | homecore-assist |
23 | Intent recognizer + 5 built-in handlers + NoopRunner ruflo stub (real subprocess deferred to P2) |
| 134 | homecore-migrate |
19 | .storage/*.json v13 parser + 6-subcommand clap CLI |
Plus homecore-server integration binary wiring all 8 above (cargo run -p homecore-server --bind 127.0.0.1:8123) and homecore-plugin-example (47 KB cdylib wasm32-unknown-unknown plugin proving the host ABI end-to-end).
Frontend (frontend/)
@ruvnet/homecore-frontend@0.1.0-alpha.0 — Lit + TypeScript + Vite scaffold:
- Builds clean:
dist/index.js25.45 KB (8.92 KB gzip),dist/index.css4.61 KB (1.50 KB gzip) - 11 vitest unit tests
- Design tokens lifted from
cognitum-v0:9000via/browserrecon - Lucide icons, full design system documented in
docs/design/HOMECORE-FRONTEND-design-recon.md
Security
docs/security/HOMECORE-security-audit-iter10.md— 18 findings (4 Critical / 3 High / 5 Med / 4 Low / 2 Info)- Critical CVEs cleared: wasmtime 25.0.3 → 42.0.2 (RUSTSEC-2026-0095/0096, CVSS 9.0 sandbox escape), sqlx 0.7.4 → 0.8.6 (binary protocol misinterpretation)
- HC-05 closed in final iter: CORS allowlist replacing permissive CORS in
homecore-api(commita771ab8aa) - Deferred: HC-01/02 auth bypass (P1 placeholder, lands with real bearer-token store in P3 — see ADR-130 §3)
Verification
- CI: 32 SUCCESS / 5 SKIPPED / 0 FAILED (Code Quality, SAST, Tests 3.10/3.11/3.12, Rust Workspace Tests, Docker Build, Dependency Scan, Security Report, Semgrep, KICS, Secret Scanning all green on both branch and merge-base)
- Workspace tests at merge SHA: 2,263 passed / 0 failed / 11 ignored (
cargo test --workspace --no-default-features) - HOMECORE-only: 155 tests passing / 0 failed across the 8 new crates
cargo check --workspace: clean post-merge- Frontend build: clean, 25 KB JS bundle
Honest reporting
- PR claimed "162 tests (table sum)" and "176+ tests (body)". Measured: 155 passing + 1 ignored across the 8 homecore crates. The discrepancy is a counting methodology difference (the claim conflated lib + integration + doc-tests + smoke tests in inconsistent ways), and
homecore-apiactually has 18 unit tests, not the 4 claimed in the table — under-reported by the PR description, but all green. homecore-hapis P1 scaffold + trait surface + 17 mapping tests, not a running HAP-1.1 server. The Cargo.toml, lib.rs, and bridge.rs all explicitly document thehap-serverfeature flag as the P2 gate for the realhapcrate integration. Apple Home pairing from this build will require enabling that feature once it lands.homecore-assistshipsNoopRunnerfor the ruflo subprocess — the trait + IPC surface compile and test, but no Node.js subprocess is spawned in P1. Honest deferral documented inrunner.rs.- One Windows-only test-runner quirk:
cog-pose-estimation --test smokehitsAccess is denied (os error 5)due to a file lock on the test executable in concurrent runs. This is pre-existing in main, not from this PR, and the CI on Linux is fully green.
No regressions to v0.9.0
PR diff touches only v2/crates/homecore*, frontend/, v2/Cargo.toml, v2/Cargo.lock, and 2 new doc files (docs/adr/ADR-133-*.md, docs/design/HOMECORE-FRONTEND-*.md, docs/security/HOMECORE-security-*.md). Zero changes to scripts/, python/, the v0.9.0 user guide, or any other v0.9.0 release artifact.
Merge metadata
- PR: https://github.com/ruvnet/RuView/pull/800
- Squash commit:
e96ebaea810c20c402f48967c44f12d1d3d9f4ea - Branch deleted:
feat/adr-126-homecore-impl - Audit log:
dist/pr800-test-output-v2.log(workspace) +dist/pr800-homecore-only.log(homecore-focused)
download
curl -fL -o v0.10.0.zip https://ratatoskr.space/pkg/ruview/v0.10.0.zip
printf '%s %s\n' '5368865d3b3da3581dd6895d48b6c8676a510c218e63e7c6a594c88d98b587e5' 'v0.10.0.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v0.10.0.zip"
$out = "v0.10.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5368865d3b3da3581dd6895d48b6c8676a510c218e63e7c6a594c88d98b587e5") { throw "sha256 mismatch" }
curl -fL -o v0.10.0.tar.gz https://ratatoskr.space/pkg/ruview/v0.10.0.tar.gz
printf '%s %s\n' '9d490f2cdeec938aa6ae7a619d91fc481b03aaff0c6c544b3697041e8a9e2f61' 'v0.10.0.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v0.10.0.tar.gz"
$out = "v0.10.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "9d490f2cdeec938aa6ae7a619d91fc481b03aaff0c6c544b3697041e8a9e2f61") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v0.10.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.zip
printf '%s %s\n' '5368865d3b3da3581dd6895d48b6c8676a510c218e63e7c6a594c88d98b587e5' 'v0.10.0.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.zip"
$out = "v0.10.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5368865d3b3da3581dd6895d48b6c8676a510c218e63e7c6a594c88d98b587e5") { throw "sha256 mismatch" }
curl -fL -o v0.10.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.tar.gz
printf '%s %s\n' '9d490f2cdeec938aa6ae7a619d91fc481b03aaff0c6c544b3697041e8a9e2f61' 'v0.10.0.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.tar.gz"
$out = "v0.10.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "9d490f2cdeec938aa6ae7a619d91fc481b03aaff0c6c544b3697041e8a9e2f61") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v0.10.0.zip | zip | 60.3 MiB |
blake3-24 a6af810bf54700ccceb486add4401225aafee41fad3ffad1
sha256 5368865d3b3da3581dd6895d48b6c8676a510c218e63e7c6a594c88d98b587e5
sha1 3776650ec5e8f4aea5ffa1ee037887865cce7327
|
| v0.10.0.tar.gz | tar.gz | 58.7 MiB |
blake3-24 a2e19c051d616253007fa3d96b2e796ce45517970e1441de
sha256 9d490f2cdeec938aa6ae7a619d91fc481b03aaff0c6c544b3697041e8a9e2f61
sha1 d8f60824a1854116a67ecd8bf1603cb25159e514
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v0.10.0.tar.gz"],
integrity = "sha256-nUkPLN7sk4qmrnphnZH8SBsDqv8MbFRLNpcEHoqeL2E=",
strip_prefix = "ruview-v0.10.0",
)
.url = "https://ratatoskr.space/pkg/ruview/v0.10.0.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.tar.gz"],
integrity = "sha256-nUkPLN7sk4qmrnphnZH8SBsDqv8MbFRLNpcEHoqeL2E=",
strip_prefix = "ruview-v0.10.0",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.10.0.tar.gz",