Mark M4 (Chart Builder) and M5 (Settings + Import/Export) done in the plan

This commit is contained in:
2026-06-09 23:54:32 +03:00
parent 3c053310ac
commit e7de0cbb8a
+16 -4
View File
@@ -49,8 +49,8 @@ doc before implementing.
| **M1.5** | Visual design foundation ✅ | Apply the design language: tokens, IBM Plex, restyled M1 surfaces, chart theme | [arch 09](architecture/09-visual-design.md) |
| **M2** | Editor robustness ✅ | Draft/Published, validation, schema autocomplete, fit modes | §03DE, §04, §07(editor) |
| **M3** | Datasets ✅ | Named reusable data + reference resolution in preview | §05, §03F, §09B |
| **M4** | Chart Builder | No-JSON chart composition from a dataset | §06 |
| **M5** | Settings + Import/Export | Preferences + workspace backup/transfer | §07, §08, §09C |
| **M4** | Chart Builder | No-JSON chart composition from a dataset | §06 |
| **M5** | Settings + Import/Export | Preferences + workspace backup/transfer | §07, §08, §09C |
| **M6** | Shell polish | Resize/toggle panes, routing, shortcuts, toasts, a11y, offline | §01, §10 |
**MVP boundary = end of M1** (a genuinely usable single-user chart authoring loop).
@@ -284,7 +284,7 @@ the reference.
---
## M4 · Chart Builder
## M4 · Chart Builder ✅ (done)
**Goal:** no-JSON chart composition from a dataset → a new snippet.
@@ -326,6 +326,12 @@ and chose the **Tier B "smart + guarded"** design: smart default mark for the da
valid-type-locked field-type menus, Size-channel discipline, and non-blocking guidance.
The convergent rules and citations live in that doc; the spec (§06) was amended to match.
**Verified:** `typecheck` + `test` green — the pure `chart-builder.ts` assembler
(`chart-builder.test.ts`: mark/channel/type permutations, unmapped-channel omission,
validation gate). The Chart Builder modal is wired through the registry, launched from a
selected dataset (`DatasetsModal``openModal('chartBuilder')`). Data-aware
cardinality/extent profiling + chart warnings landed (A3/A4).
---
## M4.5 · Snippet-library consolidation ✅ (done)
@@ -368,7 +374,7 @@ entries).
---
## M5 · Settings + Import/Export
## M5 · Settings + Import/Export ✅ (done)
**Goal:** preferences and whole-workspace backup/transfer.
@@ -409,6 +415,12 @@ entries).
- Change theme/debounce/date-format → takes effect; Cancel reverts; Reset confirms.
- Export → reimport into a populated workspace merges without overwrite; renames reported.
**Verified:** `typecheck` + `test` green — `import-normalize` (accepted shapes + merge/
collision/rename), `export-envelope` (round-trip), `settings` (load-with-fallback),
`UserSettingsStore`, `ux-prefs`. Distributed per-pane settings shipped as `SettingsPopover`
disclosures (editor toolbar, preview, library) applying live; header Import/Export wired
through `services/transfer.ts` (→ `normalizeImport` / envelope build), no modal.
---
## M6 · Shell polish & non-functional