Repository navigation
feat(designer): add shared node UI library and Storybook - #9677
Krrish Mittal (takyyon) wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
🔵 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
7a1a434 to
a77489c
Compare
📊 Coverage Check🎉 All changed files have adequate test coverage! |
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
|
Fixed in |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d098db2-b8b8-4232-93ca-221c47e368da
Commit Type
Risk Level
What & Why
Introduce
@microsoft/designer-ui-v2as the shared node-presentation library,with thin designer-v2 adapters behind the default-off
useSharedNodeUioption.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
/metricsAPIs directly from currentsource. 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
tsupcleanup writers. Give only the tworeal stylesheet-build integration cases a 30-second deadline while retaining
their CSS assertions.
Architecture and usage
@microsoft/designer-ui-v2@microsoft/designer-ui-v2/metricsUse 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
useSharedNodeUiretains legacy presentation. Opted-indesigner-v2 uses the shared compositions, scoped popovers and extraction
preview. This does not migrate Otto's consumer or enable a production rollout.
theme overrides; hosts retain localization, operation identity, graph
interactions and dynamic measurement. Run
pnpm --filter @microsoft/designer-ui-v2 storybookfrom the repository rootfor the component catalog on port 6006.
private: trueand is externalized bydesigner-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
mainat3593d9268d08ae4d0e7692e8f61e9c49f2c72071.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:libpasses 314/314 across 15 files, both directlyand 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 threedesigner 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 areactual bundled Standalone Local samples with
useSharedNodeUi=true; the catalogis 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.
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.
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.
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.
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.
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.