Files
astrolabe/docs/spec
oleh 693f5d7073 Fix dataset-ref walk false positive and wire spec-mandated success toasts
- Prune the data payload and top-level datasets keys in all three ref walks
  (extractDatasetRefs, renameDatasetInSpec, resolveDatasetRefs) so a data row
  carrying a field named "data" is no longer misread as a library reference,
  spuriously rewritten, or made to throw DatasetNotFoundError. Adds tests,
  including a guard that lookup-transform refs (from.data) still resolve.
- Wire the deferred success toasts now the Toaster has landed: publish, revert,
  extract-to-dataset, and snippet/dataset delete. Copy follows the council
  title-vs-message rule (title states the action, message adds the consequence).
- Reconcile the spec's blanket toast mandate to "toast only what the user can't
  already see": no toast on visible-result creates (snippet, dataset form);
  Copy Reference stays inline and gains an aria-live announcement (new shared
  .visually-hidden utility) instead of a toast-per-copy.
- Move the toast region to bottom-right so it stops covering the header action
  cluster (Publish/Revert, theme/datasets).
- Update docs/spec 01F/02/05 and docs/architecture/07 + 10 to match.
2026-06-05 16:34:58 +03:00
..

Astrolabe — Product Specification

A UX/behavioral specification of Astrolabe, a browser-based snippet manager for Vega-Lite visualizations. It describes what the app does from the user's perspective so it can be recreated on any web/HTML/TS stack.

How to read this spec

  • Start with 00 · Product Overview for orientation and the glossary.
  • Each subsequent file is one feature area and can be read on its own; they cross-reference each other by title.
  • Every section describes intended behavior plus testable acceptance points ("The user can…", "When X, the system…").

What this spec deliberately omits

  • Implementation. No frameworks, libraries, languages, storage technologies, or code architecture are prescribed. Storage is described behaviorally (e.g. "persists locally across sessions", capacity tiers), not by naming a technology.
  • Visual design. Structural layout (panes, regions, modal vs inline, where controls live) is specified; concrete styling, colors, and the app's visual aesthetic are left to the implementer.
  • Domain exception. Vega-Lite and its vocabulary (specs, marks, encoding channels, field types) and data-format names (JSON, CSV, TSV, TopoJSON) are named — they are the product domain, not implementation choices.

Contents

# Section
00 Product Overview
01 Application Shell & Navigation
02 Snippet Library
03 Spec Editor & Draft/Published Workflow
04 Live Preview
05 Datasets
06 Chart Builder
07 Settings
08 Import & Export
09 Data Model & Persistence
10 Non-Functional Requirements