Redesign the Storage Monitor as a storage-composition breakdown (snippets · datasets · app)

This commit is contained in:
2026-06-10 01:32:22 +03:00
parent e7de0cbb8a
commit 7599acd25e
12 changed files with 438 additions and 481 deletions
+16 -10
View File
@@ -173,7 +173,7 @@ and the companion `visual-specimen.html`.
app (chrome + Monaco + chart all repaint on theme flip); focus ring visible.
Notes from the build-out: the placeholder `'experimental'` theme was renamed to
`'dark'` (the settled name); the swappable `[data-accent]` layer landed with
indigo as the robust default (no switcher UI until M5); Monaco's `fontFamily` is
deep teal as the robust default (no switcher UI until M5); Monaco's `fontFamily` is
set to Plex Mono explicitly since it can't read the CSS token.
---
@@ -451,14 +451,18 @@ through `services/transfer.ts` (→ `normalizeImport` / envelope build), no moda
- **A11y:** modal focus trap + return, labelled icon buttons, contrast in both themes (§10) — ✅ in place.
- **About & Privacy** and **Donate** modals ~~(§01)~~ ✅ (Donate URL is a placeholder
`DONATE_URL` pending the real link).
- **Offline/installable:** verify the SW + manifest give a working offline + installed app.
**⏳ Remaining** — needs manual verification in a running/installed app.
- **Offline/installable:** the manifest now ships a full SVG icon set (favicon / maskable /
monochrome) + `theme_color`, and the SW precaches the shell — the app is **installable**.
**⏳ Remaining** — manual verification in a running/installed app (checklist:
[manual-verification.md](manual-verification.md)); iOS home-screen still wants a PNG
`apple-touch-icon` (logged residual).
- **Council** — ~~seat **web.dev** for the PWA/offline/storage surfaces none of the seated
members cover: the service-worker **update-available** prompt (`registerType: 'prompt'`),
storage **persistence** (`navigator.storage.persist()`), and the quota **estimate**
(`StorageManager.estimate()`)~~ ✅ seated + backfilled (update-prompt toast + `persist()`
request; estimate already wired). **⏳ Remaining gap:** manifest ships no icons → not yet
installable (design-asset task). See [`/council`](../.claude/skills/council/SKILL.md) and
request; estimate already wired). ~~**⏳ Remaining gap:** manifest ships no icons → not yet
installable~~ ✅ SVG icon set added + wired (favicon / maskable / monochrome). See
[`/council`](../.claude/skills/council/SKILL.md) and
[arch 10](architecture/10-interaction-and-feedback.md).
**Manual checks:** keyboard-only run-through; reload restores view from URL;
@@ -488,11 +492,13 @@ offline reload works; install as standalone; reduced-motion honored. **⏳ Still
Surfaced by the full-docs consistency review — each needs a deliberate resolution,
not a silent drift:
- **Storage-monitor scope.** Spec §02 frames the indicator as the **snippet** storage
budget specifically ("datasets are stored separately with far greater capacity"); the
shipped `readStorageEstimate` instead reports **whole-origin** usage/quota (snippets +
datasets + everything). Decide: scope the estimate to the snippet store, or update spec
§02 to the whole-origin reading. Noted at [arch 02 §6](architecture/02-persistence.md).
- ~~**Storage-monitor scope.** Spec §02 frames the indicator as the **snippet** storage
budget specifically; the shipped estimate instead reported **whole-origin** usage/quota.~~
**Resolved** — rather than pick "snippet budget" vs. "whole-origin", the monitor was
redesigned into a **composition breakdown** (snippets · datasets · app) that drops the
unreliable browser quota entirely and shows real measured sizes. Spec §02 + §10 and
[arch 02 §6](architecture/02-persistence.md) updated; council resolution recorded in
[arch 10](architecture/10-interaction-and-feedback.md).
---