mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 08:28:31 +00:00
R3-1 (high): v1.45.0 made the upload safe but left deletion to the client — after a successful save the card asked the backend to remove everything but the file it had just committed. Two open editors cannot be ordered: a delayed request from one deleted the plan the other had just saved, leaving the accepted configuration pointing at nothing, the exact damage copy-on-write was introduced to prevent. houseplan/plan/cleanup is removed. config/set collects inside its own write lock from the two configurations that bracket the commit (plans.collect_plans): a file the old revision referenced and the new one does not is superseded and goes; any other unreferenced upload waits out PLAN_ORPHAN_TTL_S, because a fresh one may belong to a transaction that has not committed yet. The collector lives in a pure module so it can be reasoned about and unit-tested without the HA harness. R3-2: houseplan-space-card signed its plan url and threw the result away — getCardSize() mutated a throwaway model while render() rebuilt its own from the config, so the <image> requested the protected path and got 401 on every render. Both cards now share ContentSigner (src/signing.ts), which also gives the static card batching, expiry handling and periodic re-signing. is released in finally: one failed request no longer wedges a url for the life of the page. Tests: five backend interleaving cases from the report, six unit tests for the pure collector, smoke_space_card_bg (verified to fail against a v1.45.0 build: the raw url reaches the DOM and no retry happens). 57 smokes, 124 unit, 22 backend-pure. Docs: CHANGELOG.md + CHANGELOG.ru.md + ARCHITECTURE.md + TESTING.md + STATUS.md.
21 lines
456 B
JSON
Executable File
21 lines
456 B
JSON
Executable File
{
|
|
"domain": "houseplan",
|
|
"name": "House Plan",
|
|
"codeowners": [
|
|
"@Matysh"
|
|
],
|
|
"config_flow": true,
|
|
"dependencies": [
|
|
"http",
|
|
"frontend",
|
|
"websocket_api"
|
|
],
|
|
"documentation": "https://github.com/Matysh/houseplan-card",
|
|
"integration_type": "service",
|
|
"iot_class": "local_push",
|
|
"issue_tracker": "https://github.com/Matysh/houseplan-card/issues",
|
|
"requirements": [],
|
|
"single_config_entry": true,
|
|
"version": "1.45.1"
|
|
}
|