ruview @ v1408
integrity
- size
- 60.4 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: feat(homecore-ui iter 5): Call Service from Services page
CRUD increment 5/6. Each service pill on the Services page now has
a ▶ Call button that opens a modal letting the operator POST a
JSON service_data payload to /api/services// and
inspect the round-tripped response.
Modal contents:
- heading "Call ."
- target URL displayed as code (POST /api/services/...)
- service_data JSON textarea (default
{}, live-validated as JSON object — same rules as EntityForm.attributes) - response block: green border on 2xx, red on non-2xx, pretty-printed JSON when parseable
- Close + Call buttons in footer; Call disabled on invalid JSON or while pending; renders "Calling…" briefly during the POST
Reuses <hc-modal> from iter 1. No new components — all of iter 5
lives in frontend/src/pages/Services.ts (~140 LOC delta).
Browser-verified end-to-end against homecore-server (13 services seeded across 6 domains):
- 13/13 service pills have a
▶ Callbutton - Modal opens with correct heading and target URL
- Live validation: [1,2,3] → red "must be a JSON object";
{broken json:→ red "JSON parse: …"; valid → green ✓ - Call button disabled on invalid input
- Successful call: green-bordered response containing {"called":"switch.turn_on", "acknowledged":true, "service_data":{"entity_id":"light.kitchen_ceiling","brightness":200}}
- Toast "Called switch.turn_on → 200"
- homecore.ping with empty body (default {}) succeeds too
- 0 console errors related to this flow
Co-Authored-By: claude-flow ruv@ruv.net
Docker Image:
ghcr.io/ruvnet/RuView:99c78f512c7ccc68164544c050ec98bcbaac8822
download
unix · zip
curl -fL -o v1408.zip https://ratatoskr.space/pkg/ruview/v1408.zip
printf '%s %s\n' 'e776260ac15067db62ba23544ff3bf96563c220f75ff1b41c9f462e68a16e0b9' 'v1408.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v1408.zip"
$out = "v1408.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "e776260ac15067db62ba23544ff3bf96563c220f75ff1b41c9f462e68a16e0b9") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1408.tar.gz https://ratatoskr.space/pkg/ruview/v1408.tar.gz
printf '%s %s\n' '8ca7151489ae8ae7802bd027111512652d758340bc77344dadf116691274c33d' 'v1408.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v1408.tar.gz"
$out = "v1408.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8ca7151489ae8ae7802bd027111512652d758340bc77344dadf116691274c33d") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1408.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.zip
printf '%s %s\n' 'e776260ac15067db62ba23544ff3bf96563c220f75ff1b41c9f462e68a16e0b9' 'v1408.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.zip"
$out = "v1408.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "e776260ac15067db62ba23544ff3bf96563c220f75ff1b41c9f462e68a16e0b9") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1408.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.tar.gz
printf '%s %s\n' '8ca7151489ae8ae7802bd027111512652d758340bc77344dadf116691274c33d' 'v1408.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.tar.gz"
$out = "v1408.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "8ca7151489ae8ae7802bd027111512652d758340bc77344dadf116691274c33d") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1408.zip | zip | 60.4 MiB |
blake3-24 b927c0e81f512e29ea3df6c37156186be3af0e8f54cb7b9c
sha256 e776260ac15067db62ba23544ff3bf96563c220f75ff1b41c9f462e68a16e0b9
sha1 2628cb690c02f0bc15144434fb7344b2a09d3fa7
|
| v1408.tar.gz | tar.gz | 58.7 MiB |
blake3-24 8ceb759083cd29cb17789e88dfba6013fc8e3643ab2f4dc7
sha256 8ca7151489ae8ae7802bd027111512652d758340bc77344dadf116691274c33d
sha1 15f9eb7f0975914e5c1fffb11695363993704906
|
install
bazel
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1408.tar.gz"],
integrity = "sha256-jKcVFImuiueAK9AnERUSZS11g0C8dzRNrfEWaRJ0wz0=",
strip_prefix = "ruview-v1408",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v1408.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.tar.gz"],
integrity = "sha256-jKcVFImuiueAK9AnERUSZS11g0C8dzRNrfEWaRJ0wz0=",
strip_prefix = "ruview-v1408",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1408.tar.gz",