ruview @ v1406
integrity
- size
- 60.4 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: feat(homecore iter 3): DELETE /api/states/ + confirm modal in UI
CRUD increment 3/6. Full delete path lands end-to-end.
Backend (homecore-api):
rest.rs +18 LOC — new delete_state handler. Idempotent (matches HA's
removal semantics): returns 204 No Content whether the entity existed
or not. 4xx only for malformed entity_id or auth failure.
app.rs +6 LOC — adds .delete(rest::delete_state) to the
/api/states/:entity_id route alongside existing GET + POST.
Backend curl smoke: POST /api/states/sensor.test_delete 201 DELETE /api/states/sensor.test_delete 204 GET /api/states/sensor.test_delete 404
Frontend:
components/StateCard.ts +25 LOC — small × delete button in the
card's top-right corner. opacity 0 by default, fades in on hover
or keyboard focus. dispatches hc-state-card-delete (NOT
hc-state-card-click) with stopPropagation so the card's own
click-to-edit handler doesn't also fire.
pages/Dashboard.ts +45 LOC — deletingState (StateView | null), a
confirm modal that names the entity_id in the body, Cancel /
Delete buttons in the footer (Delete styled in muted red),
_confirmDelete() dispatches DELETE with bearer, toast on
success, grid refresh.
Browser-verified end-to-end on real homecore-server :8123:
- Hover card → × button visible
- Click × → DELETE confirm modal (NOT edit modal — stopPropagation works)
- Modal names entity_id in code block
- Cancel: entity preserved, modal closes
- Delete: backend GET-after-DELETE returns 404, grid card vanishes, toast "Deleted sensor.delete_target"
- 0 unexpected console errors (1 expected 404 from verification fetch)
Co-Authored-By: claude-flow ruv@ruv.net
Docker Image:
ghcr.io/ruvnet/RuView:c0bb6f4fc77461e3981dd8f019f8964cf876235d
download
curl -fL -o v1406.zip https://ratatoskr.space/pkg/ruview/v1406.zip
printf '%s %s\n' 'e8f54afc88741a988f10934dcb4dc732185661b4fbd8efd100f0c4d16e04a8da' 'v1406.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1406.zip"
$out = "v1406.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "e8f54afc88741a988f10934dcb4dc732185661b4fbd8efd100f0c4d16e04a8da") { throw "sha256 mismatch" }
curl -fL -o v1406.tar.gz https://ratatoskr.space/pkg/ruview/v1406.tar.gz
printf '%s %s\n' 'b75c6349cad8f5aeb4c213289f0e930365908700e876b1da76d31ea7debc7f84' 'v1406.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1406.tar.gz"
$out = "v1406.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "b75c6349cad8f5aeb4c213289f0e930365908700e876b1da76d31ea7debc7f84") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1406.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.zip
printf '%s %s\n' 'e8f54afc88741a988f10934dcb4dc732185661b4fbd8efd100f0c4d16e04a8da' 'v1406.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.zip"
$out = "v1406.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "e8f54afc88741a988f10934dcb4dc732185661b4fbd8efd100f0c4d16e04a8da") { throw "sha256 mismatch" }
curl -fL -o v1406.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.tar.gz
printf '%s %s\n' 'b75c6349cad8f5aeb4c213289f0e930365908700e876b1da76d31ea7debc7f84' 'v1406.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.tar.gz"
$out = "v1406.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "b75c6349cad8f5aeb4c213289f0e930365908700e876b1da76d31ea7debc7f84") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1406.zip | zip | 60.4 MiB |
blake3-24 14f06e64c24c5c0e5d794dd8cf6f13a94dac62a461725cb5
sha256 e8f54afc88741a988f10934dcb4dc732185661b4fbd8efd100f0c4d16e04a8da
sha1 cba4a699a73a98614010aecaeddeb7fc9d900972
|
| v1406.tar.gz | tar.gz | 58.7 MiB |
blake3-24 4771e00b91f9e55e3724ae02e9ce65dbb55c682475647cfd
sha256 b75c6349cad8f5aeb4c213289f0e930365908700e876b1da76d31ea7debc7f84
sha1 1dd2c6779a98f8f00dba7c934b4caceca7b63955
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1406.tar.gz"],
integrity = "sha256-t1xjScrY9a60whMonw6TA2WQhwDodrHadtMep968f4Q=",
strip_prefix = "ruview-v1406",
)
.url = "https://ratatoskr.space/pkg/ruview/v1406.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.tar.gz"],
integrity = "sha256-t1xjScrY9a60whMonw6TA2WQhwDodrHadtMep968f4Q=",
strip_prefix = "ruview-v1406",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1406.tar.gz",