clone

a deno framework for local-first web apps that open instantly, work offline and sync when users choose

fix: restore the device persistence control

Dami committed ff6b523
commit
ff6b52303227d6a8d312a309c37759f0c9015b39
parent
2ee41790fc6530b5926b819c4a7bc9c056a7bc3d
author
Dami <dami.etoile@gmail.com>
3 files changed, +99 -0
Aapps/reference/src/_lofi/DeviceStatus.tsx63++++++++++++++++++++++++++++++
Mapps/reference/src/pages/index.astro2+
Mapps/reference/src/styles/global.css34++++++++++++++++
A apps/reference/src/_lofi/DeviceStatus.tsx +63 -0
@@ -0,0 +1,63 @@
1+import { useDeviceCapabilities } from "./use-device-capabilities.ts";2+import { settleUiMutation } from "./ui-mutation.ts";3+4+export default function DeviceStatus() {5+ const { report, requestPersistence } = useDeviceCapabilities();6+ if (!report) return <p class="device-status">Checking durable-storage capabilities…</p>;7+8+ return (9+ <section class="device-status" aria-labelledby="device-status-title">10+ <header>11+ <p class="eyebrow">Device gate</p>12+ <h2 id="device-status-title">13+ {report.durableDriverSupported ? "Durable driver supported" : "Durable driver blocked"}14+ </h2>15+ </header>16+ <dl>17+ <div>18+ <dt>Context</dt>19+ <dd>{report.secureContext ? "secure" : "not secure"}</dd>20+ </div>21+ <div>22+ <dt>OPFS</dt>23+ <dd>{report.opfs ? "available" : "missing"}</dd>24+ </div>25+ <div>26+ <dt>SharedWorker</dt>27+ <dd>{report.sharedWorker ? "available" : "missing"}</dd>28+ </div>29+ <div>30+ <dt>Web Locks</dt>31+ <dd>{report.webLocks ? "available" : "missing"}</dd>32+ </div>33+ <div>34+ <dt>Storage persistence</dt>35+ <dd>{report.persistentPermission}</dd>36+ </div>37+ <div>38+ <dt>Display mode</dt>39+ <dd>{report.displayMode}</dd>40+ </div>41+ <div>42+ <dt>Identity</dt>43+ <dd>device-local key</dd>44+ </div>45+ <div>46+ <dt>Passkey backup</dt>47+ <dd>blocked by alpha security review</dd>48+ </div>49+ </dl>50+ <button type="button" onClick={() => void settleUiMutation(requestPersistence())}>51+ Request storage persistence52+ </button>53+ <p>54+ OPFS capability and eviction protection are separate. A declined persistence request does55+ not mean the Jazz driver is using memory.56+ </p>57+ <p>58+ Clearing site data destroys the device-local identity unless a separate recovery mechanism59+ has been verified. This reference does not claim passkey recovery.60+ </p>61+ </section>62+ );63+}
M apps/reference/src/pages/index.astro +2 -0
M apps/reference/src/styles/global.css +34 -0