Skip to main content

Breaking: cva 1.0 upgrade removes cvaMerge from @trackunit/css-class-variance-utilities

@trackunit/css-class-variance-utilities (from 2.0.0) has upgraded to the upstream cva@1.0.0-beta.8 package. cvaMerge is removed with no compatibility shim — if any of your code calls it, bumping this dependency without running the migration is a compile failure, not a deprecation warning. Repos that never called cvaMerge are unaffected.

Run these two commands in the consuming repo after bumping the dependency:

nx g @trackunit/migrations:migrate
nx g @trackunit/migrations:run-migrations

trackunit/iris-app v2.6.0 - new AI agent skill for Databricks Unity Catalog access

New Iris App workspaces now scaffold a databricks-unity-catalog skill under .agents/skills/, alongside the existing graphql, create-app, and other skills. It guides Claude, Cursor, and other coding agents through building a SERVERSIDE_API_EXTENSION that reads or writes customer-uploaded or app-owned tables in your IrisX Analytics Unity Catalog workspace — for data that Trackunit's GraphQL API can't serve.

Iris Apps opt into AI navigation with @trackunit/iris-app-api 2.4.0

Your extensions can now describe their own pages to Trackunit Manager's AI assistant. Add an aiNavigation field to a manifest — a list of in-app routes, each with a path, a title, and a description — and the assistant can take a user straight to the page inside your app that answers their question instead of dropping them on its root.

This works today for every extension type that has a page a user can land on: Fleet, Admin, App Settings, Asset Home, Site Home, Customer Home, and Asset Events Actions. The field is opt-in and purely additive — apps that don't declare it behave exactly as before.

See Extension Point Types — AI navigation for the full reference: the manifest shape, both Tanstack Router styles, and in-app paths for entity-scoped extensions.

Iris Apps — content owns padding from @trackunit/iris-app 2.5.13 (Asset Home / Site Home / Admin)

Manager is moving content inset for Asset Home, Site Home, and Admin extension iframes onto each app. After you upgrade @trackunit/iris-app to 2.5.13 or later, the host stops applying its transitional 1rem inset. Your extension must pad itself with p-content-space on the scrollable content region (or intentionally stay edge-to-edge).

Run the automated migration before or as part of that SDK upgrade — not as optional cleanup afterward. It ships as v2-5-12-p-content-space-codemod in @trackunit/iris-app 2.5.13.

npx nx g @trackunit/migrations:migrate
npx nx g @trackunit/migrations:run-migrations

Breaking: @trackunit/react-drawer adds useDrawer, DrawerHeader, and variants

@trackunit/react-drawer has been reworked to align with Sheet and Modal: a new useDrawer hook owns state and dismiss, a new DrawerHeader component provides the standard toolbar, and the panel now has explicit variant="default" | "modal" semantics. Legacy inline props on <Drawer /> (open, onClose, onOpen, hasOverlay, keepMountedWhenClosed) and the DrawerToggle component have been removed.

Breaking: MenuList renamed to MenuContent, plus new submenu and MenuTree APIs

@trackunit/react-components's MenuList claimed Up/Down keyboard navigation and nested-menu support in its docs that it never actually implemented — it was just a role="list" div with click handlers. It's now been rewritten with real WAI-ARIA menu semantics and renamed to MenuContent to reflect that. MenuItem also gains a new submenu prop for building nested menus, and the MenuTree/useMenuTree tree-coordination primitive that powers it is now public API.