[3.0.0] Released! 🎉📈
Migration guide
This release contains three categories of breaking change. Most users will only be affected by the nav rule ID renames.
1. Nav rule ID renames
Any code that references nav rule IDs by string — in commandLabels, navigationRules, custom filtering, or programmatic structure inspection — must be updated:
| Old ID | New ID |
|---|---|
'child' |
'drill-in' |
'parent' |
'drill-out' |
'parent_<dimensionKey>' (auto-generated) |
'drill-out_<dimensionKey>' |
Example: parent_date → drill-out_date, parent_category → drill-out_category.
2. <dn-commands-table> tag name
The commands-table custom element was previously registered as <commands-table>. It is now <dn-commands-table>. Update any HTML or markdown that uses the old tag — the old tag will render nothing without an error.
3. @data-navigator/inspector example pages
If you forked or copied the inspector example pages (tree-view, console-menu, stacked-bar), any startsWith('parent_') filter in your code must be updated to startsWith('drill-out_').
data-navigator
Breaking
- Renamed built-in nav rule IDs:
'child'→'drill-in','parent'→'drill-out'throughoutconsts.tsandstructure.ts. The dimensions API previously auto-generated rule IDs with aparent_<dimensionKey>prefix; these are nowdrill-out_<dimensionKey>. GenericNavigationRuleCommandsnow uses the new IDs; any code that referenced the old keys directly will need updating.
New features
<dn-commands-table> custom element (contributed by @GuillaumeMMM)
A new web component that renders a keyboard/command reference table from a Data Navigator structure. Replaces the hardcoded HTML tables that previously appeared in docs and examples.
- Automatically reads nav rule IDs and labels from a live structure object
- Wraps command keys in
<kbd>tags by default; falls back gracefully for non-key command labels (e.g. typed commands in text-chat mode) - Generates an accessible table name from the element's
titleattribute; falls back to a sensible default whentitleis omitted - Registered via the rendering module — no separate import needed
- Source:
packages/data-navigator/src/commands-table.ts
Geometry utilities — packages/data-navigator/src/geometry.ts
A new pure-function module for computing SVG path strings that describe group focus-indication shapes. All functions are side-effect-free: inputs are arrays of Rect, Point, or Circle objects; output is an SVG <path d="..."> string.
Exported functions:
| Function | Description |
|---|---|
grahamScan(points) |
Computes the convex hull of a point set (Graham scan) |
convexHullPath(points) |
Returns an SVG path string for a convex hull |
expandHull(hullPoints, padPx) |
Expands a hull outward by a pixel offset |
convexHullOfRects(rects, padPx?) |
Convex hull wrapping a set of rectangles |
unionOfRectPaths(rects, padPx?) |
Union-style path covering a set of rectangles |
boundingRectPath(rects, padPx?) |
Simple bounding-box path for a set of rectangles |
convexHullOfCircles(circles, padPx?) |
Convex hull wrapping a set of circles |
offsetLinePath(points, offsetPx) |
Thickened line path offset from a point sequence |
Exported types: Rect, Point, Circle.
These functions are used by the Skeleton scaffolding app for group focus indicators and are exported from the core index for downstream use.
Utilities now exported from core index
packages/data-navigator/src/utilities.ts is now re-exported from the main package entry point, making utility helpers available to consumers without a deep import path.
Docs
- Keyboard/command tables in all main docs example pages migrated from hardcoded HTML to
<dn-commands-table>. getting-started/first-chart.mdnow includes a keyboard controls section.- Drill-in/drill-out labels updated throughout.
@data-navigator/inspector
Fixes
- Breaking fix: Example pages (tree-view, console-menu, stacked-bar) contained
startsWith('parent_')filters that silently returned empty results after the core rule ID rename. Updated tostartsWith('drill-out_').
Docs
- All three example pages migrated from hardcoded keyboard tables to
<dn-commands-table>.
@data-navigator/bokeh-wrapper
No API changes. The wrapper explicitly overrides auto-generated rule IDs with bare 'drill-in'/'drill-out' and is unaffected by the dimensions API rename.
Docs
- All example pages (bar-chart, line-chart, scatter, scatter-grouped, stacked-bar, crossline, interactive-elements) migrated from hardcoded keyboard tables to
<dn-commands-table>. - VitePress config updated to resolve the
data-navigatorsource alias needed fordn-commands-tableto work in the wrapper docs dev environment.
Contributors
Thanks to @GuillaumeMMM for building the <dn-commands-table> custom element, the foundation for the commands-table feature throughout this release.
Auto-generated notes
Note, a new app called Skeleton 🩻 is currently under construction! Stay tuned for more:
- Skeleton updates by @frankelavsky in #81
- Skeleton: add "scaffolding" panel (the true bones-builder!) by @frankelavsky in #82
- Skeleton: group rendering in scaffold mode by @frankelavsky in #83
- Skeleton: testing page, data flow improvements by @frankelavsky in #84
- Build commands table by @GuillaumeMMM in #79
- Skeleton by @frankelavsky in #86
- Pre release by @frankelavsky in #87
Full Changelog: v2.4.1...v3.0.0