Commit Graph

174 Commits

Author SHA1 Message Date
oleh 4925268168 Docs: lesson roadmap; knip learn entry; drop dead export 2026-07-04 19:43:44 +03:00
oleh 0928912c4d Learn: rework binning and linked-views lessons 2026-07-04 19:43:31 +03:00
oleh 42717fe4f7 Learn: per-stage Open-in-Astrolabe hand-off links 2026-07-04 19:43:15 +03:00
oleh 194177c0c5 Shell: one-shot #spec-<payload> link consumed at startup 2026-07-04 19:42:42 +03:00
oleh e4ff442219 Core: spec-link payload codec; base64 helpers consolidated 2026-07-04 19:42:26 +03:00
oleh acf14a8b13 Skills: fold in four external-skills-review borrows; record the comparison memo 2026-07-04 16:57:57 +03:00
oleh 74b810f8c9 Docs: landing scope memo, deployment record, VS Code extension exploration 2026-07-04 16:44:13 +03:00
oleh f5b2620458 Landing: dual-pitch overhaul — showcase, editor proof, objections, trust creed 2026-07-04 16:42:40 +03:00
oleh 65090da72c Onboarding: paste-a-spec door, workspace-import and learn links 2026-07-04 16:42:00 +03:00
oleh 5ec7c3aa77 Shell: one-shot #example-<id> deep link consumed at startup 2026-07-04 16:40:56 +03:00
oleh db258a4e54 Examples: interactive brushed-scatter showpiece in the gallery 2026-07-04 16:39:29 +03:00
oleh 552900dac5 Build: landing/learn shed eager Monaco+Vega; post-build gate + immutable asset caching 2026-07-02 22:34:24 +03:00
oleh fb4b42a1a7 Docs: record the spec-follows-code regime across the working docs 2026-07-02 22:33:05 +03:00
oleh e42a535726 Editor: CodeLens + completion to scaffold Vega-Lite params; shared snippet core 2026-07-02 22:15:50 +03:00
oleh c5e4c4c76d Editor: cleaner transform-scaffold insertion
Insert the empty transform array inline (transform: []) instead of a multi-line
block, and pass adjustWhitespace:false to Monaco's snippet engine so it stops
re-basing the explicit indentation. The multi-line form left the closing bracket
under-indented and a stray blank line; the inline form lands cleanly indented as
the view's first property, with the first step filling it in place.
2026-07-01 16:00:49 +03:00
oleh 87b1b98c12 Editor: CodeLens to scaffold Vega-Lite data transforms
Add a discoverable '+ Add transform' / '+ filter/aggregate/...' CodeLens in the
spec editor that scaffolds field-typed transform[] steps, with a type-to-filter
completion on the same catalog as an accelerator. New pure core
(spec-data-transforms): step-slot and view-site classification, the field-typed
catalog, and comma affixing. Deliberately the one home the schema leaves bare —
inline channel transforms and the transform key stay with the JSON schema.

Rename the composition toolbar menu Transform -> Compose so it reads distinctly
from a data transform. Deferred (recorded at their sites): extract a shared
cursor-lens skeleton across the two installers; a shared completion replace-range
helper (now 3 sites); params scaffolding as the sibling feature.
2026-07-01 15:43:48 +03:00
oleh da6a675982 Editor: Vega-Lite expression intelligence; single-home render errors 2026-07-01 05:00:47 +03:00
oleh 9b2618cac6 Docs: deferred review findings get a durable breadcrumb, not a chat mention 2026-06-30 17:37:37 +03:00
oleh a8696f7195 Editor: TODO to lift the wireframe drag-math into core (eng-council) 2026-06-30 17:00:51 +03:00
oleh c019660692 Editor: composition wireframe — pull-out, stacking, and simplify 2026-06-30 15:42:22 +03:00
oleh 26b383ff33 Editor: render a layer as one framed row of mark glyphs
A layer is one plotting space with several marks stacked in z-order, so it now renders as a single frame holding its child marks as a row of glyphs, badged with a new 'layers' glyph — instead of offset stacked cards that read as separate spaces and hid the lower glyphs. Each mark stays an individual treeitem, so selection and Alt+up/down z-order reorder are unchanged.
2026-06-29 14:59:01 +03:00
oleh 216797ff9b Editor: interactive composition wireframe — drag to reorder and restructure
Drag a view's box (or Alt+up/down) to reorder it within its container; drag onto another view's edge to pair the two in a new row/column, move across containers, or insert. Each leaf shows a glyph of its mark type.

Core: spec-restructure.wrapViews (wrap, with flatten-to-insert, collapse, and data-pin invariants) and spec-insert.moveViewTo; the editor applies every drag as one undoable edit via AppStore.composeRequest, keeping the editor the single text source.
2026-06-29 14:25:31 +03:00
oleh 57604a80a6 Editor: composition structure wireframe (read-only) 2026-06-29 12:39:59 +03:00
oleh 345ecef5a3 Docs: explore visual composition editing (wireframe + on-chart overlay) 2026-06-29 12:39:40 +03:00
oleh 4d1825b5ff Editor: cursor-scoped Add view and reorder for composition views 2026-06-29 11:06:56 +03:00
oleh 01df58acf1 Editor: field hints show the column's raw data type, not the encoding type 2026-06-29 11:06:37 +03:00
oleh 8aa05e503d Inspector: live data updates under interactive selections 2026-06-29 09:58:32 +03:00
oleh 6656811b8e Editor: view-scoped Extract-to-Dataset for inline and self-defined data 2026-06-29 02:08:59 +03:00
oleh 8cad80f738 Inspector: multi-view data inspection with a per-table view picker 2026-06-28 22:16:59 +03:00
oleh a75ea5b59e Editor: view-scoped data context — per-view dataset columns in hints and transforms 2026-06-28 20:54:46 +03:00
oleh e69430834a Core: classify spec data blocks by Vega-Lite fidelity (spec-data) for dataset refs 2026-06-28 19:48:24 +03:00
oleh 31458114fb Editor: spec transforms (wrap/simplify/add-view) and dataset-aware hints 2026-06-28 16:56:20 +03:00
oleh 20e70bee0e Learn: per-lesson URLs, a :::data shared-dataset construct, and a linked-views deep dive 2026-06-28 12:34:30 +03:00
oleh fd5c51a761 Copy: state the AI-free stance as a confidentiality benefit; record the exploration 2026-06-27 23:11:20 +03:00
oleh 0c592fa81e Plan: add arch 11 (Learning Section) to the reference table 2026-06-27 22:38:57 +03:00
oleh 64977f961b Docs: field guide on embedding Vega-Lite in a live app 2026-06-26 23:17:00 +03:00
oleh fff7ae98f2 Plan: mark M0–M6 complete, replace milestone detail with a post-M6 backlog 2026-06-26 23:15:55 +03:00
oleh 43d3b480d9 Copy: pare product claims to what we can certify, cut rule-of-three cadence, record arch 10 §10 2026-06-26 23:09:47 +03:00
oleh c19857b0a7 Learn: a /learn/ deep-dive section — markdown lessons as before/after spec progressions 2026-06-25 12:02:39 +03:00
oleh c6ca988e40 Tests: drop change-detector component tests 2026-06-25 01:08:56 +03:00
oleh 2dce270ac7 About: acknowledge the projects Astrolabe is built on and shaped by 2026-06-25 01:08:24 +03:00
oleh d76a7a5014 Theme Builder: accordion panels across the full config surface, vertical-tab nav, reflective gallery 2026-06-21 17:14:58 +03:00
oleh 318a0919c6 Support: add a feedback email, rebrand from Donate, tighten privacy copy 2026-06-21 01:46:19 +03:00
oleh ae9d897e50 Pin Node 22 for Cloudflare Pages builds (.nvmrc) 2026-06-20 23:00:06 +03:00
oleh be8cfc402d Chart Builder: open a snippet in the builder to edit it in place 2026-06-20 12:36:37 +03:00
oleh efb5a9bbe0 Data inspector: input/resolved rows below the chart, with a resizable divider
A collapsible Data panel under the Live Preview and Chart Builder charts shows the rows the chart actually uses, switching between Input (parsed source) and Resolved (post-transform) views read from the live Vega view. Collapsed by default; the open-state and a draggable height divider persist.

Rows come through a new RenderHandle.inspectData() accessor, so no component touches the view: core/result-data picks the most-upstream source and most-downstream result from the compiled dataflow, read lazily. The divider reuses the window-splitter pattern (horizontal variant).

Consolidations: a shared DataTable primitive replaces the inspector's and the builder's duplicate read-only tables; useResizeDrag merges the col/row drag-gesture twins.

Docs: spec 04/06 and arch 05/10 updated; the now-shipped exploration memo removed.
2026-06-18 02:22:03 +03:00
oleh 223646398e Landing: add marketing page at /, move the app to /app/
Multi-page Vite build: index.html serves a new standalone landing
(src/landing), app/index.html serves the app at /app/. The PWA service
worker and manifest are scoped to /app/, so the landing stays
uncontrolled and always-fresh; hash view-state routing is unchanged.

The landing reuses src/core and the chart-renderer service only (never
stores/orchestration/modals/components) and lazy-loads Vega. Its demos
drive the real core: a hero snippet switcher over CHART_EXAMPLES, an
interactive Chart Builder over a new profiled core fixture
(sample-dataset), and a Theme Builder gallery with three from-scratch
custom themes plus built-in presets.
2026-06-17 16:43:01 +03:00
oleh d8a7bcb7c1 Fonts: carry uploaded faces through export/import + embed in SVG export 2026-06-16 23:52:16 +03:00
oleh 2ed9db3792 Persistence: share entity write-through helper; normalize quota at db.put 2026-06-16 23:06:37 +03:00
oleh 778b4d848a Donate: redirect to Ukraine's defense (savelife.in.ua) 2026-06-16 23:05:05 +03:00