mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
The sidebar page could serve a previous card for hours. It imported the card through the stable facade, `./houseplan-card.js` — a relative specifier, and relative resolution does not inherit a query. A dashboard reaches the same file as `houseplan-card.js?v=1.74.0`, so an upgrade changes its URL and the browser must refetch. The panel always asked for the same address, and entries are served with no Cache-Control at all — only ETag and Last-Modified — so the browser applies heuristic freshness and may answer from cache without asking. A stale 1164-byte loader names a stale chunk, chunks are immutable for a year, and the panel then ran a previous card against the current backend without a single error. The version banner was telling the truth; reloading could not help, because the address never changed. Rollup already emits the right edge: the panel's side-effect import points straight at the shared implementation. The rewrite in entryFallbackPlugin replaced it with the facade for a fallback that the hashed name gives anyway — and better: a chunk the manifest no longer serves now raises the panel's own "House Plan was updated" notice instead of silently working on old code. Two #486 assertions change meaning and are rewritten, not adjusted: the panel no longer routes through the facade, and its initial graph no longer contains it. The invariant they defended — the panel reuses the exact card graph, never a second copy — is now stated over the implementation, and a new test pins that no built entry reaches the card by an address without a version. Issue: #535 User-Visible: yes
2 lines
518 B
JavaScript
2 lines
518 B
JavaScript
globalThis.__HOUSEPLAN_BUILD_FINGERPRINT__="ab84dc912c690000c169eba16f8de2feb1fc172c63f2fec8b67ba334e28c17ea";import{dS as r,dT as e,dU as t}from"./houseplan-card-B09T8YNT.js";const s={},a=r(class extends e{constructor(){super(...arguments),this.ot=s}render(r,e){return e()}update(r,[e,s]){if(Array.isArray(e)){if(Array.isArray(this.ot)&&this.ot.length===e.length&&e.every((r,e)=>r===this.ot[e]))return t}else if(this.ot===e)return t;return this.ot=Array.isArray(e)?Array.from(e):e,this.render(e,s)}});export{a as i};
|