Back to changelog index

7.1.0

May 26, 2026 · 21 packages · 101 unique changes · 37 release entries

appsbundlesintegrationslibsmodulesBreaking changes

This release affects the contracts, integrations, sharedLibs, solutions familyies.

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

Release summaries

  • adaptive-object-reference-panel

    Promote object-reference detail panels to a reusable adaptive sheet/drawer surface.

    maintainer

    Design-system now exposes AdaptivePanel as the shared responsive sheet/drawer primitive and wires object-reference details through it.

    integrator

    ObjectReferenceHandler supports same-page vs new-page detail opening, rich nested properties, and configurable sheet/drawer behavior with responsive defaults.

    customer

    Reference interactions can show richer details in a desktop sheet or mobile drawer without custom per-screen logic.

  • adaptive-panel-menu-migration

    Route design-system mobile menu overlays through the shared AdaptivePanel primitive.

    maintainer

    Header and marketing header mobile menus now use AdaptivePanel instead of direct sheet composition, leaving sheet/drawer primitives behind the shared overlay adapter.

    integrator

    Design-system overlay behavior is more consistent because mobile menu panels and object references share the AdaptivePanel boundary.

    customer

    Mobile menus keep the same behavior while using the shared responsive panel implementation.

  • agent-workflow-ui-enhancements

    Enhanced agent-workflow-command-center with comprehensive UI interactions

    maintainer

    Enhanced agent-workflow-command-center with comprehensive UI interactions including CRUD operations, workflow builder, review queue, and real-time dashboard.

    customer

    Users get enhanced UI with full CRUD operations for agents, workflow builder with templates, review queue with actions, and real-time dashboard with widgets.

  • application-shell-navigation

    Add design-system application shell primitives with typed navigation, command search, breadcrumbs, native bottom-tab adaptation, and PageOutline support.

    maintainer

    Design-system maintainers now have a focused shell API for application frames, navigation sections, breadcrumbs, commands, and page outlines.

    integrator

    Web and Expo app developers can adopt AppShell and PageOutline from the shell subpath while existing AppLayout, AppSidebar, AppHeader, NavLink, and NavSection imports remain supported.

    customer

    Documentation readers get public library docs with copy-ready AI prompts for fresh application shell implementation and existing-app refactors.

  • appshell-notification-layout

    Fix AppShell desktop sidebar collapse/layout and web notification dismissal behavior.

    integrator

    AppShell now keeps the desktop topbar inset beside the sidebar, exposes a shared sidebar collapse trigger, and dismisses the web notification panel on outside click, Escape, or trigger toggle.

  • billing-os-ui-uplift

    Add BillingOS UI uplift — Cluster A + B ports, presenter seam, atoms, molecules, and templates.

    maintainer

    Seven new DS atoms (MoneyInput, PercentInput, AutocompleteCombobox, FieldLabel, FieldHint, FieldError, UndoToast) are exported from the lib.design-system root. billing-spec gains a ./contracts subpath with two search query contracts and a registry (8 entries total after Phase 3 status-transition contracts: InvoiceStatusTransitionContract, PaymentReconcileContract, ReviewDecisionContract). billing-runtime gains a ./fixtures-rich subpath with rich test fixtures. billing-os gains ports interfaces, a PortsProvider/usePorts React API, a spec→view-model presenter seam with documented losses, money/validator utilities, 6 new molecules, 4 new templates, atomic-layer barrel re-exports, QuoteEditor uplift (Phase 2), and Phase 3 other-surfaces uplift: 3 new state hooks (useInvoiceCard, usePaymentCard, useReviewItemCard), 2 new JSX-only organisms (InvoiceLineItemsSection, PaymentReconciliationPanel), refactored JSX-only organisms (InvoiceCard, PaymentCard, ReviewItemCard), all 6 workspace screens wrapped in BillingPageShell + WorkspaceHeader, and extended presenter losses for invoice and payment surfaces.

    integrator

    All existing consumer imports continue to resolve unchanged. New molecules, templates, hooks, and organisms are additive. The presenter seam documents which spec fields are dropped (losses array) so integrators can decide whether to map them in a later phase. Port interfaces must be wired through PortsProvider before the new autocomplete pickers operate. Status-transition actions (invoice, payment, review) are now contract-backed via billingContracts.

  • comm-os-cross-surface-consolidation

    Move CommunicationOS composite presentational components from lib.design-system to module.communication-os (CommOsLegacyComposites).

    maintainer

    The design-system no longer owns CommunicationOS composite components. They live in the module layer where they have domain context. CI lint now enforces the old path is not re-imported.

    integrator

    Import CommunicationWorkQueue, CommunicationThreadTimeline, SourceEvidenceList, ReplyDraftReviewPanel, PolicyDecisionBanner, HandoffPacketCard, ActionCandidateList, IdentityLinkReviewCard, and ChannelCapabilityMatrixView from @lssm-tech/module.communication-os/ui instead of @lssm-tech/lib.design-system/components/communication-os.

  • commos-design-system-overlap

    Migrate CommOS composite components out of lib.design-system into module.communication-os/ui (G010)

    maintainer

    The nine CommOS composite components previously under @lssm-tech/lib.design-system/components/communication-os are migrating to their canonical home in @lssm-tech/module.communication-os/ui. This changeset records the library-level impact. The G010 changeset records the module-level additions. Import from @lssm-tech/module.communication-os/ui for all new and migrated consumers. PENDING: If G010 removes the design-system subpath without a shim, this changeset must be reclassified as major/breaking and this release.yaml updated (isBreaking: true, releaseType: major) before the release is cut.

    customer

    CommOS UI components should be imported from @lssm-tech/module.communication-os/ui. The @lssm-tech/lib.design-system/components/communication-os import path is being deprecated and will be removed in an upcoming release.

  • data-table-ux-stability-upgrade

    Harden the shared data-table stack and add a first-class composed toolbar for search, filter chips, selection summary, and hidden-column recovery.

    maintainer

    The shared table controller now sanitizes stale row and column state, and the design-system exports `DataTableToolbar` as the preferred composed UX layer above the primitive tables.

    integrator

    Integrators can adopt `DataTableToolbar` without changing the underlying `DataTable` or `useContractTable` API, and server-paginated tables now behave more defensively when data, columns, or totals change.

    customer

    The CRM and canonical data-grid examples now expose search, filter chips, selection summaries, safer column recovery, and less failure-prone table interactions across web and native paths.

  • dataview-renderer-split

    Split DataViewRenderer.tsx into per-kind modules for extensibility.

    maintainer

    DataViewRenderer.tsx (809 lines) and DataViewRenderer.native.tsx (776 lines) are replaced by 13 focused modules. All public exports, props, and runtime behavior are preserved. New DataViewRendererSwitch with fallback prop enables adding graph/timeline kinds in Phase 3 without touching the orchestrator files.

    integrator

    No API changes. DataViewRenderer still exports the same props interface and renders the same output. Import paths from @lssm-tech/lib.design-system are unchanged.

  • design-system-adaptive-panel-native-behavior

    Native AdaptivePanel now honors mode/side/direction props, adds gesture swipe-to-dismiss, focus trap + accessibilityViewIsModal + dialog role, tokenized styles, and reduced-motion-gated spring/slide. Previously these props were declared but ignored.

    integrator

    BREAKING (native only) — the native AdaptivePanel previously ignored mode/mobileMode/desktopMode/breakpoint/sheetSide/drawerDirection (no-ops) and rendered a fixed bottom sheet with a stray always-visible, inert trigger. It now resolves the mode via useResponsive.native, slides from the resolved side/direction, supports react-native-gesture-handler swipe-to-dismiss (fires onOpenChange(false)), traps focus with accessibilityViewIsModal + a dialog role and returns focus on close, tokenizes the scrim/radius/max-height, and gates motion on reduced-motion. The `trigger` prop is now optional and, when provided, is rendered as a button that calls onOpenChange(true) on press (web Radix Sheet/Drawer parity) instead of an inert sibling; omit it for fully host-controlled panels. Any native consumer that passed these props will now see active behavior.

    agent

    Web AdaptivePanel is unchanged in behavior (Radix Sheet/Drawer) aside from tokenized max-height. The breaking change is scoped to the React Native lane.

  • design-system-codeblock-actions

    Add an opt-in download action and grouped action toolbar to the design-system CodeBlock.

    maintainer

    CodeBlock actions are now grouped in a token-aware toolbar, with copy preserved and an additive opt-in download action.

    integrator

    Consumers can enable code downloads with `showDownloadButton`, customize the saved filename with `downloadFilename`, and observe initiated downloads through `onDownload`.

  • design-system-codeblock-dual-theme

    Consolidate CodeBlock syntax highlighting on the design-system molecule with Shiki dual-theme support.

    maintainer

    The shared CodeBlock molecule now owns Shiki dual-theme rendering and ContractSpec/Tailwind token framing; web landing no longer carries a duplicate CodeBlock implementation.

    integrator

    Apps can use the design-system CodeBlock for syntax highlighting that follows the standard `.dark` application theme and can override the light/dark Shiki theme pair through props.

  • design-system-codeblock-metadata

    Add optional description and comment metadata slots to the design-system CodeBlock.

    maintainer

    CodeBlock can now carry filename-adjacent descriptions and footer comments without app-local wrapper text.

    integrator

    Use `description` to explain what a snippet is and `comment` to attach provenance, replay, safety, or interpretation notes.

    customer

    Evidence receipt code samples now include their replay context directly in the code block.

  • design-system-core-hardening

    Add focused design-system subpaths and harden ThemeSpec runtime, Tailwind bridge, form-control helpers, and form renderer internals without changing root-import compatibility.

    maintainer

    Maintainers now have smaller internal design-system modules and focused subpaths for theme, controls, forms, layout, and renderers.

    integrator

    Integrators can keep root imports or adopt focused subpaths such as `@lssm-tech/lib.design-system/theme` and `@lssm-tech/lib.design-system/forms`.

    customer

    Contract-rendered forms and themed controls keep the same behavior while the design-system internals become easier to maintain.

  • design-system-dataview-native-uplift

    Restore silently-dropped native DataView render props, replace Unicode mode-switcher glyphs with real icons, honor native field actions, add renderer-level empty/loading defaults with skeletons, and route FiltersToolbar copy through i18n.

    integrator

    Native DataViewRenderer now forwards renderFieldValue / getFieldClassName / getFieldLabelClassName / row-selection props (previously dropped at the native switch), renders real lucide-react-native mode icons (LayoutGrid/Table/List) instead of Unicode glyphs, honors intelligent field actions via the shared resolveFieldActionsPolicy (no longer hardcoded "hidden"), and provides renderer-level empty/loading defaults with animated skeletons. FiltersToolbar search/clear/remove copy is routed through resolveTranslationString (default English, localizable) instead of hardcoded French.

    agent

    fieldActions.shared.ts exposes the pure resolveFieldActionsPolicy(field,value,density,hostPolicy) resolver (guard precedence hidden->blocked->destructive->approval->auto; compact density trims copy) consumed read-only by both web and native field-action paths.

  • design-system-diffblock

    Add a ContractSpec-owned DiffBlock molecule for web and native diff review surfaces.

    maintainer

    DiffBlock is now owned by the design-system package, exposing a shared diff review primitive for web and native surfaces.

    integrator

    Consumers can import DiffBlock from the design system instead of reimplementing diff layout per surface.

  • design-system-entity-workspace-uplift

    Split EntityWorkspace web+native into internal modules, close native tone/feature parity, unify field rendering through a shared descriptor, add reduced-motion-gated micro-interactions, and render the detail empty-state inline in the master-detail pane.

    integrator

    EntityWorkspace public entries are unchanged; native now reaches parity — EntityMetricStrip/EntityEvidenceBlock gain tone coloring + useThemedPrimitive, the native results toolbar (search/filters/sort), toolbarActions, personalization, and renderDetail are wired, and native cards gain a reduced-motion-gated press micro-interaction. The web detail "select a record" empty-state now renders inline beside the list (no longer hidden behind a closed drawer when nothing is selected).

    agent

    Web and native field rendering are unified through internal/field-render.shared resolveEntityFieldDescriptor (descriptors, not JSX); the native NativeEntityDetail/NativeDetailField/formatNativeFieldValue reimplementation is removed. denial-token/redaction handling is shared across platforms.

  • design-system-select-groups

    Add grouped option support to design-system Select controls across web and native.

    maintainer

    The design-system Select wrappers now share grouped-option normalization and expose a typed grouped Select API.

    integrator

    Existing flat Select options keep working, while callers can opt into translated grouped option sections on web and native.

    customer

    Select controls can now present options in labelled groups consistently across web and native surfaces.

  • design-system-themed-controls

    Add a ThemeSpec-aware and TranslationSpec-aware design-system form/control layer with stack primitives, exported control wrappers, and FormSpec renderer alignment.

    maintainer

    Maintainers now have a shared design-system control boundary for forms, stacks, themes, translations, and FormSpec rendering.

    integrator

    Integrators can import themed and translated controls from `@lssm-tech/lib.design-system` instead of reaching into web or native UI kit primitives directly.

    customer

    Product surfaces and contract-rendered forms can now share the same ThemeSpec-aware and TranslationSpec-aware design-system controls across web and React Native.

  • design-system-token-backed-entity-primitives

    Add token-backed neutral EntityWorkspace metric and evidence primitive paths and align entity-surface docs.

    integrator

    Product shells can import neutral EntityMetricStrip and EntityEvidenceBlock subpaths with native-paired entrypoints while keeping domain copy in adapters.

    agent

    Entity-surface docs now recommend EntityWorkspace for product shells and keep DataViewRenderer positioned as the lower-level renderer path.

  • design-system-ux-uplift-foundation

    Add motion/elevation/density token scales, wire CVA tone/density variants, animate native skeletons, add useMotion(.native), and declare lane-split animation peer deps.

    integrator

    New motion (duration/easing), structured elevation (web box-shadow + native shadow object), and density token scales flow tokens.ts -> web CSS vars (--ds-motion/-elevation/-density-*) and native tokenBridge. New ./platform/useMotion(.native) hook returns reduced-motion-gated transition config. dsBaseVariants tone/density now emit token-backed classes.

    agent

    Animation libraries are declared as split-by-lane peers — framer-motion is a non-optional web peer (resolves via @lssm-tech/lib.ui-kit-web); react-native-reanimated/-gesture-handler/-svg are OPTIONAL native peers so web-only consumers are not required to install them.

  • entity-workspace-appshell-explicitness

    Require explicit EntityWorkspace and AppShell contracts across web and native design-system surfaces.

    maintainer

    EntityWorkspace and AppShell public props now enforce explicit host-owned state, callbacks, shell slots, and customization contracts at the type level.

    integrator

    Consumers must pass explicit nulls, empty collections, and no-op callbacks instead of relying on optional defaults for EntityWorkspace and AppShell.

  • entity-workspace-detail-navigation

    Add standardized EntityWorkspace detail-page navigation action props.

    maintainer

    EntityWorkspace now has first-class detail-page navigation props and tests covering web/native detail panel rendering.

    integrator

    Hosts can pass `buildDetailPageLink` and `onNavigateToDetailPage` to render a standard full-page navigation action inside the detail panel without coupling design-system to a router.

    customer

    Entity detail panels can now include a consistent full-page open action across web and native apps.

  • entity-workspace-listing-workbench

    Add cross-platform EntityWorkspace listing workbench controls with contract-aware intent resolution and host-owned side effects.

    maintainer

    Maintainers get additive public types and tests for EntityWorkspace workbench intent resolution without provider/runtime coupling.

    integrator

    App teams can use built-in EntityWorkspace create, refresh, force-sync, and cache status controls while executing concrete side effects in host adapters.

  • entity-workspace-native-fixes

    Fix React Native EntityWorkspace open actions, collection mode rendering, icon switcher affordances, and scrollable panels.

    maintainer

    Native EntityWorkspace now has regression coverage for Open row actions, native collection renderer resolution, icon switcher affordances, and scrollable AdaptivePanel content.

    integrator

    React Native and Expo hosts get working Open buttons on result cards/rows, distinct list/grid/table modes, accessible icon mode switching, and scrollable detail/edit panels.

    customer

    Native entity workspaces now open records from the Open button, show different list/grid/table views, and allow long detail or edit sheets to scroll.

  • forms-option-surface-aliases

    Add ThemeSpec Tailwind aliases for FormSpec option surface backgrounds.

    maintainer

    The ThemeSpec Tailwind bridge now emits shadcn-compatible color aliases for popover, card, and input surfaces.

    integrator

    Apps using generated design-system theme CSS get the color aliases expected by Radix/shadcn select and combobox primitives.

    customer

    Contract-rendered select and combobox option panels keep a proper themed surface instead of falling back to transparency when the app relies on ThemeSpec CSS.

  • forms-password-visibility-toggle

    Fix FormSpec password visibility toggles so rendered password fields can reveal and re-mask values.

    maintainer

    The web password primitive now keeps its computed `type` authoritative over upstream input props from FormSpec renderers.

    integrator

    Design-system FormSpec renderers can pass legacy `type: "password"` hints without disabling the visibility toggle.

    customer

    Contract-driven password fields now reveal the password when the visibility toggle changes from closed eye to open eye.

  • forms-phone-ux-regression

    Fix FormSpec phone country-select rendering to remove duplicated country adornments.

    customer

    Split FormSpec phone fields now show one clear country selector instead of duplicating the flag and calling code beside the select.

    integrator

    Design-system phone country options now honor the configured flag/calling-code display parts, while the selected country control owns those adornments in select mode.

  • m3-design-system-template-prop-shapes

    M3 — Breaking template prop shape changes across all 5 graph templates (remove onAction/isLive/time-scrub M2 props; add onDrilldown(node), p6, p7 tunnels). Density-state auto-shift. M3 engineer/manager signature treatments.

    maintainer

    All five graph templates have updated prop shapes. Remove M2 props (onAction, isLive, liveLabel, onRestoreView, steps, snapshotCursor, snapshotTimestamps, onScrub) and add M3 equivalents (onDrilldown, p6, p7).

    integrator

    Any code rendering WorkflowDagView, AgentTreeView, ConversationGraphView, EngineeringLoopView, or PersonActivityView must be updated to the M3 prop surface. onAction is removed; use onDrilldown(node). Time-scrub props replaced by TimeScrubber component.

    customer

    Graph template surfaces now support export, annotation, story-mode (via p6) and AI interaction (via p7). Analysis-mode triggers a visual density shift for richer exploration.

  • native-appshell-tabs

    Replace native AppShell custom bottom tabs with Expo Router NativeTabs layout-adapter behavior as a breaking native-shell behavior change.

    integrator

    Native AppShell now expects Expo Router layout usage and renders primary navigation through `expo-router/unstable-native-tabs` instead of the design-system custom BottomTabs row.

    maintainer

    AppShell native tab mapping is governed by `AppShell.native-helpers.ts`; unsafe primary tab hrefs fail fast and the public BottomTabs export remains available for non-shell consumers.

  • native-design-system-platform-suffix

    Migrate design-system platform implementation suffixes from `.mobile` to `.native`.

    integrator

    Design-system platform variants now use Metro's standard `.native` suffix and no longer publish `.mobile` subpaths.

    maintainer

    Package exports, registry metadata, and cross-platform UI docs now describe `.tsx` / `.native.tsx` renderer pairs.

  • native-form-renderer

    Add a React Native FormSpec renderer variant for contract-driven mobile screens.

    maintainer

    The design-system form-contract renderer now has native conditional exports and native slot wiring while preserving the existing web renderer.

    integrator

    React Native hosts can import the form-contract renderer through native package conditions or explicit `.native` subpaths to render FormSpec screens with design-system native controls.

    customer

    Contract-driven forms can now appear in mobile/native screens using the same FormSpec surface as web forms.

  • notion-page-outline

    Improve PageOutline desktop behavior with a Notion-like floating rail, and hide the AppShell page outline on small web screens to preserve layout stability.

    integrator

    AppShell consumers get a floating desktop PageOutline that no longer reserves a right content column, while small web screens hide the outline instead of rendering a compact dialog.

    maintainer

    Design-system maintainers can opt PageOutline into a floating variant while preserving existing rail and compact variants for direct component usage.

  • object-reference-handler

    Add an extensible design-system object reference handler for actionable references.

    maintainer

    The design-system package now exposes a public object-reference component group with schema-friendly descriptors, runtime action handlers, and paired web/native implementations.

    integrator

    Product surfaces can replace inert addresses, phone numbers, users, customers, files, URLs, and custom references with one extensible interaction surface.

    customer

    Reference text can now offer quick actions such as copy, open, call, or maps navigation from a consistent interaction surface.

  • rich-reference-breaking-release

    Rich-reference foundation — single coordinated release across 11 packages (S-0..S-13). See MIGRATION.md at the repo root.

    maintainer

    11-package coordinated release lands the rich-reference foundation. AC-17 release gate enforced via `.github/workflows/rich-reference-migration-gate.yml`.

    integrator

    Downstream consumers must run the bundled codemods (`@lssm-tech/tools.contractspec-codemods`) before bumping the 11 listed packages in lockstep. Chrome props (`filename`, `description`, `showDownloadButton`) are dropped on migrated `<CodeBlock>`/`<DiffBlock>` callsites — re-add per the patterns in `packages/tools/contractspec-codemods/MIGRATION.md`.

  • unified-design-system-tabs

    Add a unified design-system Tabs primitive and migrate local tab consumers away from ui-kit leaf imports.

    maintainer

    Maintainers can expose tabbed product surfaces through the design-system root instead of choosing between web and native UI-kit tab APIs.

    integrator

    Integrators can use one `Tabs` API with optional `value`, `defaultValue`, and `onValueChange` props across web and native surfaces.

    customer

    Example dashboards and execution consoles keep their existing tabbed UX while using the cross-platform design-system primitive.

Deprecations

  • - @lssm-tech/module.billing-os: BillingInvoice → InvoiceViewModel (@deprecated alias retained for backward compatibility; migrate to InvoiceViewModel.)
  • - @lssm-tech/module.billing-os: BillingLineItem → LineItemViewModel (@deprecated alias retained for backward compatibility; migrate to LineItemViewModel.)
  • - @lssm-tech/module.billing-os: BillingPayment → PaymentViewModel (@deprecated alias retained for backward compatibility; migrate to PaymentViewModel.)
  • - @lssm-tech/module.billing-os: BillingQuote → QuoteViewModel (@deprecated alias retained for backward compatibility; migrate to QuoteViewModel.)
  • - @lssm-tech/module.billing-os: BillingReadinessCheck → ReadinessCheckViewModel (@deprecated alias retained for backward compatibility; migrate to ReadinessCheckViewModel.)
  • - @lssm-tech/module.billing-os: BillingReadinessPacket → ReadinessPacketViewModel (@deprecated alias retained for backward compatibility; migrate to ReadinessPacketViewModel.)
  • - @lssm-tech/module.billing-os: BillingReviewItem → ReviewItemViewModel (@deprecated alias retained for backward compatibility; migrate to ReviewItemViewModel.)
  • - design-system: legacy `<CodeBlock>` molecule removed; use `<RichRef kind="code-symbol">` + per-kind layouts.
  • - design-system: legacy `<DiffBlock>` molecule removed; use `<RichRef kind="code-symbol" variant="diff">`.
  • - design-system: legacy `<ObjectReferenceHandler>` / `<ObjectReferencePanel>` removed; use `<RichRef>` + per-kind layouts.
  • - Direct imports such as `@lssm-tech/lib.design-system/components/molecules/Tabs.mobile` have been replaced by `.native` subpaths.
  • - id: design-system-communication-os-subpath; name: @lssm-tech/lib.design-system/components/communication-os; reason: Components belong in the module layer. Domain-specific composites should not live in the shared design-system.; removedIn: this release; replacement: @lssm-tech/module.communication-os/ui (CommOsLegacyComposites)
  • - id: template-islive; name: isLive and liveLabel props; reason: Live status is now managed internally via subscribeStatus badge; migration: Remove isLive and liveLabel props; use GraphSubscription SSE adapter to push live events
  • - id: template-onaction; name: onAction(id string) on all 5 graph templates; reason: Replaced by onDrilldown(node GraphNode) — receives full node object; migration: Replace onAction={(id) => fn(id)} with onDrilldown={(node) => fn(node.id)}
  • - id: template-onrestoreview; name: onRestoreView prop; reason: View restore is now handled internally by useSavedViewRestore; migration: Remove onRestoreView prop; saved view state is automatically persisted and restored
  • - id: template-time-scrub-props; name: steps, snapshotCursor, snapshotTimestamps, onScrub props; reason: Replaced by standalone TimeScrubber component from ui-kit-web; migration: Replace inline time-scrub prop cluster with <TimeScrubber> component; wire timestamps and cursor separately
  • - personalization: `@lssm-tech/lib.personalization/rich-code-preferences` removed; use `@lssm-tech/lib.personalization/rich-reference/preferences`.
  • - surface: @lssm-tech/lib.design-system/components/communication-os; symbol: entire subpath; reason: CommOS composite components belong in module.communication-os/ui (the canonical module boundary). Having them in lib.design-system violated the package architecture rule that foundational libs must not contain module-specific UI. ; removalVersion: pending G010 outcome; migrationSummary: Replace all imports from @lssm-tech/lib.design-system/components/communication-os with imports from @lssm-tech/module.communication-os/ui.

Migration guide

  • Native AdaptivePanel props are now active — audit side/direction/mode

    Required

    Props that were previously no-ops now drive rendered behavior. Audit native AdaptivePanel usages and confirm the intended sheetSide / drawerDirection / mode.

    1. In-repo affected consumers (both pass sheetSide="right", previously a no-op, now active) — EntityDetailPanel.native.tsx and EntityEditPanel.native.tsx. Both also pass a trigger Button that was previously inert decoration; it now opens the panel on press. Behavior change recorded; on-device §5b smoke gate pending (not yet verified on device).
    2. Downstream grep performed (DS-OQ-6) — native AdaptivePanel consumers are within design-system (EntityDetailPanel.native, EntityEditPanel.native). Web consumers (organisms Header/MarketingHeader, auth-os UI) use the unchanged web AdaptivePanel.
    3. Native apps must have react-native-gesture-handler + react-native-reanimated installed (optional peers) for swipe-to-dismiss and slide animation; without them the panel falls back to a static modal.
  • FiltersToolbar default copy is now English keys

    FiltersToolbar (web + native, and via DataTableToolbar) now renders English defaults ("Search"/"Clear filters"/"Remove filter") routed through the translation resolver; previously the copy was hardcoded French. Provide translations through the design-system translation provider to localize.

    1. Wire a translation resolver (useDesignSystemTranslation) to localize the default English keys.
    2. Tests asserting the previous French literals were updated to the English defaults.
  • Detail empty-state renders inline when no record is selected

    On the master-detail layout, the empty "select a record" placeholder now renders inline in the detail pane (web and native) when no item is selected; the drawer/AdaptivePanel is reserved for selected content on small screens.

    1. No API change. If a host asserted the empty placeholder was absent until a drawer opened, update to expect the inline placeholder.
  • Install native animation peers only for native apps

    Native (Expo/React Native) consumers must have react-native-reanimated, react-native-gesture-handler, and react-native-svg installed (they are optional peers). Web-only consumers are unaffected.

    1. Web consumers — no action; framer-motion resolves via @lssm-tech/lib.ui-kit-web.
    2. Native consumers — ensure reanimated/gesture-handler/svg are present (catalog:native versions) so animated skeletons and motion hooks run.
  • Internal split modules are excluded from the public export map

    Build-config/structure change — tsdown.config.js now excludes "!src/**/internal/**" from the entry glob so file-split implementation modules are not auto-published as public subpaths. No public subpath was added or removed by the split.

    1. No consumer action; do not import from design-system internal/ paths.
  • Use EntityWorkspace workbench controls for listing screens

    Replace bespoke list-page create/refresh/cache chrome with EntityWorkspace callbacks or sideEffectAdapter wiring.

    1. Pass onCreateNew/onRefresh/onForceSync for simple host-owned behavior.
    2. Pass cacheStatus for fresh/stale/syncing/offline/error visibility.
    3. Use sideEffectAdapter for contract-resolved intents and keep provider, TanStack, storage, and offline replay types out of EntityWorkspace props.
  • Pass every EntityWorkspace and AppShell contract prop explicitly

    Required

    Replace omitted props with an intentional value so ownership is visible in call sites.

    When: Upgrading any code that renders EntityWorkspace, AppShell, or their exported subcomponents.

    1. Pass explicit data state values such as items, selected item/id, selected ids, query source, filters, sort, pagination, density, data depth, and view mode.
    2. Pass explicit interaction callbacks, using no-op callbacks only when the host intentionally ignores an interaction.
    3. Pass explicit shell structure and customization slots, using null for absent slots and [] or {} for empty collections.
    4. Keep native and web props semantically aligned; do not add compatibility adapters or overload shims.
  • Mount native AppShell from an Expo Router layout

    Required

    Use AppShell.native at an Expo Router layout boundary so NativeTabs owns routed tab content.

    1. Render native AppShell from `app/_layout.tsx` or an equivalent Expo Router layout boundary.
    2. Use `/` for the index tab and single-segment hrefs such as `/settings` for primary tab routes.
    3. Keep nested, external, dynamic, disabled, or denied routes in overflow/menu surfaces instead of primary native tabs.
    4. Treat `children` as an overlay or utility slot outside the NativeTabs navigator, not as routed tab content.
    5. Primary native tab triggers intentionally map only labels and string/number badges; keep arbitrary ReactNode icons in overflow/menu surfaces until a governed native-safe icon descriptor exists.
  • Update imports from design-system to module

    Required

    Any code importing from @lssm-tech/lib.design-system/components/communication-os must be updated to import from @lssm-tech/module.communication-os/ui.

    1. Search codebase for "@lssm-tech/lib.design-system/components/communication-os".
    2. Replace with "@lssm-tech/module.communication-os/ui".
    3. The exported names are identical; no other changes are needed.
    4. Remove CommunicationDesignSystemContracts usage — it was dead code and is not re-exported.
  • Search for `from '@lssm-tech/lib.design-system/components/communication-os'` acr

    Required

    Search for `from '@lssm-tech/lib.design-system/components/communication-os'` across your codebase and replace with `from '@lssm-tech/module.communication-os/ui'`.

    1. Search for `from '@lssm-tech/lib.design-system/components/communication-os'` across your codebase and replace with `from '@lssm-tech/module.communication-os/ui'`.
  • All nine migrated composites are re-exported from the /ui entry point under the

    Required

    All nine migrated composites are re-exported from the /ui entry point under the same names. No prop changes required unless the component was also updated as part of G003–G009.

    1. All nine migrated composites are re-exported from the /ui entry point under the same names. No prop changes required unless the component was also updated as part of G003–G009.
  • Remove M2 props from all 5 graph template usages

    Required

    Find and remove onAction, isLive, liveLabel, onRestoreView, steps, snapshotCursor, snapshotTimestamps, onScrub from every template call site.

    1. Run grep -r "onAction\|isLive\|liveLabel\|onRestoreView\|snapshotCursor\|snapshotTimestamps\|onScrub" packages/ --include="*.tsx" to find all occurrences.
    2. Remove each prop from the JSX call site.
    3. Replace onAction with onDrilldown accepting GraphNode.
    4. If time-scrub was used, extract a standalone TimeScrubber component above the template.
  • Optionally add p6 and p7 tunnel props

    Wire P6 (export/annotation/story) and P7 (AI) features via the new tunnel props.

    1. Import GraphTemplateP6Props and GraphTemplateP7Props from ui-kit-web/ui/graph.
    2. Construct p6 config with ExportBar, AnnotationOverlay, and optionally PresenterSequence.
    3. Construct p7 config behind a feature flag; wire AiInputSlot and AiSuggestionConfirm.
    4. Pass p6 and/or p7 to the template as optional tunnel props.
  • Replace app-local CodeBlock with the design-system molecule

    Required

    Web landing and other apps should consume CodeBlock from the design system.

    1. Replace app-local CodeBlock implementations with `CodeBlock` from `@lssm-tech/lib.design-system`.
  • Run rich-reference codemods first

    Required

    Mechanical migration via the bundled codemod batch.

    1. bun packages/tools/contractspec-codemods/scripts/apply.ts --roots packages
  • Verify zero legacy-symbol hits

    Required

    AC-17 release-gated import-graph scan.

    1. bun packages/tools/contractspec-codemods/scripts/scan.ts --mode release --roots packages
  • Bump all 11 packages in lockstep

    Required

    Partial upgrade is unsupported; the packages share a registry, ports, and runtime invariants.

    1. Update package.json to bump all 11 packages to their new versions in a single commit.
  • Adopt the focused application shell subpath

    Existing shell-related imports keep working, but new application frames should use the focused shell entrypoint.

    When: When creating a new app shell or refactoring an existing navigation frame.

    1. Import AppShell and PageOutline from "@lssm-tech/lib.design-system/shell".
    2. Keep existing AppLayout, AppSidebar, AppHeader, NavLink, and NavSection imports where no refactor is needed.
    3. Use the public library docs prompts when migrating existing app frame structure.
  • Move high-level table UX into `DataTableToolbar`

    Keep the primitive `DataTable` lean and compose richer UX through the existing `toolbar` slot.

    When: When a table needs search, active chips, selection summary, or hidden-column recovery.

    1. Import `DataTableToolbar` from `@lssm-tech/lib.design-system`.
    2. Pass the existing table controller into `DataTableToolbar`.
    3. Keep product-specific buttons or filter toggles in `actionsStart` or `actionsEnd`.
  • Reset page-level UI state when server filters change

    The examples now reset page index when search or status filters change so server-mode tables stay aligned with remote pagination.

    When: When composing server-paginated tables with external search or filter state.

    1. Reset `pageIndex` whenever remote search or filter inputs change.
    2. Continue passing sorting and pagination through the shared controller state.
  • Prefer EntityWorkspace for product-shell entity surfaces

    Use EntityWorkspace and its neutral metric/evidence primitives when a surface needs workspace chrome; keep DataViewRenderer for renderer-focused examples.

    1. Import product-shell composition from `@lssm-tech/lib.design-system` or the focused `components/entity-workspace` subpaths.
    2. Keep domain-specific labels and policy copy in the caller adapter before passing neutral metrics or evidence rows.
    3. Verify web and React Native import paths when adding public entity-surface primitives.
  • Replace direct `.mobile` design-system imports

    Required

    Move direct design-system platform imports from `.mobile` to `.native`.

    1. Replace imports ending in `.mobile` with the matching `.native` subpath.
    2. Prefer unsuffixed design-system imports when the same call site should run on both web and native.
    3. Restart Metro after upgrading so stale package export maps are cleared.
  • Prefer design-system Tabs for shared product surfaces

    Consumers should import tabs from `@lssm-tech/lib.design-system` instead of lower-level UI-kit tab modules.

    When: When building or updating tabbed React or React Native UI.

    1. Replace `@lssm-tech/lib.ui-kit-web/ui/tabs` or `@lssm-tech/lib.ui-kit/ui/tabs` imports with `@lssm-tech/lib.design-system`.
    2. Use `defaultValue` for uncontrolled tabs, or `value` plus `onValueChange` for controlled tabs.
    3. Keep existing `TabsList`, `TabsTrigger`, and `TabsContent` structure.

Upgrade steps

  • Re-verify native AdaptivePanel behavior on device

    manual

    Confirm native open/close, resolved side/direction, swipe-to-dismiss, and reduced-motion behavior after previously ignored props became active.

    Packages: @lssm-tech/lib.design-system

    1. Confirm open and close behavior on each native AdaptivePanel usage.
    2. Confirm the resolved side or direction matches the intended mode, sheetSide, and drawerDirection props.
    3. Confirm swipe-to-dismiss calls onOpenChange(false).
    4. Confirm OS reduce-motion produces an instant show or hide instead of spring or slide animation.
  • Update host call sites for maximal explicitness

    manual

    Audit every EntityWorkspace and AppShell render site and make absence explicit.

    Packages: @lssm-tech/lib.design-system

    1. Use null for intentionally absent React slots.
    2. Use [] for intentionally empty lists and {} for intentionally empty state maps.
    3. Use no-op callbacks only when the action is intentionally host-inert.
    4. Re-run typecheck so missing ownership decisions surface as compiler errors.
  • Add full-page navigation from EntityWorkspace detail panels

    assisted

    Use `buildDetailPageLink` for route construction and `onNavigateToDetailPage` for app-owned router calls.

    Packages: @lssm-tech/lib.design-system

    1. Provide `buildDetailPageLink={({ itemId }) => `/entities/${itemId}`}` when route construction should be standardized.
    2. Provide `onNavigateToDetailPage={(event) => router.push(event.detailPageHref ?? `/entities/${event.itemId}`)}` from the host app.
    3. Override `detailPageActionLabel` when the default "Open full page" copy is not appropriate.
  • Verify native EntityWorkspace result actions and modes

    manual

    Apps using EntityWorkspace on React Native should smoke-test Open actions, list/grid/table mode changes, and long detail/edit panel content after upgrading.

    Packages: @lssm-tech/lib.design-system

    1. Open a native EntityWorkspace with row actions enabled.
    2. Press a result card or row and then press its Open/View action; both should open the same detail panel path.
    3. Switch between list, grid, and table modes and confirm each mode has a distinct native layout.
    4. Open a long detail or edit panel and confirm the panel content scrolls.
  • Use the native form-contract renderer in React Native screens

    manual

    Import `formRenderer` from `@lssm-tech/lib.design-system/renderers/form-contract` under React Native conditions, or import the explicit `.native` subpath when needed.

    Packages: @lssm-tech/lib.design-system

    1. Use `@lssm-tech/lib.design-system/renderers/form-contract` from Metro/React Native so package conditions resolve to the native renderer.
    2. Use `@lssm-tech/lib.design-system/renderers/form-contract.native` only when an explicit native subpath is preferred.
    3. Keep web screens on the existing default/browser renderer.
  • Run check-package-layer-boundaries after migration

    manual

    The CI lint guard will fail if any old import remains.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/module.communication-os

    1. Run "bun run scripts/check-package-layer-boundaries.ts" to verify no old path survives.
  • Update CommOS imports from design-system to module

    manual

    Replace design-system subpath imports with module.communication-os/ui

    Packages: @lssm-tech/lib.design-system

    1. Find all imports from @lssm-tech/lib.design-system/components/communication-os
    2. Replace with imports from @lssm-tech/module.communication-os/ui
    3. Run typecheck to confirm no regressions
  • Run the full M2-to-M3 prop migration

    manual

    Use the grep commands above, update each template usage, and verify type-checking passes.

    Packages: @lssm-tech/lib.design-system

    1. Address onAction → onDrilldown at every call site.
    2. Remove all deprecated time-scrub props.
    3. Run bun run typecheck in each affected package.
    4. Verify all 5 templates render correctly in engineer and manager role variants.
  • Wire PortsProvider with concrete port implementations

    assisted

    The new molecules (CustomerPicker, PriceBookItemPicker) call port methods at runtime. Wrap your BillingOS UI tree with PortsProvider and supply concrete SearchCustomersPort and SearchSellableItemsPort implementations.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/module.billing-os

    1. Import PortsProvider and the port interfaces from '@lssm-tech/module.billing-os'.
    2. Implement SearchCustomersPort.searchCustomers and SearchSellableItemsPort.searchSellableItems against your data layer.
    3. Wrap your billing page tree with <PortsProvider ports={...}>.
  • Migrate from deprecated Billing* type aliases to *ViewModel names

    assisted

    The pre-existing BillingQuote, BillingLineItem, etc. type aliases are soft-deprecated. Existing code continues to compile; update at your convenience.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/module.billing-os

    1. Search for BillingQuote, BillingLineItem, BillingInvoice, BillingPayment, BillingReviewItem, BillingReadinessCheck, BillingReadinessPacket in your codebase.
    2. Replace each with its *ViewModel counterpart from '@lssm-tech/module.billing-os'.
  • Enable CodeBlock downloads where useful

    assisted

    Pass `showDownloadButton` and optionally `downloadFilename` on design-system CodeBlock instances.

    Packages: @lssm-tech/lib.design-system

    1. Keep `showCopyButton` unchanged unless a surface intentionally hides copying.
    2. Use `downloadFilename` for user-facing snippets that should save with a specific extension.
  • Attach CodeBlock metadata where wrapper text was only explaining the snippet

    assisted

    Move filename-adjacent explanations into `description` and short captions into `comment`.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/example.companyos-ai-os-proofs

    1. Keep `filename` for artifact identity.
    2. Use `description` for the purpose of the code block.
    3. Use `comment` for provenance, safety, replay, or interpretation notes.
  • Read MIGRATION.md at the repo root

    manual

    Architecture, ports, canonical RichReference, markdown envelope, agent surface.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.personalization, @lssm-tech/lib.contracts-spec, @lssm-tech/lib.surface-runtime, @lssm-tech/lib.authos-runtime, @lssm-tech/lib.ui-kit, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit-core, @lssm-tech/integration.runtime, @lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields, @lssm-tech/tools.contractspec-codemods

    1. Open the repo-root MIGRATION.md and review the per-package compatibility intent.
    2. Cross-reference the detailed codemods MIGRATION.md for chrome-prop re-add recipes.
  • Re-add chrome props on call-sites that need them

    assisted

    Chrome-prop TODOs from the codemods are intentionally not auto-fixed.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.personalization, @lssm-tech/lib.contracts-spec, @lssm-tech/lib.surface-runtime, @lssm-tech/lib.authos-runtime, @lssm-tech/lib.ui-kit, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit-core, @lssm-tech/integration.runtime, @lssm-tech/tools.eslint-plugin-no-implicit-sensitivefields, @lssm-tech/tools.contractspec-codemods

    1. Audit `TODO(rich-ref migration): re-add chrome` anchors using grep.
    2. Apply the wrapper or per-kind-layout pattern documented in `packages/tools/contractspec-codemods/MIGRATION.md`.
  • Reuse AdaptivePanel for responsive overlay choices

    assisted

    Replace one-off sheet/drawer branching with AdaptivePanel when a surface should use sheets on desktop and drawers on mobile.

    Packages: @lssm-tech/lib.design-system

    1. Import `AdaptivePanel` from `@lssm-tech/lib.design-system`.
    2. Use the default responsive mode, or force `mode="sheet"` / `mode="drawer"` when product requirements need one presentation.
  • Explore enhanced agent workflow UI

    auto

    New screens provide full CRUD operations for agents, workflow builder with templates, review queue with feedback, and real-time dashboard.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.contracts-spec, @lssm-tech/lib.schema, @lssm-tech/app.web-landing

    1. Navigate to the agent workflow command center to see the enhanced UI.
    2. Try creating, editing, and cloning agents.
    3. Explore the workflow builder with template gallery.
    4. Use the review queue with action buttons and feedback.
    5. Customize the real-time dashboard with widgets.
  • Use AppShell and PageOutline for new application frames

    assisted

    New application shells should compose the focused shell primitives instead of rebuilding frame, navigation, breadcrumb, command, and outline behavior locally.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/bundle.library, @lssm-tech/bundle.marketing

    1. Import AppShell and PageOutline from "@lssm-tech/lib.design-system/shell".
    2. Keep legacy imports for existing AppLayout, AppSidebar, AppHeader, NavLink, and NavSection consumers.
    3. Re-run design-system and affected docs or app typechecks after adopting the shell subpath.
  • Re-run focused table verification after upgrading

    assisted

    The web, native, design-system, and example surfaces should be validated together because the UX and stability changes span all four layers.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.presentation-runtime-react, @lssm-tech/lib.ui-kit-web, @lssm-tech/lib.ui-kit, @lssm-tech/example.crm-pipeline, @lssm-tech/example.data-grid-showcase

    1. Run the focused table test suites in `presentation-runtime-react`, `ui-kit-web`, `ui-kit`, `design-system`, `example.crm-pipeline`, and `example.data-grid-showcase`.
    2. Re-run package typechecks and lint checks for the touched libraries and examples.
    3. Spot-check server-paginated and client-side examples to confirm search, chips, loading, empty states, and column recovery behave as expected.
  • Prefer focused subpaths for new imports

    assisted

    Existing root imports stay supported, but new code can import from focused design-system surfaces.

    Packages: @lssm-tech/lib.design-system

    1. Use `@lssm-tech/lib.design-system/theme` for ThemeSpec runtime and Tailwind helpers.
    2. Use `@lssm-tech/lib.design-system/controls` for themed and translated controls.
    3. Use `@lssm-tech/lib.design-system/forms` for form layouts, controls, and `ZodForm`.
    4. Use `@lssm-tech/lib.design-system/layout` for stack primitives.
  • Prefer design-system controls for themed and translated forms

    manual

    Use the design-system form and stack exports before dropping to platform-specific UI kit primitives.

    Packages: @lssm-tech/lib.design-system

    1. Wrap surfaces in `DesignSystemThemeProvider` when ThemeSpec or scoped theme overrides are available.
    2. Wrap surfaces in `DesignSystemTranslationProvider` when TranslationSpec messages should resolve labels or placeholders.
    3. Import controls such as `Select`, `Autocomplete`, `DatePicker`, `TimePicker`, `DateTimePicker`, `Box`, `HStack`, and `VStack` from `@lssm-tech/lib.design-system`.
  • Regenerate design-system exports

    manual

    Keep package exports and registry metadata aligned with `.native` source files.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/lib.presentation-runtime-core, @lssm-tech/bundle.library

    1. Run `cd packages/libs/design-system && bun run prebuild && bun run registry:build`.
    2. Verify no `*.mobile.tsx` platform files remain in `packages/libs/design-system/src`.
  • Use the floating PageOutline variant for wide desktop shells

    auto

    AppShell now uses the floating outline automatically on wide desktop and hides it on smaller web layouts; direct PageOutline consumers can still opt in with `variant="floating"` or `variant="compact"`.

    Packages: @lssm-tech/lib.design-system

    1. Use `variant="floating"` for direct web PageOutline usage that should reduce when inactive.
    2. Keep `variant="rail"` or `variant="compact"` where a static inline outline is still preferred.
    3. Place any custom small-screen outline UI outside AppShell if a product needs one.
  • Migrate direct tab imports

    manual

    Move tabbed product surfaces to the design-system root export.

    Packages: @lssm-tech/lib.design-system, @lssm-tech/example.agent-console, @lssm-tech/example.crm-pipeline, @lssm-tech/example.data-grid-showcase, @lssm-tech/module.builder-workbench, @lssm-tech/module.execution-console

    1. Import `Tabs`, `TabsList`, `TabsTrigger`, and `TabsContent` from `@lssm-tech/lib.design-system`.
    2. Add `@lssm-tech/lib.design-system` as a package dependency if the consumer package did not already depend on it.
    3. Re-run typecheck for the migrated package.

Unique release changes

  • - AC-17 release-gated import-graph scan.

    9 packages · 9 occurrences

  • - Architecture, ports, canonical RichReference, markdown envelope, agent surface.

    9 packages · 9 occurrences

  • - Chrome-prop TODOs from the codemods are intentionally not auto-fixed.

    9 packages · 9 occurrences

  • - design-system: legacy `<CodeBlock>` molecule removed; use `<RichRef kind="code-symbol">` + per-kind layouts.

    9 packages · 9 occurrences

  • - design-system: legacy `<DiffBlock>` molecule removed; use `<RichRef kind="code-symbol" variant="diff">`.

    9 packages · 9 occurrences

  • - design-system: legacy `<ObjectReferenceHandler>` / `<ObjectReferencePanel>` removed; use `<RichRef>` + per-kind layouts.

    9 packages · 9 occurrences

  • - Mechanical migration via the bundled codemod batch.

    9 packages · 9 occurrences

  • - Partial upgrade is unsupported; the packages share a registry, ports, and runtime invariants.

    9 packages · 9 occurrences

  • - personalization: `@lssm-tech/lib.personalization/rich-code-preferences` removed; use `@lssm-tech/lib.personalization/rich-reference/preferences`.

    9 packages · 9 occurrences

  • - Rich-reference foundation — single coordinated release across 11 packages (S-0..S-13). See MIGRATION.md at the repo root.

    9 packages · 9 occurrences

  • - @lssm-tech/module.billing-os: BillingInvoice → InvoiceViewModel (@deprecated alias retained for backward compatibility; migrate to InvoiceViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingLineItem → LineItemViewModel (@deprecated alias retained for backward compatibility; migrate to LineItemViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingPayment → PaymentViewModel (@deprecated alias retained for backward compatibility; migrate to PaymentViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingQuote → QuoteViewModel (@deprecated alias retained for backward compatibility; migrate to QuoteViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingReadinessCheck → ReadinessCheckViewModel (@deprecated alias retained for backward compatibility; migrate to ReadinessCheckViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingReadinessPacket → ReadinessPacketViewModel (@deprecated alias retained for backward compatibility; migrate to ReadinessPacketViewModel.)

    4 packages · 4 occurrences

  • - @lssm-tech/module.billing-os: BillingReviewItem → ReviewItemViewModel (@deprecated alias retained for backward compatibility; migrate to ReviewItemViewModel.)

    4 packages · 4 occurrences

  • - Add BillingOS UI uplift — Cluster A + B ports, presenter seam, atoms, molecules, and templates.

    4 packages · 4 occurrences

  • - Enhanced agent-workflow-command-center with comprehensive UI interactions

    4 packages · 4 occurrences

  • - Harden the shared data-table stack and add a first-class composed toolbar for search, filter chips, selection summary, and hidden-column recovery.

    4 packages · 4 occurrences

  • - Keep the primitive `DataTable` lean and compose richer UX through the existing `toolbar` slot.

    4 packages · 4 occurrences

  • - New screens provide full CRUD operations for agents, workflow builder with templates, review queue with feedback, and real-time dashboard.

    4 packages · 4 occurrences

  • - The examples now reset page index when search or status filters change so server-mode tables stay aligned with remote pagination.

    4 packages · 4 occurrences

  • - The new molecules (CustomerPicker, PriceBookItemPicker) call port methods at runtime. Wrap your BillingOS UI tree with PortsProvider and supply concrete SearchCustomersPort and SearchSellableItemsPort implementations.

    4 packages · 4 occurrences

  • - The pre-existing BillingQuote, BillingLineItem, etc. type aliases are soft-deprecated. Existing code continues to compile; update at your convenience.

    4 packages · 4 occurrences

  • - The web, native, design-system, and example surfaces should be validated together because the UX and stability changes span all four layers.

    4 packages · 4 occurrences

  • - Add a unified design-system Tabs primitive and migrate local tab consumers away from ui-kit leaf imports.

    3 packages · 3 occurrences

  • - Add design-system application shell primitives with typed navigation, command search, breadcrumbs, native bottom-tab adaptation, and PageOutline support.

    3 packages · 3 occurrences

  • - Consumers should import tabs from `@lssm-tech/lib.design-system` instead of lower-level UI-kit tab modules.

    3 packages · 3 occurrences

  • - Direct imports such as `@lssm-tech/lib.design-system/components/molecules/Tabs.mobile` have been replaced by `.native` subpaths.

    3 packages · 3 occurrences

  • - Existing shell-related imports keep working, but new application frames should use the focused shell entrypoint.

    3 packages · 3 occurrences

  • - Keep package exports and registry metadata aligned with `.native` source files.

    3 packages · 3 occurrences

  • - Migrate design-system platform implementation suffixes from `.mobile` to `.native`.

    3 packages · 3 occurrences

  • - Move direct design-system platform imports from `.mobile` to `.native`.

    3 packages · 3 occurrences

  • - Move tabbed product surfaces to the design-system root export.

    3 packages · 3 occurrences

  • - New application shells should compose the focused shell primitives instead of rebuilding frame, navigation, breadcrumb, command, and outline behavior locally.

    3 packages · 3 occurrences

  • - Add token-backed neutral EntityWorkspace metric and evidence primitive paths and align entity-surface docs.

    2 packages · 2 occurrences

  • - Any code importing from @lssm-tech/lib.design-system/components/communication-os must be updated to import from @lssm-tech/module.communication-os/ui.

    2 packages · 2 occurrences

  • - Fix FormSpec password visibility toggles so rendered password fields can reveal and re-mask values.

    2 packages · 2 occurrences

  • - id: design-system-communication-os-subpath; name: @lssm-tech/lib.design-system/components/communication-os; reason: Components belong in the module layer. Domain-specific composites should not live in the shared design-system.; removedIn: this release; replacement: @lssm-tech/module.communication-os/ui (CommOsLegacyComposites)

    2 packages · 2 occurrences

  • - Move CommunicationOS composite presentational components from lib.design-system to module.communication-os (CommOsLegacyComposites).

    2 packages · 2 occurrences

  • - The CI lint guard will fail if any old import remains.

    2 packages · 2 occurrences

  • - Use EntityWorkspace and its neutral metric/evidence primitives when a surface needs workspace chrome; keep DataViewRenderer for renderer-focused examples.

    2 packages · 2 occurrences

  • - Add a ContractSpec-owned DiffBlock molecule for web and native diff review surfaces.

    1 packages · 1 occurrences

  • - Add a React Native FormSpec renderer variant for contract-driven mobile screens.

    1 packages · 1 occurrences

  • - Add a ThemeSpec-aware and TranslationSpec-aware design-system form/control layer with stack primitives, exported control wrappers, and FormSpec renderer alignment.

    1 packages · 1 occurrences

  • - Add an extensible design-system object reference handler for actionable references.

    1 packages · 1 occurrences

  • - Add an opt-in download action and grouped action toolbar to the design-system CodeBlock.

    1 packages · 1 occurrences

  • - Add cross-platform EntityWorkspace listing workbench controls with contract-aware intent resolution and host-owned side effects.

    1 packages · 1 occurrences

  • - Add focused design-system subpaths and harden ThemeSpec runtime, Tailwind bridge, form-control helpers, and form renderer internals without changing root-import compatibility.

    1 packages · 1 occurrences

  • - Add grouped option support to design-system Select controls across web and native.

    1 packages · 1 occurrences

  • - Add motion/elevation/density token scales, wire CVA tone/density variants, animate native skeletons, add useMotion(.native), and declare lane-split animation peer deps.

    1 packages · 1 occurrences

  • - Add optional description and comment metadata slots to the design-system CodeBlock.

    1 packages · 1 occurrences

  • - Add standardized EntityWorkspace detail-page navigation action props.

    1 packages · 1 occurrences

  • - Add ThemeSpec Tailwind aliases for FormSpec option surface backgrounds.

    1 packages · 1 occurrences

  • - All nine migrated composites are re-exported from the /ui entry point under the same names. No prop changes required unless the component was also updated as part of G003–G009.

    1 packages · 1 occurrences

  • - Apps using EntityWorkspace on React Native should smoke-test Open actions, list/grid/table mode changes, and long detail/edit panel content after upgrading.

    1 packages · 1 occurrences

  • - AppShell now uses the floating outline automatically on wide desktop and hides it on smaller web layouts; direct PageOutline consumers can still opt in with `variant="floating"` or `variant="compact"`.

    1 packages · 1 occurrences

  • - Audit every EntityWorkspace and AppShell render site and make absence explicit.

    1 packages · 1 occurrences

  • - Build-config/structure change — tsdown.config.js now excludes "!src/**/internal/**" from the entry glob so file-split implementation modules are not auto-published as public subpaths. No public subpath was added or removed by the split.

    1 packages · 1 occurrences

  • - Confirm native open/close, resolved side/direction, swipe-to-dismiss, and reduced-motion behavior after previously ignored props became active.

    1 packages · 1 occurrences

  • - Consolidate CodeBlock syntax highlighting on the design-system molecule with Shiki dual-theme support.

    1 packages · 1 occurrences

  • - Existing root imports stay supported, but new code can import from focused design-system surfaces.

    1 packages · 1 occurrences

  • - FiltersToolbar (web + native, and via DataTableToolbar) now renders English defaults ("Search"/"Clear filters"/"Remove filter") routed through the translation resolver; previously the copy was hardcoded French. Provide translations through the design-system translation provider to localize.

    1 packages · 1 occurrences

  • - Find and remove onAction, isLive, liveLabel, onRestoreView, steps, snapshotCursor, snapshotTimestamps, onScrub from every template call site.

    1 packages · 1 occurrences

  • - Fix AppShell desktop sidebar collapse/layout and web notification dismissal behavior.

    1 packages · 1 occurrences

  • - Fix FormSpec phone country-select rendering to remove duplicated country adornments.

    1 packages · 1 occurrences

  • - Fix React Native EntityWorkspace open actions, collection mode rendering, icon switcher affordances, and scrollable panels.

    1 packages · 1 occurrences

  • - id: template-islive; name: isLive and liveLabel props; reason: Live status is now managed internally via subscribeStatus badge; migration: Remove isLive and liveLabel props; use GraphSubscription SSE adapter to push live events

    1 packages · 1 occurrences

  • - id: template-onaction; name: onAction(id string) on all 5 graph templates; reason: Replaced by onDrilldown(node GraphNode) — receives full node object; migration: Replace onAction={(id) => fn(id)} with onDrilldown={(node) => fn(node.id)}

    1 packages · 1 occurrences

  • - id: template-onrestoreview; name: onRestoreView prop; reason: View restore is now handled internally by useSavedViewRestore; migration: Remove onRestoreView prop; saved view state is automatically persisted and restored

    1 packages · 1 occurrences

  • - id: template-time-scrub-props; name: steps, snapshotCursor, snapshotTimestamps, onScrub props; reason: Replaced by standalone TimeScrubber component from ui-kit-web; migration: Replace inline time-scrub prop cluster with <TimeScrubber> component; wire timestamps and cursor separately

    1 packages · 1 occurrences

  • - Import `formRenderer` from `@lssm-tech/lib.design-system/renderers/form-contract` under React Native conditions, or import the explicit `.native` subpath when needed.

    1 packages · 1 occurrences

  • - Improve PageOutline desktop behavior with a Notion-like floating rail, and hide the AppShell page outline on small web screens to preserve layout stability.

    1 packages · 1 occurrences

  • - M3 — Breaking template prop shape changes across all 5 graph templates (remove onAction/isLive/time-scrub M2 props; add onDrilldown(node), p6, p7 tunnels). Density-state auto-shift. M3 engineer/manager signature treatments.

    1 packages · 1 occurrences

  • - Migrate CommOS composite components out of lib.design-system into module.communication-os/ui (G010)

    1 packages · 1 occurrences

  • - Move filename-adjacent explanations into `description` and short captions into `comment`.

    1 packages · 1 occurrences

  • - Native (Expo/React Native) consumers must have react-native-reanimated, react-native-gesture-handler, and react-native-svg installed (they are optional peers). Web-only consumers are unaffected.

    1 packages · 1 occurrences

  • - Native AdaptivePanel now honors mode/side/direction props, adds gesture swipe-to-dismiss, focus trap + accessibilityViewIsModal + dialog role, tokenized styles, and reduced-motion-gated spring/slide. Previously these props were declared but ignored.

    1 packages · 1 occurrences

  • - On the master-detail layout, the empty "select a record" placeholder now renders inline in the detail pane (web and native) when no item is selected; the drawer/AdaptivePanel is reserved for selected content on small screens.

    1 packages · 1 occurrences

  • - Pass `showDownloadButton` and optionally `downloadFilename` on design-system CodeBlock instances.

    1 packages · 1 occurrences

  • - Promote object-reference detail panels to a reusable adaptive sheet/drawer surface.

    1 packages · 1 occurrences

  • - Props that were previously no-ops now drive rendered behavior. Audit native AdaptivePanel usages and confirm the intended sheetSide / drawerDirection / mode.

    1 packages · 1 occurrences

  • - Replace bespoke list-page create/refresh/cache chrome with EntityWorkspace callbacks or sideEffectAdapter wiring.

    1 packages · 1 occurrences

  • - Replace design-system subpath imports with module.communication-os/ui

    1 packages · 1 occurrences

  • - Replace native AppShell custom bottom tabs with Expo Router NativeTabs layout-adapter behavior as a breaking native-shell behavior change.

    1 packages · 1 occurrences

  • - Replace omitted props with an intentional value so ownership is visible in call sites.

    1 packages · 1 occurrences

  • - Replace one-off sheet/drawer branching with AdaptivePanel when a surface should use sheets on desktop and drawers on mobile.

    1 packages · 1 occurrences

  • - Require explicit EntityWorkspace and AppShell contracts across web and native design-system surfaces.

    1 packages · 1 occurrences

  • - Restore silently-dropped native DataView render props, replace Unicode mode-switcher glyphs with real icons, honor native field actions, add renderer-level empty/loading defaults with skeletons, and route FiltersToolbar copy through i18n.

    1 packages · 1 occurrences

  • - Route design-system mobile menu overlays through the shared AdaptivePanel primitive.

    1 packages · 1 occurrences

  • - Search for `from '@lssm-tech/lib.design-system/components/communication-os'` across your codebase and replace with `from '@lssm-tech/module.communication-os/ui'`.

    1 packages · 1 occurrences

  • - Split DataViewRenderer.tsx into per-kind modules for extensibility.

    1 packages · 1 occurrences

  • - Split EntityWorkspace web+native into internal modules, close native tone/feature parity, unify field rendering through a shared descriptor, add reduced-motion-gated micro-interactions, and render the detail empty-state inline in the master-detail pane.

    1 packages · 1 occurrences

  • - surface: @lssm-tech/lib.design-system/components/communication-os; symbol: entire subpath; reason: CommOS composite components belong in module.communication-os/ui (the canonical module boundary). Having them in lib.design-system violated the package architecture rule that foundational libs must not contain module-specific UI. ; removalVersion: pending G010 outcome; migrationSummary: Replace all imports from @lssm-tech/lib.design-system/components/communication-os with imports from @lssm-tech/module.communication-os/ui.

    1 packages · 1 occurrences

  • - Use `buildDetailPageLink` for route construction and `onNavigateToDetailPage` for app-owned router calls.

    1 packages · 1 occurrences

  • - Use AppShell.native at an Expo Router layout boundary so NativeTabs owns routed tab content.

    1 packages · 1 occurrences

  • - Use the design-system form and stack exports before dropping to platform-specific UI kit primitives.

    1 packages · 1 occurrences

  • - Use the grep commands above, update each template usage, and verify type-checking passes.

    1 packages · 1 occurrences

  • - Web landing and other apps should consume CodeBlock from the design system.

    1 packages · 1 occurrences

  • - Wire P6 (export/annotation/story) and P7 (AI) features via the new tunnel props.

    1 packages · 1 occurrences

Impacted packages

  • @lssm-tech/app.web-landing

    Layer: apps · 2 changes

  • @lssm-tech/bundle.library

    Layer: bundles · 4 changes

  • @lssm-tech/bundle.marketing

    Layer: bundles · 3 changes

  • @lssm-tech/integration.runtime

    Layer: integrations · 10 changes

  • @lssm-tech/lib.authos-runtime

    Layer: libs · 10 changes

  • @lssm-tech/lib.billing-runtime

    Layer: libs · 10 changes

  • @lssm-tech/lib.billing-spec

    Layer: libs · 10 changes

  • @lssm-tech/lib.contracts-spec

    Layer: libs · 2 changes

  • @lssm-tech/lib.design-system

    Layer: libs · 3 changes

  • @lssm-tech/lib.personalization

    Layer: libs · 10 changes

  • @lssm-tech/lib.presentation-runtime-core

    Layer: libs · 4 changes

  • @lssm-tech/lib.presentation-runtime-react

    Layer: libs · 4 changes

  • @lssm-tech/lib.schema

    Layer: libs · 2 changes

  • @lssm-tech/lib.surface-runtime

    Layer: libs · 10 changes

  • @lssm-tech/lib.ui-kit

    Layer: libs · 4 changes

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

    Layer: libs · 10 changes

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

    Layer: libs · 1 changes

  • @lssm-tech/module.billing-os

    Layer: modules · 10 changes

  • @lssm-tech/module.builder-workbench

    Layer: modules · 3 changes

  • @lssm-tech/module.communication-os

    Layer: modules · 4 changes

  • @lssm-tech/module.execution-console

    Layer: modules · 3 changes