mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Add snippet metadata panel, duplicate, and immediate-load preview (M4.5)
This commit is contained in:
@@ -324,6 +324,46 @@ The convergent rules and citations live in that doc; the spec (§06) was amended
|
||||
|
||||
---
|
||||
|
||||
## M4.5 · Snippet-library consolidation ✅ (done)
|
||||
|
||||
**Why out of band:** a spec-vs-implementation audit after M4 found §02 features that no
|
||||
later milestone owned — the **Selected-Snippet Metadata Panel** (inline name + comment
|
||||
editing, timestamps, linked datasets) and the **Duplicate** operation. Without them a
|
||||
snippet could only ever carry its auto-generated date-time name (no rename, no annotation,
|
||||
no copy), a sharp edge for a _snippet manager_. Closed before M5 since the spec text
|
||||
already existed and the work was core-first and cheap.
|
||||
|
||||
**Core**
|
||||
|
||||
- `snippet.ts` — `duplicateSnippet(source, {now,id})`: independent copy carrying both spec
|
||||
versions, comment, tags, and dataset refs; "(copy)" name; fresh identity/timestamps;
|
||||
cloned mutable members.
|
||||
|
||||
**App**
|
||||
|
||||
- `SnippetStore` — `renameSnippet`, `setComment` (both advance `modified` per §02 → Sort,
|
||||
no editor-buffer touch), `duplicateActiveSnippet` (flushes the live buffer first, prepends
|
||||
the copy, makes it active).
|
||||
- `SnippetLibrary` — the metadata panel below the list: Name + Comment auto-save (debounced
|
||||
while typing, flushed on blur), read-only Created/Modified, Linked Datasets list, and
|
||||
Duplicate / Delete. Duplicate raises a success toast (the copy isn't self-evident, unlike
|
||||
Create); §02-compliant.
|
||||
|
||||
**Also fixed (§03C divergence):** the preview debounced _every_ change, so a snippet
|
||||
load / Draft↔Published switch incurred a 300 ms blank instead of the spec's **immediate**
|
||||
render. `LivePreview` now renders immediately on `bufferEpoch`/`editorView` change and
|
||||
debounces only keystroke (`shownText`-only) changes.
|
||||
|
||||
**Still deferred to M5/M6 (per §02):** Search, Sort controls + persistence, two distinct
|
||||
empty-state messages, Storage Monitor.
|
||||
|
||||
**Verified:** `typecheck` + `test` (287 passing — `snippet` duplicate factory,
|
||||
`SnippetStore` rename/comment/duplicate, a `SnippetLibrary` render test guarding the
|
||||
auto-save effect against a render loop) + `eslint` clean + `build` (PWA, 41 precache
|
||||
entries).
|
||||
|
||||
---
|
||||
|
||||
## M5 · Settings + Import/Export
|
||||
|
||||
**Goal:** preferences and whole-workspace backup/transfer.
|
||||
|
||||
Reference in New Issue
Block a user