Back to changelog index

3.10.6

May 25, 2026 · 5 packages · 10 unique changes · 4 release entries

libs

This release affects the contracts, sharedLibs familyies.

Run contractspec connect adoption resolve --family contracts to see how it impacts your project.

Release summaries

  • m2-graph-ui-primitives

    Additive: M2 graph UI — GraphCanvas, minimap, focus-mode, animations, drilldown, 5 design-system templates with engineer+manager RoleMorph variants.

    maintainer

    M2 graph primitives land as additive minor changes across four packages. ui-kit-core gains cross-platform graph/timeline interfaces and hooks. ui-kit-web gains the full P6 graph component suite (canvas, minimap, focus-mode, edge labels, animated transitions, drilldown, custom node renderer) plus axe-core tests. ui-kit gains the native equivalents of all P6 components (react-native-svg minimap, reanimated transitions, native drilldown) plus native a11y tests. design-system gains five role-morphing graph templates (ConversationGraphView, WorkflowDagView, AgentTreeView, EngineeringLoopView, PersonActivityView) each with engineer + manager variants and full DocBlock exports.

    integrator

    All new — no breaking changes. Import graph components from their respective packages: GraphCanvas from @lssm-tech/lib.ui-kit-web/ui/graph, GraphNode/GraphEdge types from @lssm-tech/lib.ui-kit-core/interfaces, ConversationGraphView and other templates from @lssm-tech/lib.design-system/components/templates/graph/*. Each design-system template accepts nodes[], edges[], viewerRole ('engineer'|'manager'), and onAction.

    customer

    Applications built with these packages can now render conversation graphs, workflow DAGs, agent task trees, engineering loops, and person activity streams with built-in role-appropriate layouts and accessibility support.

  • m3-contracts-runtime-server-rest-graph-subscription

    M3 — createGraphSubscriptionRoute helper for wiring GraphSubscription SSE endpoints in Elysia, Express, Next.js App Router, and Next.js Pages.

    maintainer

    New additive export createGraphSubscriptionRoute. Existing framework adapters are unchanged. No cross-adapter coupling introduced.

    integrator

    Wire GraphSubscription SSE endpoints in Elysia, Express, or Next.js App Router using createGraphSubscriptionRoute(config). The helper emits GraphSubscriptionEvent SSE lines and sets retry headers per config.

  • m3-ui-kit-core-graph-primitives

    M3 — New graph analysis, accessibility, time, and AI cost-guard primitives across P2–P7 (rendering backend selection, LOD, viewport, a11y, filter, path analysis, clustering, heatmap, diff, animation budget, saved views, AI cost guard).

    maintainer

    All new primitives are additive exports. Existing consumers are unaffected. New hooks are opt-in.

    integrator

    Graph surfaces can now opt into rendering backend selection, LOD tiers, accessibility providers, filter specs, path analysis, clustering, heatmap, diff detection, animation budgets, saved views, and AI cost guardrails.

  • ui-kit-core-graph-timeline-primitives

    Add shared graph/timeline prop interfaces and interaction hooks to ui-kit-core.

    maintainer

    New shared cross-platform primitives: GraphNodeProps, GraphEdgeProps, GraphCanvasProps, TimelineEventProps, TimelineProps, TimelineGraphProps, useGraphInteraction, useTimelineInteraction, useAdaptiveGraphRenderer (bounded threshold ladder: SVG ≤50 / Canvas ≤500 / WebGL >500; respects prefers-reduced-motion). All additive.

    integrator

    Import graph/timeline prop interfaces and hooks from @lssm-tech/lib.ui-kit-core. Use useAdaptiveGraphRenderer to pick the appropriate renderer strategy at runtime. Interfaces are consumed by ui-kit-web (SVG/reactflow) and ui-kit (.native.tsx) implementations.

Upgrade steps

  • Render graphs with GraphCanvas

    assisted

    GraphCanvas is the cross-platform graph renderer. Pass GraphNode[] + GraphEdge[] and choose a layout algorithm.

    Packages: @lssm-tech/lib.ui-kit-core, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit, @lssm-tech/lib.design-system

    1. Import GraphCanvas from @lssm-tech/lib.ui-kit-web/ui/graph.
    2. Import GraphNode, GraphEdge from @lssm-tech/lib.ui-kit-core/interfaces.
    3. Set layout to 'dag' for directed flows, 'radial' for hub-spoke, 'grid' for uniform grids.
    4. Use nodeRenderer prop to inject custom node components.
    5. Wrap in GraphFocusMode for sub-tree collapse/expand.
    6. Add GraphMinimap for viewport navigation on large graphs.
  • Use design-system templates for standard graph surfaces

    assisted

    Five templates cover the most common graph use cases with built-in role adaptation.

    Packages: @lssm-tech/lib.ui-kit-core, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit, @lssm-tech/lib.design-system

    1. ConversationGraphView — for CommunicationOS thread/participant/channel graphs.
    2. WorkflowDagView — for workflow step sequences and DAGs.
    3. AgentTreeView — for agent task trees.
    4. EngineeringLoopView — for CI/CD and engineering loop workflows.
    5. PersonActivityView — for person timeline + activity graphs.
    6. Pass viewerRole='engineer' for detailed DAG/topology view; 'manager' for summary overview.
    7. Import from @lssm-tech/lib.design-system/components/templates/graph/<TemplateName>.
  • Honour prefers-reduced-motion in graph animations

    assisted

    Graph animated transitions respect the useReducedMotion hook from ui-kit-core. Pass reducedMotion={true} to GraphCanvas to disable animations explicitly.

    Packages: @lssm-tech/lib.ui-kit-core, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit, @lssm-tech/lib.design-system

    1. Import useReducedMotion from @lssm-tech/lib.ui-kit-core.
    2. Pass reducedMotion={useReducedMotion()} to GraphCanvas.
    3. Animated transitions will skip to final state when reduced-motion is active.
  • Wire GraphSubscription SSE endpoint

    manual

    Use createGraphSubscriptionRoute to add a typed SSE endpoint for live graph events.

    Packages: @lssm-tech/lib.contracts-runtime-server-rest

    1. Import createGraphSubscriptionRoute from the appropriate adapter subpath (rest-elysia, rest-express, rest-next-app).
    2. Pass a GraphSubscriptionConfig with endpoint path and reconnect interval.
    3. Connect your graph event source to the route handler.
  • Adopt useBackendSelection for adaptive rendering

    manual

    Use selectBackend() or useBackendSelection() to choose the correct rendering backend at mount.

    Packages: @lssm-tech/lib.ui-kit-core

    1. Import useBackendSelection from ui-kit-core.
    2. Pass the returned backend to GraphCanvas as the backend prop.
    3. Do not hot-swap the backend after mount.
  • Wire useAiCostGuard for AI budget enforcement

    manual

    Wrap AI graph surfaces with useAiCostGuard to enforce per-session and per-user/day spend limits.

    Packages: @lssm-tech/lib.ui-kit-core

    1. Import useAiCostGuard from ui-kit-core.
    2. Pass session budget ($0.50) and per-user/day budget ($5.00) defaults.
    3. Observe ai.graph.budget_exceeded events at 80% soft and 100% modal thresholds.

Unique release changes

  • - Additive: M2 graph UI — GraphCanvas, minimap, focus-mode, animations, drilldown, 5 design-system templates with engineer+manager RoleMorph variants.

    4 packages · 4 occurrences

  • - Five templates cover the most common graph use cases with built-in role adaptation.

    4 packages · 4 occurrences

  • - Graph animated transitions respect the useReducedMotion hook from ui-kit-core. Pass reducedMotion={true} to GraphCanvas to disable animations explicitly.

    4 packages · 4 occurrences

  • - GraphCanvas is the cross-platform graph renderer. Pass GraphNode[] + GraphEdge[] and choose a layout algorithm.

    4 packages · 4 occurrences

  • - Add shared graph/timeline prop interfaces and interaction hooks to ui-kit-core.

    1 packages · 1 occurrences

  • - M3 — createGraphSubscriptionRoute helper for wiring GraphSubscription SSE endpoints in Elysia, Express, Next.js App Router, and Next.js Pages.

    1 packages · 1 occurrences

  • - M3 — New graph analysis, accessibility, time, and AI cost-guard primitives across P2–P7 (rendering backend selection, LOD, viewport, a11y, filter, path analysis, clustering, heatmap, diff, animation budget, saved views, AI cost guard).

    1 packages · 1 occurrences

  • - Use createGraphSubscriptionRoute to add a typed SSE endpoint for live graph events.

    1 packages · 1 occurrences

  • - Use selectBackend() or useBackendSelection() to choose the correct rendering backend at mount.

    1 packages · 1 occurrences

  • - Wrap AI graph surfaces with useAiCostGuard to enforce per-session and per-user/day spend limits.

    1 packages · 1 occurrences

Impacted packages

  • @lssm-tech/lib.contracts-runtime-server-rest

    Layer: libs · 2 changes

  • @lssm-tech/lib.design-system

    Layer: libs · 4 changes

  • @lssm-tech/lib.ui-kit

    Layer: libs · 4 changes

  • @lssm-tech/lib.ui-kit-core

    Layer: libs · 1 changes

  • @lssm-tech/lib.ui-kit-web

    Layer: libs · 4 changes