Changelog
Changelog
@envisioning/app
6.4.0
Minor Changes
-
d775426: ### Radar
- Optional range line rendering with toolbar toggle (
preferences.showRange); adds a dedicated hit area for range selection - New metric render options:
tickMargin(symmetric padding around tick bands),addClosingRing(control closing ring placement), and reworkedoffset(-1 to 1, default 0) for label positioning along tick bands - Radar preference keys are optional: omitted keys default to
{ default: false, showOption: false }(off and hidden), so existing configs keep validating
Quadrants
- Optional
showBubblepreference to toggle bubble size circles (opt-in per project via config) - Axis ticks can be driven by a metric's
metricResultsviaticksJoinKey, with per-optionticksStepoverride
MiniChart
- New
RangeBarchart type for min/max (and optional point) range visualization minJoinKey/maxJoinKeyprops to source range bounds from separate metrics
Blocks & UI
- TextBlock:
variant(default,headline,poster,display),align,fontWeight, andfontStyle; headline/poster/display scale up in reader mode - Image / ImageBlock: new
4/3,2/1, and3/2aspect ratios - CardItem / ListItem:
extraLabelBgColorfor pill-style extra labels - MetricHelper: renders metric summary and description even when
showResultsis disabled
Manifest config
- Cluster list items use accent background styling; entity summary uses TextBlock poster variant
- Metric blocks show descriptions by default; cyclic list blocks link to entity/cluster/tag list pages
- Optional range line rendering with toolbar toggle (
-
3f35538: New
cardsVizvisualization Collection color injection supports optional light-mode range via CSSlight-dark() -
499dff4: Add optional
overrideSettingson radar distance options to override entity, range, and bubble rendering settings per active distance scale. -
6b7ab0b: Add optional
zoomStepto radar visualization config for toolbar zoom in/out increment (default0.75). -
d3d0b34: New entity labels feature available in bubblePacking and quadrants visualizations
Patch Changes
-
d894a85: ### Performance: cards and item blocks
- StoreProvider: config validation (Zod), data join (
structuredClone), and URL parsing are memoized, and store state (data/ui/pageContext) is only replaced when it actually changed — navigating no longer re-validates the config, re-joins the dataset, or re-renders every store subscriber.ui.criteriakeeps its identity when its content is unchanged. - Highlighting: computed once per tree in a
HighlightingProvider(mounted by StoreProvider) and shared via context;useHighlighting()is now a cheap read. Previously everyCardItemBlock/ListItemBlockre-filtered and re-sorted the whole entity list per render. Value identity is preserved when a recompute yields the same content. - Narrowed store subscriptions: cards/list rows subscribe to their own favorite flag (a favorite toggle re-renders one card, not all);
favoriteIdsandpagesStateare only subscribed where they matter, so debounced scroll-position writes no longer re-render grids and the panel. - Panel: stored scroll position is read non-reactively (new
useAppStoreApi()); scroll restore only runs on page/item change instead of after every scroll write. - useSearchParams fallback:
history.pushState/replaceStateare patched once at module level instead of once per hook instance (previously O(N²) event dispatch with N links mounted). - Memoized item rendering:
useItemsreturns identity-stable arrays;CardItemBlockandListItemBlockare wrapped inReact.memo, with the sort/filter/group pipelines inCardsVizandGridBlockmemoized so unrelated re-renders (selection, search, preferences) skip every unchanged card.useTranslatecaches its messages object per language, and a shareduseBlocksById()map replaces per-cardnavigation.blocks.findscans. - Schema split:
zCardItemBlock/zListItemBlockmoved tocard-item-block.schema.tsx/list-item-block.schema.tsx(same pattern asgrid-block.schema), keeping the server config graph free of client-only React APIs. Import paths inside the library changed; the public API is unchanged. - Language switching: the store's
tpl/getPathidentities refresh whenui.langchanges, so memoized blocks re-render and re-translate on client-side language switches. - Off-screen rendering skipped: card/list grid items get
content-visibility: autowith a deterministiccontain-intrinsic-sizeplaceholder (from the card size map / list row heights), so off-screen items skip layout and paint. Applied inCardsVizand inGridBlockwhen the item block is a CardItemBlock/ListItemBlock;calcCardSizeis now exported fromui/card-item. - Lazy images:
Imagedefers remote background URLs until the element approaches the viewport (one shared IntersectionObserver, 600px margin; inline SVG data-URIs stay eager). A 97-entity grid now makes ~16 image requests at boot instead of ~194.
- StoreProvider: config validation (Zod), data join (
-
6c4e94e: Fix assistant.
-
87dc0e9: add new terms and sort locale entries alphabetically
6.3.0
Minor Changes
- 32af624: New visualization zoom toolbar
Patch Changes
- 8362ad6: Fix metric schema to include a summary
6.2.0
Minor Changes
- 4aea899: Bubble metrics in radar, quadrants, and bubble-packing now encode values by circle area (not radius).
dotRadius,dotPadding, andmaxBubbleRadiusstill define radius at domain endpoints; intermediate sizes use √area scaling. - 0619e6b: new radar originMode setting: sets radar's origin division style
- df97752: new optional
listToprop for pagination: shows a list button next to the navigation buttons - 50fffb3: new Quadrants visualization tool available
6.1.2
Patch Changes
- 8da246e:
configFromManifest: entitymetric_<key>.valuemay benullwhen a score is unset or unknown, so data validation no longer rejects those records.
6.1.1
Patch Changes
- 4378c57: - Embed Inter fonts in SVG exports.
- Add feedback to copyUrl button.
6.1.0
Minor Changes
-
ece8691: New
bubblePackingviz available.Settings:
itemPadding,groupPadding,maxBubbleRadius,bubbleOpacity,dotRadius. Preferences:singleBlockpacks all entities into a single cluster while still renderinggroupPaddingas whitespace between groups. Also supportstoolbar,toolbarOptions,titlePath,showDownloadButton, andentityPageIdfor click/hover navigation.
6.0.1
Patch Changes
- 16e9e33:
configFromManifest:tag_<key>on entity records is now optional and defaults to[]when omitted.
6.0.0
Major Changes
- 5aca5be: new multi-dataviz feature available
Minor Changes
- 99335bb: Add a simple way to configure a project: Config from Manifest
Patch Changes
- 50a39c6: new icons and locale terms
5.0.0
Major Changes
- fb8b346: Create new navigation-modal feature
Minor Changes
- 5be31a1: settings.projectMainLabel and settings.projectExtraLabel also accept i18n content
4.0.1
Patch Changes
- ffb7efc: Fix vizualization preferences
4.0.0
Major Changes
-
4dfb1d3: Breaking change: Remove colorSpec from schema entries
colorSpec: { mode: "path", colorPath: "color", }, // This part should be removed
Minor Changes
-
4114356: add deutsch to available locales
-
756415f: Color properties now support template strings
Block color props (
mainLabelColor,iconColor,bgColor,outlineColor,favoriteColor,flagColor, etc.) now accept the same{path}template syntax used for text labels, letting colors be driven by each item's data at render time.// Static — same color for every item iconColor: "accent"; // Dynamic — each item uses its own data color, with a fallback iconColor: "{color.hex | accent}"; // Dynamic — color inherited from the joined collection object iconColor: "{collection.color.hex | foreground}";The resolved value is treated as a hex color if it starts with
#, or as a CSS token otherwise. Template strings must be fully wrapped in{...}— partial interpolation (e.g."prefix-{color}") is not supported on color props.
Patch Changes
- f39fc5c: spider-chart responsive layout
3.4.2
Patch Changes
- bbca2fc: Fix metric-helper-widget position
- eac68ba: fix: Docs deployment
3.4.1
Patch Changes
- 25613c7: Fix docs builder
- abd3685: Improve documentation
3.4.0
Minor Changes
- cd1b42f: Display a "Reset Filters" button in
grid-blockwhen search orfavoritesOnlyreturns no items.
Patch Changes
- e14f3d1: - Bug fixes
3.3.0
Minor Changes
- 7c6c554: - New highlight button behavior
- 1c95b61: New Download feature on Radar (PNG and SVG) New radar setting showDownloadButton New Show Favorites Only button New Group by Favories option on radar Pin Current Highlight State functionality
3.2.0
Minor Changes
-
b22bc10: create secondary menu help panel. Project Radar settings can have a "help" object that allows help text customization:
help: { helpPageId: { text: "Custom help text here", }, },
-
f1c0d5e: - New highlight by active search
3.1.0
Minor Changes
-
e5a833f: Slug-based navigation for entities
- Entries now get an auto-generated
slugproperty derived from their title (viatitlePath), used for URL-friendly navigation - Entry matching throughout the app (panel, radar, cards, lists, pagination) resolves by slug first, falling back to id
- Schema option
slugify: falsedisables auto-slug generation
- Entries now get an auto-generated
Patch Changes
- d676073: ButtonBlock:
- add dataProps (instead of customProps) to pass a
data-prop. This can be used to pass tally props, ex:{data-tally-open: "xxx"} - add customClassName prop. Used for custom class like
plausible-event-name=CustomEventNameorcustom-class-1 custom-class-2. Custom class names are applied after the default class names.
- add dataProps (instead of customProps) to pass a
- 8182c2a: create distance explainer block
- 6efea3b: make root required for gridBlock and paginationBlock
3.0.0
Major Changes
- 7b3dad6: Breaking Changes:
- Highlight now follows navigation AND filter. Blocks:
- review blocks, remove
{context.}as context is the default root. Replace with {$. ...} is you want to override - review blocks, remove unused
{block.}templates. This should only be used when block add custom values (ex: trl result) - update
GridBlockon config/blocks.ts. Add root path instead of schemaKey if needed. Context (local or page context) is used as root, so probably there is no need to userootand you should omit it. objectId - Paginanation blocks: remove path and replace with root prop. Pagination usually requires a root like this
$.data.allEntities. - ListItemBlock: instead of using full path on fields like mainLabel (ex:
{collection.title}), add a root prop (collection) and refer to the mainLabel directly as{title}. - ListItemBlock: do not use
objectId, use root instead and id will be derived from the root. - ListItemBlock and CardItemBlock: Add set
highlightto true if you want it to follow highlight.
2.2.0
Minor Changes
-
f2fad21: new accent2 color (optional) to theme. This color can be used to personalize content style. new ExplainerDistanceFromCenterBlock.
-
b7608e7: Color palette cleanup for theme tokens.
BREAKING CHANGE: the color palette
app/theme.cssno longer includes these tokens:backgroundbackground-plusbackground-dimmed
Rename
background-disabledtotick, and place it as the first item in thecontentsection.
2.1.0
Minor Changes
- 196b619: - Visualization: remove
containerWidthandcontainerHeight.- Move viz panel title to secondary menu.
- bug fixes
2.0.0
Major Changes
-
d430051: Redesign app layout: updated panel, top bar, and main view structure for clearer composition and responsive behavior.
BREAKING CHANGE: New Layout
Minor Changes
-
5c027be: - Add minimal view.
Config:
- Pages: new
limitWidthprop to restrict page width even in 'many' plurality - Visualization: new
closeOnClickflag on option items - Visualization: new
containerWidthandcontainerHeightoptional SVG container height and width for centering (e.g. from parent).
Blocks:
- ButtonBlock: new
maxWidthoptional prop - CardItemBlock:
imageUrlis now optinal - CardItemBlock: new
bgColorHoveredprop - MarkdownBlock: new
maxWidthoptional prop
- Pages: new
-
85c5354: new block: Button, used to add custom links using a button Bug fixes.
-
7a371c0: new Date block bug fixes
1.0.4
Patch Changes
- 03966e3: fix scroll behaviour when cursor is on top of components.
1.0.3
Patch Changes
- bb90913: fix image+table rounded corners with overflow-hidden
1.0.2
Patch Changes
- 587c4b1: fix options menu positioner in mobile
1.0.1
Patch Changes
- 1024ce9: markdown + typography styles
1.0.0
Major Changes
-
59242fe: NEW OPTIONS COMPONENT:
BREAKING CHANGE: options settings no longer accept
modeprop. Remove this prop from headerSettings -
8c17385: Themes documentation file + theme file structure refactor.
BREAKING CHANGE: Badge images for the radar are now configured differently.
Radar.settingsno longer includesbadgeUrl_darkandbadgeUrl_light. Move those settings out of the settings object inapp/config/radar.tsand intoapp/theme.css. Each theme in theme.css now defines its own--badge-urlvariable for the badge image. Use this format:--badge-url: url("/file-name.extension").
Minor Changes
- 92de305: Markdown (Markdown component): Add GFM table rendering with typography components; add footnote support (reference/backref links use
FOOTNOTE_PREFIX); improve rendering of fenced code blocks and inline code via shared typography components.
Patch Changes
- 01f3a4f: fix travelTo numeric selector on radar
- 2ce0fb9: upgrade deps
0.8.1
Patch Changes
- 51fb5ed: Create spider-chart component
0.8.0
Minor Changes
- 02af4a2: - Topbar menu group options only appears if groupOptions also exists. - Simplified groupOptions to use joinKey. - New image modal component with zoom functionality
Patch Changes
- 5d17272: itemTitle and assistantPanel fixes
- a0d7cb5: create markdown and typography table styles
0.7.1
Patch Changes
- a68d7da: Fix panel width issue and add selection style
0.7.0
Minor Changes
-
ca856b4: Update minimal dependencies for React
BREAKING CHANGE:
- upgrade react and react-dom to 19.2.1
Patch Changes
- 4c0aa4d: fix chat api endpoint when basePath is set
0.6.2
Patch Changes
- e1f9c52: Fix documentation
0.6.1
Patch Changes
- 4df2b95: export add useGet hook
- 4df2b95: fix mailto links
- c5bfe00: add theme colors descriptions
0.6.0
Minor Changes
-
066e1e1: add template parser option to markdownContentBuilder
BREAKING CHANGES: 1 -
markdownContentBuilderis nowasync. You must await all calls. Ex:const markdownContent = await markdownContentBuilder({ config, data: result.data, });New Custom Parser: markdownContentBuilder accepts a custom parser (ex: liquidjs). Check docs for more info.
2 -
sitemapBuilderis nowasync. You must await all calls. Ex:const sitemapData = await sitemapBuilder({ config, data: result.data, baseUrl, });3 - Update Config: move
aiTemplatesettings fromschematopage, under thetextContentkey.4 -
textContentneeds to referencedataorcontextprefixes, ex:{ textContent: `Title: {context.title}`; }
0.5.0
Minor Changes
-
ad3d08b: Make displaModes optional
BREAKING CHANGE: remove displayModes from config/settings
Patch Changes
- a48b417: create dynamic back button icon for content pages
- 4d92a73: Add selected option label to secondaryMenu buttons
- e228fe9: Add button variant to options dropdown menu
0.4.3
Patch Changes
- b6593ae: fix Radar groupBy order
0.4.2
Patch Changes
- c362477: Show if version is ahead of release (*) and/or have pending commits (!)
0.4.1
Patch Changes
- 46b01db: remove block mode and create isBlock to fix scopeMenu style in reader mode
- 041826b: remove deprecated path from text block
0.4.0
Minor Changes
-
ff52209: Scope are now defined as a schema entry with
scopetype.BREAKING CHANGE: Migrate Scopes definition from
settingstoschema. Create an object entry like the following:country: { type: "scope", src: "allCountries", filter: null, titlePath: "label", label: { en: "Country" }, singular: { en: "Country" }, plural: { en: "Countries" }, noScopeLabel: { en: "All Countries" }, identifier: "code", },
Patch Changes
- 4001ea8: Paginated items are now sortable.
- 220c95d: Panel back button now preserves URL parameters
- 1b2365c: add scopeMenuBlock.
0.3.0
Minor Changes
-
ec8f400: add dataTransform function. allow scope switching without reload
-
8fda824: remove loading component icon
BREAKING CHANGE: remove preloaderIcon prop from settings.
Patch Changes
- 4d12389: store-provider refactor
- ed48dfc: add assistant context + noDataLabel to miniChartBlock
0.2.4
Patch Changes
- 02625ee: Improve version update flow
- 34de7a9: Document release flow
0.2.3
Patch Changes
- b95aa83: Fix image basePath handling
0.2.2
Patch Changes
- 25d4c55: Export Visualizations types
- 25d4c55: Fix badged image path to consider basePath
0.2.1
Patch Changes
- f62d32b: rename props from urlsPath to itemsPath for MosaicBlock and remove direct urls array.
0.2.0
Minor Changes
-
93d26a9: Move secondary menu from settings to visualization config.
BREAKING CHANGE: secondary menu now follows viz's settings. Check radar settings.
0.1.3
Patch Changes
- da07055: Fix i18n types
0.1.2
Patch Changes
- b7acb96: Improve versioning
0.1.1
Patch Changes
- 0fd8c12: Add config cross validation functions
- 2ee890a: Fix subpath hosting
0.1.0
Minor Changes
- f8a6263: Make block schemas and version available on lib (dist)
Patch Changes
- 994a5c2: Handle Connections as metrics
- 994a5c2: Join function should also join items with cardinality
multiple
0.0.12
Patch Changes
- 6732673: Improve release workflow
0.0.11
Patch Changes
- cba355d: Change publish directory
0.0.10
Patch Changes
- 9014f7b: Fix changeset
0.0.9
Patch Changes
- 53fc240: Fix tagging
0.0.8
Patch Changes
- d711aa8: fix publishing
0.0.7
Patch Changes
- f90bbe9: Fix tags
0.0.6
Patch Changes
- 9a2ed20: Fix publishing
0.0.5
Patch Changes
- 3aceb3f: Fix package publishing
0.0.4
Patch Changes
- c55ed3b: Fix publish flow
0.0.3
Patch Changes
- 1e0135d: Fix versioning system
0.0.2
Patch Changes
- init