yggvault ratatoskr-space connected via regular web
Color theme
also available via yggdrasil mesh http://[203:b338:2a84:a18f:986:47ae:1a4:d8d3]/pkg/ruview/v1404
vault / ruview / v1404

ruview @ v1404

integrity

size
60.4 MiB
downloaded
last checked
source https://github.com/ruvnet/RuView · available · github

release notes

Automated release from CI pipeline

Changes: feat(homecore-ui iter 1): Modal + EntityForm + Add Entity flow

First CRUD increment. Click "+ Add entity" on the Dashboard toolbar → modal opens → form with entity_id / state / attributes fields → Create validates client-side then POSTs /api/states/ → modal closes, toast confirms, dashboard refreshes.

New components: frontend/src/components/Modal.ts (~110 LOC) — reusable accessible overlay. open property; closes on Escape and backdrop click. Heading prop; default + footer slots.

frontend/src/components/EntityForm.ts (~130 LOC) — three-field form with public requestSubmit()/requestCancel() methods. Client-side validation: - entity_id matches /^[a-z][a-z0-9_].[a-z][a-z0-9_]$/ - state non-empty - attributes parses as a JSON object (rejects array/scalar) Emits hc-entity-submit / hc-entity-cancel events for host to handle. Footer buttons live in the host (modal slot=footer).

frontend/src/pages/Dashboard.ts (+60 LOC) — toolbar with "+ Add entity" button, modal state, POST handler that wraps fetch with bearer token, success toast (3 s), refresh().

Browser-verified end-to-end (real homecore-server :8123):

Note: TypeScript caught a name collision — attributes is reserved on HTMLElement (NamedNodeMap). Renamed the Lit @property to entityAttrs so the class extends LitElement cleanly.

Co-Authored-By: claude-flow ruv@ruv.net

Docker Image: ghcr.io/ruvnet/RuView:e7215a16e57656aa1fe6874ba260fc8844dd665c

download

unix · zip
curl -fL -o v1404.zip https://ratatoskr.space/pkg/ruview/v1404.zip
                    printf '%s  %s\n' 'fe1f75c3b4fc7bc5ddfed83de7325ddfaf223a61f172df6eea22cd951ae89ba5' 'v1404.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v1404.zip"
$out = "v1404.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "fe1f75c3b4fc7bc5ddfed83de7325ddfaf223a61f172df6eea22cd951ae89ba5") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1404.tar.gz https://ratatoskr.space/pkg/ruview/v1404.tar.gz
                    printf '%s  %s\n' '2c07df857c141f39c699fe139bd9503239b83ec4f5eeec194781b1d632c1a136' 'v1404.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v1404.tar.gz"
$out = "v1404.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2c07df857c141f39c699fe139bd9503239b83ec4f5eeec194781b1d632c1a136") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1404.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.zip
                    printf '%s  %s\n' 'fe1f75c3b4fc7bc5ddfed83de7325ddfaf223a61f172df6eea22cd951ae89ba5' 'v1404.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.zip"
$out = "v1404.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "fe1f75c3b4fc7bc5ddfed83de7325ddfaf223a61f172df6eea22cd951ae89ba5") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1404.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.tar.gz
                    printf '%s  %s\n' '2c07df857c141f39c699fe139bd9503239b83ec4f5eeec194781b1d632c1a136' 'v1404.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.tar.gz"
$out = "v1404.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2c07df857c141f39c699fe139bd9503239b83ec4f5eeec194781b1d632c1a136") { throw "sha256 mismatch" }
artifact format size hashes
v1404.zip zip 60.4 MiB
blake3-24 ea942e1cbd610d760487422390533c4e7a593b6be5137170
sha256 fe1f75c3b4fc7bc5ddfed83de7325ddfaf223a61f172df6eea22cd951ae89ba5
sha1 4ea8b55a81c135ac3dcacd9cb555fa1ca28652ec
v1404.tar.gz tar.gz 58.7 MiB
blake3-24 e8a5aab74ea277a02950594127ad9918ddc153c27c0d9e6e
sha256 2c07df857c141f39c699fe139bd9503239b83ec4f5eeec194781b1d632c1a136
sha1 ca98c801ea14c06cfc29f939fd3e27c40e6c2e8b

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v1404.tar.gz"],
    integrity = "sha256-LAffhXwUHznGmf4Tm9lQMjm4PsT17uwZR4Gx1jLBoTY=",
    strip_prefix = "ruview-v1404",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v1404.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.tar.gz"],
    integrity = "sha256-LAffhXwUHznGmf4Tm9lQMjm4PsT17uwZR4Gx1jLBoTY=",
    strip_prefix = "ruview-v1404",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1404.tar.gz",
← v1405v1403 →