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
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
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
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
oleh
5d3aba608a
Chart theming: user font upload (FontFace-from-IndexedDB) + variable-font weight support
2026-06-16 21:41:04 +03:00
oleh
6fc8c29b50
Image export: surface rasterize/serialize failures instead of reporting 'not ready'
2026-06-14 20:39:10 +03:00
oleh
91b8b1e7fe
Theme Builder: Layout/Axes/Legend/Type panels, scheme-render fix, fail-loud gallery
2026-06-14 13:08:29 +03:00
oleh
b03c3b08ab
Chart fonts: self-hosted roster + document.fonts.load render gate
2026-06-14 13:08:16 +03:00
oleh
df6a0b3845
ColorField: shared color-input primitive, Theme Builder + Chart Builder migration
2026-06-14 11:02:20 +03:00
oleh
236b1c8a37
Chart tooltip: app-owned token styling, drop vega-tooltip's default sheet
2026-06-14 01:25:58 +03:00
oleh
e4d1466ab0
Theme Builder: structured color/type controls, scheme catalog, diverging preview
2026-06-14 01:25:44 +03:00
oleh
0470389b41
Chart builder: intent front door, Heatmap mark, role-aware guidance
2026-06-13 12:08:11 +03:00
oleh
4e5108f434
Snippet naming: content-derived on publish, frozen on explicit rename
2026-06-13 10:13:57 +03:00
oleh
92bfe888b5
UX second pass: icon-only header, pane-toggle cue, schema columns, facet cleanup
2026-06-13 10:13:40 +03:00
oleh
e0806bf3db
Quiet fields: base.css field baseline, --field tokens, 3:1 border-strong, app-wide migration
2026-06-13 00:06:33 +03:00
oleh
b8f0b97f22
Chart builder: equal shelf heights, pill floor, flat field rows, scroll affordance
2026-06-12 23:13:26 +03:00
oleh
7d4906ec38
Control scale: Button/IconButton primitives, two-height tokens, app-wide migration
2026-06-12 23:13:13 +03:00
oleh
d1ba921141
SelectControl: 32px trigger scale + option-group divider in the theme picker
2026-06-12 21:46:53 +03:00
oleh
ca70b3e491
Chart builder: discoverable entry points — Build Chart door, dataset picker, no-datasets state
2026-06-12 21:46:25 +03:00
oleh
dbb4522d78
Workspace transfer: custom themes ride the export/import envelope
2026-06-12 21:45:44 +03:00
oleh
9a8b44380d
Services: delete dead RelationshipService; rename persistence to snippet-persistence
2026-06-12 19:46:14 +03:00
oleh
538882b342
Modal system: break import cycles — component map moves to the shell
2026-06-12 19:45:50 +03:00
oleh
91b6e102eb
Pane handles: extract shared useColResizeDrag pointer gesture
2026-06-12 19:42:24 +03:00
oleh
20d593a6a3
Popovers: extract shared usePopover hook; SettingsPopoverStore becomes PopoverStore
2026-06-12 19:40:35 +03:00
oleh
0e225d7d5c
Eng-council sweep: export hygiene, dead code, helper dedup, declare vega-expression
2026-06-12 19:39:54 +03:00
oleh
0baac3c64b
Editor: Extract Config to New Theme as a third Config action
2026-06-12 18:16:15 +03:00
oleh
b193464f55
Chart theming: custom named themes + Theme Builder
2026-06-12 18:15:54 +03:00
oleh
44a601affd
Chart theming: selectable chart theme + spec↔config merge/extract
2026-06-12 16:48:48 +03:00
oleh
fe9d588103
Sort control: open with focus on the checked option, not the first
2026-06-12 14:45:45 +03:00
oleh
ed66fe9c05
Chart builder: SelectControl pickers, channel chooser, per-type aggregates
2026-06-12 14:45:31 +03:00