oleh ca54bb66b1 Implement M1 authoring loop: library, editor, live preview, persistence
M1 MVP from docs/IMPLEMENTATION-PLAN.md, with the /alignment pass applied.

- core: Snippet model + factory; prepareSpecForRender (copy-not-mutate); per-theme Vega chart config
- state/orchestration: SnippetStore with debounced auto-save; IndexedDB adapter + read-time migration; startup hydration + write-through persistence
- ui: SnippetLibrary, SpecEditor (Monaco edcore.main — full editor features, JSON-only languages), LivePreview
- build: Monaco/Vega manual chunks; raised PWA precache ceiling
- alignment: flush a valid draft on snippet switch (+regression tests); TODO breadcrumbs for the preview render race and the window.confirm delete
- housekeeping: gitignore .claude/projects/
2026-06-05 00:16:24 +03:00

Astrolabe

A browser-based snippet manager for Vega-Lite visualizations. Author chart specs as JSON, watch them render live, and keep a personal, searchable library — fully local, offline-capable, no account.

Astrolabe is a spec-driven rebuild on an architecture adapted from its sibling project Syto. The authoritative behavioral contract lives in docs/spec/. See SOUL.md for the philosophy and docs/IMPLEMENTATION-PLAN.md for the build sequence.

Stack

Vite · TypeScript · React + Zustand · Monaco · Vega-Lite + vega-embed · IndexedDB · PWA (offline + installable).

Develop

npm install
npm run dev        # dev server
npm run build      # typecheck + production build (+ service worker)
npm run typecheck
npm test           # Vitest

Status

M0 — Skeleton. Toolchain green (typecheck, tests, build, PWA). The three-pane shell renders; features land milestone by milestone per the implementation plan (MVP at end of M1).

License

TBD.

S
Description
An IDE / snippet manager for your vega & vega-lite visualizations
Readme 2.3 MiB
Languages
TypeScript 92%
CSS 7.7%
JavaScript 0.2%
HTML 0.1%