Skip to content

feat(designer): add shared node UI library and Storybook - #9677

Open
Krrish Mittal (takyyon) wants to merge 4 commits into
mainfrom
krmitta-microsoft-symmetrical-parakeet
Open

Krrish Mittal (takyyon) wants to merge 4 commits into
mainfrom
krmitta-microsoft-symmetrical-parakeet

Conversation

@takyyon

@takyyon Krrish Mittal (takyyon) commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

Commit Type

  • feature - New functionality
  • fix - Bug fix
  • refactor - Code restructuring without behavior change
  • perf - Performance improvement
  • docs - Documentation update
  • test - Test-related changes
  • chore - Maintenance/tooling

Risk Level

  • Low - Minor changes, limited scope
  • Medium - Moderate changes, some user impact
  • High - Major changes, significant user/system impact

What & Why

Introduce @microsoft/designer-ui-v2 as the shared node-presentation library,
with thin designer-v2 adapters behind the default-off useSharedNodeUi option.
This keeps cards, primitives, glyphs, scoped tokens and numeric metrics in one
place without moving host state, workflow mutations, graph handles or layout
policy into the presentation package.

Add library-local Storybook with 32 public visual components, 136 stories,
component prop documentation and documentation for the 18 nonvisual exports.
Stories import the supported root and /metrics APIs directly from current
source. An export-aware inventory check rejects unclassified public values or
missing visual-component coverage.

Repair the 18 previously skipped test scenarios and QuickView's stale-store
test setup without weakening regression assertions. Correct the extraction
preparation effect's service-lifetime dependencies and cover stale completion,
replacement and cancellation. Correct the shared subtitle's semantic foreground
token: stock Agent caption contrast is now 6.9:1 light and 12.4:1 dark, without
changing typography, geometry or surface colors.

Make the localization extraction pre-commit task filename-independent. Its
script already defines its own input globs; forwarding every staged filename
also sent E2E import-attribute syntax to the older localization parser. The
lint-staged configuration now returns the canonical extraction command from a
function while preserving the original ESLint/Biome tasks and file handling.

Make Turbo own the shared-library build prerequisite instead of rebuilding from
the test script, avoiding competing tsup cleanup writers. Give only the two
real stylesheet-build integration cases a 30-second deadline while retaining
their CSS assertions.

Architecture and usage

Responsibility Owner
Cards, primitives, canonical glyphs, scoped tokens and typed string contracts @microsoft/designer-ui-v2
Numeric geometry and timing without React @microsoft/designer-ui-v2/metrics
Metadata, translated strings, operation identity and connector imagery Consuming host
Workflow state/mutations, real graph handles, layout and dynamic measurement Consuming host
Default-off integration and navigation-only extraction preview Thin designer-v2 adapters

Use the public package APIs rather than copying components or importing
source/build paths. The library-local examples resolve those same public
specifiers to current source, so no prior package build or designer host is
needed. Light/dark scopes are paired with Fluent providers; RTL sets both
provider direction and DOM direction.

Impact of Change

  • Users: Omitted/false useSharedNodeUi retains legacy presentation. Opted-in
    designer-v2 uses the shared compositions, scoped popovers and extraction
    preview. This does not migrate Otto's consumer or enable a production rollout.
  • Developers: Use canonical public components, typed strings and scoped
    theme overrides; hosts retain localization, operation identity, graph
    interactions and dynamic measurement. Run
    pnpm --filter @microsoft/designer-ui-v2 storybook from the repository root
    for the component catalog on port 6006.
  • System: The library remains private: true and is externalized by
    designer-v2. Storybook dependencies are development-only and stay outside
    production bundle entries and declarations. A parent/version-scoped pnpm
    override keeps polished 4.3.1 on compatible Babel 7 without weakening the
    security floor or changing the global override.

This PR does not publish the package to npm or enable a production rollout.
Coordinated package availability, formal release/design requirements and matched
two-host acceptance remain separate gates.
Cold native renderer-return callback-time visibility remains an explicit
measurement boundary; uninterrupted painted-frame continuity is not claimed.

Test Plan

  • Unit tests added/updated

  • E2E tests added/updated

  • Manual testing completed

  • Tested in: Node 22.21.0 / pnpm 9.1.3; automated Chromium against built
    Standalone and Storybook assets with same-origin route fulfillment, without
    a listener.

  • Full designer-v2 project: 249 files, 3,552 passed, zero failed/skipped/todo.
    File-qualified comparison retains all 3,497 original test identities and adds
    55; all eight copy/paste cases are present and there are no empty suites.

  • Shared library: 116 passed, including canonical metrics object identity,
    exact namespace and literal/read-only type contracts. The original snapshot
    run matched all 57 exercised snapshots without updates; earlier snapshot
    deltas cover generated class/ID and ARIA compatibility.

  • Rebased onto main at 3593d9268d08ae4d0e7692e8f61e9c49f2c72071.
    The latest repair is f3562fceb71744c83274afc9c4eccd53bd6286f6.

  • Actual complete-package Istanbul reports meet the unchanged 80% whole-file
    gate for all nine previously failing paths: metrics 2/2, strings 5/5, parser
    153/155, selectors 393/434, workflow reducer 402/501, Controls 38/38,
    Flow 237/246, dropzone 69/78 and extraction preview 22/22.

  • Actual Standalone test:lib passes 314/314 across 15 files, both directly
    and through the forced, uncached Turbo task. All test identities and assertions
    are preserved. This exercises the actual CI entrypoint, not only the nested
    management/Local configuration, which separately passed 305/305.

  • Standalone now uses a dedicated Vitest configuration instead of browser Vite
    plugins that replaced native filesystem APIs with browser polyfills. The
    browser configuration is unchanged. The two DOM suites declare jsdom, reuse
    the existing icon fixture and retain the real Fluent provider, CSSOM checks
    and filesystem token audit.

  • Shared management/recurrence passes 383/383 and legacy UI recurrence 7/7.
    Upstream management-host tests remain discovered by the test configuration.

  • Semantic TypeScript, both ESM/declaration builds, actual packed-root typed
    consumer and React-free metrics checks passed. Expanded semantic checking of
    the new designer tests also passes.

  • All nine frame audits pass on the test-only instrumented, production-built
    offline host, retaining all 919 RAF samples. Only the native wrapper's own
    inline hiding during explicitly requested measurement acquisition is allowed;
    that interval closes on its first actually visible native RAF. Shared,
    settled-native, viewport and host-layout frames remain strict. Presence,
    positive finite geometry and ancestor checks apply to every sample.
    This is not a native Portal run or proof of uninterrupted painted continuity.

  • Dependency-policy tests: 6 passed. Public Storybook inventory: 5 passed.
    Storybook typecheck and static build passed.

  • ESLint: 167 eligible files, zero errors/warnings; 39 existing ignored paths
    explicitly excluded. Biome: 205 files checked, zero errors.

  • The actual pre-commit hook completed extraction, ESLint and Biome on the
    staged source without disabling or bypassing the hook.

  • Static Storybook: 264 successful render checks covering all 136 stories and
    all 32 visual exports, with actual light/dark and provider/DOM direction.

  • All 10 authored play functions completed, plus Agent in dark/RTL. Axe
    completed with zero violations in these 11 scenarios; this is not a
    comprehensive accessibility certification.

  • Manager navigation, rendered API tables, working controls, popup focus/Escape,
    reduced-motion/forced-colors emulation and a 390px card viewport passed.
    No console/page errors, missing assets or external requests were recorded.

  • Earlier native-host checks retain their documented cold-measurement REDs and
    separate setup recoveries. They are not represented as an all-green host run.

The results above distinguish local validation from current-head CI. On
f3562fceb71744c83274afc9c4eccd53bd6286f6, Node 20/22/24 builds, all three
designer E2E shards, all three chat E2E shards, CodeQL, checks and the complete
VS Code suites including Windows passed.
Coverage attempt 2
also passed both the test step and unchanged whole-changed-file coverage gate.
The first attempt's iframe initialization timeout and retry cascade remain in
its logs; the unchanged iframe suite passed 5/5 in 175 ms on the rerun.
Turbo reused successful task outputs, so this is not a claim that every
library test reran uncached. No code or assertion changed between attempts,
and the original timeout's underlying timing cause is not claimed proven.
The latest commit repairs the previous stylesheet timeout, coverage gaps and
overbroad native-return audit contract without changing production measurement
behavior.

Separately, the
PR AI validation
failed before evaluating the PR: its full-diff API request exceeds GitHub's
20,000-line limit (HTTP 406). This infrastructure issue remains unresolved,
not waived.
Live Storybook development/HMR and a local Node 20/24 matrix were not executed.

Contributors

Screenshots/Videos

Captured from 76adc0126865afb9aca9b9c61a5afac8b44907b6. The workflows are
actual bundled Standalone Local samples with useSharedNodeUi=true; the catalog
is the actual compiled Storybook. These are not Azure Portal captures, live
workflow runs or native-host parity evidence. Images are attachments, not
committed files.

Conditional workflow

Recurrence, variable initialization and True/False branches with their own
actions, ports and insertion controls.

Shared nodes in a complete conditional workflow

Agent and MCP tools in dark theme

The host composes the trigger, agent, model label and regular/MCP tools from the
shared presentation. The managed MCP warning reflects an unconfigured Local
fixture, not a connected model or successful tool run.

Dark workflow with an agent, regular tool and built-in and managed MCP tools

Parallel branches and Response parameters

The run-after graph remains host-owned. The selected Response shows status 200
and its header/body tokens in the real parameter editor; no workflow was run.

Parallel workflow branches beside the selected Response parameter editor

Storybook run states in light and dark scopes

All nine action-card states appear together, with catalog navigation and real
Controls. These are presentational states, not workflow execution results.

Storybook light scope showing all nine action-card run states and Controls

Storybook dark scope showing the same nine action-card run states

Interactive Agent composition and Controls

The authored interaction completed. The tools section is expanded, a third
local tool has been added and the title changed through the actual Controls input.

Storybook agent with three expanded tools and an edited title in Controls

Component documentation and extension slots

The documentation includes the complete state matrix and a custom glyph and
annotation-slot example, with catalog navigation, outline and Show code controls.

Storybook component documentation with complete state and custom-slot examples

Copilot AI balanced review requested due to automatic review settings October 29, 2026 14:55
@takyyon Krrish Mittal (takyyon) added the risk:high High risk change requiring careful review label Oct 29, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Native-host renderer and measurement parity still require human validation beyond the reported Storybook checks, while the new private runtime dependency needs publication coordination.

No open issues 🎉

What changed in this PR

Introduces the private @microsoft/designer-ui-v2 shared node-presentation library and Storybook catalog, with designer-v2 integration behind the default-off useSharedNodeUi option. Workflow state, mutations, graph interactions, and layout remain host-owned.

Changes:

  • Adds reusable node cards, primitives, glyphs, scoped theme tokens, string contracts, and React-free metrics.
  • Integrates shared presentation into designer-v2 cards, handles, extraction previews, and viewport controls.
  • Adds stories and regression coverage, dependency-boundary checks, build configuration, and filename-independent localization extraction.

This pull request requires changes.

Moderate — libs/designer-ui-v2/package.json:44: The shared-library test rebuild can race with Turbo’s separate shared-library build, allowing both tasks to write build/lib concurrently. With clean: true, outputs can disappear during declaration emission or metrics tests. Make the shared-library test depend on its Turbo build task and run only Vitest in the test script.

File Description
turbo.json Adds shared-library build dependencies for designer-v2 tasks.
scripts/​update-versions.js Includes the new package in version updates.
scripts/​check-designer-ui-policy.js Enforces dependency and legacy-folder boundaries.
package.json Adjusts dependency overrides and relocates lint-staged configuration.
lint-staged.config.js Runs localization extraction without staged filenames.
libs/​designer/​package.json Aligns the Tabster dependency.
libs/​designer-v2/​vitest.config.ts Configures Fluent UI dependency processing in tests.
libs/​designer-v2/​tsup.config.ts Externalizes shared UI package entry points.
libs/​designer-v2/​src/​lib/​ui/​panel/​multiSelectPanel/​workflowExtractionPreview.ts Projects operation identity into shared previews.
libs/​designer-v2/​src/​lib/​ui/​panel/​multiSelectPanel/​useSharedWorkflowExtractionPreviewInternals.ts Tracks preview measurements and refreshes graph handles.
libs/​designer-v2/​src/​lib/​ui/​panel/​multiSelectPanel/​sharedWorkflowExtractionPreview.styles.ts Styles the shared preview canvas and controls.
libs/​designer-v2/​src/​lib/​ui/​MonitoringTimeline/​__tests__/​__snapshots__/​TimelineHeader.test.tsx.snap Updates generated Fluent button classes.
libs/​designer-v2/​src/​lib/​ui/​designerViewport.ts Fits graph bounds around host overlays.
libs/​designer-v2/​src/​lib/​ui/​Designer.tsx Wires shared backgrounds and viewport controls.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​PlaceholderNode.tsx Adapts shared trigger placeholders to host commands.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​OperationCardNode.tsx Supplies metadata to the presentation adapter.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​handles/​useHandlePresentation.ts Selects handles using accepted node presentation.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​handles/​handles.styles.ts Defines shared port positioning and sizing.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​handles/​EdgeDrawTargetHandle.tsx Combines shared input dots with graph targets.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​handles/​EdgeDrawSourceHandle.tsx Combines shared output dots with graph sources.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​handles/​DefaultHandle.tsx Supports contained ports and shared merge points.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​useOperationNodeIcon.tsx Resolves glyphs, connector loading, and image fallbacks.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​SharedNodeHoverCard.tsx Adapts localized information popovers and focus targets.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​scopeNodePresentation.ts Reads serialized model deployment identity.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​operationNodeGlyphs.tsx Maps host operation identities to shared glyphs.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​OperationNodeCard.tsx Selects legacy or shared operation presentation.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​components/​card/​__test__/​operationNodeGlyphs.spec.tsx Tests manifest-backed glyph mappings.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​__test__/​SubgraphCardNode.spec.tsx Covers shared tool commands and read-only restrictions.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​__test__/​PlaceholderNode.spec.tsx Covers keyboard activation and read-only behavior.
libs/​designer-v2/​src/​lib/​ui/​CustomNodes/​__test__/​CollapsedCardNode.spec.tsx Covers shared collapse identity, focus, and commands.
libs/​designer-v2/​src/​lib/​ui/​Controls.tsx Uses presentation-aware viewport fitting.
libs/​designer-v2/​src/​lib/​ui/​connections/​onlyEdge.tsx Adds shared edge strokes and interaction paths.
libs/​designer-v2/​src/​lib/​ui/​connections/​connections.styles.ts Defines shared connection-control and hit-path styles.
libs/​designer-v2/​src/​lib/​ui/​connections/​__tests__/​onlyEdge.spec.tsx Covers shared, legacy, and hidden edges.
libs/​designer-v2/​src/​lib/​ui/​__test__/​designerViewport.spec.ts Tests fitting around overlays and outlying notes.
libs/​designer-v2/​src/​lib/​ui/​__test__/​Designer.spec.tsx Tests shared defaults and host-supplied backgrounds.
libs/​designer-v2/​src/​lib/​ui/​__test__/​Controls.sharedViewport.spec.tsx Tests fitting during presentation transitions.
libs/​designer-v2/​src/​lib/​core/​utils/​workflowExtraction.ts Refines schema handling and parameter type narrowing.
libs/​designer-v2/​src/​lib/​core/​utils/​parameters/​__test__/​helper.spec.ts Restores expression-conversion regression coverage.
libs/​designer-v2/​src/​lib/​core/​state/​workflow/​workflowSlice.ts Records valid observed node dimensions.
libs/​designer-v2/​src/​lib/​core/​state/​workflow/​workflowSelectors.ts Reuses the single-handoff predicate for graph pruning.
libs/​designer-v2/​src/​lib/​core/​state/​workflow/​helper.ts Centralizes single-handoff detection.
libs/​designer-v2/​src/​lib/​core/​state/​designerOptions/​designerOptionsSlice.ts Defaults shared presentation to disabled.
libs/​designer-v2/​src/​lib/​core/​state/​designerOptions/​designerOptionsSelectors.ts Exposes the shared-presentation selector.
libs/​designer-v2/​src/​lib/​core/​state/​designerOptions/​designerOptionsInterfaces.ts Defines the optional integration flag.
libs/​designer-v2/​src/​lib/​core/​state/​__test__/​designerOptionsServices.spec.ts Covers supplied and omitted service initialization.
libs/​designer-v2/​src/​lib/​core/​parsers/​ParseReduxAction.ts Preserves observed dimensions across graph reconstruction.
libs/​designer-v2/​src/​lib/​core/​parsers/​models/​workflowNode.ts Adds dimension-observation metadata.
libs/​designer-v2/​src/​lib/​core/​DesignerProvider.tsx Provides the shared theme and popup scope.
libs/​designer-v2/​package.json Adds shared UI and aligns Fluent dependencies.
libs/​designer-ui-v2/​vitest.config.ts Configures shared-library tests and coverage.
libs/​designer-ui-v2/​tsup.config.ts Builds UI and metrics entry points.
libs/​designer-ui-v2/​tsconfig.storybook.json Typechecks stories against public source aliases.
libs/​designer-ui-v2/​tsconfig.json Configures strict library declaration generation.
libs/​designer-ui-v2/​test-setup.ts Registers DOM assertions and render cleanup.
libs/​designer-ui-v2/​stories/​TriggerNodeCard.stories.tsx Demonstrates trigger states, glyphs, and orientation.
libs/​designer-ui-v2/​stories/​ToolItemCard.stories.tsx Demonstrates tool kinds, sizes, and run states.
libs/​designer-ui-v2/​stories/​storyFixtures.tsx Supplies reusable fixtures, controls, and preference reporting.
libs/​designer-ui-v2/​stories/​story.css Styles catalog layouts and examples.
libs/​designer-ui-v2/​stories/​PlaceholderTriggerCard.stories.tsx Demonstrates placeholder selection and localization.
libs/​designer-ui-v2/​stories/​NodeToolConnector.stories.tsx Demonstrates controlled tool attachment and activation.
libs/​designer-ui-v2/​stories/​NodeText.stories.tsx Demonstrates truncation and hover-context tooltips.
libs/​designer-ui-v2/​stories/​NodeTestDataIndicator.stories.tsx Demonstrates default and custom accessible labels.
libs/​designer-ui-v2/​stories/​NodeStatusBadge.stories.tsx Demonstrates statuses, localization, and motion preferences.
libs/​designer-ui-v2/​stories/​NodeOutputHandles.stories.tsx Demonstrates output ordering, orientation, and slots.
libs/​designer-ui-v2/​stories/​NodeMergePoint.stories.tsx Demonstrates merge labels, slots, and inactive states.
libs/​designer-ui-v2/​stories/​NodeLine.stories.tsx Demonstrates line variants and orientation.
libs/​designer-ui-v2/​stories/​NodeLabeledHandle.stories.tsx Demonstrates branch labels and connector lengths.
libs/​designer-ui-v2/​stories/​NodeInputHandle.stories.tsx Demonstrates contextual input positioning and slots.
libs/​designer-ui-v2/​stories/​NodeIconTile.stories.tsx Demonstrates categories, selection, and test-data treatment.
libs/​designer-ui-v2/​stories/​NodeHandle.stories.tsx Demonstrates decorative handle variants and slots.
libs/​designer-ui-v2/​stories/​NodeFrame.stories.tsx Demonstrates frame kinds, headers, ports, and actions.
libs/​designer-ui-v2/​stories/​NodeCardFooter.stories.tsx Demonstrates footer icons and consumer actions.
libs/​designer-ui-v2/​stories/​NodeCardBody.stories.tsx Demonstrates density and test-data spacing.
libs/​designer-ui-v2/​stories/​NodeCard.stories.tsx Demonstrates shell dimensions, surfaces, and status placement.
libs/​designer-ui-v2/​stories/​NodeAddButton.stories.tsx Demonstrates activation and disabled states.
libs/​designer-ui-v2/​stories/​NodeActionAdd.stories.tsx Demonstrates composed add-action presentation.
libs/​designer-ui-v2/​stories/​LoopNodeCard.stories.tsx Demonstrates loop placements, slots, and collapse controls.
libs/​designer-ui-v2/​stories/​IfIconRegular.stories.tsx Documents regular glyphs and the public glyph vocabulary.
libs/​designer-ui-v2/​stories/​IfIconFilled.stories.tsx Documents the filled condition glyph.
libs/​designer-ui-v2/​stories/​EdgePillButton.stories.tsx Demonstrates reveal behavior and keyboard activation.
libs/​designer-ui-v2/​stories/​DesignerUiScope.stories.tsx Demonstrates themes, outlets, and local token overrides.
libs/​designer-ui-v2/​stories/​ConditionNodeCard.stories.tsx Demonstrates branches, case normalization, and localization.
libs/​designer-ui-v2/​stories/​CollapseChip.stories.tsx Demonstrates controlled collapse and count boundaries.
libs/​designer-ui-v2/​stories/​AgentToolsPanel.stories.tsx Demonstrates controlled tool addition and expansion.
libs/​designer-ui-v2/​stories/​ActionNodeCard.stories.tsx Demonstrates action states and host keyboard semantics.
libs/​designer-ui-v2/​src/​theme/​tokens.ts Defines scoped semantic token references.
libs/​designer-ui-v2/​src/​nodes/​types.ts Defines presentation categories, statuses, and visual kinds.
libs/​designer-ui-v2/​src/​nodes/​strings.ts Defines typed string contracts and English defaults.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeText.tsx Adds truncating text with semantic subtitle foreground.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeTestDataIndicator.tsx Adds an accessible test-data indicator.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeStatusBadge.tsx Adds localized status badges and reduced-motion handling.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeMergePoint.tsx Adds a labeled junction with host-port slots.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeLine.tsx Adds decorative lines and reusable stroke styles.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeLabeledHandle.tsx Composes branch dots, labels, and dashed lines.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeIconTile.tsx Adds category-aware regular and selected artwork.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeCardBody.tsx Adds card bodies, footers, and test-data placement.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeAddButton.tsx Adds a labeled callback-driven add button.
libs/​designer-ui-v2/​src/​nodes/​primitives/​NodeActionAdd.tsx Composes add buttons with decorative connections.
libs/​designer-ui-v2/​src/​nodes/​primitives/​IfIcon.tsx Adds regular and filled condition glyphs.
libs/​designer-ui-v2/​src/​nodes/​primitives/​CollapseChip.tsx Adds controlled collapse presentation and accessible counts.
libs/​designer-ui-v2/​src/​nodes/​metrics.ts Centralizes numeric geometry and hover timing.
libs/​designer-ui-v2/​src/​nodes/​index.ts Exports the node-presentation API.
libs/​designer-ui-v2/​src/​nodes/​glyphs.ts Defines canonical regular/filled glyph pairs.
libs/​designer-ui-v2/​src/​nodes/​cards/​TriggerNodeCard.tsx Composes trigger-card presentation.
libs/​designer-ui-v2/​src/​nodes/​cards/​ToolItemCard.tsx Composes standard and compact tool cards.
libs/​designer-ui-v2/​src/​nodes/​cards/​shared.ts Defines common card props and icon resolution.
libs/​designer-ui-v2/​src/​nodes/​cards/​ConditionNodeCard.tsx Composes condition and switch presentation.
libs/​designer-ui-v2/​src/​nodes/​cards/​categoryIcons.tsx Defines category fallback glyphs.
libs/​designer-ui-v2/​src/​nodes/​cards/​ActionNodeCard.tsx Composes ordinary action presentation.
libs/​designer-ui-v2/​src/​nodes/​__test__/​previewHandles.spec.tsx Tests handle suppression without losing content slots.
libs/​designer-ui-v2/​src/​nodes/​__test__/​metrics-build.spec.ts Checks React-free built metrics and declarations.
libs/​designer-ui-v2/​src/​nodes/​__test__/​infoIconFallback.spec.tsx Tests card and information-icon fallback consistency.
libs/​designer-ui-v2/​src/​metrics.ts Exposes the standalone metrics entry point.
libs/​designer-ui-v2/​src/​index.ts Exposes package-level presentation and theme APIs.
libs/​designer-ui-v2/​package.json Defines private packaging, exports, peers, and catalog scripts.
libs/​designer-ui-v2/​CHANGELOG.md Records provisional package scope and release boundaries.
libs/​designer-ui-v2/​.storybook/​preview.tsx Adds theme/direction decorators and documentation defaults.
libs/​designer-ui-v2/​.storybook/​main.ts Configures current-source public API aliases.
libs/​designer-ui-v2/​.gitignore Excludes generated Storybook assets.
e2e/​designer/​sharedNodeUiMonitoring.spec.ts Covers Agent paging and monitoring restrictions in both modes.
apps/​Standalone/​vite.e2e.config.ts Deduplicates Fluent UI packages for E2E hosting.
apps/​Standalone/​vite.config.ts Deduplicates Fluent UI packages during development.
apps/​Standalone/​src/​designer/​app/​LocalDesigner/​pseudoCommandBar.tsx Registers the shared-mode footer viewport inset.
apps/​Standalone/​src/​designer/​app/​LocalDesigner/​localWorkflowManifest.ts Reuses the offline operation-manifest service.
apps/​Standalone/​src/​designer/​app/​LocalDesigner/​localOperationManifestService.ts Supplies offline Compose metadata for Local Standard.
apps/​Standalone/​src/​designer/​app/​LocalDesigner/​localDesignerV2.tsx Adds explicit query-string opt-in and offline metadata.
apps/​Standalone/​src/​designer/​app/​LocalDesigner/​__test__/​localWorkflowManifest.spec.ts Tests complete offline Compose resolution.
apps/​Standalone/​src/​designer/​app/​AzureLogicAppsDesigner/​__test__/​vitest.config.ts Includes LocalDesigner tests and Fluent setup.
apps/​Standalone/​src/​designer/​app/​AzureLogicAppsDesigner/​__test__/​sharedNodeUiActivation.spec.tsx Tests exact opt-in values and offline service selection.
apps/​Standalone/​src/​designer/​app/​AzureLogicAppsDesigner/​__test__/​sharedNodeTheme.spec.tsx Tests shared tokens against actual Fluent themes.
apps/​Standalone/​package.json Aligns Fluent components and icons with shared presentation.
.gitignore Allows the new package changelog.
.github/​workflows/​test.yml Adds shared UI dependency and boundary checks.
.github/​workflows/​pr-coverage.yml Adds the shared package to coverage enforcement.

Review effort: Balanced

Introduce the private shared presentation library and default-off designer-v2
adapters, preserving native graph ownership and legacy rendering.

Add complete public-component Storybook coverage, repair skipped and stale
test fixtures, and keep dependency, localization and commit-hook boundaries
aligned with the supported component tooling.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: efd6e8ea-1722-473a-af4e-ade9b36da4e1
Copilot-Session: 1d098db2-b8b8-4232-93ca-221c47e368da
@takyyon
Krrish Mittal (takyyon) force-pushed the krmitta-microsoft-symmetrical-parakeet branch from 7a1a434 to a77489c Compare October 29, 2026 15:12
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

📊 Coverage Check

🎉 All changed files have adequate test coverage!

@takyyon Krrish Mittal (takyyon) added risk:medium Medium risk change with potential impact and removed risk:high High risk change requiring careful review labels Oct 29, 2026
Run package tests with a dedicated Vitest configuration so browser polyfills
do not replace native filesystem imports. Preserve React and Fluent resolution,
mark DOM fixtures explicitly, and reuse the existing icon fixture without
mocking the real provider or weakening assertions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: efd6e8ea-1722-473a-af4e-ade9b36da4e1
Copilot-Session: 1d098db2-b8b8-4232-93ca-221c47e368da
Give Turbo sole ownership of the shared UI build and scope production stylesheet build timeouts. Audit cold native measurement explicitly while retaining strict shared and settled visibility. Cover the integration behavior with drained async tests and preserve canonical public metrics identity.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: efd6e8ea-1722-473a-af4e-ade9b36da4e1
Copilot-Session: 1d098db2-b8b8-4232-93ca-221c47e368da
@takyyon

Copy link
Copy Markdown
Collaborator Author

Fixed in f3562fce. The test script now runs only Vitest; Turbo owns the build prerequisite, so both test tasks share one build instead of launching competing tsup writers. Direct build-before-test use is documented in the package README.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1d098db2-b8b8-4232-93ca-221c47e368da

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:medium Medium risk change with potential impact

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants