Compare commits

...

8 Commits

Author SHA1 Message Date
DrJKL
836e156e9a docs: add ADR 0011 for fallow adoption; switch config to .jsonc
Move .fallowrc.json to .fallowrc.jsonc (fallow reads JSONC, keeping the
per-entry rationale comments) and document the adoption in ADR 0011.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 11:45:31 -07:00
DrJKL
f25e12a2fa chore: make repo fallow-compliant with narrow exceptions and audit baselines
Configure fallow so `fallow audit` gates only newly introduced dead code,
complexity, and duplication while the inherited legacy is captured in
per-analysis baselines.

Narrow, documented exceptions in .fallowrc.json (each with a why):
- entry: CLI/build scripts, Storybook configs, codegen config (roots fallow
  can't infer)
- ignorePatterns: public assets, devtools artifacts, Storybook-only mocks
- ignoreDependencies: build-time icon sets, config-loaded lint/style plugins,
  vite locale aliases, and pnpm-hoisted phantom deps in apps/desktop-ui
- ignoreExports: public extension API (litegraph, src/types, scripts/ui),
  generated OpenAPI types, and dynamically-imported cloud/astro modules
- ignoreUnresolvedImports: bundler-resolved static asset + generated sibling

Exceptions mirror the existing knip exception ledger where they overlap.

Baselines (.fallow-baselines/, relative paths, CI-portable) hold the residual
litegraph/store members, intra-lib cycles, duplicate test fixtures, and the
marketing file pending page adoption. They are a migration aid — shrink and
re-save as the underlying code is cleaned up.

Adds `pnpm fallow` and `pnpm fallow:audit` scripts. `fallow audit` passes and
`fallow dead-code`/`dupes` are clean against their baselines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 00:38:11 -07:00
DrJKL
460959e2b5 test: remove stale vi.mock paths for moved/deleted modules
These vi.mock() calls targeted module paths that no longer exist
(toastStore, settingStore, firebaseAuthStore, useFirebaseAuth, SearchBox,
NodeDragPreview, useRetriggerableAnimation, config/version) after the
modules moved or were renamed. Each mock was inert — the system under test
imports the real (relocated) module, so the stale-path factory never
applied. Removing them is behavior-preserving (all 193 affected tests stay
green) and clears fallow's unresolved-import findings.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 00:37:12 -07:00
DrJKL
887b534757 refactor: delete dead duplicate CreditSlider copy
src/platform/cloud/subscription/components/CreditSlider.{vue,test.ts,
stories.ts} was a stale, drifted copy with no production importer. The live
component is src/components/ui/credit-slider/CreditSlider.vue (used by
UnifiedPricingTable). The subscription copy was only referenced by its own
test and story, so it is removed wholesale — no merge needed.

fallow's other "duplicate exports" were reviewed and left as-is: they are
same-name/different-type definitions (User: API zod type vs store interface;
WidgetValue, JobListItem, ModelFile), deliberate re-export shims (ComfyDialog
via ui.ts), or litegraph-vs-renderer geometry types kept separate by the
layering rules. Consolidating them would break types or add speculative
shared modules, so none are changed here.
2026-06-28 22:09:13 -07:00
DrJKL
84326e34d0 refactor: remove unused OAuthConsentDecision type
The OAuthConsentDecision type alias had no references anywhere (the
function submitOAuthConsentDecision is not annotated with it, and nothing
imports it). Removed.

The other type/enum candidates fallow flagged were verified as NOT dead and
are left untouched:
- NodeBadgeMode.None/ShowAll/HideBuiltIn: consumed via Object.values across
  coreSettings, apiSchema (zod enum), and the badge composables.
- src/types/index.ts barrel and litegraph types: public/extension surface.
- generatedManagerTypes paths/webhooks/$defs/operations: openapi-codegen
  output, not hand-editable.
2026-06-28 22:03:24 -07:00
DrJKL
100f2defd5 refactor: remove dead exports
Remove exported symbols with zero consumers, verified by repo-wide grep
(including browser_tests, stories, and dynamic imports).

- clampUsd (comfyCredits.ts): fully unused, deleted.
- getRootParentNode (graphTraversalUtil.ts): no production importer; the
  only references were three stale vi.mock factory keys in the
  rightSidePanel/errors tests, which are removed alongside it.
- createMarkdownRenderer (markdownRendererUtil.ts): used only within its
  own module, downgraded from export to local.

Deliberately kept (fallow flagged, but verified as real usage):
- learningEvents, cloudOnboardingRoutes, ClickHouseTelemetryProvider,
  useShareDialog: consumed via dynamic import / astro page.
- getGalleryItemById (@knipIgnoreUsedByStackedPR), createImageHost
  (@knipIgnoreUnusedButUsedByCustomNodes): pre-annotated intentional keeps.
- storybook/mocks job exports: consumed via the .storybook vite alias.
- menu/index shim, types barrel, litegraph: public/extension surface.
2026-06-28 22:00:41 -07:00
DrJKL
b9948f5351 chore: remove unused dependencies
Drop direct deps fallow flagged as never imported. The primeuix/primevue
packages remain available transitively via primevue, and jiti remains via
eslint, so no install graph capability is lost.

Removed:
- @primeuix/forms, @primeuix/styled, @primevue/icons (transitive via primevue)
- jiti (transitive via eslint; only used to load the TS eslint config)
- stale @types/eslint '-' override (nothing requests @types/eslint)

Kept after verification (fallow false positives):
- eslint-plugin-playwright (.oxlintrc.json jsPlugins)
- postcss-html (.stylelintrc.json customSyntax)
- @iconify-json/lucide (design-system loadIconSet at build time)

Also drop the three removed packages from knip.config.ts ignoreDependencies.
2026-06-28 21:52:24 -07:00
DrJKL
88f2628e1e chore: add fallow dev dependency, scripts, and minimal config
Adds the fallow codebase-intelligence analyzer as a devDependency with
`pnpm fallow` (full scan) and `pnpm fallow:audit` (changed-files gate)
scripts and a minimal .fallowrc.json (entry points + duplicate-clone
threshold). Ignores the .fallow/ cache dir.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 18:43:30 -07:00
31 changed files with 4815 additions and 811 deletions

View File

@@ -0,0 +1,707 @@
{
"unused_files": ["apps/website/src/utils/marketingImage.ts"],
"unused_exports": [],
"unused_types": [],
"private_type_leaks": [],
"unused_dependencies": [],
"unused_dev_dependencies": [],
"circular_dependencies": [
"apps/website/src/components/ui/button-mask/ButtonMask.vue->apps/website/src/components/ui/button-mask/index.ts",
"browser_tests/fixtures/ComfyPage.ts->browser_tests/fixtures/components/QueuePanel.ts",
"browser_tests/fixtures/ComfyPage.ts->browser_tests/fixtures/components/SubgraphEditor.ts->browser_tests/fixtures/helpers/SubgraphHelper.ts",
"src/components/dialog/content/setting/keybinding/EditKeybindingFooter.vue->src/composables/useEditKeybindingDialog.ts",
"src/composables/graph/useMoreOptionsMenu.ts->src/composables/graph/useSelectionMenuOptions.ts",
"src/composables/maskeditor/useCanvasHistory.ts->src/stores/maskEditorStore.ts",
"src/composables/sidebarTabs/useJobHistorySidebarTab.ts->src/stores/workspace/sidebarTabStore.ts",
"src/composables/useLoad3d.ts->src/services/load3dService.ts",
"src/composables/useLoad3dViewer.ts->src/services/load3dService.ts",
"src/composables/usePaste.ts->src/scripts/app.ts",
"src/core/graph/subgraph/promotionUtils.ts->src/renderer/core/canvas/canvasStore.ts",
"src/core/graph/subgraph/promotionUtils.ts->src/services/litegraphService.ts",
"src/core/graph/widgets/dynamicWidgets.ts->src/services/litegraphService.ts",
"src/lib/litegraph/src/ContextMenu.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/ContextMenu.ts->src/lib/litegraph/src/LiteGraphGlobal.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/DragAndScale.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/DragAndScale.ts->src/lib/litegraph/src/LGraphCanvas.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/DragAndScale.ts->src/lib/litegraph/src/LiteGraphGlobal.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/LGraph.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/LGraphCanvas.ts->src/lib/litegraph/src/LGraphGroup.ts",
"src/lib/litegraph/src/LGraphCanvas.ts->src/lib/litegraph/src/LGraphNode.ts",
"src/lib/litegraph/src/LGraphCanvas.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/LGraphGroup.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/LGraphNode.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/LGraphNode.ts->src/lib/litegraph/src/utils/collections.ts",
"src/lib/litegraph/src/Reroute.ts->src/lib/litegraph/src/litegraph.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/node/NodeInputSlot.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/node/NodeOutputSlot.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/subgraph/SubgraphNode.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/subgraph/subgraphUtils.ts",
"src/lib/litegraph/src/litegraph.ts->src/lib/litegraph/src/widgets/LegacyWidget.ts",
"src/lib/litegraph/src/node/NodeInputSlot.ts->src/lib/litegraph/src/node/NodeSlot.ts",
"src/platform/cloud/subscription/composables/useSubscriptionDialog.ts->src/services/dialogService.ts",
"src/platform/missingMedia/missingMediaStore.ts->src/scripts/app.ts",
"src/platform/missingModel/missingModelStore.ts->src/scripts/app.ts",
"src/platform/nodeReplacement/missingNodesErrorStore.ts->src/scripts/app.ts",
"src/platform/settings/settingStore.ts->src/scripts/app.ts",
"src/platform/workflow/core/services/workflowService.ts->src/scripts/app.ts",
"src/platform/workflow/core/services/workflowService.ts->src/stores/subgraphNavigationStore.ts",
"src/platform/workflow/management/stores/workflowStore.ts->src/scripts/app.ts",
"src/platform/workspace/stores/workspaceAuthStore.ts->src/stores/authStore.ts",
"src/renderer/extensions/vueNodes/composables/useSlotElementTracking.ts->src/scripts/app.ts",
"src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts->src/scripts/widgets.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/button/PackInstallButton.vue->src/workbench/extensions/manager/composables/nodePack/usePackInstall.ts->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/button/PackInstallButton.vue->src/workbench/extensions/manager/composables/nodePack/usePackInstall.ts->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/button/PackInstallButton.vue->src/workbench/extensions/manager/composables/nodePack/usePackInstall.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/button/PackUpdateButton.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/PackVersionBadge.vue->src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/PackVersionBadge.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/button/PackEnableToggle.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanelMultiItem.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanelMultiItem.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/infoPanel/InfoPanelMultiItem.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/packCard/PackCard.vue->src/workbench/extensions/manager/components/manager/packCard/PackCardFooter.vue->src/workbench/extensions/manager/composables/useConflictDetection.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/components/manager/packCard/PackCard.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/composables/nodePack/useMissingNodes.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/composables/nodePack/useUpdateAvailableNodes.ts->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerDisplayPacks.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts",
"src/workbench/extensions/manager/components/manager/ManagerDialog.vue->src/workbench/extensions/manager/composables/useManagerDialog.ts->src/workbench/extensions/manager/composables/useManagerState.ts->src/workbench/extensions/manager/services/comfyManagerService.ts->src/workbench/extensions/manager/stores/comfyManagerStore.ts"
],
"re_export_cycles": [],
"unused_optional_dependencies": [],
"unused_enum_members": [
"packages/object-info-parser/src/classifiers/nodeSource.ts:NodeBadgeMode.None",
"packages/object-info-parser/src/classifiers/nodeSource.ts:NodeBadgeMode.ShowAll",
"packages/object-info-parser/src/classifiers/nodeSource.ts:NodeBadgeMode.HideBuiltIn",
"src/lib/litegraph/src/draw.ts:SlotShape.Circle",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.None",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.TopLeft",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.TopCentre",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.TopRight",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.MidCentre",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.BottomLeft",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.BottomCentre",
"src/lib/litegraph/src/types/globalEnums.ts:Alignment.BottomRight"
],
"unused_class_members": [
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.recordingButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.stopRecordingButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.exportRecordingButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.clearRecordingButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.recordingDuration",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gridToggleButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.uploadBackgroundImageButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.removeBackgroundImageButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.panoramaModeButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.openViewerButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gizmoToggleButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gizmoTranslateButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gizmoRotateButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gizmoScaleButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.gizmoResetButton",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.openGizmoCategory",
"browser_tests/tests/load3d/Load3DHelper.ts:Load3DHelper.setBackgroundColor",
"browser_tests/tests/load3d/Load3DViewerHelper.ts:Load3DViewerHelper.canvas",
"browser_tests/tests/load3d/Load3DViewerHelper.ts:Load3DViewerHelper.sidebar",
"browser_tests/tests/load3d/Load3DViewerHelper.ts:Load3DViewerHelper.cancelButton",
"browser_tests/tests/load3d/Load3DViewerHelper.ts:Load3DViewerHelper.waitForOpen",
"browser_tests/tests/load3d/Load3DViewerHelper.ts:Load3DViewerHelper.waitForClosed",
"browser_tests/tests/propertiesPanel/PropertiesPanelHelper.ts:PropertiesPanelHelper.tabs",
"browser_tests/tests/propertiesPanel/PropertiesPanelHelper.ts:PropertiesPanelHelper.subgraphEditButton",
"browser_tests/tests/propertiesPanel/PropertiesPanelHelper.ts:PropertiesPanelHelper.collapseToggleButton",
"src/extensions/core/load3d/AnimationManager.ts:AnimationManager.reset",
"src/extensions/core/load3d/ControlsManager.ts:ControlsManager.handleResize",
"src/extensions/core/load3d/GizmoManager.ts:GizmoManager.getInitialTransform",
"src/extensions/core/load3d/LightingManager.ts:LightingManager.reset",
"src/extensions/core/load3d/SceneManager.ts:SceneManager.awaitNextSparkDirty",
"src/extensions/core/load3d/SceneManager.ts:SceneManager.reset",
"src/extensions/core/load3d/SceneModelManager.ts:SceneModelManager.init",
"src/extensions/core/load3d/SplatModelAdapter.ts:SplatModelAdapter.matches",
"src/extensions/core/load3d/ViewHelperManager.ts:ViewHelperManager.handleResize",
"src/extensions/core/load3d/ViewHelperManager.ts:ViewHelperManager.reset",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.start",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getEventManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getSceneManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getCameraManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getControlsManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getLightingManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getViewHelperManager",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getTargetSize",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.setExternalActiveCamera",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.setOverlay",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.removeOverlay",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getOverlay",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.updateStatusMouseOnNode",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.updateStatusMouseOnScene",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.updateStatusMouseOnViewer",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.toggleCamera",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getCurrentCameraType",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.setCameraState",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.getCameraState",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.setTargetSize",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.addEventListener",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.removeEventListener",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.refreshViewport",
"src/extensions/core/load3d/Viewport3d.ts:Viewport3d.remove",
"src/lib/litegraph/src/ContextMenu.ts:ContextMenu.getTopMenu",
"src/lib/litegraph/src/ContextMenu.ts:ContextMenu.getTopMenu",
"src/lib/litegraph/src/CurveEditor.ts:CurveEditor.sampleCurve",
"src/lib/litegraph/src/CurveEditor.ts:CurveEditor.draw",
"src/lib/litegraph/src/CurveEditor.ts:CurveEditor.onMouseDown",
"src/lib/litegraph/src/CurveEditor.ts:CurveEditor.onMouseMove",
"src/lib/litegraph/src/CurveEditor.ts:CurveEditor.onMouseUp",
"src/lib/litegraph/src/DragAndScale.ts:DragAndScale.dragging",
"src/lib/litegraph/src/DragAndScale.ts:DragAndScale.mouseDrag",
"src/lib/litegraph/src/DragAndScale.ts:DragAndScale.changeDeltaScale",
"src/lib/litegraph/src/DragAndScale.ts:DragAndScale.fitToBounds",
"src/lib/litegraph/src/DragAndScale.ts:DragAndScale.reset",
"src/lib/litegraph/src/LGraph.ts:LGraph.version",
"src/lib/litegraph/src/LGraph.ts:LGraph.last_link_id",
"src/lib/litegraph/src/LGraph.ts:LGraph.last_link_id",
"src/lib/litegraph/src/LGraph.ts:LGraph.detachCanvas",
"src/lib/litegraph/src/LGraph.ts:LGraph.start",
"src/lib/litegraph/src/LGraph.ts:LGraph.getTime",
"src/lib/litegraph/src/LGraph.ts:LGraph.getFixedTime",
"src/lib/litegraph/src/LGraph.ts:LGraph.getElapsedTime",
"src/lib/litegraph/src/LGraph.ts:LGraph.sendActionToCanvas",
"src/lib/litegraph/src/LGraph.ts:LGraph.findNodesByClass",
"src/lib/litegraph/src/LGraph.ts:LGraph.findNodesByType",
"src/lib/litegraph/src/LGraph.ts:LGraph.findNodeByTitle",
"src/lib/litegraph/src/LGraph.ts:LGraph.checkNodeTypes",
"src/lib/litegraph/src/LGraph.ts:LGraph.triggerInput",
"src/lib/litegraph/src/LGraph.ts:LGraph.setCallback",
"src/lib/litegraph/src/LGraph.ts:LGraph.clearTriggeredSlots",
"src/lib/litegraph/src/LGraph.ts:LGraph.convertToSubgraph",
"src/lib/litegraph/src/LGraph.ts:LGraph.resolveSubgraphIdPath",
"src/lib/litegraph/src/LGraph.ts:LGraph.load",
"src/lib/litegraph/src/LGraph.ts:Subgraph.renameInput",
"src/lib/litegraph/src/LGraph.ts:Subgraph.renameOutput",
"src/lib/litegraph/src/LGraph.ts:Subgraph.removeOutput",
"src/lib/litegraph/src/LGraphBadge.ts:LGraphBadge.boundingRect",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.padding",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.defaultColour",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.font",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.font_size",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.getColorOption",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.getBounding",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.snapToGrid",
"src/lib/litegraph/src/LGraphGroup.ts:LGraphGroup.addNodes",
"src/lib/litegraph/src/LGraphNodeProperties.ts:LGraphNodeProperties.getTrackedProperties",
"src/lib/litegraph/src/LGraphNodeProperties.ts:LGraphNodeProperties.toJSON",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.SlotShape",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.SlotDirection",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.SlotType",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.LabelPosition",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.NODE_MIN_WIDTH",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.NODE_COLLAPSED_RADIUS",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.NODE_OPACITY",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.WIDGET_TEXT_COLOR",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.WIDGET_SECONDARY_TEXT_COLOR",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.WIDGET_DISABLED_TEXT_COLOR",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.CIRCLE_SHAPE",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.ARROW_SHAPE",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.ALWAYS",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.ON_EVENT",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.NEVER",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.ON_TRIGGER",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.UP",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.DOWN",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.LEFT",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.RIGHT",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.CENTER",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.LINK_RENDER_MODES",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.TRANSPARENT_TITLE",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.AUTOHIDE_TITLE",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.proxy",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.allow_scripts",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.Globals",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.snapToGrid",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.truncateWidgetTextEvenly",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.truncateWidgetValuesFirst",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.LLink",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.LGraphNode",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.DragAndScale",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.CurveEditor",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.Classes",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.clearRegisteredTypes",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.getNodeType",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.reloadNodes",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.uuidv4",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.getParameterNames",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.pointerListenerRemove",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.distance",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.colorToString",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.growBounding",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.overlapBounding",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.isInsideBounding",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.hex2num",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.num2hex",
"src/lib/litegraph/src/LiteGraphGlobal.ts:LiteGraphGlobal.extendClass",
"src/lib/litegraph/src/MapProxyHandler.ts:MapProxyHandler.getOwnPropertyDescriptor",
"src/lib/litegraph/src/MapProxyHandler.ts:MapProxyHandler.has",
"src/lib/litegraph/src/MapProxyHandler.ts:MapProxyHandler.ownKeys",
"src/lib/litegraph/src/MapProxyHandler.ts:MapProxyHandler.set",
"src/lib/litegraph/src/MapProxyHandler.ts:MapProxyHandler.deleteProperty",
"src/lib/litegraph/src/Reroute.ts:Reroute.parent",
"src/lib/litegraph/src/Reroute.ts:Reroute.path",
"src/lib/litegraph/src/Reroute.ts:Reroute._centreAngle",
"src/lib/litegraph/src/Reroute.ts:Reroute.findNextReroute",
"src/lib/litegraph/src/Reroute.ts:Reroute.drawHighlight",
"src/lib/litegraph/src/canvas/FloatingRenderLink.ts:FloatingRenderLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/FloatingRenderLink.ts:FloatingRenderLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.radius",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.startAngle",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.endAngle",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.inactiveColour",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.colour1",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.colour2",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.colour3",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.fontString",
"src/lib/litegraph/src/canvas/InputIndicators.ts:InputIndicators.enabled",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.overWidgetType",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.overReroute",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.draggingExistingLinks",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.dragFromRerouteToOutput",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.dragFromLinkSegment",
"src/lib/litegraph/src/canvas/LinkConnector.ts:LinkConnector.isNodeValidDrop",
"src/lib/litegraph/src/canvas/MovingInputLink.ts:MovingInputLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/MovingInputLink.ts:MovingInputLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/MovingLinkBase.ts:MovingLinkBase.connectToRerouteInput",
"src/lib/litegraph/src/canvas/MovingOutputLink.ts:MovingOutputLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/MovingOutputLink.ts:MovingOutputLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/ToInputFromIoNodeLink.ts:ToInputFromIoNodeLink.fromDirection",
"src/lib/litegraph/src/canvas/ToInputFromIoNodeLink.ts:ToInputFromIoNodeLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/ToInputRenderLink.ts:ToInputRenderLink.fromDirection",
"src/lib/litegraph/src/canvas/ToInputRenderLink.ts:ToInputRenderLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/ToOutputFromIoNodeLink.ts:ToOutputFromIoNodeLink.fromDirection",
"src/lib/litegraph/src/canvas/ToOutputFromIoNodeLink.ts:ToOutputFromIoNodeLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/ToOutputFromIoNodeLink.ts:ToOutputFromIoNodeLink.connectToRerouteInput",
"src/lib/litegraph/src/canvas/ToOutputFromRerouteLink.ts:ToOutputFromRerouteLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/ToOutputRenderLink.ts:ToOutputRenderLink.fromDirection",
"src/lib/litegraph/src/canvas/ToOutputRenderLink.ts:ToOutputRenderLink.canConnectToReroute",
"src/lib/litegraph/src/canvas/ToOutputRenderLink.ts:ToOutputRenderLink.connectToRerouteInput",
"src/lib/litegraph/src/infrastructure/ConstrainedSize.ts:ConstrainedSize.width",
"src/lib/litegraph/src/infrastructure/ConstrainedSize.ts:ConstrainedSize.height",
"src/lib/litegraph/src/infrastructure/ConstrainedSize.ts:ConstrainedSize.fromSize",
"src/lib/litegraph/src/infrastructure/ConstrainedSize.ts:ConstrainedSize.fromRect",
"src/lib/litegraph/src/infrastructure/ConstrainedSize.ts:ConstrainedSize.setSize",
"src/lib/litegraph/src/infrastructure/CustomEventTarget.ts:CustomEventTarget.dispatchEvent",
"src/lib/litegraph/src/node/NodeOutputSlot.ts:NodeOutputSlot.isValidTarget",
"src/lib/litegraph/src/node/SlotBase.ts:SlotBase.removable",
"src/lib/litegraph/src/node/SlotBase.ts:SlotBase.locked",
"src/lib/litegraph/src/node/SlotBase.ts:SlotBase.nameLocked",
"src/lib/litegraph/src/node/SlotBase.ts:SlotBase.widget",
"src/lib/litegraph/src/node/SlotBase.ts:SlotBase._floatingLinks",
"src/lib/litegraph/src/subgraph/EmptySubgraphInput.ts:EmptySubgraphInput.labelPos",
"src/lib/litegraph/src/subgraph/EmptySubgraphOutput.ts:EmptySubgraphOutput.labelPos",
"src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts:ExecutableNodeDTO.comfyClass",
"src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts:ExecutableNodeDTO.widgets",
"src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts:ExecutableNodeDTO.subgraphId",
"src/lib/litegraph/src/subgraph/SubgraphIONodeBase.ts:SubgraphIONodeBase.margin",
"src/lib/litegraph/src/subgraph/SubgraphIONodeBase.ts:SubgraphIONodeBase.minWidth",
"src/lib/litegraph/src/subgraph/SubgraphIONodeBase.ts:SubgraphIONodeBase.size",
"src/lib/litegraph/src/subgraph/SubgraphIONodeBase.ts:SubgraphIONodeBase.size",
"src/lib/litegraph/src/subgraph/SubgraphIONodeBase.ts:SubgraphIONodeBase.snapToGrid",
"src/lib/litegraph/src/subgraph/SubgraphInput.ts:SubgraphInput.getConnectedWidgets",
"src/lib/litegraph/src/subgraph/SubgraphInput.ts:SubgraphInput.arrange",
"src/lib/litegraph/src/subgraph/SubgraphInputNode.ts:SubgraphInputNode.canConnectTo",
"src/lib/litegraph/src/subgraph/SubgraphInputNode.ts:SubgraphInputNode.connectSlots",
"src/lib/litegraph/src/subgraph/SubgraphInputNode.ts:SubgraphInputNode.connectByType",
"src/lib/litegraph/src/subgraph/SubgraphInputNode.ts:SubgraphInputNode.findOutputByType",
"src/lib/litegraph/src/subgraph/SubgraphNode.ts:SubgraphNode.rebuildInputWidgetBindings",
"src/lib/litegraph/src/subgraph/SubgraphNode.ts:SubgraphNode.resolveSubgraphInputLinks",
"src/lib/litegraph/src/subgraph/SubgraphNode.ts:SubgraphNode.resolveSubgraphOutputLink",
"src/lib/litegraph/src/subgraph/SubgraphNode.ts:SubgraphNode.getInnerNodes",
"src/lib/litegraph/src/subgraph/SubgraphOutput.ts:SubgraphOutput.arrange",
"src/lib/litegraph/src/subgraph/SubgraphOutputNode.ts:SubgraphOutputNode.canConnectTo",
"src/lib/litegraph/src/subgraph/SubgraphOutputNode.ts:SubgraphOutputNode.connectByTypeOutput",
"src/lib/litegraph/src/subgraph/SubgraphOutputNode.ts:SubgraphOutputNode.findInputByType",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.containsPoint",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.onPointerMove",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.decrementSlots",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.measure",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.arrange",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.draw",
"src/lib/litegraph/src/subgraph/SubgraphSlotBase.ts:SubgraphSlot.asSerialisable",
"src/lib/litegraph/src/widgets/AssetWidget.ts:AssetWidget._displayValue",
"src/lib/litegraph/src/widgets/AssetWidget.ts:AssetWidget.drawWidget",
"src/lib/litegraph/src/widgets/AssetWidget.ts:AssetWidget.onClick",
"src/lib/litegraph/src/widgets/BaseSteppedWidget.ts:BaseSteppedWidget.drawWidget",
"src/lib/litegraph/src/widgets/BaseWidget.ts:BaseWidget.disabledTextColor",
"src/lib/litegraph/src/widgets/BaseWidget.ts:BaseWidget._displayValue",
"src/lib/litegraph/src/widgets/BaseWidget.ts:BaseWidget.onDrag",
"src/lib/litegraph/src/widgets/BaseWidget.ts:BaseWidget.createCopyForNode",
"src/lib/litegraph/src/widgets/BooleanWidget.ts:BooleanWidget.drawWidget",
"src/lib/litegraph/src/widgets/BooleanWidget.ts:BooleanWidget.onClick",
"src/lib/litegraph/src/widgets/BoundingBoxWidget.ts:BoundingBoxWidget.drawWidget",
"src/lib/litegraph/src/widgets/BoundingBoxWidget.ts:BoundingBoxWidget.onClick",
"src/lib/litegraph/src/widgets/ButtonWidget.ts:ButtonWidget.drawWidget",
"src/lib/litegraph/src/widgets/ButtonWidget.ts:ButtonWidget.onClick",
"src/lib/litegraph/src/widgets/ChartWidget.ts:ChartWidget.drawWidget",
"src/lib/litegraph/src/widgets/ChartWidget.ts:ChartWidget.onClick",
"src/lib/litegraph/src/widgets/ColorWidget.ts:ColorWidget.drawWidget",
"src/lib/litegraph/src/widgets/CurveWidget.ts:CurveWidget.drawWidget",
"src/lib/litegraph/src/widgets/CurveWidget.ts:CurveWidget.onClick",
"src/lib/litegraph/src/widgets/FileUploadWidget.ts:FileUploadWidget.drawWidget",
"src/lib/litegraph/src/widgets/FileUploadWidget.ts:FileUploadWidget.onClick",
"src/lib/litegraph/src/widgets/GalleriaWidget.ts:GalleriaWidget.drawWidget",
"src/lib/litegraph/src/widgets/GalleriaWidget.ts:GalleriaWidget.onClick",
"src/lib/litegraph/src/widgets/GradientSliderWidget.ts:GradientSliderWidget.drawWidget",
"src/lib/litegraph/src/widgets/GradientSliderWidget.ts:GradientSliderWidget.onClick",
"src/lib/litegraph/src/widgets/GradientSliderWidget.ts:GradientSliderWidget.onDrag",
"src/lib/litegraph/src/widgets/ImageCompareWidget.ts:ImageCompareWidget.drawWidget",
"src/lib/litegraph/src/widgets/ImageCompareWidget.ts:ImageCompareWidget.onClick",
"src/lib/litegraph/src/widgets/ImageCropWidget.ts:ImageCropWidget.drawWidget",
"src/lib/litegraph/src/widgets/ImageCropWidget.ts:ImageCropWidget.onClick",
"src/lib/litegraph/src/widgets/KnobWidget.ts:KnobWidget.drawWidget",
"src/lib/litegraph/src/widgets/KnobWidget.ts:KnobWidget.onClick",
"src/lib/litegraph/src/widgets/KnobWidget.ts:KnobWidget.onDrag",
"src/lib/litegraph/src/widgets/LegacyWidget.ts:LegacyWidget.drawWidget",
"src/lib/litegraph/src/widgets/LegacyWidget.ts:LegacyWidget.onClick",
"src/lib/litegraph/src/widgets/MarkdownWidget.ts:MarkdownWidget.drawWidget",
"src/lib/litegraph/src/widgets/MarkdownWidget.ts:MarkdownWidget.onClick",
"src/lib/litegraph/src/widgets/MultiSelectWidget.ts:MultiSelectWidget.drawWidget",
"src/lib/litegraph/src/widgets/MultiSelectWidget.ts:MultiSelectWidget.onClick",
"src/lib/litegraph/src/widgets/NumberWidget.ts:NumberWidget._displayValue",
"src/lib/litegraph/src/widgets/NumberWidget.ts:NumberWidget.incrementValue",
"src/lib/litegraph/src/widgets/NumberWidget.ts:NumberWidget.decrementValue",
"src/lib/litegraph/src/widgets/NumberWidget.ts:NumberWidget.onClick",
"src/lib/litegraph/src/widgets/NumberWidget.ts:NumberWidget.onDrag",
"src/lib/litegraph/src/widgets/PainterWidget.ts:PainterWidget.drawWidget",
"src/lib/litegraph/src/widgets/PainterWidget.ts:PainterWidget.onClick",
"src/lib/litegraph/src/widgets/RangeWidget.ts:RangeWidget.drawWidget",
"src/lib/litegraph/src/widgets/RangeWidget.ts:RangeWidget.onClick",
"src/lib/litegraph/src/widgets/SelectButtonWidget.ts:SelectButtonWidget.drawWidget",
"src/lib/litegraph/src/widgets/SelectButtonWidget.ts:SelectButtonWidget.onClick",
"src/lib/litegraph/src/widgets/SliderWidget.ts:SliderWidget.drawWidget",
"src/lib/litegraph/src/widgets/SliderWidget.ts:SliderWidget.onClick",
"src/lib/litegraph/src/widgets/SliderWidget.ts:SliderWidget.onDrag",
"src/lib/litegraph/src/widgets/TextWidget.ts:TextWidget.drawWidget",
"src/lib/litegraph/src/widgets/TextWidget.ts:TextWidget.onClick",
"src/lib/litegraph/src/widgets/TextareaWidget.ts:TextareaWidget.drawWidget",
"src/lib/litegraph/src/widgets/TextareaWidget.ts:TextareaWidget.onClick",
"src/lib/litegraph/src/widgets/TreeSelectWidget.ts:TreeSelectWidget.drawWidget",
"src/lib/litegraph/src/widgets/TreeSelectWidget.ts:TreeSelectWidget.onClick",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackSignupOpened",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackAuth",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackUserLoggedIn",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackSubscription",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackBeginCheckout",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackMonthlySubscriptionSucceeded",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackMonthlySubscriptionCancelled",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackAddApiCreditButtonClicked",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackApiCreditTopupButtonPurchaseClicked",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackApiCreditTopupSucceeded",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkspaceInviteSent",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackRunButton",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.startTopupTracking",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.checkForCompletedTopup",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.clearTopupTracking",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackSurvey",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackEmailVerification",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackTemplate",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackTemplateLibraryOpened",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackTemplateLibraryClosed",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkflowImported",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkflowOpened",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkflowSaved",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackDefaultViewSet",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackEnterLinear",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackShareFlow",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackShareLinkOpened",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackPageVisibilityChanged",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackTabCount",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackShellLayout",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackNodeSearch",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackNodeSearchResultSelected",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackNodeAdded",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackTemplateFilterChanged",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackHelpCenterOpened",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackHelpResourceClicked",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackHelpCenterClosed",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkflowCreated",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackWorkflowExecution",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackExecutionError",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackExecutionSuccess",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackSharedWorkflowRun",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackSettingChanged",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackUiButtonClicked",
"src/platform/telemetry/TelemetryRegistry.ts:TelemetryRegistry.trackPageView",
"src/platform/workflow/management/stores/comfyWorkflow.ts:ComfyWorkflow.tintCanvasBg",
"src/renderer/core/canvas/links/linkConnectorAdapter.ts:LinkConnectorAdapter.isNodeValidDrop",
"src/renderer/core/canvas/links/linkConnectorAdapter.ts:LinkConnectorAdapter.isRerouteValidDrop",
"src/renderer/core/canvas/links/linkConnectorAdapter.ts:LinkConnectorAdapter.disconnectMovingLinks",
"src/renderer/core/spatial/SpatialIndex.ts:SpatialIndexManager.size",
"src/renderer/core/spatial/SpatialIndex.ts:SpatialIndexManager.getDebugInfo",
"src/renderer/extensions/minimap/data/AbstractMinimapDataSource.ts:AbstractMinimapDataSource.getBounds",
"src/scripts/api.ts:PromptExecutionError.toString",
"src/scripts/api.ts:ComfyApi.addCustomEventListener",
"src/scripts/api.ts:ComfyApi.addCustomEventListener",
"src/scripts/api.ts:ComfyApi.removeCustomEventListener",
"src/scripts/api.ts:ComfyApi.removeCustomEventListener",
"src/scripts/api.ts:ComfyApi.dispatchEvent",
"src/scripts/api.ts:ComfyApi.dispatchEvent",
"src/scripts/api.ts:ComfyApi.getItems",
"src/scripts/api.ts:ComfyApi.getItems",
"src/scripts/api.ts:ComfyApi.getSetting",
"src/scripts/api.ts:ComfyApi.getSetting",
"src/scripts/api.ts:ComfyApi.getServerFeatures",
"src/scripts/api.ts:ComfyApi.getServerFeatures",
"src/scripts/app.ts:ComfyApp.maskeditor_is_opended",
"src/scripts/app.ts:ComfyApp.lastNodeErrors",
"src/scripts/app.ts:ComfyApp.runningNodeId",
"src/scripts/app.ts:ComfyApp.shiftDown",
"src/scripts/app.ts:ComfyApp.storageLocation",
"src/scripts/app.ts:ComfyApp.isNewUserSession",
"src/scripts/app.ts:ComfyApp.extensions",
"src/scripts/app.ts:ComfyApp.progress",
"src/scripts/app.ts:ComfyApp.isImageNode",
"src/scripts/app.ts:ComfyApp.resetView",
"src/scripts/app.ts:ComfyApp.onClipspaceEditorSave",
"src/scripts/app.ts:ComfyApp.onClipspaceEditorClosed",
"src/scripts/app.ts:ComfyApp.clientPosToCanvasPos",
"src/scripts/app.ts:ComfyApp.canvasPosToClientPos",
"src/scripts/changeTracker.ts:ChangeTracker.restore",
"src/scripts/changeTracker.ts:ChangeTracker.undoRedo",
"src/scripts/domWidget.ts:DOMWidgetImpl.createCopyForNode",
"src/scripts/domWidget.ts:DOMWidgetImpl.computeLayoutSize",
"src/scripts/domWidget.ts:ComponentWidgetImpl.computeLayoutSize",
"src/scripts/domWidget.ts:ComponentWidgetImpl.serializeValue",
"src/scripts/ui/components/buttonGroup.ts:ComfyButtonGroup.insert",
"src/scripts/ui/components/buttonGroup.ts:ComfyButtonGroup.append",
"src/scripts/ui/components/buttonGroup.ts:ComfyButtonGroup.remove",
"src/scripts/ui/draggableList.ts:DraggableList.dispose",
"src/scripts/ui/settings.ts:ComfySettingsDialog.dispatchChange",
"src/scripts/ui/settings.ts:ComfySettingsDialog.settingsValues",
"src/scripts/ui/settings.ts:ComfySettingsDialog.settingsLookup",
"src/scripts/ui/settings.ts:ComfySettingsDialog.settingsParamLookup",
"src/scripts/ui/settings.ts:ComfySettingsDialog.getSettingDefaultValue",
"src/scripts/ui/settings.ts:ComfySettingsDialog.setSettingValueAsync",
"src/scripts/ui/settings.ts:ComfySettingsDialog.setSettingValue",
"src/scripts/ui/settings.ts:ComfySettingsDialog.addSetting",
"src/services/nodeSearchService.ts:NodeSearchService.nodeFilters",
"src/stores/modelStore.ts:ComfyModelDef.load",
"src/stores/nodeDefStore.ts:ComfyNodeDefImpl.search_aliases",
"src/stores/queueStore.ts:ResultItemImpl.vhsAdvancedPreviewUrl",
"src/stores/queueStore.ts:ResultItemImpl.urlWithTimestamp",
"src/stores/queueStore.ts:ResultItemImpl.htmlVideoType",
"src/stores/queueStore.ts:ResultItemImpl.htmlAudioType",
"src/stores/queueStore.ts:ResultItemImpl.supportsPreview",
"src/stores/queueStore.ts:TaskItemImpl.key",
"src/stores/queueStore.ts:TaskItemImpl.status",
"src/stores/queueStore.ts:TaskItemImpl.interrupted",
"src/stores/queueStore.ts:TaskItemImpl.isRunning",
"src/utils/fuseUtil.ts:FuseFilter.matches"
],
"unused_store_members": [
"apps/desktop-ui/src/stores/maintenanceTaskStore.ts:useMaintenanceTaskStore.isRunningInstallationFix",
"src/platform/missingMedia/missingMediaStore.ts:useMissingMediaStore.missingMediaAncestorExecutionIds",
"src/platform/missingMedia/missingMediaStore.ts:useMissingMediaStore.isContainerWithMissingMedia",
"src/platform/missingModel/missingModelStore.ts:useMissingModelStore.missingModelNodeIds",
"src/platform/missingModel/missingModelStore.ts:useMissingModelStore.missingModelAncestorExecutionIds",
"src/platform/missingModel/missingModelStore.ts:useMissingModelStore.createVerificationAbortController",
"src/platform/missingModel/missingModelStore.ts:useMissingModelStore.setFolderPaths",
"src/platform/nodeReplacement/nodeReplacementStore.ts:useNodeReplacementStore.isLoaded",
"src/platform/nodeReplacement/nodeReplacementStore.ts:useNodeReplacementStore.isEnabled",
"src/platform/nodeReplacement/nodeReplacementStore.ts:useNodeReplacementStore.hasReplacement",
"src/platform/settings/settingStore.ts:useSettingStore.isLoading",
"src/platform/settings/settingStore.ts:useSettingStore.exists",
"src/platform/settings/settingStore.ts:useSettingStore.getDefaultValue",
"src/platform/updates/common/toastStore.ts:useToastStore.remove",
"src/platform/updates/common/toastStore.ts:useToastStore.removeAll",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.frontendVersion",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.backendVersion",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.requiredFrontendVersion",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.outdatedComfyPackages",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.isFrontendOutdated",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.isFrontendNewer",
"src/platform/updates/common/versionCompatibilityStore.ts:useVersionCompatibilityStore.checkVersionCompatibility",
"src/platform/workflow/management/stores/workflowStore.ts:useWorkflowBookmarkStore.saveBookmarks",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.activeWorkspaceId",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.error",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.isCreating",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.isDeleting",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.isSwitching",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.personalWorkspace",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.ownedWorkspacesCount",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.subscriptionPlan",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.destroy",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.refreshWorkspaces",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.renameWorkspace",
"src/platform/workspace/stores/teamWorkspaceStore.ts:useTeamWorkspaceStore.subscribeWorkspace",
"src/platform/workspace/stores/workspaceAuthStore.ts:useWorkspaceAuthStore.init",
"src/platform/workspace/stores/workspaceAuthStore.ts:useWorkspaceAuthStore.getWorkspaceToken",
"src/renderer/core/canvas/canvasStore.ts:useCanvasStore.nodeSelected",
"src/renderer/core/canvas/canvasStore.ts:useCanvasStore.groupSelected",
"src/renderer/core/canvas/canvasStore.ts:useCanvasStore.rerouteSelected",
"src/renderer/extensions/vueNodes/stores/nodeSlotRegistryStore.ts:useNodeSlotRegistryStore.clear",
"src/stores/apiKeyAuthStore.ts:useApiKeyAuthStore.getAuthHeader",
"src/stores/apiKeyAuthStore.ts:useApiKeyAuthStore.getApiKey",
"src/stores/appModeStore.ts:useAppModeStore.loadSelections",
"src/stores/appModeStore.ts:useAppModeStore.resetSelectedToWorkflow",
"src/stores/assetExportStore.ts:useAssetExportStore.activeExports",
"src/stores/assetsStore.ts:useAssetsStore.deletingAssetIds",
"src/stores/assetsStore.ts:useAssetsStore.setAssetPreview",
"src/stores/assetsStore.ts:useAssetsStore.inputAssetsByFilename",
"src/stores/assetsStore.ts:useAssetsStore.hasMore",
"src/stores/assetsStore.ts:useAssetsStore.invalidateCategory",
"src/stores/authStore.ts:useAuthStore.userEmail",
"src/stores/authStore.ts:useAuthStore.getAuthHeaderOrThrow",
"src/stores/authStore.ts:useAuthStore.getFirebaseAuthHeader",
"src/stores/authStore.ts:useAuthStore.getFirebaseAuthHeaderOrThrow",
"src/stores/authStore.ts:useAuthStore.getAuthToken",
"src/stores/authStore.ts:useAuthStore.notifyTokenRefreshed",
"src/stores/comfyRegistryStore.ts:useComfyRegistryStore.cancelRequests",
"src/stores/comfyRegistryStore.ts:useComfyRegistryStore.isLoading",
"src/stores/comfyRegistryStore.ts:useComfyRegistryStore.error",
"src/stores/commandStore.ts:useCommandStore.registerCommands",
"src/stores/domWidgetStore.ts:useDomWidgetStore.activeWidgetStates",
"src/stores/domWidgetStore.ts:useDomWidgetStore.inactiveWidgetStates",
"src/stores/domWidgetStore.ts:useDomWidgetStore.unregisterWidget",
"src/stores/domWidgetStore.ts:useDomWidgetStore.activateWidget",
"src/stores/domWidgetStore.ts:useDomWidgetStore.setWidget",
"src/stores/electronDownloadStore.ts:useElectronDownloadStore.downloads",
"src/stores/electronDownloadStore.ts:useElectronDownloadStore.start",
"src/stores/electronDownloadStore.ts:useElectronDownloadStore.findByUrl",
"src/stores/electronDownloadStore.ts:useElectronDownloadStore.initialize",
"src/stores/executionErrorStore.ts:useExecutionErrorStore.hasExecutionError",
"src/stores/executionErrorStore.ts:useExecutionErrorStore.hasPromptError",
"src/stores/executionErrorStore.ts:useExecutionErrorStore.hasNodeError",
"src/stores/executionStore.ts:useExecutionStore.activeJob",
"src/stores/executionStore.ts:useExecutionStore.totalNodesToExecute",
"src/stores/executionStore.ts:useExecutionStore.nodesExecuted",
"src/stores/executionStore.ts:useExecutionStore.runningJobIds",
"src/stores/executionStore.ts:useExecutionStore.runningWorkflowCount",
"src/stores/executionStore.ts:useExecutionStore.initializingJobIds",
"src/stores/executionStore.ts:useExecutionStore.uniqueExecutingNodeIdStrings",
"src/stores/executionStore.ts:useExecutionStore._executingNodeProgress",
"src/stores/executionStore.ts:useExecutionStore.nodeLocatorIdToExecutionId",
"src/stores/executionStore.ts:useExecutionStore.jobIdToWorkflowId",
"src/stores/executionStore.ts:useExecutionStore.ensureSessionWorkflowPath",
"src/stores/helpCenterStore.ts:useHelpCenterStore.show",
"src/stores/menuItemStore.ts:useMenuItemStore.registerMenuGroup",
"src/stores/menuItemStore.ts:useMenuItemStore.loadExtensionMenuCommands",
"src/stores/menuItemStore.ts:useMenuItemStore.registerCoreMenuCommands",
"src/stores/modelStore.ts:useModelStore.loadModelFolders",
"src/stores/nodeBookmarkStore.ts:useNodeBookmarkStore.deleteBookmarkCustomization",
"src/stores/nodeBookmarkStore.ts:useNodeBookmarkStore.renameBookmarkCustomization",
"src/stores/nodeDefStore.ts:useNodeDefStore.nodeDefsByDisplayName",
"src/stores/nodeDefStore.ts:useNodeDefStore.showDevOnly",
"src/stores/nodeDefStore.ts:useNodeDefStore.nodeDefFilters",
"src/stores/nodeDefStore.ts:useNodeDefStore.nodeDefs",
"src/stores/nodeDefStore.ts:useNodeDefStore.nodeTree",
"src/stores/nodeDefStore.ts:useNodeDefStore.registerNodeDefFilter",
"src/stores/nodeDefStore.ts:useNodeDefStore.unregisterNodeDefFilter",
"src/stores/nodeDefStore.ts:useNodeFrequencyStore.nodeNamesByFrequency",
"src/stores/nodeDefStore.ts:useNodeFrequencyStore.loadNodeFrequencies",
"src/stores/nodeOutputStore.ts:useNodeOutputStore.updateNodeImages",
"src/stores/nodeOutputStore.ts:useNodeOutputStore.revokeAllPreviews",
"src/stores/nodeOutputStore.ts:useNodeOutputStore.latestPreview",
"src/stores/previewExposureStore.ts:usePreviewExposureStore.getExposuresAsPromotionShape",
"src/stores/previewExposureStore.ts:usePreviewExposureStore.clearGraph",
"src/stores/queueStore.ts:useQueueStore.flatTasks",
"src/stores/queueStore.ts:useQueueStore.lastJobHistoryPriority",
"src/stores/queueStore.ts:useQueueStore.hasPendingTasks",
"src/stores/queueStore.ts:useQueueUIStore.toggleOverlay",
"src/stores/serverConfigStore.ts:useServerConfigStore.serverConfigById",
"src/stores/serverConfigStore.ts:useServerConfigStore.serverConfigs",
"src/stores/serverConfigStore.ts:useServerConfigStore.loadServerConfig",
"src/stores/subgraphNavigationStore.ts:useSubgraphNavigationStore.activeSubgraph",
"src/stores/subgraphNavigationStore.ts:useSubgraphNavigationStore.saveCurrentViewport",
"src/stores/subgraphNavigationStore.ts:useSubgraphNavigationStore.updateHash",
"src/stores/subgraphStore.ts:useSubgraphStore.editBlueprint",
"src/stores/subgraphStore.ts:useSubgraphStore.fetchSubgraphs",
"src/stores/subgraphStore.ts:useSubgraphStore.getBlueprint",
"src/stores/systemStatsStore.ts:useSystemStatsStore.error",
"src/stores/userFileStore.ts:useUserFileStore.userFiles",
"src/stores/userFileStore.ts:useUserFileStore.modifiedFiles",
"src/stores/userFileStore.ts:useUserFileStore.loadedFiles",
"src/stores/userFileStore.ts:useUserFileStore.fileTree",
"src/stores/userFileStore.ts:useUserFileStore.syncFiles",
"src/stores/workspace/bottomPanelStore.ts:useBottomPanelStore.setActiveTab",
"src/stores/workspace/bottomPanelStore.ts:useBottomPanelStore.registerCoreBottomPanelTabs",
"src/stores/workspace/bottomPanelStore.ts:useBottomPanelStore.registerExtensionBottomPanelTabs",
"src/stores/workspace/favoritedWidgetsStore.ts:useFavoritedWidgetsStore.favoritedWidgets",
"src/stores/workspace/favoritedWidgetsStore.ts:useFavoritedWidgetsStore.addFavorite",
"src/stores/workspace/favoritedWidgetsStore.ts:useFavoritedWidgetsStore.removeFavorite",
"src/stores/workspace/favoritedWidgetsStore.ts:useFavoritedWidgetsStore.clearFavorites",
"src/stores/workspace/favoritedWidgetsStore.ts:useFavoritedWidgetsStore.pruneInvalidFavorites",
"src/stores/workspace/sidebarTabStore.ts:useSidebarTabStore.registerSidebarTab",
"src/stores/workspace/sidebarTabStore.ts:useSidebarTabStore.unregisterSidebarTab",
"src/workbench/extensions/manager/stores/comfyManagerStore.ts:useComfyManagerStore.isLoading",
"src/workbench/extensions/manager/stores/comfyManagerStore.ts:useComfyManagerStore.clearLogs",
"src/workbench/extensions/manager/stores/comfyManagerStore.ts:useComfyManagerStore.managerQueue",
"src/workbench/extensions/manager/stores/comfyManagerStore.ts:useComfyManagerStore.updateAllPacks"
],
"unprovided_injects": [],
"unrendered_components": [],
"unused_component_props": [
"apps/website/src/components/blocks/HeroSplit01.vue:locale",
"apps/website/src/components/careers/WhyJoinSection.vue:locale",
"apps/website/src/components/common/SiteVideo.vue:poster",
"apps/website/src/components/common/SiteVideo.vue:loop",
"apps/website/src/components/common/SiteVideo.vue:muted",
"apps/website/src/components/common/SiteVideo.vue:preload",
"apps/website/src/components/common/VideoPlayer.vue:poster",
"apps/website/src/components/common/VideoPlayer.vue:loop",
"apps/website/src/components/customers/VideoSection.vue:locale",
"apps/website/src/components/gallery/GalleryCard.vue:locale",
"src/components/common/ContentDivider.vue:width",
"src/components/common/WorkflowActionsDropdown.vue:align",
"src/components/dialog/content/PromptDialogContent.vue:placeholder",
"src/platform/cloud/subscription/components/SubscribeButton.vue:size",
"src/platform/workflow/sharing/components/publish/ComfyHubPublishWizardContent.vue:isFirstStep",
"src/platform/workflow/sharing/components/publish/ComfyHubPublishWizardContent.vue:isLastStep",
"src/platform/workflow/sharing/components/publish/ComfyHubPublishWizardContent.vue:isUpdate",
"src/renderer/extensions/linearMode/ImagePreview.vue:src",
"src/renderer/extensions/linearMode/MediaOutputPreview.vue:mobile",
"src/workbench/extensions/manager/components/manager/button/PackUninstallButton.vue:size",
"src/workbench/extensions/manager/components/manager/button/PackUpdateButton.vue:size"
],
"unused_component_emits": [],
"unused_component_inputs": [],
"unused_component_outputs": [],
"unused_svelte_events": [],
"unused_server_actions": [],
"unused_load_data_keys": [],
"unresolved_imports": [],
"unlisted_dependencies": [],
"duplicate_exports": [
"Bounds|src/renderer/core/layout/types.ts|src/renderer/core/spatial/QuadTree.ts",
"ComfyDialog|src/scripts/ui.ts|src/scripts/ui/dialog.ts",
"Direction|src/lib/litegraph/src/interfaces.ts|src/renderer/core/canvas/pathRenderer.ts",
"JobListItem|src/composables/queue/useJobList.ts|src/platform/remote/comfyui/jobs/jobTypes.ts",
"LinkId|src/lib/litegraph/src/LLink.ts|src/renderer/core/layout/types.ts",
"ModelFile|src/platform/assets/schemas/assetSchema.ts|src/platform/workflow/validation/schemas/workflowSchema.ts",
"PendingInvite|src/platform/workspace/api/workspaceApi.ts|src/platform/workspace/stores/teamWorkspaceStore.ts",
"Point|src/lib/litegraph/src/interfaces.ts|src/renderer/core/canvas/pathRenderer.ts|src/renderer/core/layout/types.ts",
"RerouteId|src/lib/litegraph/src/Reroute.ts|src/renderer/core/layout/types.ts",
"Size|src/lib/litegraph/src/interfaces.ts|src/renderer/core/layout/types.ts",
"User|src/schemas/apiSchema.ts|src/stores/userStore.ts",
"WidgetValue|src/types/simplifiedWidget.ts|src/utils/widgetUtil.ts",
"WorkspaceWithRole|src/platform/workspace/api/workspaceApi.ts|src/platform/workspace/workspaceTypes.ts",
"_for_testing|src/renderer/extensions/vueNodes/widgets/composables/useFloatWidget.ts|src/renderer/extensions/vueNodes/widgets/composables/useIntWidget.ts",
"groupCandidatesByName|src/platform/missingMedia/missingMediaScan.ts|src/platform/missingModel/missingModelScan.ts"
],
"type_only_dependencies": [],
"test_only_dependencies": [],
"boundary_violations": [],
"boundary_coverage_violations": [],
"boundary_call_violations": [],
"policy_violations": [],
"stale_suppressions": [],
"unused_catalog_entries": [],
"empty_catalog_groups": [],
"unresolved_catalog_references": [],
"unused_dependency_overrides": [],
"misconfigured_dependency_overrides": [],
"invalid_client_exports": [],
"mixed_client_server_barrels": [],
"misplaced_directives": [],
"route_collisions": [],
"dynamic_segment_name_conflicts": []
}

View File

@@ -0,0 +1,437 @@
{
"clone_groups": [
"apps/desktop-ui/src/components/install/InstallLocationPicker.stories.ts:115-148|apps/desktop-ui/src/components/install/InstallLocationPicker.stories.ts:53-81|apps/desktop-ui/src/components/install/InstallLocationPicker.stories.ts:84-112",
"apps/desktop-ui/src/views/InstallView.stories.ts:112-135|apps/desktop-ui/src/views/InstallView.stories.ts:146-169|apps/desktop-ui/src/views/InstallView.stories.ts:191-214",
"apps/website/e2e/affiliates.spec.ts:108-116|apps/website/e2e/cloud.spec.ts:124-134|apps/website/e2e/download.spec.ts:195-205",
"apps/website/e2e/cloud.spec.ts:14-23|apps/website/e2e/download.spec.ts:29-36|apps/website/e2e/payment.spec.ts:29-36|apps/website/e2e/payment.spec.ts:61-71",
"apps/website/e2e/download.spec.ts:232-245|apps/website/e2e/download.spec.ts:37-47|apps/website/e2e/download.spec.ts:69-82",
"apps/website/e2e/download.spec.ts:100-109|apps/website/e2e/download.spec.ts:232-244|apps/website/e2e/download.spec.ts:37-46|apps/website/e2e/download.spec.ts:69-78",
"apps/website/e2e/visual-responsive.spec.ts:109-113|apps/website/e2e/visual-responsive.spec.ts:79-83|apps/website/e2e/visual-responsive.spec.ts:95-99",
"apps/website/src/utils/cloudNodes.registry.test.ts:148-157|apps/website/src/utils/cloudNodes.registry.test.ts:241-249|apps/website/src/utils/cloudNodes.registry.test.ts:267-275|apps/website/src/utils/cloudNodes.registry.test.ts:300-308|apps/website/src/utils/cloudNodes.registry.test.ts:416-424",
"browser_tests/fixtures/helpers/CloudWorkspaceMockHelper.ts:62-82|browser_tests/tests/billingFacadeConsumers.spec.ts:58-74|browser_tests/tests/dialogs/creditsTile.spec.ts:69-90",
"browser_tests/fixtures/helpers/CloudWorkspaceMockHelper.ts:62-79|browser_tests/fixtures/utils/cloudBootMocks.ts:25-38|browser_tests/tests/billingFacadeConsumers.spec.ts:58-73|browser_tests/tests/dialogs/creditsTile.spec.ts:69-89",
"browser_tests/fixtures/helpers/CloudWorkspaceMockHelper.ts:81-95|browser_tests/tests/billingFacadeConsumers.spec.ts:74-84|browser_tests/tests/dialogs/creditsTile.spec.ts:90-100",
"browser_tests/fixtures/helpers/CloudWorkspaceMockHelper.ts:95-101|browser_tests/tests/billingFacadeConsumers.spec.ts:81-97|browser_tests/tests/dialogs/creditsTile.spec.ts:97-113",
"browser_tests/fixtures/helpers/ErrorsTabHelper.ts:26-32|browser_tests/fixtures/utils/promotedMissingModel.ts:90-95|browser_tests/tests/propertiesPanel/errorsTab.spec.ts:48-57|browser_tests/tests/propertiesPanel/errorsTabExecution.spec.ts:19-28",
"browser_tests/fixtures/utils/cloudBootMocks.ts:41-50|browser_tests/tests/billingFacadeConsumers.spec.ts:74-84|browser_tests/tests/dialogs/creditsTile.spec.ts:90-100",
"browser_tests/fixtures/utils/litegraphUtils.ts:113-117|browser_tests/fixtures/utils/litegraphUtils.ts:146-149|browser_tests/fixtures/utils/litegraphUtils.ts:159-162",
"browser_tests/tests/appModeInputPersistence.spec.ts:24-31|browser_tests/tests/builderReorder.spec.ts:32-37|browser_tests/tests/builderReorder.spec.ts:54-59|browser_tests/tests/builderReorder.spec.ts:76-81",
"browser_tests/tests/appModeWidgetRename.spec.ts:30-39|browser_tests/tests/appModeWidgetRename.spec.ts:51-58|browser_tests/tests/appModeWidgetRename.spec.ts:69-77",
"browser_tests/tests/backgroundImageUpload.spec.ts:181-194|browser_tests/tests/backgroundImageUpload.spec.ts:20-33|browser_tests/tests/backgroundImageUpload.spec.ts:222-235|browser_tests/tests/backgroundImageUpload.spec.ts:53-66",
"browser_tests/tests/backgroundImageUpload.spec.ts:181-198|browser_tests/tests/backgroundImageUpload.spec.ts:222-236|browser_tests/tests/backgroundImageUpload.spec.ts:53-70",
"browser_tests/tests/browseModelAssets.spec.ts:45-52|browser_tests/tests/sidebar/modelLibrary.spec.ts:263-270|browser_tests/tests/sidebar/nodeLibraryV2.spec.ts:134-139",
"browser_tests/tests/builderReorder.spec.ts:32-39|browser_tests/tests/builderReorder.spec.ts:54-61|browser_tests/tests/builderReorder.spec.ts:76-83",
"browser_tests/tests/builderSaveFlow.spec.ts:46-51|browser_tests/tests/builderSaveFlow.spec.ts:64-71|browser_tests/tests/builderSaveFlow.spec.ts:76-81",
"browser_tests/tests/canvasModeSelector.spec.ts:138-147|browser_tests/tests/canvasModeSelector.spec.ts:173-180|browser_tests/tests/canvasModeSelector.spec.ts:184-193",
"browser_tests/tests/canvasModeSelector.spec.ts:138-146|browser_tests/tests/canvasModeSelector.spec.ts:173-179|browser_tests/tests/canvasModeSelector.spec.ts:184-192|browser_tests/tests/canvasModeSelector.spec.ts:251-259",
"browser_tests/tests/dialogs/publishDialog.spec.ts:132-136|browser_tests/tests/dialogs/publishDialog.spec.ts:34-38|browser_tests/tests/dialogs/publishDialog.spec.ts:93-97",
"browser_tests/tests/dialogs/shareWorkflowDialog.spec.ts:169-180|browser_tests/tests/dialogs/shareWorkflowDialog.spec.ts:188-199|browser_tests/tests/dialogs/shareWorkflowDialog.spec.ts:231-242",
"browser_tests/tests/errorOverlay.spec.ts:179-186|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:115-122|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:413-420",
"browser_tests/tests/execution.spec.ts:78-86|browser_tests/tests/propertiesPanel/errorsTab.spec.ts:47-55|browser_tests/tests/propertiesPanel/errorsTabExecution.spec.ts:18-26",
"browser_tests/tests/groupSelectChildren.spec.ts:38-50|browser_tests/tests/groupSelectChildren.spec.ts:61-72|browser_tests/tests/groupSelectChildren.spec.ts:83-94",
"browser_tests/tests/imageCompare.spec.ts:109-120|browser_tests/tests/imageCompare.spec.ts:131-142|browser_tests/tests/imageCompare.spec.ts:482-493",
"browser_tests/tests/imageCompare.spec.ts:165-176|browser_tests/tests/imageCompare.spec.ts:206-218|browser_tests/tests/imageCompare.spec.ts:244-256",
"browser_tests/tests/imageCompare.spec.ts:294-301|browser_tests/tests/imageCompare.spec.ts:308-315|browser_tests/tests/imageCompare.spec.ts:616-623",
"browser_tests/tests/keybindingPanel.spec.ts:426-435|browser_tests/tests/keybindingPanel.spec.ts:448-457|browser_tests/tests/keybindingPanel.spec.ts:534-541",
"browser_tests/tests/keybindingPresets.spec.ts:119-137|browser_tests/tests/keybindingPresets.spec.ts:167-185|browser_tests/tests/keybindingPresets.spec.ts:205-223|browser_tests/tests/keybindingPresets.spec.ts:67-83",
"browser_tests/tests/keybindingPresets.spec.ts:116-137|browser_tests/tests/keybindingPresets.spec.ts:164-185|browser_tests/tests/keybindingPresets.spec.ts:202-223",
"browser_tests/tests/minimap.spec.ts:484-489|browser_tests/tests/minimap.spec.ts:55-60|browser_tests/tests/zoomControls.spec.ts:8-13",
"browser_tests/tests/nodeBadge.spec.ts:15-23|browser_tests/tests/nodeBadge.spec.ts:32-41|browser_tests/tests/nodeBadge.spec.ts:52-60",
"browser_tests/tests/nodeGhostPlacement.spec.ts:102-109|browser_tests/tests/nodeGhostPlacement.spec.ts:115-122|browser_tests/tests/nodeGhostPlacement.spec.ts:128-135",
"browser_tests/tests/nodeHelp.spec.ts:181-195|browser_tests/tests/nodeHelp.spec.ts:205-224|browser_tests/tests/nodeHelp.spec.ts:368-383",
"browser_tests/tests/nodeHelp.spec.ts:184-195|browser_tests/tests/nodeHelp.spec.ts:215-224|browser_tests/tests/nodeHelp.spec.ts:374-383|browser_tests/tests/nodeHelp.spec.ts:391-402",
"browser_tests/tests/nodeHelp.spec.ts:200-223|browser_tests/tests/nodeHelp.spec.ts:242-267|browser_tests/tests/nodeHelp.spec.ts:299-323",
"browser_tests/tests/nodeSearchBoxV2.spec.ts:12-19|browser_tests/tests/nodeSearchBoxV2Extended.spec.ts:22-29|browser_tests/tests/nodeSearchBoxV2Extended.spec.ts:380-388",
"browser_tests/tests/nodeSearchBoxV2.spec.ts:120-125|browser_tests/tests/nodeSearchBoxV2.spec.ts:19-24|browser_tests/tests/nodeSearchBoxV2.spec.ts:34-39",
"browser_tests/tests/nodeSearchBoxV2.spec.ts:57-65|browser_tests/tests/nodeSearchBoxV2Extended.spec.ts:236-242|browser_tests/tests/nodeSearchBoxV2Extended.spec.ts:55-61",
"browser_tests/tests/outputHistory.spec.ts:101-114|browser_tests/tests/outputHistory.spec.ts:121-132|browser_tests/tests/outputHistory.spec.ts:82-93",
"browser_tests/tests/outputHistory.spec.ts:101-113|browser_tests/tests/outputHistory.spec.ts:121-132|browser_tests/tests/outputHistory.spec.ts:274-286|browser_tests/tests/outputHistory.spec.ts:82-93",
"browser_tests/tests/outputHistory.spec.ts:101-112|browser_tests/tests/outputHistory.spec.ts:121-132|browser_tests/tests/outputHistory.spec.ts:274-286|browser_tests/tests/outputHistory.spec.ts:342-353|browser_tests/tests/outputHistory.spec.ts:82-93",
"browser_tests/tests/painter.spec.ts:115-126|browser_tests/tests/painter.spec.ts:293-305|browser_tests/tests/painter.spec.ts:335-347",
"browser_tests/tests/performance.spec.ts:139-146|browser_tests/tests/performance.spec.ts:303-308|browser_tests/tests/sidebar/sidebarSplitterWidth.spec.ts:27-31",
"browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:148-154|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:270-276|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:95-101",
"browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:148-154|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:183-190|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:270-276|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:95-101",
"browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:127-140|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:320-333|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:787-801",
"browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:154-160|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:188-194|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:350-356",
"browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:636-653|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:674-694|browser_tests/tests/propertiesPanel/errorsTabModeAware.spec.ts:741-758",
"browser_tests/tests/propertiesPanel/infoTab.spec.ts:6-12|browser_tests/tests/propertiesPanel/nodeSettings.spec.ts:6-12|browser_tests/tests/propertiesPanel/titleEditing.spec.ts:6-12",
"browser_tests/tests/propertiesPanel/infoTab.spec.ts:6-12|browser_tests/tests/propertiesPanel/nodeSettings.spec.ts:6-12|browser_tests/tests/propertiesPanel/searchFiltering.spec.ts:6-13|browser_tests/tests/propertiesPanel/titleEditing.spec.ts:6-12",
"browser_tests/tests/propertiesPanel/nodeSettings.spec.ts:56-63|browser_tests/tests/propertiesPanel/nodeSettings.spec.ts:70-77|browser_tests/tests/propertiesPanel/nodeSettings.spec.ts:82-89",
"browser_tests/tests/queue/queueOverlay.spec.ts:108-112|browser_tests/tests/queue/queueOverlay.spec.ts:57-62|browser_tests/tests/queue/queueOverlay.spec.ts:77-83|browser_tests/tests/queue/queueOverlay.spec.ts:90-94",
"browser_tests/tests/queue/queueOverlay.spec.ts:108-114|browser_tests/tests/queue/queueOverlay.spec.ts:77-87|browser_tests/tests/queue/queueOverlay.spec.ts:90-98",
"browser_tests/tests/releaseNotifications.spec.ts:108-117|browser_tests/tests/releaseNotifications.spec.ts:22-33|browser_tests/tests/releaseNotifications.spec.ts:280-291",
"browser_tests/tests/releaseNotifications.spec.ts:119-143|browser_tests/tests/releaseNotifications.spec.ts:166-188|browser_tests/tests/releaseNotifications.spec.ts:250-272|browser_tests/tests/releaseNotifications.spec.ts:358-380|browser_tests/tests/releaseNotifications.spec.ts:40-63",
"browser_tests/tests/releaseNotifications.spec.ts:257-276|browser_tests/tests/releaseNotifications.spec.ts:48-67|browser_tests/tests/releaseNotifications.spec.ts:79-98",
"browser_tests/tests/rightClickMenu.spec.ts:42-49|browser_tests/tests/rightClickMenu.spec.ts:57-64|browser_tests/tests/rightClickMenu.spec.ts:96-103",
"browser_tests/tests/rightClickMenu.spec.ts:113-119|browser_tests/tests/rightClickMenu.spec.ts:43-49|browser_tests/tests/rightClickMenu.spec.ts:58-64|browser_tests/tests/rightClickMenu.spec.ts:97-103",
"browser_tests/tests/selectionToolbox.spec.ts:207-216|browser_tests/tests/selectionToolbox.spec.ts:236-247|browser_tests/tests/selectionToolbox.spec.ts:257-268",
"browser_tests/tests/sidebar/assets-filter.spec.ts:138-148|browser_tests/tests/sidebar/assets-filter.spec.ts:195-204|browser_tests/tests/sidebar/assets-filter.spec.ts:213-222",
"browser_tests/tests/sidebar/assets.spec.ts:264-275|browser_tests/tests/sidebar/assets.spec.ts:304-315|browser_tests/tests/sidebar/assets.spec.ts:361-372|browser_tests/tests/sidebar/assets.spec.ts:437-448|browser_tests/tests/sidebar/assets.spec.ts:631-642|browser_tests/tests/sidebar/assets.spec.ts:857-868",
"browser_tests/tests/sidebar/assets.spec.ts:1008-1017|browser_tests/tests/sidebar/assets.spec.ts:266-275|browser_tests/tests/sidebar/assets.spec.ts:306-315|browser_tests/tests/sidebar/assets.spec.ts:363-372|browser_tests/tests/sidebar/assets.spec.ts:439-448|browser_tests/tests/sidebar/assets.spec.ts:633-642|browser_tests/tests/sidebar/assets.spec.ts:859-868",
"browser_tests/tests/sidebar/assets.spec.ts:1008-1017|browser_tests/tests/sidebar/assets.spec.ts:266-275|browser_tests/tests/sidebar/assets.spec.ts:306-315|browser_tests/tests/sidebar/assets.spec.ts:363-372|browser_tests/tests/sidebar/assets.spec.ts:439-448|browser_tests/tests/sidebar/assets.spec.ts:633-642|browser_tests/tests/sidebar/assets.spec.ts:859-868|browser_tests/tests/sidebar/assets.spec.ts:886-895",
"browser_tests/tests/sidebar/assets.spec.ts:372-378|browser_tests/tests/sidebar/assets.spec.ts:406-411|browser_tests/tests/sidebar/assets.spec.ts:418-423",
"browser_tests/tests/sidebar/assets.spec.ts:381-386|browser_tests/tests/sidebar/assets.spec.ts:594-601|browser_tests/tests/sidebar/assets.spec.ts:664-669",
"browser_tests/tests/sidebar/assets.spec.ts:458-469|browser_tests/tests/sidebar/assets.spec.ts:472-483|browser_tests/tests/sidebar/assets.spec.ts:486-497|browser_tests/tests/sidebar/assets.spec.ts:500-511",
"browser_tests/tests/sidebar/assets.spec.ts:534-540|browser_tests/tests/sidebar/assets.spec.ts:556-562|browser_tests/tests/sidebar/assets.spec.ts:582-588",
"browser_tests/tests/sidebar/assets.spec.ts:899-906|browser_tests/tests/sidebar/assets.spec.ts:918-926|browser_tests/tests/sidebar/assets.spec.ts:939-947",
"browser_tests/tests/sidebar/modelLibrary.spec.ts:101-111|browser_tests/tests/sidebar/modelLibrary.spec.ts:19-29|browser_tests/tests/sidebar/modelLibrary.spec.ts:50-62",
"browser_tests/tests/sidebar/modelLibrary.spec.ts:248-256|browser_tests/tests/sidebar/modelLibrary.spec.ts:280-288|browser_tests/tests/sidebar/modelLibrary.spec.ts:71-80",
"browser_tests/tests/sidebar/nodeLibrary.spec.ts:137-143|browser_tests/tests/sidebar/nodeLibrary.spec.ts:153-159|browser_tests/tests/sidebar/nodeLibrary.spec.ts:164-171|browser_tests/tests/sidebar/nodeLibrary.spec.ts:225-230|browser_tests/tests/sidebar/nodeLibrary.spec.ts:254-259|browser_tests/tests/sidebar/nodeLibrary.spec.ts:275-283",
"browser_tests/tests/sidebar/nodeLibrary.spec.ts:137-142|browser_tests/tests/sidebar/nodeLibrary.spec.ts:153-158|browser_tests/tests/sidebar/nodeLibrary.spec.ts:164-169|browser_tests/tests/sidebar/nodeLibrary.spec.ts:178-184|browser_tests/tests/sidebar/nodeLibrary.spec.ts:225-229|browser_tests/tests/sidebar/nodeLibrary.spec.ts:254-258|browser_tests/tests/sidebar/nodeLibrary.spec.ts:275-282",
"browser_tests/tests/sidebar/nodeLibrary.spec.ts:153-159|browser_tests/tests/sidebar/nodeLibrary.spec.ts:225-230|browser_tests/tests/sidebar/nodeLibrary.spec.ts:254-259|browser_tests/tests/sidebar/nodeLibrary.spec.ts:275-283",
"browser_tests/tests/sidebar/nodeLibrary.spec.ts:225-233|browser_tests/tests/sidebar/nodeLibrary.spec.ts:254-262|browser_tests/tests/sidebar/nodeLibrary.spec.ts:275-288",
"browser_tests/tests/sidebar/workflowSearch.spec.ts:101-111|browser_tests/tests/sidebar/workflowSearch.spec.ts:23-29|browser_tests/tests/sidebar/workflowSearch.spec.ts:64-74",
"browser_tests/tests/subgraph/subgraphNavigation.spec.ts:137-143|browser_tests/tests/subgraph/subgraphNavigation.spec.ts:180-185|browser_tests/tests/subgraph/subgraphSerialization.spec.ts:323-329|browser_tests/tests/subgraph/subgraphSerialization.spec.ts:673-679",
"browser_tests/tests/subgraph/subgraphNavigation.spec.ts:281-290|browser_tests/tests/subgraph/subgraphSerialization.spec.ts:322-329|browser_tests/tests/subgraph/subgraphSerialization.spec.ts:672-679",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:120-130|browser_tests/tests/subgraph/subgraphSlots.spec.ts:148-156|browser_tests/tests/subgraph/subgraphSlots.spec.ts:203-214",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:120-128|browser_tests/tests/subgraph/subgraphSlots.spec.ts:148-154|browser_tests/tests/subgraph/subgraphSlots.spec.ts:203-211|browser_tests/tests/subgraph/subgraphSlots.spec.ts:296-304",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:137-145|browser_tests/tests/subgraph/subgraphSlots.spec.ts:163-172|browser_tests/tests/subgraph/subgraphSlots.spec.ts:224-233|browser_tests/tests/subgraph/subgraphSlots.spec.ts:283-291",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:137-144|browser_tests/tests/subgraph/subgraphSlots.spec.ts:163-171|browser_tests/tests/subgraph/subgraphSlots.spec.ts:191-199|browser_tests/tests/subgraph/subgraphSlots.spec.ts:224-232|browser_tests/tests/subgraph/subgraphSlots.spec.ts:283-290",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:138-145|browser_tests/tests/subgraph/subgraphSlots.spec.ts:164-172|browser_tests/tests/subgraph/subgraphSlots.spec.ts:225-233|browser_tests/tests/subgraph/subgraphSlots.spec.ts:284-291|browser_tests/tests/subgraph/subgraphSlots.spec.ts:353-360",
"browser_tests/tests/subgraph/subgraphSlots.spec.ts:311-319|browser_tests/tests/subgraph/subgraphSlots.spec.ts:378-386|browser_tests/tests/subgraph/subgraphSlots.spec.ts:447-453|browser_tests/tests/subgraph/subgraphSlots.spec.ts:547-555",
"browser_tests/tests/topbar/workflowTabs.spec.ts:171-179|browser_tests/tests/topbar/workflowTabs.spec.ts:205-213|browser_tests/tests/topbar/workflowTabs.spec.ts:227-235|browser_tests/tests/topbar/workflowTabs.spec.ts:249-257|browser_tests/tests/topbar/workflowTabs.spec.ts:36-42|browser_tests/tests/topbar/workflowTabs.spec.ts:49-55|browser_tests/tests/topbar/workflowTabs.spec.ts:80-88",
"browser_tests/tests/topbar/workflowTabs.spec.ts:171-179|browser_tests/tests/topbar/workflowTabs.spec.ts:49-55|browser_tests/tests/topbar/workflowTabs.spec.ts:80-88",
"browser_tests/tests/topbar/workflowTabs.spec.ts:129-135|browser_tests/tests/topbar/workflowTabs.spec.ts:142-148|browser_tests/tests/topbar/workflowTabs.spec.ts:155-162",
"browser_tests/tests/topbar/workflowTabs.spec.ts:205-214|browser_tests/tests/topbar/workflowTabs.spec.ts:227-236|browser_tests/tests/topbar/workflowTabs.spec.ts:249-258",
"browser_tests/tests/useSettingSearch.spec.ts:130-139|browser_tests/tests/useSettingSearch.spec.ts:142-151|browser_tests/tests/useSettingSearch.spec.ts:156-165",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:233-249|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:274-286|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:335-347|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:513-525",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:274-287|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:335-348|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:513-526",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:611-621|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:673-683|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:732-742|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:791-801",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:673-685|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:732-750|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:791-810",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:1027-1041|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:887-902|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:956-970",
"browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:1041-1050|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:902-911|browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts:970-979",
"browser_tests/tests/vueNodes/widgets/imageCrop.spec.ts:1005-1017|browser_tests/tests/vueNodes/widgets/imageCrop.spec.ts:364-376|browser_tests/tests/vueNodes/widgets/imageCrop.spec.ts:701-713",
"browser_tests/tests/workflowPersistence.spec.ts:427-447|browser_tests/tests/workflowPersistence.spec.ts:540-560|browser_tests/tests/workflowPersistence.spec.ts:616-636",
"packages/ingest-types/src/zod.gen.ts:2178-2189|packages/ingest-types/src/zod.gen.ts:2191-2202|packages/ingest-types/src/zod.gen.ts:3341-3352",
"packages/ingest-types/src/zod.gen.ts:2389-2400|packages/ingest-types/src/zod.gen.ts:2402-2413|packages/ingest-types/src/zod.gen.ts:2583-2594|packages/ingest-types/src/zod.gen.ts:2596-2607|packages/ingest-types/src/zod.gen.ts:3175-3186",
"packages/registry-types/src/comfyRegistryTypes.ts:7968-7994|packages/registry-types/src/comfyRegistryTypes.ts:8539-8565|packages/registry-types/src/comfyRegistryTypes.ts:8666-8693",
"packages/registry-types/src/comfyRegistryTypes.ts:8237-8259|packages/registry-types/src/comfyRegistryTypes.ts:8488-8510|packages/registry-types/src/comfyRegistryTypes.ts:8593-8615",
"packages/registry-types/src/comfyRegistryTypes.ts:20819-20867|packages/registry-types/src/comfyRegistryTypes.ts:22748-22786|packages/registry-types/src/comfyRegistryTypes.ts:24705-24753|packages/registry-types/src/comfyRegistryTypes.ts:24825-24863|packages/registry-types/src/comfyRegistryTypes.ts:25126-25164|packages/registry-types/src/comfyRegistryTypes.ts:25814-25856",
"packages/registry-types/src/comfyRegistryTypes.ts:20828-20867|packages/registry-types/src/comfyRegistryTypes.ts:24714-24753|packages/registry-types/src/comfyRegistryTypes.ts:25817-25856",
"packages/registry-types/src/comfyRegistryTypes.ts:20896-20925|packages/registry-types/src/comfyRegistryTypes.ts:21193-21225|packages/registry-types/src/comfyRegistryTypes.ts:21253-21285|packages/registry-types/src/comfyRegistryTypes.ts:21332-21364|packages/registry-types/src/comfyRegistryTypes.ts:21414-21446|packages/registry-types/src/comfyRegistryTypes.ts:22367-22396|packages/registry-types/src/comfyRegistryTypes.ts:23184-23213|packages/registry-types/src/comfyRegistryTypes.ts:30929-30958|packages/registry-types/src/comfyRegistryTypes.ts:36945-36974|packages/registry-types/src/comfyRegistryTypes.ts:37103-37132",
"packages/registry-types/src/comfyRegistryTypes.ts:20941-20970|packages/registry-types/src/comfyRegistryTypes.ts:20988-21019|packages/registry-types/src/comfyRegistryTypes.ts:22116-22173|packages/registry-types/src/comfyRegistryTypes.ts:22229-22258|packages/registry-types/src/comfyRegistryTypes.ts:22311-22340|packages/registry-types/src/comfyRegistryTypes.ts:22857-22886",
"packages/registry-types/src/comfyRegistryTypes.ts:20945-20970|packages/registry-types/src/comfyRegistryTypes.ts:20994-21019|packages/registry-types/src/comfyRegistryTypes.ts:22148-22173|packages/registry-types/src/comfyRegistryTypes.ts:22233-22258|packages/registry-types/src/comfyRegistryTypes.ts:22315-22340|packages/registry-types/src/comfyRegistryTypes.ts:22861-22886|packages/registry-types/src/comfyRegistryTypes.ts:22899-22924",
"packages/registry-types/src/comfyRegistryTypes.ts:21034-21064|packages/registry-types/src/comfyRegistryTypes.ts:21094-21122|packages/registry-types/src/comfyRegistryTypes.ts:21139-21165|packages/registry-types/src/comfyRegistryTypes.ts:21747-21794|packages/registry-types/src/comfyRegistryTypes.ts:21890-21918|packages/registry-types/src/comfyRegistryTypes.ts:21951-21979|packages/registry-types/src/comfyRegistryTypes.ts:22015-22046|packages/registry-types/src/comfyRegistryTypes.ts:22072-22100|packages/registry-types/src/comfyRegistryTypes.ts:32098-32126|packages/registry-types/src/comfyRegistryTypes.ts:32156-32184|packages/registry-types/src/comfyRegistryTypes.ts:36992-37020|packages/registry-types/src/comfyRegistryTypes.ts:37150-37178",
"packages/registry-types/src/comfyRegistryTypes.ts:21035-21064|packages/registry-types/src/comfyRegistryTypes.ts:21095-21122|packages/registry-types/src/comfyRegistryTypes.ts:21748-21794|packages/registry-types/src/comfyRegistryTypes.ts:21891-21918|packages/registry-types/src/comfyRegistryTypes.ts:21952-21979|packages/registry-types/src/comfyRegistryTypes.ts:22016-22046|packages/registry-types/src/comfyRegistryTypes.ts:22073-22100|packages/registry-types/src/comfyRegistryTypes.ts:32099-32126|packages/registry-types/src/comfyRegistryTypes.ts:32157-32184|packages/registry-types/src/comfyRegistryTypes.ts:36993-37020|packages/registry-types/src/comfyRegistryTypes.ts:37151-37178",
"packages/registry-types/src/comfyRegistryTypes.ts:21036-21064|packages/registry-types/src/comfyRegistryTypes.ts:21766-21794|packages/registry-types/src/comfyRegistryTypes.ts:22018-22046",
"packages/registry-types/src/comfyRegistryTypes.ts:21084-21122|packages/registry-types/src/comfyRegistryTypes.ts:21879-21918|packages/registry-types/src/comfyRegistryTypes.ts:21940-21979|packages/registry-types/src/comfyRegistryTypes.ts:32090-32126|packages/registry-types/src/comfyRegistryTypes.ts:32148-32184",
"packages/registry-types/src/comfyRegistryTypes.ts:21085-21122|packages/registry-types/src/comfyRegistryTypes.ts:21881-21918|packages/registry-types/src/comfyRegistryTypes.ts:21942-21979",
"packages/registry-types/src/comfyRegistryTypes.ts:21135-21162|packages/registry-types/src/comfyRegistryTypes.ts:31711-31736|packages/registry-types/src/comfyRegistryTypes.ts:31821-31846",
"packages/registry-types/src/comfyRegistryTypes.ts:21182-21225|packages/registry-types/src/comfyRegistryTypes.ts:21321-21364|packages/registry-types/src/comfyRegistryTypes.ts:21403-21446",
"packages/registry-types/src/comfyRegistryTypes.ts:21195-21225|packages/registry-types/src/comfyRegistryTypes.ts:21255-21285|packages/registry-types/src/comfyRegistryTypes.ts:21334-21364|packages/registry-types/src/comfyRegistryTypes.ts:21416-21446",
"packages/registry-types/src/comfyRegistryTypes.ts:21536-21605|packages/registry-types/src/comfyRegistryTypes.ts:23245-23283|packages/registry-types/src/comfyRegistryTypes.ts:23469-23507|packages/registry-types/src/comfyRegistryTypes.ts:24557-24595|packages/registry-types/src/comfyRegistryTypes.ts:24639-24677|packages/registry-types/src/comfyRegistryTypes.ts:24882-24920|packages/registry-types/src/comfyRegistryTypes.ts:24939-24982|packages/registry-types/src/comfyRegistryTypes.ts:25014-25052|packages/registry-types/src/comfyRegistryTypes.ts:25183-25221|packages/registry-types/src/comfyRegistryTypes.ts:25240-25283|packages/registry-types/src/comfyRegistryTypes.ts:25315-25353|packages/registry-types/src/comfyRegistryTypes.ts:25542-25583|packages/registry-types/src/comfyRegistryTypes.ts:25679-25717|packages/registry-types/src/comfyRegistryTypes.ts:25750-25788",
"packages/registry-types/src/comfyRegistryTypes.ts:21566-21605|packages/registry-types/src/comfyRegistryTypes.ts:24943-24982|packages/registry-types/src/comfyRegistryTypes.ts:25244-25283|packages/registry-types/src/comfyRegistryTypes.ts:25544-25583",
"packages/registry-types/src/comfyRegistryTypes.ts:21573-21605|packages/registry-types/src/comfyRegistryTypes.ts:22946-22978|packages/registry-types/src/comfyRegistryTypes.ts:23251-23283|packages/registry-types/src/comfyRegistryTypes.ts:23299-23331|packages/registry-types/src/comfyRegistryTypes.ts:23475-23507|packages/registry-types/src/comfyRegistryTypes.ts:23579-23611|packages/registry-types/src/comfyRegistryTypes.ts:23732-23764|packages/registry-types/src/comfyRegistryTypes.ts:24065-24097|packages/registry-types/src/comfyRegistryTypes.ts:24563-24595|packages/registry-types/src/comfyRegistryTypes.ts:24645-24677|packages/registry-types/src/comfyRegistryTypes.ts:24888-24920|packages/registry-types/src/comfyRegistryTypes.ts:24950-24982|packages/registry-types/src/comfyRegistryTypes.ts:25020-25052|packages/registry-types/src/comfyRegistryTypes.ts:25189-25221|packages/registry-types/src/comfyRegistryTypes.ts:25251-25283|packages/registry-types/src/comfyRegistryTypes.ts:25321-25353|packages/registry-types/src/comfyRegistryTypes.ts:25551-25583|packages/registry-types/src/comfyRegistryTypes.ts:25685-25717|packages/registry-types/src/comfyRegistryTypes.ts:25756-25788",
"packages/registry-types/src/comfyRegistryTypes.ts:21578-21605|packages/registry-types/src/comfyRegistryTypes.ts:21830-21857|packages/registry-types/src/comfyRegistryTypes.ts:22951-22978|packages/registry-types/src/comfyRegistryTypes.ts:23256-23283|packages/registry-types/src/comfyRegistryTypes.ts:23304-23331|packages/registry-types/src/comfyRegistryTypes.ts:23480-23507|packages/registry-types/src/comfyRegistryTypes.ts:23584-23611|packages/registry-types/src/comfyRegistryTypes.ts:23633-23660|packages/registry-types/src/comfyRegistryTypes.ts:23737-23764|packages/registry-types/src/comfyRegistryTypes.ts:24070-24097|packages/registry-types/src/comfyRegistryTypes.ts:24182-24209|packages/registry-types/src/comfyRegistryTypes.ts:24568-24595|packages/registry-types/src/comfyRegistryTypes.ts:24650-24677|packages/registry-types/src/comfyRegistryTypes.ts:24893-24920|packages/registry-types/src/comfyRegistryTypes.ts:24955-24982|packages/registry-types/src/comfyRegistryTypes.ts:25025-25052|packages/registry-types/src/comfyRegistryTypes.ts:25194-25221|packages/registry-types/src/comfyRegistryTypes.ts:25256-25283|packages/registry-types/src/comfyRegistryTypes.ts:25326-25353|packages/registry-types/src/comfyRegistryTypes.ts:25556-25583|packages/registry-types/src/comfyRegistryTypes.ts:25690-25717|packages/registry-types/src/comfyRegistryTypes.ts:25761-25788|packages/registry-types/src/comfyRegistryTypes.ts:31492-31519|packages/registry-types/src/comfyRegistryTypes.ts:38046-38073",
"packages/registry-types/src/comfyRegistryTypes.ts:21871-21906|packages/registry-types/src/comfyRegistryTypes.ts:21932-21967|packages/registry-types/src/comfyRegistryTypes.ts:22272-22328",
"packages/registry-types/src/comfyRegistryTypes.ts:22192-22258|packages/registry-types/src/comfyRegistryTypes.ts:22299-22340|packages/registry-types/src/comfyRegistryTypes.ts:22848-22886",
"packages/registry-types/src/comfyRegistryTypes.ts:22934-22967|packages/registry-types/src/comfyRegistryTypes.ts:23567-23600|packages/registry-types/src/comfyRegistryTypes.ts:25594-25639",
"packages/registry-types/src/comfyRegistryTypes.ts:23074-23107|packages/registry-types/src/comfyRegistryTypes.ts:23786-23815|packages/registry-types/src/comfyRegistryTypes.ts:23947-23976",
"packages/registry-types/src/comfyRegistryTypes.ts:23236-23283|packages/registry-types/src/comfyRegistryTypes.ts:23460-23507|packages/registry-types/src/comfyRegistryTypes.ts:24548-24595|packages/registry-types/src/comfyRegistryTypes.ts:24630-24677|packages/registry-types/src/comfyRegistryTypes.ts:25005-25052|packages/registry-types/src/comfyRegistryTypes.ts:25306-25353|packages/registry-types/src/comfyRegistryTypes.ts:25741-25788",
"packages/registry-types/src/comfyRegistryTypes.ts:23290-23318|packages/registry-types/src/comfyRegistryTypes.ts:23515-23543|packages/registry-types/src/comfyRegistryTypes.ts:23723-23751",
"packages/registry-types/src/comfyRegistryTypes.ts:23404-23436|packages/registry-types/src/comfyRegistryTypes.ts:23684-23716|packages/registry-types/src/comfyRegistryTypes.ts:24436-24468",
"packages/registry-types/src/comfyRegistryTypes.ts:23884-23919|packages/registry-types/src/comfyRegistryTypes.ts:30966-31005|packages/registry-types/src/comfyRegistryTypes.ts:31013-31052",
"packages/registry-types/src/comfyRegistryTypes.ts:25954-26017|packages/registry-types/src/comfyRegistryTypes.ts:26036-26099|packages/registry-types/src/comfyRegistryTypes.ts:26118-26181|packages/registry-types/src/comfyRegistryTypes.ts:26201-26264|packages/registry-types/src/comfyRegistryTypes.ts:26541-26604|packages/registry-types/src/comfyRegistryTypes.ts:29656-29719|packages/registry-types/src/comfyRegistryTypes.ts:29739-29802|packages/registry-types/src/comfyRegistryTypes.ts:29822-29885|packages/registry-types/src/comfyRegistryTypes.ts:29905-29968|packages/registry-types/src/comfyRegistryTypes.ts:29988-30051|packages/registry-types/src/comfyRegistryTypes.ts:30071-30134|packages/registry-types/src/comfyRegistryTypes.ts:30154-30217|packages/registry-types/src/comfyRegistryTypes.ts:30237-30300|packages/registry-types/src/comfyRegistryTypes.ts:31072-31135",
"packages/registry-types/src/comfyRegistryTypes.ts:26191-26219|packages/registry-types/src/comfyRegistryTypes.ts:26309-26337|packages/registry-types/src/comfyRegistryTypes.ts:26531-26559|packages/registry-types/src/comfyRegistryTypes.ts:30908-30947",
"packages/registry-types/src/comfyRegistryTypes.ts:26624-26700|packages/registry-types/src/comfyRegistryTypes.ts:26721-26797|packages/registry-types/src/comfyRegistryTypes.ts:26816-26892|packages/registry-types/src/comfyRegistryTypes.ts:26913-26989|packages/registry-types/src/comfyRegistryTypes.ts:27008-27084|packages/registry-types/src/comfyRegistryTypes.ts:27315-27391|packages/registry-types/src/comfyRegistryTypes.ts:27412-27488|packages/registry-types/src/comfyRegistryTypes.ts:27507-27583|packages/registry-types/src/comfyRegistryTypes.ts:27604-27680|packages/registry-types/src/comfyRegistryTypes.ts:27701-27777|packages/registry-types/src/comfyRegistryTypes.ts:27796-27872|packages/registry-types/src/comfyRegistryTypes.ts:27893-27969|packages/registry-types/src/comfyRegistryTypes.ts:27990-28066|packages/registry-types/src/comfyRegistryTypes.ts:28085-28161|packages/registry-types/src/comfyRegistryTypes.ts:28182-28258|packages/registry-types/src/comfyRegistryTypes.ts:28277-28353|packages/registry-types/src/comfyRegistryTypes.ts:28374-28450|packages/registry-types/src/comfyRegistryTypes.ts:28469-28545|packages/registry-types/src/comfyRegistryTypes.ts:28566-28642|packages/registry-types/src/comfyRegistryTypes.ts:28661-28737|packages/registry-types/src/comfyRegistryTypes.ts:28819-28895|packages/registry-types/src/comfyRegistryTypes.ts:28916-28992|packages/registry-types/src/comfyRegistryTypes.ts:29011-29087|packages/registry-types/src/comfyRegistryTypes.ts:29108-29184|packages/registry-types/src/comfyRegistryTypes.ts:29203-29279|packages/registry-types/src/comfyRegistryTypes.ts:29300-29376|packages/registry-types/src/comfyRegistryTypes.ts:29397-29473|packages/registry-types/src/comfyRegistryTypes.ts:29492-29568",
"packages/registry-types/src/comfyRegistryTypes.ts:26711-26797|packages/registry-types/src/comfyRegistryTypes.ts:26903-26989|packages/registry-types/src/comfyRegistryTypes.ts:28364-28450",
"packages/registry-types/src/comfyRegistryTypes.ts:26798-26892|packages/registry-types/src/comfyRegistryTypes.ts:26990-27084|packages/registry-types/src/comfyRegistryTypes.ts:28451-28545",
"packages/registry-types/src/comfyRegistryTypes.ts:27105-27154|packages/registry-types/src/comfyRegistryTypes.ts:27175-27224|packages/registry-types/src/comfyRegistryTypes.ts:27245-27294",
"packages/registry-types/src/comfyRegistryTypes.ts:27127-27154|packages/registry-types/src/comfyRegistryTypes.ts:27197-27224|packages/registry-types/src/comfyRegistryTypes.ts:27267-27294|packages/registry-types/src/comfyRegistryTypes.ts:28771-28798",
"packages/registry-types/src/comfyRegistryTypes.ts:27307-27391|packages/registry-types/src/comfyRegistryTypes.ts:27400-27488|packages/registry-types/src/comfyRegistryTypes.ts:27499-27583",
"packages/registry-types/src/comfyRegistryTypes.ts:27596-27680|packages/registry-types/src/comfyRegistryTypes.ts:27689-27777|packages/registry-types/src/comfyRegistryTypes.ts:27788-27872",
"packages/registry-types/src/comfyRegistryTypes.ts:27885-27969|packages/registry-types/src/comfyRegistryTypes.ts:27978-28066|packages/registry-types/src/comfyRegistryTypes.ts:28077-28161",
"packages/registry-types/src/comfyRegistryTypes.ts:28811-28895|packages/registry-types/src/comfyRegistryTypes.ts:28904-28992|packages/registry-types/src/comfyRegistryTypes.ts:29003-29087",
"packages/registry-types/src/comfyRegistryTypes.ts:29292-29376|packages/registry-types/src/comfyRegistryTypes.ts:29385-29473|packages/registry-types/src/comfyRegistryTypes.ts:29484-29568",
"packages/registry-types/src/comfyRegistryTypes.ts:29895-29968|packages/registry-types/src/comfyRegistryTypes.ts:29978-30051|packages/registry-types/src/comfyRegistryTypes.ts:30061-30134|packages/registry-types/src/comfyRegistryTypes.ts:30144-30217|packages/registry-types/src/comfyRegistryTypes.ts:30227-30300",
"packages/registry-types/src/comfyRegistryTypes.ts:30611-30666|packages/registry-types/src/comfyRegistryTypes.ts:30679-30734|packages/registry-types/src/comfyRegistryTypes.ts:30747-30802",
"packages/registry-types/src/comfyRegistryTypes.ts:30621-30666|packages/registry-types/src/comfyRegistryTypes.ts:30689-30734|packages/registry-types/src/comfyRegistryTypes.ts:30757-30802|packages/registry-types/src/comfyRegistryTypes.ts:30828-30873|packages/registry-types/src/comfyRegistryTypes.ts:37324-37369|packages/registry-types/src/comfyRegistryTypes.ts:37389-37434|packages/registry-types/src/comfyRegistryTypes.ts:37454-37499",
"packages/registry-types/src/comfyRegistryTypes.ts:31415-31453|packages/registry-types/src/comfyRegistryTypes.ts:31539-31577|packages/registry-types/src/comfyRegistryTypes.ts:31597-31635|packages/registry-types/src/comfyRegistryTypes.ts:37978-38016|packages/registry-types/src/comfyRegistryTypes.ts:38093-38131|packages/registry-types/src/comfyRegistryTypes.ts:38151-38189",
"packages/registry-types/src/comfyRegistryTypes.ts:31415-31442|packages/registry-types/src/comfyRegistryTypes.ts:31472-31499|packages/registry-types/src/comfyRegistryTypes.ts:31539-31566|packages/registry-types/src/comfyRegistryTypes.ts:31597-31624|packages/registry-types/src/comfyRegistryTypes.ts:37519-37546|packages/registry-types/src/comfyRegistryTypes.ts:37586-37613|packages/registry-types/src/comfyRegistryTypes.ts:37978-38005|packages/registry-types/src/comfyRegistryTypes.ts:38093-38120|packages/registry-types/src/comfyRegistryTypes.ts:38151-38178",
"packages/registry-types/src/comfyRegistryTypes.ts:31424-31449|packages/registry-types/src/comfyRegistryTypes.ts:31548-31573|packages/registry-types/src/comfyRegistryTypes.ts:31606-31631|packages/registry-types/src/comfyRegistryTypes.ts:37987-38012|packages/registry-types/src/comfyRegistryTypes.ts:38102-38127|packages/registry-types/src/comfyRegistryTypes.ts:38160-38185|packages/registry-types/src/comfyRegistryTypes.ts:38218-38243|packages/registry-types/src/comfyRegistryTypes.ts:38325-38350|packages/registry-types/src/comfyRegistryTypes.ts:38432-38457|packages/registry-types/src/comfyRegistryTypes.ts:38539-38564|packages/registry-types/src/comfyRegistryTypes.ts:38646-38671|packages/registry-types/src/comfyRegistryTypes.ts:38753-38778",
"packages/registry-types/src/comfyRegistryTypes.ts:31481-31506|packages/registry-types/src/comfyRegistryTypes.ts:37652-37677|packages/registry-types/src/comfyRegistryTypes.ts:38035-38060",
"packages/registry-types/src/comfyRegistryTypes.ts:31923-31959|packages/registry-types/src/comfyRegistryTypes.ts:31979-32015|packages/registry-types/src/comfyRegistryTypes.ts:32035-32071|packages/registry-types/src/comfyRegistryTypes.ts:36287-36323|packages/registry-types/src/comfyRegistryTypes.ts:36343-36379|packages/registry-types/src/comfyRegistryTypes.ts:36399-36435|packages/registry-types/src/comfyRegistryTypes.ts:36455-36491|packages/registry-types/src/comfyRegistryTypes.ts:36511-36547",
"packages/registry-types/src/comfyRegistryTypes.ts:32447-32504|packages/registry-types/src/comfyRegistryTypes.ts:32739-32755|packages/registry-types/src/comfyRegistryTypes.ts:32854-32870|packages/registry-types/src/comfyRegistryTypes.ts:33056-33072",
"packages/registry-types/src/comfyRegistryTypes.ts:32739-32755|packages/registry-types/src/comfyRegistryTypes.ts:32854-32870|packages/registry-types/src/comfyRegistryTypes.ts:33056-33072",
"packages/registry-types/src/comfyRegistryTypes.ts:33430-33469|packages/registry-types/src/comfyRegistryTypes.ts:34167-34206|packages/registry-types/src/comfyRegistryTypes.ts:34226-34265|packages/registry-types/src/comfyRegistryTypes.ts:34285-34324",
"packages/registry-types/src/comfyRegistryTypes.ts:33528-33607|packages/registry-types/src/comfyRegistryTypes.ts:33630-33711|packages/registry-types/src/comfyRegistryTypes.ts:33976-34052|packages/registry-types/src/comfyRegistryTypes.ts:34068-34147",
"packages/registry-types/src/comfyRegistryTypes.ts:33530-33607|packages/registry-types/src/comfyRegistryTypes.ts:33632-33711|packages/registry-types/src/comfyRegistryTypes.ts:34070-34147",
"packages/registry-types/src/comfyRegistryTypes.ts:33562-33587|packages/registry-types/src/comfyRegistryTypes.ts:33666-33691|packages/registry-types/src/comfyRegistryTypes.ts:33767-33792|packages/registry-types/src/comfyRegistryTypes.ts:34007-34032|packages/registry-types/src/comfyRegistryTypes.ts:34102-34127",
"packages/registry-types/src/comfyRegistryTypes.ts:33580-33607|packages/registry-types/src/comfyRegistryTypes.ts:33684-33711|packages/registry-types/src/comfyRegistryTypes.ts:33794-33821|packages/registry-types/src/comfyRegistryTypes.ts:34025-34052|packages/registry-types/src/comfyRegistryTypes.ts:34120-34147",
"packages/registry-types/src/comfyRegistryTypes.ts:34491-34532|packages/registry-types/src/comfyRegistryTypes.ts:34533-34574|packages/registry-types/src/comfyRegistryTypes.ts:34575-34616|packages/registry-types/src/comfyRegistryTypes.ts:34617-34658",
"packages/registry-types/src/comfyRegistryTypes.ts:35643-35674|packages/registry-types/src/comfyRegistryTypes.ts:35735-35766|packages/registry-types/src/comfyRegistryTypes.ts:35827-35858|packages/registry-types/src/comfyRegistryTypes.ts:35919-35950|packages/registry-types/src/comfyRegistryTypes.ts:36011-36042|packages/registry-types/src/comfyRegistryTypes.ts:36103-36134|packages/registry-types/src/comfyRegistryTypes.ts:36195-36226",
"packages/registry-types/src/comfyRegistryTypes.ts:36389-36435|packages/registry-types/src/comfyRegistryTypes.ts:36445-36491|packages/registry-types/src/comfyRegistryTypes.ts:36501-36547",
"packages/registry-types/src/comfyRegistryTypes.ts:36630-36673|packages/registry-types/src/comfyRegistryTypes.ts:36693-36736|packages/registry-types/src/comfyRegistryTypes.ts:36756-36799|packages/registry-types/src/comfyRegistryTypes.ts:36819-36862|packages/registry-types/src/comfyRegistryTypes.ts:36882-36925|packages/registry-types/src/comfyRegistryTypes.ts:37040-37083|packages/registry-types/src/comfyRegistryTypes.ts:37198-37241|packages/registry-types/src/comfyRegistryTypes.ts:37261-37304",
"packages/registry-types/src/comfyRegistryTypes.ts:36737-36799|packages/registry-types/src/comfyRegistryTypes.ts:36800-36862|packages/registry-types/src/comfyRegistryTypes.ts:36863-36925",
"packages/registry-types/src/comfyRegistryTypes.ts:37314-37369|packages/registry-types/src/comfyRegistryTypes.ts:37379-37434|packages/registry-types/src/comfyRegistryTypes.ts:37444-37499",
"packages/registry-types/src/comfyRegistryTypes.ts:37700-37757|packages/registry-types/src/comfyRegistryTypes.ts:37767-37824|packages/registry-types/src/comfyRegistryTypes.ts:37834-37891|packages/registry-types/src/comfyRegistryTypes.ts:37901-37958",
"packages/registry-types/src/comfyRegistryTypes.ts:37968-38016|packages/registry-types/src/comfyRegistryTypes.ts:38083-38131|packages/registry-types/src/comfyRegistryTypes.ts:38141-38189",
"packages/registry-types/src/comfyRegistryTypes.ts:38209-38247|packages/registry-types/src/comfyRegistryTypes.ts:38316-38354|packages/registry-types/src/comfyRegistryTypes.ts:38423-38461|packages/registry-types/src/comfyRegistryTypes.ts:38530-38568|packages/registry-types/src/comfyRegistryTypes.ts:38637-38675",
"packages/registry-types/src/comfyRegistryTypes.ts:38248-38296|packages/registry-types/src/comfyRegistryTypes.ts:38355-38403|packages/registry-types/src/comfyRegistryTypes.ts:38462-38510|packages/registry-types/src/comfyRegistryTypes.ts:38569-38617|packages/registry-types/src/comfyRegistryTypes.ts:38676-38724",
"packages/registry-types/src/comfyRegistryTypes.ts:38306-38354|packages/registry-types/src/comfyRegistryTypes.ts:38413-38461|packages/registry-types/src/comfyRegistryTypes.ts:38520-38568|packages/registry-types/src/comfyRegistryTypes.ts:38627-38675",
"packages/registry-types/src/comfyRegistryTypes.ts:38931-38960|packages/registry-types/src/comfyRegistryTypes.ts:39063-39092|packages/registry-types/src/comfyRegistryTypes.ts:39113-39142|packages/registry-types/src/comfyRegistryTypes.ts:39328-39357|packages/registry-types/src/comfyRegistryTypes.ts:39386-39415",
"packages/registry-types/src/comfyRegistryTypes.ts:38931-38960|packages/registry-types/src/comfyRegistryTypes.ts:38987-39016|packages/registry-types/src/comfyRegistryTypes.ts:39063-39092|packages/registry-types/src/comfyRegistryTypes.ts:39113-39142|packages/registry-types/src/comfyRegistryTypes.ts:39162-39194|packages/registry-types/src/comfyRegistryTypes.ts:39328-39357|packages/registry-types/src/comfyRegistryTypes.ts:39386-39415",
"packages/registry-types/src/comfyRegistryTypes.ts:39445-39477|packages/registry-types/src/comfyRegistryTypes.ts:39526-39558|packages/registry-types/src/comfyRegistryTypes.ts:39607-39639|packages/registry-types/src/comfyRegistryTypes.ts:39688-39720|packages/registry-types/src/comfyRegistryTypes.ts:39730-39762|packages/registry-types/src/comfyRegistryTypes.ts:39772-39804",
"packages/registry-types/src/comfyRegistryTypes.ts:39478-39516|packages/registry-types/src/comfyRegistryTypes.ts:39559-39597|packages/registry-types/src/comfyRegistryTypes.ts:39640-39678|packages/registry-types/src/comfyRegistryTypes.ts:39805-39843|packages/registry-types/src/comfyRegistryTypes.ts:39886-39924",
"scripts/cicd/extract-playwright-counts.ts:168-177|scripts/cicd/extract-playwright-counts.ts:206-215|scripts/cicd/extract-playwright-counts.ts:233-242",
"src/base/common/downloadUtil.test.ts:177-190|src/base/common/downloadUtil.test.ts:205-217|src/base/common/downloadUtil.test.ts:233-246",
"src/base/common/downloadUtil.test.ts:224-230|src/base/common/downloadUtil.test.ts:254-262|src/base/common/downloadUtil.test.ts:286-292",
"src/components/TopMenuSection.test.ts:307-311|src/components/TopMenuSection.test.ts:323-327|src/components/TopMenuSection.test.ts:337-341",
"src/components/actionbar/ComfyActionbar.vue:415-420|src/components/queue/QueueProgressOverlay.vue:270-277|src/components/sidebar/tabs/JobHistorySidebarTab.vue:165-170",
"src/components/bottomPanel/tabs/terminal/BaseTerminal.test.ts:172-183|src/components/bottomPanel/tabs/terminal/BaseTerminal.test.ts:193-204|src/components/bottomPanel/tabs/terminal/BaseTerminal.test.ts:211-222",
"src/components/builder/useAppModeWidgetResizing.test.ts:140-145|src/components/builder/useAppModeWidgetResizing.test.ts:152-157|src/components/builder/useAppModeWidgetResizing.test.ts:49-54|src/components/builder/useAppModeWidgetResizing.test.ts:61-66|src/components/builder/useAppModeWidgetResizing.test.ts:72-77",
"src/components/common/ColorCustomizationSelector.test.ts:107-118|src/components/common/ColorCustomizationSelector.test.ts:128-139|src/components/common/ColorCustomizationSelector.test.ts:94-104",
"src/components/common/FormColorPicker.test.ts:34-44|src/components/common/FormColorPicker.test.ts:49-59|src/components/common/FormColorPicker.test.ts:79-89",
"src/components/common/TextTicker.test.ts:45-57|src/components/common/TextTicker.test.ts:69-81|src/components/common/TextTicker.test.ts:92-104",
"src/components/common/TreeExplorerV2Node.test.ts:349-356|src/components/common/TreeExplorerV2Node.test.ts:372-380|src/components/common/TreeExplorerV2Node.test.ts:392-400",
"src/components/common/UserCredit.test.ts:9-21|src/components/dialog/content/signin/SignUpForm.test.ts:17-29|src/components/topbar/CurrentUserButton.test.ts:24-36",
"src/components/common/UserCredit.test.ts:9-20|src/components/dialog/content/signin/SignInForm.test.ts:19-30|src/components/dialog/content/signin/SignUpForm.test.ts:17-28|src/components/topbar/CurrentUserButton.test.ts:24-35",
"src/components/load3d/controls/LightControls.test.ts:25-51|src/components/load3d/controls/viewer/ViewerCameraControls.test.ts:67-102|src/components/load3d/controls/viewer/ViewerLightControls.test.ts:14-43",
"src/components/load3d/controls/viewer/ViewerCameraControls.test.ts:10-69|src/components/load3d/controls/viewer/ViewerExportControls.test.ts:8-67|src/components/load3d/controls/viewer/ViewerModelControls.test.ts:12-71",
"src/components/maskeditor/BrushSettingsPanel.test.ts:31-57|src/components/maskeditor/ImageLayerSettingsPanel.test.ts:36-65|src/components/maskeditor/PaintBucketSettingsPanel.test.ts:16-37",
"src/components/queue/job/JobAssetsList.test.ts:388-396|src/components/queue/job/JobAssetsList.test.ts:418-426|src/components/queue/job/JobAssetsList.test.ts:451-459",
"src/components/queue/job/useQueueEstimates.ts:112-116|src/components/queue/job/useQueueEstimates.ts:64-68|src/components/queue/job/useQueueEstimates.ts:97-101",
"src/components/rightSidePanel/errors/TabErrors.test.ts:15-25|src/components/rightSidePanel/errors/swapNodeGroups.test.ts:8-18|src/components/rightSidePanel/errors/useErrorGroups.test.ts:8-18",
"src/components/rightSidePanel/errors/useErrorGroups.test.ts:236-249|src/components/rightSidePanel/errors/useErrorGroups.test.ts:372-385|src/components/rightSidePanel/errors/useErrorGroups.test.ts:392-405",
"src/components/rightSidePanel/errors/useErrorGroups.test.ts:658-670|src/components/rightSidePanel/errors/useErrorGroups.test.ts:686-698|src/components/rightSidePanel/errors/useErrorGroups.test.ts:714-726",
"src/components/rightSidePanel/parameters/WidgetActions.test.ts:143-150|src/components/rightSidePanel/parameters/WidgetActions.test.ts:183-190|src/components/rightSidePanel/parameters/WidgetActions.test.ts:199-206",
"src/components/rightSidePanel/parameters/WidgetItem.test.ts:165-175|src/components/rightSidePanel/parameters/WidgetItem.test.ts:180-190|src/components/rightSidePanel/parameters/WidgetItem.test.ts:195-205",
"src/components/rightSidePanel/subgraph/SubgraphEditor.test.ts:125-134|src/components/rightSidePanel/subgraph/SubgraphEditor.test.ts:237-246|src/components/rightSidePanel/subgraph/SubgraphEditor.test.ts:70-79|src/core/graph/subgraph/promotionUtils.test.ts:625-634|src/core/graph/subgraph/promotionUtils.test.ts:681-690",
"src/components/searchbox/NodeSearchBoxPopover.test.ts:223-233|src/components/searchbox/NodeSearchBoxPopover.test.ts:238-248|src/components/searchbox/NodeSearchBoxPopover.test.ts:253-263",
"src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:170-177|src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:205-212|src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:364-371",
"src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:383-394|src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:406-415|src/components/searchbox/v2/NodeSearchCategorySidebar.test.ts:426-435",
"src/components/sidebar/tabs/ModelLibrarySidebarTab.test.ts:92-110|src/components/sidebar/tabs/NodeLibrarySidebarTab.test.ts:84-99|src/components/sidebar/tabs/nodeLibrary/NodeBookmarkTreeExplorer.test.ts:101-114",
"src/composables/boundingBoxes/useBoundingBoxes.ts:541-546|src/composables/useLoad3d.ts:191-199|src/extensions/core/load3d.ts:744-757|src/extensions/core/load3dPreviewExtensions.ts:142-156",
"src/composables/graph/useErrorClearingHooks.test.ts:606-620|src/composables/graph/useErrorClearingHooks.test.ts:699-711|src/composables/graph/useErrorClearingHooks.test.ts:745-757",
"src/composables/graph/useErrorClearingHooks.test.ts:627-645|src/composables/graph/useErrorClearingHooks.test.ts:719-734|src/composables/graph/useErrorClearingHooks.test.ts:767-782",
"src/composables/graph/useGraphNodeManager.test.ts:115-122|src/composables/graph/useGraphNodeManager.test.ts:126-134|src/composables/graph/useGraphNodeManager.test.ts:241-248",
"src/composables/graph/useGraphNodeManager.test.ts:128-134|src/composables/graph/useGraphNodeManager.test.ts:206-210|src/composables/graph/useGraphNodeManager.test.ts:243-248",
"src/composables/maskeditor/useBrushDrawing.test.ts:224-232|src/composables/maskeditor/useBrushDrawing.test.ts:239-245|src/composables/maskeditor/useBrushDrawing.test.ts:253-259",
"src/composables/maskeditor/useCanvasHistory.test.ts:376-384|src/composables/maskeditor/useCanvasHistory.test.ts:394-402|src/composables/maskeditor/useCanvasHistory.test.ts:436-444",
"src/composables/maskeditor/useCanvasManager.test.ts:108-116|src/composables/maskeditor/useCanvasManager.test.ts:143-151|src/composables/maskeditor/useCanvasManager.test.ts:154-162|src/composables/maskeditor/useCanvasManager.test.ts:92-100",
"src/composables/maskeditor/useCanvasTransform.test.ts:140-145|src/composables/maskeditor/useCanvasTransform.test.ts:147-152|src/composables/maskeditor/useCanvasTransform.test.ts:154-159",
"src/composables/maskeditor/useCanvasTransform.test.ts:278-309|src/composables/maskeditor/useCanvasTransform.test.ts:356-387|src/composables/maskeditor/useCanvasTransform.test.ts:479-510|src/composables/maskeditor/useCanvasTransform.test.ts:544-575",
"src/composables/maskeditor/useCanvasTransform.test.ts:322-328|src/composables/maskeditor/useCanvasTransform.test.ts:400-406|src/composables/maskeditor/useCanvasTransform.test.ts:588-594",
"src/composables/node/useNodeDragAndDrop.test.ts:7-14|src/composables/node/useNodeFileInput.test.ts:7-14|src/composables/node/useNodePaste.test.ts:7-14",
"src/composables/node/useNodePricing.test.ts:136-142|src/composables/node/useNodePricing.test.ts:365-371|src/composables/node/useNodePricing.test.ts:765-772",
"src/composables/node/useNodePricing.test.ts:167-176|src/composables/node/useNodePricing.test.ts:502-511|src/composables/node/useNodePricing.test.ts:519-528",
"src/composables/node/useNodePricing.test.ts:167-173|src/composables/node/useNodePricing.test.ts:183-189|src/composables/node/useNodePricing.test.ts:199-205|src/composables/node/useNodePricing.test.ts:216-222|src/composables/node/useNodePricing.test.ts:232-238|src/composables/node/useNodePricing.test.ts:249-255|src/composables/node/useNodePricing.test.ts:271-277|src/composables/node/useNodePricing.test.ts:296-303|src/composables/node/useNodePricing.test.ts:323-330|src/composables/node/useNodePricing.test.ts:442-448|src/composables/node/useNodePricing.test.ts:461-467|src/composables/node/useNodePricing.test.ts:502-508|src/composables/node/useNodePricing.test.ts:536-542|src/composables/node/useNodePricing.test.ts:827-835",
"src/composables/node/useNodePricing.test.ts:216-225|src/composables/node/useNodePricing.test.ts:232-241|src/composables/node/useNodePricing.test.ts:271-280|src/composables/node/useNodePricing.test.ts:442-451",
"src/composables/node/useNodePricing.test.ts:339-348|src/composables/node/useNodePricing.test.ts:352-361|src/composables/node/useNodePricing.test.ts:378-387|src/composables/node/useNodePricing.test.ts:391-400|src/composables/node/useNodePricing.test.ts:405-415",
"src/composables/node/useNodePricing.test.ts:339-346|src/composables/node/useNodePricing.test.ts:352-359|src/composables/node/useNodePricing.test.ts:378-385|src/composables/node/useNodePricing.test.ts:391-398|src/composables/node/useNodePricing.test.ts:405-413|src/composables/node/useNodePricing.test.ts:420-428",
"src/composables/node/useNodePricing.test.ts:722-732|src/composables/node/useNodePricing.test.ts:737-746|src/composables/node/useNodePricing.test.ts:751-760|src/composables/node/useNodePricing.test.ts:780-789",
"src/composables/node/useNodePricing.test.ts:722-730|src/composables/node/useNodePricing.test.ts:737-744|src/composables/node/useNodePricing.test.ts:751-758|src/composables/node/useNodePricing.test.ts:780-787|src/composables/node/useNodePricing.test.ts:793-800",
"src/composables/queue/useJobMenu.ts:165-173|src/platform/assets/composables/useMediaAssetActions.ts:380-388|src/platform/assets/composables/useMediaAssetActions.ts:518-528",
"src/composables/useBrowserTabTitle.test.ts:125-134|src/composables/useBrowserTabTitle.test.ts:144-153|src/composables/useBrowserTabTitle.test.ts:93-102",
"src/composables/useCurveEditor.test.ts:196-208|src/composables/useCurveEditor.test.ts:299-311|src/composables/useCurveEditor.test.ts:329-340",
"src/composables/useImageCrop.test.ts:464-477|src/composables/useImageCrop.test.ts:488-501|src/composables/useImageCrop.test.ts:541-554|src/composables/useImageCrop.test.ts:566-579",
"src/composables/useImageCrop.test.ts:464-475|src/composables/useImageCrop.test.ts:488-499|src/composables/useImageCrop.test.ts:541-552|src/composables/useImageCrop.test.ts:566-577|src/composables/useImageCrop.test.ts:588-598",
"src/composables/useLoad3d.test.ts:1053-1060|src/composables/useLoad3d.test.ts:1067-1074|src/composables/useLoad3d.test.ts:1081-1088",
"src/composables/useLoad3d.test.ts:1804-1811|src/composables/useLoad3d.test.ts:1882-1889|src/composables/useLoad3d.test.ts:1897-1904",
"src/composables/useLoad3d.test.ts:1805-1811|src/composables/useLoad3d.test.ts:1829-1835|src/composables/useLoad3d.test.ts:1883-1889|src/composables/useLoad3d.test.ts:1898-1904",
"src/composables/useLoad3dViewer.test.ts:515-526|src/composables/useLoad3dViewer.test.ts:534-545|src/composables/useLoad3dViewer.test.ts:565-576",
"src/composables/usePaste.test.ts:207-214|src/composables/usePaste.test.ts:292-299|src/composables/usePaste.test.ts:388-395",
"src/composables/usePaste.test.ts:429-435|src/composables/usePaste.test.ts:446-452|src/composables/usePaste.test.ts:485-491",
"src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:26-31|src/lib/litegraph/src/LGraphCanvas.clipboard.test.ts:30-35|src/lib/litegraph/src/subgraph/SubgraphWidgetPromotion.test.ts:38-43",
"src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:431-440|src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:607-616|src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:621-630",
"src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:431-439|src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:607-614|src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:621-628|src/core/graph/subgraph/migration/proxyWidgetMigration.test.ts:707-714",
"src/core/graph/subgraph/promotionUtils.test.ts:619-633|src/core/graph/subgraph/promotionUtils.test.ts:645-659|src/core/graph/subgraph/promotionUtils.test.ts:675-689",
"src/core/graph/subgraph/promotionUtils.test.ts:619-627|src/core/graph/subgraph/promotionUtils.test.ts:645-653|src/core/graph/subgraph/promotionUtils.test.ts:675-683|src/core/graph/subgraph/promotionUtils.test.ts:734-742",
"src/core/graph/subgraph/resolveConcretePromotedWidget.test.ts:15-27|src/core/graph/subgraph/resolveSubgraphInputLink.test.ts:16-35|src/core/graph/subgraph/resolveSubgraphInputTarget.test.ts:15-34",
"src/extensions/core/groupOptions.ts:162-177|src/extensions/core/groupOptions.ts:181-196|src/extensions/core/groupOptions.ts:209-224",
"src/extensions/core/load3d/Load3DConfiguration.test.ts:198-220|src/extensions/core/load3d/Load3DConfiguration.test.ts:511-533|src/extensions/core/load3d/Load3DConfiguration.test.ts:609-631|src/extensions/core/load3d/Load3DConfiguration.test.ts:691-713",
"src/extensions/core/load3d/Load3dUtils.ts:20-32|src/extensions/core/webcamCapture.ts:137-147|src/services/audioService.ts:58-70",
"src/extensions/core/load3d/LoaderManager.test.ts:160-166|src/extensions/core/load3d/LoaderManager.test.ts:169-174|src/extensions/core/load3d/LoaderManager.test.ts:180-185",
"src/extensions/core/load3d/ModelExporter.test.ts:132-141|src/extensions/core/load3d/ModelExporter.test.ts:246-255|src/extensions/core/load3d/ModelExporter.test.ts:294-303|src/extensions/core/load3d/ModelExporter.test.ts:342-351|src/extensions/core/load3d/ModelExporter.test.ts:371-380",
"src/extensions/core/load3d/ModelExporter.test.ts:132-139|src/extensions/core/load3d/ModelExporter.test.ts:186-193|src/extensions/core/load3d/ModelExporter.test.ts:246-253|src/extensions/core/load3d/ModelExporter.test.ts:294-301|src/extensions/core/load3d/ModelExporter.test.ts:342-349|src/extensions/core/load3d/ModelExporter.test.ts:371-378",
"src/extensions/core/load3d.test.ts:919-927|src/extensions/core/load3d.test.ts:936-943|src/extensions/core/load3d.test.ts:959-967",
"src/extensions/core/load3d.ts:360-371|src/extensions/core/load3d.ts:686-697|src/extensions/core/load3dPreviewExtensions.ts:96-107|src/extensions/core/saveMesh.ts:124-135",
"src/extensions/core/load3d.ts:622-630|src/extensions/core/load3d.ts:789-797|src/extensions/core/load3dPreviewExtensions.ts:190-198",
"src/extensions/core/load3dLazy.test.ts:110-119|src/extensions/core/load3dLazy.test.ts:127-136|src/extensions/core/load3dLazy.test.ts:155-164",
"src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:584-597|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:648-661|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:730-743",
"src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:584-595|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:648-659|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:669-680|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:730-741",
"src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:1037-1048|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:585-597|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:649-661|src/lib/litegraph/src/CanvasPointer.deviceDetection.test.ts:731-743",
"src/lib/litegraph/src/LGraph.ts:2216-2223|src/lib/litegraph/src/LGraph.ts:2236-2243|src/lib/litegraph/src/LGraph.ts:2256-2263",
"src/lib/litegraph/src/LGraphCanvas.cloneZIndex.test.ts:30-63|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:26-59|src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts:33-66",
"src/lib/litegraph/src/LGraphCanvas.cloneZIndex.test.ts:32-52|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:28-48|src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts:35-55|src/lib/litegraph/src/LGraphCanvas.titleButtons.test.ts:18-38",
"src/lib/litegraph/src/LGraphCanvas.cloneZIndex.test.ts:40-54|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:36-50|src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts:43-57|src/utils/__tests__/litegraphTestUtils.ts:137-150",
"src/lib/litegraph/src/LGraphCanvas.drawConnections.test.ts:14-21|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:12-19|src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts:11-18",
"src/lib/litegraph/src/LGraphCanvas.drawConnections.test.ts:14-20|src/lib/litegraph/src/LGraphCanvas.ghost.test.ts:7-13|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:12-18|src/lib/litegraph/src/LGraphCanvas.slotHitDetection.test.ts:11-17",
"src/lib/litegraph/src/LGraphCanvas.drawConnections.test.ts:119-128|src/lib/litegraph/src/LGraphCanvas.drawConnections.test.ts:149-158|src/lib/litegraph/src/LGraphCanvas.drawConnections.test.ts:178-187",
"src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:124-136|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:144-157|src/lib/litegraph/src/LGraphCanvas.groupSelection.test.ts:238-250",
"src/lib/litegraph/src/LGraphCanvas.ts:1595-1609|src/lib/litegraph/src/LGraphCanvas.ts:1624-1638|src/lib/litegraph/src/LGraphCanvas.ts:1660-1679",
"src/lib/litegraph/src/LGraphNode.test.ts:316-324|src/lib/litegraph/src/LGraphNode.test.ts:379-388|src/lib/litegraph/src/LGraphNode.test.ts:432-440",
"src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:175-186|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:240-251|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:63-77",
"src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:134-142|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:188-201|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:253-267|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:74-88",
"src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:190-207|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:255-274|src/lib/litegraph/src/LGraphNode.titleButtons.test.ts:76-94",
"src/lib/litegraph/src/__fixtures__/duplicateSubgraphNodeIds.ts:21-45|src/lib/litegraph/src/__fixtures__/nestedSubgraphProxyWidgets.ts:25-49|src/lib/litegraph/src/__fixtures__/nodeIdSpaceExhausted.ts:21-45",
"src/lib/litegraph/src/__fixtures__/duplicateSubgraphNodeIds.ts:44-65|src/lib/litegraph/src/__fixtures__/nestedSubgraphProxyWidgets.ts:48-69|src/lib/litegraph/src/__fixtures__/uniqueSubgraphNodeIds.ts:44-65",
"src/lib/litegraph/src/__fixtures__/duplicateSubgraphNodeIds.ts:85-167|src/lib/litegraph/src/__fixtures__/nestedSubgraphProxyWidgets.ts:98-181|src/lib/litegraph/src/__fixtures__/nodeIdSpaceExhausted.ts:94-176",
"src/lib/litegraph/src/__fixtures__/duplicateSubgraphNodeIds.ts:101-123|src/lib/litegraph/src/__fixtures__/nestedSubgraphProxyWidgets.ts:115-137|src/lib/litegraph/src/__fixtures__/nodeIdSpaceExhausted.ts:110-132|src/lib/litegraph/src/__fixtures__/uniqueSubgraphNodeIds.ts:101-123",
"src/lib/litegraph/src/canvas/LinkConnector.core.test.ts:242-246|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:271-275|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:459-464",
"src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:326-340|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:529-543|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:856-870",
"src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1202-1211|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1233-1242|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1260-1269",
"src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1219-1230|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1246-1257|src/lib/litegraph/src/canvas/LinkConnector.integration.test.ts:1277-1288",
"src/lib/litegraph/src/canvas/LinkConnectorSubgraphInputValidation.test.ts:104-118|src/lib/litegraph/src/canvas/LinkConnectorSubgraphInputValidation.test.ts:174-187|src/lib/litegraph/src/canvas/LinkConnectorSubgraphInputValidation.test.ts:268-282",
"src/lib/litegraph/src/subgraph/ExecutableNodeDTO.test.ts:215-223|src/lib/litegraph/src/subgraph/ExecutableNodeDTO.test.ts:247-255|src/lib/litegraph/src/subgraph/ExecutableNodeDTO.test.ts:270-276",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:223-238|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:254-269|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:306-321|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:335-350",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:223-237|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:254-268|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:283-297|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:306-320|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:335-349",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:223-232|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:254-263|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:283-292|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:306-315|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:335-344|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:365-374",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:1115-1121|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:232-238|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:263-269|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:315-321|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:344-350",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:1115-1120|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:232-237|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:263-268|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:315-320|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:344-349|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:374-379",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:254-269|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:306-321|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:335-350",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:462-467|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:520-525|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:574-579",
"src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:643-649|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:831-838|src/lib/litegraph/src/subgraph/SubgraphNode.test.ts:853-859",
"src/lib/litegraph/src/subgraph/SubgraphNode.titleButton.test.ts:108-128|src/lib/litegraph/src/subgraph/SubgraphNode.titleButton.test.ts:151-161|src/lib/litegraph/src/subgraph/SubgraphNode.titleButton.test.ts:176-191",
"src/lib/litegraph/src/subgraph/SubgraphWidgetPromotion.test.ts:131-140|src/lib/litegraph/src/subgraph/SubgraphWidgetPromotion.test.ts:305-314|src/lib/litegraph/src/subgraph/SubgraphWidgetPromotion.test.ts:349-357",
"src/lib/litegraph/src/widgets/BaseWidget.ts:311-322|src/lib/litegraph/src/widgets/ChartWidget.ts:21-32|src/lib/litegraph/src/widgets/FileUploadWidget.ts:21-32|src/lib/litegraph/src/widgets/GalleriaWidget.ts:21-32|src/lib/litegraph/src/widgets/ImageCompareWidget.ts:21-32|src/lib/litegraph/src/widgets/MarkdownWidget.ts:21-32|src/lib/litegraph/src/widgets/MultiSelectWidget.ts:21-32|src/lib/litegraph/src/widgets/SelectButtonWidget.ts:21-32",
"src/lib/litegraph/src/widgets/ChartWidget.ts:15-46|src/lib/litegraph/src/widgets/FileUploadWidget.ts:15-46|src/lib/litegraph/src/widgets/GalleriaWidget.ts:15-46|src/lib/litegraph/src/widgets/ImageCompareWidget.ts:15-46|src/lib/litegraph/src/widgets/MarkdownWidget.ts:15-46|src/lib/litegraph/src/widgets/MultiSelectWidget.ts:15-46|src/lib/litegraph/src/widgets/SelectButtonWidget.ts:15-46",
"src/lib/litegraph/src/widgets/ColorWidget.test.ts:170-181|src/lib/litegraph/src/widgets/ColorWidget.test.ts:205-215|src/lib/litegraph/src/widgets/ColorWidget.test.ts:225-234",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1086-1097|src/lib/litegraph/src/widgets/ComboWidget.test.ts:204-214|src/lib/litegraph/src/widgets/ComboWidget.test.ts:250-261",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1086-1097|src/lib/litegraph/src/widgets/ComboWidget.test.ts:204-214|src/lib/litegraph/src/widgets/ComboWidget.test.ts:250-261|src/lib/litegraph/src/widgets/ComboWidget.test.ts:296-312",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1012-1033|src/lib/litegraph/src/widgets/ComboWidget.test.ts:381-399|src/lib/litegraph/src/widgets/ComboWidget.test.ts:413-438",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1012-1032|src/lib/litegraph/src/widgets/ComboWidget.test.ts:381-398|src/lib/litegraph/src/widgets/ComboWidget.test.ts:413-437|src/lib/litegraph/src/widgets/ComboWidget.test.ts:569-586",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1012-1022|src/lib/litegraph/src/widgets/ComboWidget.test.ts:1066-1074|src/lib/litegraph/src/widgets/ComboWidget.test.ts:381-389|src/lib/litegraph/src/widgets/ComboWidget.test.ts:413-427|src/lib/litegraph/src/widgets/ComboWidget.test.ts:452-460|src/lib/litegraph/src/widgets/ComboWidget.test.ts:490-504|src/lib/litegraph/src/widgets/ComboWidget.test.ts:569-577|src/lib/litegraph/src/widgets/ComboWidget.test.ts:758-769|src/lib/litegraph/src/widgets/ComboWidget.test.ts:820-831|src/lib/litegraph/src/widgets/ComboWidget.test.ts:874-885|src/lib/litegraph/src/widgets/ComboWidget.test.ts:953-964",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:1019-1032|src/lib/litegraph/src/widgets/ComboWidget.test.ts:386-398|src/lib/litegraph/src/widgets/ComboWidget.test.ts:424-437|src/lib/litegraph/src/widgets/ComboWidget.test.ts:539-551",
"src/lib/litegraph/src/widgets/ComboWidget.test.ts:752-771|src/lib/litegraph/src/widgets/ComboWidget.test.ts:814-833|src/lib/litegraph/src/widgets/ComboWidget.test.ts:947-968",
"src/lib/litegraph/src/widgets/GradientSliderWidget.ts:35-45|src/lib/litegraph/src/widgets/KnobWidget.ts:162-176|src/lib/litegraph/src/widgets/SliderWidget.ts:55-66",
"src/platform/assets/components/AssetCard.test.ts:102-109|src/platform/assets/components/AssetCard.test.ts:116-123|src/platform/assets/components/AssetCard.test.ts:153-160",
"src/platform/assets/composables/useAssetBrowser.test.ts:642-661|src/platform/assets/composables/useAssetBrowser.test.ts:674-690|src/platform/assets/composables/useAssetBrowser.test.ts:717-735",
"src/platform/assets/composables/useMediaAssetActions.test.ts:601-613|src/platform/assets/composables/useMediaAssetActions.test.ts:833-846|src/platform/assets/composables/useMediaAssetActions.test.ts:951-964",
"src/platform/cloud/oauth/OAuthConsentView.test.ts:183-192|src/platform/cloud/oauth/OAuthConsentView.test.ts:201-210|src/platform/cloud/oauth/OAuthConsentView.test.ts:219-228",
"src/platform/cloud/onboarding/CloudForgotPasswordView.vue:123-133|src/platform/cloud/onboarding/CloudSignupView.vue:209-219|src/platform/cloud/onboarding/components/CloudSignInForm.vue:117-127",
"src/platform/cloud/subscription/components/PricingTable.test.ts:37-54|src/platform/cloud/subscription/composables/useSubscription.test.ts:39-56|src/platform/cloud/subscription/utils/subscriptionCheckoutUtil.test.ts:35-52",
"src/platform/cloud/subscription/components/PricingTable.vue:52-66|src/platform/workspace/components/PricingTableWorkspace.vue:52-66|src/platform/workspace/components/UnifiedPricingTable.vue:102-116",
"src/platform/cloud/subscription/composables/usePricingTableUrlLoader.test.ts:6-20|src/platform/workspace/composables/useCreateWorkspaceUrlLoader.test.ts:6-20|src/platform/workspace/composables/useInviteUrlLoader.test.ts:17-31",
"src/platform/keybindings/keybindingStore.test.ts:338-347|src/platform/keybindings/keybindingStore.test.ts:368-376|src/platform/keybindings/keybindingStore.test.ts:400-409",
"src/platform/keybindings/keybindingStore.test.ts:420-431|src/platform/keybindings/keybindingStore.test.ts:443-454|src/platform/keybindings/keybindingStore.test.ts:489-500",
"src/platform/keybindings/presetService.test.ts:475-492|src/platform/keybindings/presetService.test.ts:509-525|src/platform/keybindings/presetService.test.ts:589-605",
"src/platform/keybindings/presetService.test.ts:478-492|src/platform/keybindings/presetService.test.ts:511-525|src/platform/keybindings/presetService.test.ts:561-575|src/platform/keybindings/presetService.test.ts:591-605",
"src/platform/missingModel/missingModelScan.test.ts:1129-1154|src/platform/missingModel/missingModelScan.test.ts:1174-1200|src/platform/missingModel/missingModelScan.test.ts:1213-1238",
"src/platform/nodeReplacement/missingNodeScan.test.ts:218-228|src/platform/nodeReplacement/missingNodeScan.test.ts:230-240|src/platform/nodeReplacement/missingNodeScan.test.ts:93-102",
"src/platform/nodeReplacement/missingNodeScan.test.ts:105-113|src/platform/nodeReplacement/missingNodeScan.test.ts:122-130|src/platform/nodeReplacement/missingNodeScan.test.ts:242-250",
"src/platform/nodeReplacement/missingNodeScan.test.ts:150-158|src/platform/nodeReplacement/missingNodeScan.test.ts:205-213|src/platform/nodeReplacement/missingNodeScan.test.ts:262-270",
"src/platform/nodeReplacement/useNodeReplacement.test.ts:190-197|src/platform/nodeReplacement/useNodeReplacement.test.ts:646-653|src/platform/nodeReplacement/useNodeReplacement.test.ts:996-1003",
"src/platform/nodeReplacement/useNodeReplacement.test.ts:1067-1077|src/platform/nodeReplacement/useNodeReplacement.test.ts:1103-1112|src/platform/nodeReplacement/useNodeReplacement.test.ts:299-308",
"src/platform/nodeReplacement/useNodeReplacement.test.ts:1068-1077|src/platform/nodeReplacement/useNodeReplacement.test.ts:1104-1112|src/platform/nodeReplacement/useNodeReplacement.test.ts:300-308|src/platform/nodeReplacement/useNodeReplacement.test.ts:996-1003",
"src/platform/nodeReplacement/useNodeReplacement.test.ts:465-474|src/platform/nodeReplacement/useNodeReplacement.test.ts:555-565|src/platform/nodeReplacement/useNodeReplacement.test.ts:609-619",
"src/platform/nodeReplacement/useNodeReplacement.test.ts:693-710|src/platform/nodeReplacement/useNodeReplacement.test.ts:720-737|src/platform/nodeReplacement/useNodeReplacement.test.ts:774-791",
"src/platform/secrets/composables/useSecretForm.test.ts:105-114|src/platform/secrets/composables/useSecretForm.test.ts:48-57|src/platform/secrets/composables/useSecretForm.test.ts:67-76|src/platform/secrets/composables/useSecretForm.test.ts:86-95",
"src/platform/surveys/ErrorPanelSurveyCta.test.ts:67-74|src/platform/surveys/NightlySurveyPopover.test.ts:39-46|src/platform/surveys/useSurveyEligibility.test.ts:47-54",
"src/platform/updates/common/releaseService.test.ts:139-147|src/platform/updates/common/releaseService.test.ts:154-162|src/platform/updates/common/releaseService.test.ts:169-177",
"src/platform/updates/common/versionCompatibilityStore.test.ts:107-121|src/platform/updates/common/versionCompatibilityStore.test.ts:123-137|src/platform/updates/common/versionCompatibilityStore.test.ts:139-153|src/platform/updates/common/versionCompatibilityStore.test.ts:91-105",
"src/platform/updates/components/ReleaseNotificationToast.test.ts:174-190|src/platform/updates/components/ReleaseNotificationToast.test.ts:203-216|src/platform/updates/components/ReleaseNotificationToast.test.ts:231-244",
"src/platform/workflow/core/services/workflowService.test.ts:1088-1102|src/platform/workflow/core/services/workflowService.test.ts:1106-1119|src/platform/workflow/core/services/workflowService.test.ts:1126-1139",
"src/platform/workflow/management/stores/workflowStore.test.ts:137-148|src/platform/workflow/management/stores/workflowStore.test.ts:161-172|src/platform/workflow/management/stores/workflowStore.test.ts:181-192",
"src/platform/workflow/persistence/base/draftCacheV2.test.ts:200-218|src/platform/workflow/persistence/base/draftCacheV2.test.ts:222-240|src/platform/workflow/persistence/base/draftCacheV2.test.ts:291-304|src/platform/workflow/persistence/base/draftCacheV2.test.ts:57-70",
"src/platform/workflow/persistence/base/draftCacheV2.test.ts:200-211|src/platform/workflow/persistence/base/draftCacheV2.test.ts:222-233|src/platform/workflow/persistence/base/draftCacheV2.test.ts:249-260|src/platform/workflow/persistence/base/draftCacheV2.test.ts:291-302|src/platform/workflow/persistence/base/draftCacheV2.test.ts:312-323|src/platform/workflow/persistence/base/draftCacheV2.test.ts:57-68",
"src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:261-267|src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:286-292|src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:73-79",
"src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:157-161|src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:263-267|src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:288-292|src/platform/workflow/persistence/stores/workflowDraftStoreV2.fsm.test.ts:75-79",
"src/platform/workflow/sharing/components/ShareWorkflowDialogContent.test.ts:263-271|src/platform/workflow/sharing/components/ShareWorkflowDialogContent.test.ts:276-284|src/platform/workflow/sharing/components/ShareWorkflowDialogContent.test.ts:291-299",
"src/platform/workflow/sharing/components/publish/ComfyHubPublishDialog.test.ts:6-12|src/platform/workflow/sharing/components/publish/ComfyHubThumbnailStep.test.ts:5-11|src/platform/workspace/composables/useSubscriptionCheckout.test.ts:125-133",
"src/platform/workspace/stores/billingOperationStore.test.ts:633-643|src/platform/workspace/stores/billingOperationStore.test.ts:704-714|src/platform/workspace/stores/billingOperationStore.test.ts:86-96",
"src/platform/workspace/stores/billingOperationStore.test.ts:140-150|src/platform/workspace/stores/billingOperationStore.test.ts:633-643|src/platform/workspace/stores/billingOperationStore.test.ts:704-714|src/platform/workspace/stores/billingOperationStore.test.ts:86-96",
"src/platform/workspace/stores/billingOperationStore.test.ts:104-112|src/platform/workspace/stores/billingOperationStore.test.ts:140-148|src/platform/workspace/stores/billingOperationStore.test.ts:633-641|src/platform/workspace/stores/billingOperationStore.test.ts:704-712|src/platform/workspace/stores/billingOperationStore.test.ts:86-94",
"src/platform/workspace/stores/billingOperationStore.test.ts:157-167|src/platform/workspace/stores/billingOperationStore.test.ts:661-671|src/platform/workspace/stores/billingOperationStore.test.ts:676-686",
"src/platform/workspace/stores/billingOperationStore.test.ts:157-165|src/platform/workspace/stores/billingOperationStore.test.ts:379-387|src/platform/workspace/stores/billingOperationStore.test.ts:661-669|src/platform/workspace/stores/billingOperationStore.test.ts:676-684",
"src/platform/workspace/stores/billingOperationStore.test.ts:176-187|src/platform/workspace/stores/billingOperationStore.test.ts:203-214|src/platform/workspace/stores/billingOperationStore.test.ts:238-249",
"src/platform/workspace/stores/billingOperationStore.test.ts:222-234|src/platform/workspace/stores/billingOperationStore.test.ts:254-266|src/platform/workspace/stores/billingOperationStore.test.ts:269-281|src/platform/workspace/stores/billingOperationStore.test.ts:689-701",
"src/platform/workspace/stores/billingOperationStore.test.ts:288-296|src/platform/workspace/stores/billingOperationStore.test.ts:577-585|src/platform/workspace/stores/billingOperationStore.test.ts:646-654",
"src/platform/workspace/stores/billingOperationStore.test.ts:354-364|src/platform/workspace/stores/billingOperationStore.test.ts:508-518|src/platform/workspace/stores/billingOperationStore.test.ts:528-538",
"src/platform/workspace/stores/billingOperationStore.test.ts:417-426|src/platform/workspace/stores/billingOperationStore.test.ts:438-447|src/platform/workspace/stores/billingOperationStore.test.ts:471-480",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:157-167|src/platform/workspace/stores/useWorkspaceAuth.test.ts:179-189|src/platform/workspace/stores/useWorkspaceAuth.test.ts:496-507",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:208-220|src/platform/workspace/stores/useWorkspaceAuth.test.ts:461-473|src/platform/workspace/stores/useWorkspaceAuth.test.ts:698-709",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:323-333|src/platform/workspace/stores/useWorkspaceAuth.test.ts:345-356|src/platform/workspace/stores/useWorkspaceAuth.test.ts:368-379|src/platform/workspace/stores/useWorkspaceAuth.test.ts:393-404|src/platform/workspace/stores/useWorkspaceAuth.test.ts:418-429",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:344-356|src/platform/workspace/stores/useWorkspaceAuth.test.ts:367-379|src/platform/workspace/stores/useWorkspaceAuth.test.ts:392-404|src/platform/workspace/stores/useWorkspaceAuth.test.ts:417-429",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1282-1296|src/platform/workspace/stores/useWorkspaceAuth.test.ts:344-355|src/platform/workspace/stores/useWorkspaceAuth.test.ts:367-378|src/platform/workspace/stores/useWorkspaceAuth.test.ts:392-403|src/platform/workspace/stores/useWorkspaceAuth.test.ts:417-428",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1031-1041|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1109-1119|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1176-1186|src/platform/workspace/stores/useWorkspaceAuth.test.ts:507-516|src/platform/workspace/stores/useWorkspaceAuth.test.ts:786-797|src/platform/workspace/stores/useWorkspaceAuth.test.ts:916-926|src/platform/workspace/stores/useWorkspaceAuth.test.ts:970-980",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1031-1041|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1109-1119|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1176-1186|src/platform/workspace/stores/useWorkspaceAuth.test.ts:507-516|src/platform/workspace/stores/useWorkspaceAuth.test.ts:786-797|src/platform/workspace/stores/useWorkspaceAuth.test.ts:881-890|src/platform/workspace/stores/useWorkspaceAuth.test.ts:916-926|src/platform/workspace/stores/useWorkspaceAuth.test.ts:970-980",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1031-1052|src/platform/workspace/stores/useWorkspaceAuth.test.ts:916-936|src/platform/workspace/stores/useWorkspaceAuth.test.ts:970-990",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1031-1046|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1109-1124|src/platform/workspace/stores/useWorkspaceAuth.test.ts:916-930|src/platform/workspace/stores/useWorkspaceAuth.test.ts:970-984",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1331-1341|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1547-1557|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1593-1603",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1331-1340|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1360-1369|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1547-1556|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1593-1602",
"src/platform/workspace/stores/useWorkspaceAuth.test.ts:1443-1456|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1712-1727|src/platform/workspace/stores/useWorkspaceAuth.test.ts:1745-1758",
"src/renderer/core/canvas/pathRenderer.test.ts:272-281|src/renderer/core/canvas/pathRenderer.test.ts:536-545|src/renderer/core/canvas/pathRenderer.test.ts:575-586",
"src/renderer/core/canvas/pathRenderer.test.ts:334-344|src/renderer/core/canvas/pathRenderer.test.ts:399-417|src/renderer/core/canvas/pathRenderer.test.ts:425-441",
"src/renderer/core/canvas/pathRenderer.test.ts:558-572|src/renderer/core/canvas/pathRenderer.test.ts:579-593|src/renderer/core/canvas/pathRenderer.test.ts:600-614",
"src/renderer/core/canvas/pathRenderer.test.ts:666-679|src/renderer/core/canvas/pathRenderer.test.ts:716-729|src/renderer/core/canvas/pathRenderer.test.ts:739-752",
"src/renderer/core/canvas/pathRenderer.test.ts:666-678|src/renderer/core/canvas/pathRenderer.test.ts:690-702|src/renderer/core/canvas/pathRenderer.test.ts:716-728|src/renderer/core/canvas/pathRenderer.test.ts:739-751",
"src/renderer/core/canvas/useCanvasInteractions.test.ts:204-215|src/renderer/core/canvas/useCanvasInteractions.test.ts:277-289|src/renderer/core/canvas/useCanvasInteractions.test.ts:328-340",
"src/renderer/core/canvas/useCanvasInteractions.test.ts:217-227|src/renderer/core/canvas/useCanvasInteractions.test.ts:240-250|src/renderer/core/canvas/useCanvasInteractions.test.ts:267-277|src/renderer/core/canvas/useCanvasInteractions.test.ts:291-301|src/renderer/core/canvas/useCanvasInteractions.test.ts:318-328|src/renderer/core/canvas/useCanvasInteractions.test.ts:342-352",
"src/renderer/core/canvas/useCanvasInteractions.test.ts:238-250|src/renderer/core/canvas/useCanvasInteractions.test.ts:289-301|src/renderer/core/canvas/useCanvasInteractions.test.ts:340-352",
"src/renderer/core/layout/operations/layoutMutations.test.ts:25-31|src/renderer/core/layout/operations/layoutMutations.test.ts:46-52|src/renderer/core/layout/operations/layoutMutations.test.ts:67-73|src/renderer/core/layout/operations/layoutMutations.test.ts:98-104",
"src/renderer/extensions/linearMode/OutputHistory.test.ts:485-490|src/renderer/extensions/linearMode/OutputHistory.test.ts:604-609|src/renderer/extensions/linearMode/OutputHistory.test.ts:674-679",
"src/renderer/extensions/linearMode/linearOutputStore.test.ts:539-549|src/renderer/extensions/linearMode/linearOutputStore.test.ts:597-609|src/renderer/extensions/linearMode/linearOutputStore.test.ts:617-626",
"src/renderer/extensions/linearMode/linearOutputStore.test.ts:1041-1051|src/renderer/extensions/linearMode/linearOutputStore.test.ts:1077-1088|src/renderer/extensions/linearMode/linearOutputStore.test.ts:860-870",
"src/renderer/extensions/linearMode/linearOutputStore.test.ts:1011-1019|src/renderer/extensions/linearMode/linearOutputStore.test.ts:1041-1050|src/renderer/extensions/linearMode/linearOutputStore.test.ts:1077-1085|src/renderer/extensions/linearMode/linearOutputStore.test.ts:1127-1135|src/renderer/extensions/linearMode/linearOutputStore.test.ts:1284-1292|src/renderer/extensions/linearMode/linearOutputStore.test.ts:860-869|src/renderer/extensions/linearMode/linearOutputStore.test.ts:908-917|src/renderer/extensions/linearMode/linearOutputStore.test.ts:952-961|src/renderer/extensions/linearMode/linearOutputStore.test.ts:978-987",
"src/renderer/extensions/linearMode/useOutputHistory.test.ts:30-37|src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.test.ts:61-68|src/renderer/extensions/vueNodes/widgets/composables/useWidgetSelectItems.test.ts:28-35",
"src/renderer/extensions/minimap/composables/useMinimap.test.ts:921-927|src/renderer/extensions/minimap/composables/useMinimapSettings.test.ts:74-80|src/renderer/extensions/minimap/composables/useMinimapSettings.test.ts:98-104",
"src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:117-131|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:163-177|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:189-203|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:220-234|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:250-264|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:36-50|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:61-75|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:89-103",
"src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:117-134|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:189-206|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:61-77",
"src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:163-182|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:220-240|src/renderer/extensions/minimap/composables/useMinimapInteraction.test.ts:89-108",
"src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:109-136|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:195-222|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:38-65",
"src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:115-139|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:162-185|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:201-224|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:79-102",
"src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:109-114|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:156-161|src/renderer/extensions/minimap/composables/useMinimapRenderer.test.ts:195-200",
"src/renderer/extensions/minimap/composables/useMinimapSettings.test.ts:100-106|src/renderer/extensions/minimap/composables/useMinimapSettings.test.ts:124-130|src/renderer/extensions/minimap/composables/useMinimapSettings.test.ts:76-82",
"src/renderer/extensions/vueNodes/VideoPreview.test.ts:108-118|src/renderer/extensions/vueNodes/VideoPreview.test.ts:76-86|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:499-508",
"src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:262-269|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:277-284|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:295-302|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:327-334",
"src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:262-268|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:277-283|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:295-301|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:312-318|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:327-333|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:345-351",
"src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:277-286|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:295-303|src/renderer/extensions/vueNodes/components/ImagePreview.test.ts:327-336",
"src/renderer/extensions/vueNodes/interactions/resize/useNodeResize.test.ts:296-300|src/renderer/extensions/vueNodes/interactions/resize/useNodeResize.test.ts:473-477|src/renderer/extensions/vueNodes/interactions/resize/useNodeResize.test.ts:78-83",
"src/renderer/extensions/vueNodes/layout/ensureCorrectLayoutScale.test.ts:141-150|src/renderer/extensions/vueNodes/layout/ensureCorrectLayoutScale.test.ts:154-163|src/renderer/extensions/vueNodes/layout/ensureCorrectLayoutScale.test.ts:165-174",
"src/renderer/extensions/vueNodes/widgets/components/DisplayCarousel.test.ts:362-372|src/renderer/extensions/vueNodes/widgets/components/DisplayCarousel.test.ts:416-426|src/renderer/extensions/vueNodes/widgets/components/DisplayCarousel.test.ts:443-453",
"src/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.test.ts:281-287|src/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.test.ts:330-336|src/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.test.ts:432-438",
"src/renderer/extensions/vueNodes/widgets/components/WidgetToggleSwitch.test.ts:136-143|src/renderer/extensions/vueNodes/widgets/components/WidgetToggleSwitch.test.ts:152-159|src/renderer/extensions/vueNodes/widgets/components/WidgetToggleSwitch.test.ts:97-104",
"src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:153-168|src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:210-223|src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:75-89",
"src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:167-177|src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:224-233|src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.test.ts:90-99",
"src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts:484-500|src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts:508-524|src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.test.ts:532-548",
"src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:270-282|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:295-307|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:475-488",
"src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:274-282|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:299-307|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:455-463",
"src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:312-321|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:412-422|src/renderer/extensions/vueNodes/widgets/composables/useImagePreviewWidget.test.ts:430-439",
"src/schemas/nodeDef/migration.test.ts:128-146|src/schemas/nodeDef/migration.test.ts:154-172|src/schemas/nodeDef/migration.test.ts:180-198",
"src/scripts/metadata/avif.test.ts:142-147|src/scripts/metadata/avif.test.ts:158-163|src/scripts/metadata/avif.test.ts:177-182|src/scripts/metadata/avif.test.ts:203-208",
"src/scripts/metadata/ebml.test.ts:25-33|src/scripts/metadata/isobmff.test.ts:25-33|src/scripts/metadata/ogg.test.ts:27-35",
"src/scripts/metadata/ply.test.ts:212-231|src/scripts/metadata/ply.test.ts:347-366|src/scripts/metadata/ply.test.ts:526-544",
"src/scripts/metadata/ply.test.ts:279-300|src/scripts/metadata/ply.test.ts:371-385|src/scripts/metadata/ply.test.ts:488-504",
"src/scripts/metadata/ply.test.ts:279-300|src/scripts/metadata/ply.test.ts:309-323|src/scripts/metadata/ply.test.ts:328-342|src/scripts/metadata/ply.test.ts:371-385|src/scripts/metadata/ply.test.ts:488-504|src/scripts/metadata/ply.test.ts:507-521",
"src/services/gateway/registrySearchGateway.test.ts:244-260|src/services/gateway/registrySearchGateway.test.ts:273-289|src/services/gateway/registrySearchGateway.test.ts:32-48|src/services/gateway/registrySearchGateway.test.ts:374-390",
"src/services/gateway/registrySearchGateway.test.ts:223-235|src/services/gateway/registrySearchGateway.test.ts:278-292|src/services/gateway/registrySearchGateway.test.ts:37-50",
"src/services/gateway/registrySearchGateway.test.ts:108-119|src/services/gateway/registrySearchGateway.test.ts:145-156|src/services/gateway/registrySearchGateway.test.ts:180-191|src/services/gateway/registrySearchGateway.test.ts:223-234|src/services/gateway/registrySearchGateway.test.ts:419-430",
"src/services/useNewUserService.test.ts:284-294|src/services/useNewUserService.test.ts:372-381|src/services/useNewUserService.test.ts:43-53",
"src/services/useNewUserService.test.ts:100-107|src/services/useNewUserService.test.ts:212-219|src/services/useNewUserService.test.ts:84-91",
"src/services/useNewUserService.test.ts:232-242|src/services/useNewUserService.test.ts:318-329|src/services/useNewUserService.test.ts:354-365",
"src/stores/appModeStore.test.ts:224-233|src/stores/appModeStore.test.ts:290-299|src/stores/appModeStore.test.ts:521-530",
"src/stores/appModeStore.test.ts:224-230|src/stores/appModeStore.test.ts:290-296|src/stores/appModeStore.test.ts:500-506|src/stores/appModeStore.test.ts:521-527",
"src/stores/appModeStore.test.ts:225-233|src/stores/appModeStore.test.ts:291-299|src/stores/appModeStore.test.ts:522-530|src/stores/appModeStore.test.ts:547-555",
"src/stores/appModeStore.test.ts:226-233|src/stores/appModeStore.test.ts:292-299|src/stores/appModeStore.test.ts:419-429|src/stores/appModeStore.test.ts:523-530|src/stores/appModeStore.test.ts:548-555",
"src/stores/appModeStore.test.ts:324-329|src/stores/appModeStore.test.ts:341-346|src/stores/appModeStore.test.ts:368-373",
"src/stores/assetsStore.test.ts:278-286|src/stores/assetsStore.test.ts:302-310|src/stores/assetsStore.test.ts:437-445",
"src/stores/assetsStore.test.ts:280-285|src/stores/assetsStore.test.ts:304-309|src/stores/assetsStore.test.ts:389-393|src/stores/assetsStore.test.ts:412-417|src/stores/assetsStore.test.ts:439-444|src/stores/assetsStore.test.ts:461-466",
"src/stores/assetsStore.test.ts:396-400|src/stores/assetsStore.test.ts:504-508|src/stores/assetsStore.test.ts:528-532",
"src/stores/assetsStore.test.ts:673-689|src/stores/assetsStore.test.ts:708-724|src/stores/assetsStore.test.ts:736-752",
"src/stores/assetsStore.test.ts:1255-1263|src/stores/assetsStore.test.ts:1294-1305|src/stores/assetsStore.test.ts:1382-1390",
"src/stores/executionStore.test.ts:194-207|src/stores/executionStore.test.ts:280-290|src/stores/executionStore.test.ts:316-326|src/stores/executionStore.test.ts:368-378",
"src/stores/executionStore.test.ts:280-300|src/stores/executionStore.test.ts:316-336|src/stores/executionStore.test.ts:368-389",
"src/stores/nodeOutputStore.test.ts:144-149|src/stores/nodeOutputStore.test.ts:161-166|src/stores/nodeOutputStore.test.ts:178-183",
"src/stores/nodeOutputStore.test.ts:249-256|src/stores/nodeOutputStore.test.ts:269-276|src/stores/nodeOutputStore.test.ts:285-292",
"src/stores/nodeOutputStore.test.ts:357-362|src/stores/nodeOutputStore.test.ts:366-371|src/stores/nodeOutputStore.test.ts:398-403",
"src/stores/queueStore.test.ts:525-531|src/stores/queueStore.test.ts:571-577|src/stores/queueStore.test.ts:592-598",
"src/stores/subgraphNavigationStore.viewport.test.ts:194-202|src/stores/subgraphNavigationStore.viewport.test.ts:231-239|src/stores/subgraphNavigationStore.viewport.test.ts:256-264",
"src/utils/graphTraversalUtil.test.ts:305-315|src/utils/graphTraversalUtil.test.ts:342-352|src/utils/graphTraversalUtil.test.ts:412-423|src/utils/graphTraversalUtil.test.ts:478-488",
"src/utils/graphTraversalUtil.test.ts:1051-1061|src/utils/graphTraversalUtil.test.ts:1116-1128|src/utils/graphTraversalUtil.test.ts:446-456",
"src/utils/linkFixer.test.ts:118-127|src/utils/linkFixer.test.ts:260-268|src/utils/linkFixer.test.ts:95-103",
"src/utils/linkFixer.test.ts:127-136|src/utils/linkFixer.test.ts:148-157|src/utils/linkFixer.test.ts:270-279",
"src/utils/linkFixer.test.ts:186-199|src/utils/linkFixer.test.ts:206-218|src/utils/linkFixer.test.ts:224-236",
"src/utils/nodeDefUtil.test.ts:19-25|src/utils/nodeDefUtil.test.ts:64-70|src/utils/nodeDefUtil.test.ts:75-81",
"src/utils/nodeDefUtil.test.ts:40-46|src/utils/nodeDefUtil.test.ts:52-58|src/utils/nodeDefUtil.test.ts:86-92",
"src/utils/searchAndReplace.test.ts:16-32|src/utils/searchAndReplace.test.ts:55-64|src/utils/searchAndReplace.test.ts:74-83",
"src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:302-312|src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:325-337|src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:348-360",
"src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:391-404|src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:454-467|src/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.test.ts:496-509",
"src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:120-129|src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:142-151|src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:161-170",
"src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:120-129|src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:142-151|src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:161-170|src/workbench/extensions/manager/composables/nodePack/useMissingNodes.test.ts:195-204",
"src/workbench/extensions/manager/composables/useManagerState.test.ts:246-257|src/workbench/extensions/manager/composables/useManagerState.test.ts:278-289|src/workbench/extensions/manager/composables/useManagerState.test.ts:294-305",
"src/workbench/extensions/manager/composables/useManagerState.test.ts:246-257|src/workbench/extensions/manager/composables/useManagerState.test.ts:278-289|src/workbench/extensions/manager/composables/useManagerState.test.ts:294-305|src/workbench/extensions/manager/composables/useManagerState.test.ts:332-343",
"src/workbench/extensions/manager/composables/useManagerState.test.ts:375-386|src/workbench/extensions/manager/composables/useManagerState.test.ts:399-410|src/workbench/extensions/manager/composables/useManagerState.test.ts:428-439|src/workbench/extensions/manager/composables/useManagerState.test.ts:442-453",
"src/workbench/utils/nodeDefOrderingUtil.test.ts:108-118|src/workbench/utils/nodeDefOrderingUtil.test.ts:20-34|src/workbench/utils/nodeDefOrderingUtil.test.ts:52-61|src/workbench/utils/nodeDefOrderingUtil.test.ts:79-89"
]
}

File diff suppressed because it is too large Load Diff

147
.fallowrc.jsonc Normal file
View File

@@ -0,0 +1,147 @@
{
"$schema": "https://raw.githubusercontent.com/fallow-rs/fallow/main/schema.json",
// Entry points fallow cannot infer. These files are roots (run by package.json
// scripts / CI / tool CLIs / Storybook), not imported from the app graph.
"entry": [
"src/main.ts",
"index.html",
"scripts/**/*.{js,ts}",
"apps/website/src/scripts/**/*.ts",
"**/.storybook/{main,preview}.ts",
"packages/ingest-types/openapi-ts.config.ts"
],
"ignorePatterns": [
// Static assets, not analyzable source.
"public/**",
// Devtools browser-extension artifacts, loaded dynamically (mirrors knip).
"tools/devtools/**",
// Storybook-only mocks, reached through Storybook's vite alias, not the prod graph.
"src/storybook/mocks/**"
],
"ignoreDependencies": [
// Iconify icon sets consumed at build time by the iconify tailwind plugin /
// importmap, never via a JS import (mirrors knip ignoreDependencies).
"@iconify/json",
"@iconify-json/lucide",
// Loaded by config, not imported: oxlint jsPlugin (.oxlintrc.json) and
// stylelint customSyntax (.stylelintrc.json) respectively.
"eslint-plugin-playwright",
"postcss-html",
// Vite path aliases to local locale bundles in apps/desktop-ui; virtual
// packages, not installable npm deps.
"@frontend-locales/ar",
"@frontend-locales/en",
"@frontend-locales/es",
"@frontend-locales/fr",
"@frontend-locales/ja",
"@frontend-locales/ko",
"@frontend-locales/pt-BR",
"@frontend-locales/ru",
"@frontend-locales/tr",
"@frontend-locales/zh",
"@frontend-locales/zh-TW",
// Declared in the root manifest and provided to the apps/desktop-ui sub-app
// via pnpm hoisting. Real (benign) phantom deps; tracked for follow-up
// cleanup into apps/desktop-ui/package.json.
"@pinia/testing",
"@storybook/vue3-vite",
"@testing-library/jest-dom",
"@testing-library/user-event",
"@testing-library/vue",
"@xterm/addon-fit",
"@xterm/addon-serialize",
"@xterm/xterm",
"es-toolkit"
],
"ignoreUnresolvedImports": [
// Static stylesheet referenced from index.html, resolved by the bundler.
"./materialdesignicons.min.css",
// Generated sibling JS for the desktop-bridge type stubs.
"./comfyDesktopBridge.js"
],
"ignoreExports": [
// Public extension API surface, deliberately exported for the 40+ custom-node
// ecosystem (ADR 0003 / 0008). No internal importer by design.
{ "file": "src/types/index.ts", "exports": ["*"] },
{ "file": "src/lib/litegraph/src/litegraph.ts", "exports": ["*"] },
{ "file": "src/scripts/ui/menu/index.ts", "exports": ["*"] },
{
"file": "src/scripts/ui/components/asyncDialog.ts",
"exports": ["ComfyAsyncDialog"]
},
{
"file": "src/scripts/ui/components/splitButton.ts",
"exports": ["ComfySplitButton"]
},
{
"file": "src/scripts/utils.ts",
"exports": ["applyTextReplacements", "addStylesheet"]
},
{
"file": "src/scripts/ui/imagePreview.ts",
"exports": ["createImageHost"]
},
{
"file": "src/extensions/core/widgetInputs.ts",
"exports": ["convertToInput"]
},
{
"file": "src/lib/litegraph/src/widgets/widgetMap.ts",
"exports": ["isAssetWidget"]
},
// Generated OpenAPI client types (mirrors knip ignore).
{
"file": "src/workbench/extensions/manager/types/generatedManagerTypes.ts",
"exports": ["*"]
},
// Loaded dynamically: cloud onboarding routes, cloud telemetry provider, and
// share dialog are imported lazily / from astro pages, invisible statically.
{
"file": "src/platform/cloud/onboarding/onboardingCloudRoutes.ts",
"exports": ["cloudOnboardingRoutes"]
},
{
"file": "src/platform/telemetry/providers/cloud/ClickHouseTelemetryProvider.ts",
"exports": ["ClickHouseTelemetryProvider"]
},
{
"file": "src/platform/workflow/sharing/composables/useShareDialog.ts",
"exports": ["useShareDialog"]
},
// apps/website data consumed by astro pages; getGalleryItemById is a
// pre-annotated stacked-PR keep.
{
"file": "apps/website/src/data/events.ts",
"exports": ["learningEvents"]
},
{
"file": "apps/website/src/data/gallery.ts",
"exports": ["getGalleryItemById"]
}
],
"duplicates": {
"minOccurrences": 3,
"ignore": ["**/*.generated.*", "**/generatedManagerTypes.ts"]
},
// Staged adoption: the residual dead-code, complexity, and duplication findings
// are inherited legacy (litegraph extension-API members, store members, intra-lib
// cycles, the marketing-media file pending page adoption). They are captured in
// per-analysis baselines so `fallow audit` fails only on NEWLY introduced issues
// in changed files. Baselines are a migration aid, not the desired steady state;
// shrink them as the underlying code is cleaned up, then re-save.
"audit": {
"gate": "new-only",
"deadCodeBaseline": ".fallow-baselines/dead-code.json",
"healthBaseline": ".fallow-baselines/health.json",
"dupesBaseline": ".fallow-baselines/dupes.json"
},
"rules": {}
}

1
.gitignore vendored
View File

@@ -16,6 +16,7 @@ yarn.lock
.eslintcache
.prettiercache
.stylelintcache
.fallow/
node_modules
.pnpm-store

View File

@@ -0,0 +1,68 @@
# 11. Adopt Fallow
Date: 2026-06-29
## Status
Proposed
<!-- [Proposed | Accepted | Rejected | Deprecated | Superseded by [ADR-NNNN](NNNN-title.md)] -->
## Context
We already run [knip](https://knip.dev/) in CI (the lint-format check) and in
the pre-push hook to catch unused files, exports, and dependencies. It does not
cover duplication or complexity and has no diff-aware gate.
[Fallow](https://github.com/fallow-rs/fallow) covers that wider set and adds
`fallow audit`, which compares a change against the base branch and, with
baselines, fails only on newly-introduced problems. See its docs for what each
check does.
Two repo-specific facts shape how we adopt it. The repo already carries
inherited findings (litegraph and store members kept for the extension API,
intra-lib cycles, duplicate test fixtures, a marketing file waiting on a page
that imports it); gating on those would block unrelated work. And static
analysis cannot tell intentional-but-unreferenced code from real dead code, so
build and Storybook entry points, the extension API surface, lazily-loaded
modules, build-time icon sets, and hoisted phantom deps have to be declared.
## Decision
Adopt Fallow, introduced as a stack of small PRs so each cleanup is reviewable
on its own: remove the real findings first, then record what stays. Exceptions
go in `.fallowrc.jsonc` (Fallow reads JSONC, so each entry carries a comment
explaining why it is there) and inherited findings go in `.fallow-baselines/`
under `audit.gate: new-only`, so `audit` only flags new issues. Where they
overlap, the exceptions mirror the existing knip ones. No complexity threshold
was lowered and no rule disabled; the baselines are a migration aid to shrink
and re-save as code is cleaned up, not the target state.
For now Fallow runs through the `pnpm` scripts and sits alongside knip. We have
not wired `fallow audit` into CI or the pre-push hook, and we have not retired
knip. The plan is to clear the remaining violations over time, shrinking the
baselines as we go. Once they are small enough, we gate Fallow in CI to lock in
the cleanup and stop backsliding.
## Consequences
### Positive
- Coverage knip does not have: duplication, complexity, and a diff-aware gate.
- The cleanup stack removed real unused deps, dead exports, an unused type, and
a duplicate component.
- The new-only gate lets us adopt without first clearing the backlog.
### Negative
- Two overlapping tools until we either wire Fallow into the gates or drop knip.
- A baseline can hide a new instance of an already-baselined pattern when it
lands in an already-baselined file; baselines need re-saving as code changes.
- Contributors have to learn which findings are real and which belong in the
exception list.
## Notes
- Open follow-ups: declare the hoisted deps in `apps/desktop-ui/package.json`
and drop those `ignoreDependencies` exceptions; decide whether `fallow audit`
should run in CI or pre-push, and whether it replaces knip there.

View File

@@ -20,6 +20,7 @@ An Architecture Decision Record captures an important architectural decision mad
| [0008](0008-entity-component-system.md) | Entity Component System | Proposed | 2026-03-23 |
| [0009](0009-subgraph-promoted-widgets-use-linked-inputs.md) | Subgraph Promoted Widgets Use Linked Inputs | Proposed | 2026-05-05 |
| [0010](0010-remove-nx-orchestration.md) | Remove Nx Orchestration | Accepted | 2026-05-19 |
| [0011](0011-adopt-fallow.md) | Adopt Fallow | Proposed | 2026-06-29 |
## Creating a New ADR

View File

@@ -41,10 +41,7 @@ const config: KnipConfig = {
ignoreDependencies: [
// Weird importmap things
'@iconify-json/lucide',
'@iconify/json',
'@primeuix/forms',
'@primeuix/styled',
'@primevue/icons'
'@iconify/json'
],
ignore: [
// Auto generated API types

View File

@@ -29,6 +29,8 @@
"dev:test": "cross-env VITE_USE_LEGACY_DEFAULT_GRAPH=true vite --config vite.config.mts",
"dev": "vite --config vite.config.mts",
"devtools:pycheck": "python3 -m compileall -q tools/devtools",
"fallow": "fallow",
"fallow:audit": "fallow audit",
"format:check": "oxfmt --check",
"format": "oxfmt --write",
"json-schema": "tsx scripts/generate-json-schema.ts",
@@ -74,12 +76,9 @@
"@customerio/cdp-analytics-browser": "catalog:",
"@formkit/auto-animate": "catalog:",
"@iconify/json": "catalog:",
"@primeuix/forms": "catalog:",
"@primeuix/styled": "catalog:",
"@primeuix/utils": "catalog:",
"@primevue/core": "catalog:",
"@primevue/forms": "catalog:",
"@primevue/icons": "catalog:",
"@primevue/themes": "catalog:",
"@sentry/vue": "catalog:",
"@sparkjsdev/spark": "catalog:",
@@ -171,12 +170,12 @@
"eslint-plugin-testing-library": "catalog:",
"eslint-plugin-unused-imports": "catalog:",
"eslint-plugin-vue": "catalog:",
"fallow": "catalog:",
"fast-check": "catalog:",
"fs-extra": "^11.2.0",
"globals": "catalog:",
"happy-dom": "catalog:",
"husky": "catalog:",
"jiti": "catalog:",
"jsdom": "catalog:",
"knip": "catalog:",
"lint-staged": "catalog:",

371
pnpm-lock.yaml generated
View File

@@ -60,12 +60,6 @@ catalogs:
'@playwright/test':
specifier: ^1.58.1
version: 1.58.1
'@primeuix/forms':
specifier: 0.0.2
version: 0.0.2
'@primeuix/styled':
specifier: 0.3.2
version: 0.3.2
'@primeuix/utils':
specifier: ^0.3.2
version: 0.3.2
@@ -75,9 +69,6 @@ catalogs:
'@primevue/forms':
specifier: ^4.2.5
version: 4.2.5
'@primevue/icons':
specifier: 4.2.5
version: 4.2.5
'@primevue/themes':
specifier: ^4.2.5
version: 4.2.5
@@ -237,6 +228,9 @@ catalogs:
eslint-plugin-vue:
specifier: ^10.9.1
version: 10.9.1
fallow:
specifier: ^2.102.0
version: 2.102.0
fast-check:
specifier: ^4.5.3
version: 4.5.3
@@ -258,9 +252,6 @@ catalogs:
husky:
specifier: ^9.1.7
version: 9.1.7
jiti:
specifier: 2.6.1
version: 2.6.1
jsdom:
specifier: ^27.4.0
version: 27.4.0
@@ -418,7 +409,6 @@ catalogs:
overrides:
vite: ^8.0.13
'@tiptap/pm': 2.27.2
'@types/eslint': '-'
lodash: ^4.18.0
yaml: ^2.8.3
minimatch@^9.0.0: ^9.0.7
@@ -468,12 +458,6 @@ importers:
'@iconify/json':
specifier: 'catalog:'
version: 2.2.380
'@primeuix/forms':
specifier: 'catalog:'
version: 0.0.2
'@primeuix/styled':
specifier: 'catalog:'
version: 0.3.2
'@primeuix/utils':
specifier: 'catalog:'
version: 0.3.2
@@ -483,9 +467,6 @@ importers:
'@primevue/forms':
specifier: 'catalog:'
version: 4.2.5(vue@3.5.34(typescript@5.9.3))
'@primevue/icons':
specifier: 'catalog:'
version: 4.2.5(vue@3.5.34(typescript@5.9.3))
'@primevue/themes':
specifier: 'catalog:'
version: 4.2.5
@@ -648,10 +629,10 @@ importers:
version: link:packages/ingest-types
'@eslint/js':
specifier: 'catalog:'
version: 10.0.1(eslint@10.4.0(jiti@2.6.1))
version: 10.0.1(eslint@10.4.0(jiti@2.7.0))
'@intlify/eslint-plugin-vue-i18n':
specifier: 'catalog:'
version: 4.5.0(eslint@10.4.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.0)(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.6.1)))(yaml-eslint-parser@1.3.0)
version: 4.5.0(eslint@10.4.0(jiti@2.7.0))(jsonc-eslint-parser@2.4.0)(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)))(yaml-eslint-parser@1.3.0)
'@lobehub/i18n-cli':
specifier: 'catalog:'
version: 1.26.1(@types/react@19.1.9)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.4))(ws@8.21.0)(zod@3.25.76)
@@ -666,7 +647,7 @@ importers:
version: 4.6.0
'@storybook/addon-docs':
specifier: 'catalog:'
version: 10.2.10(@types/react@19.1.9)(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
version: 10.2.10(@types/react@19.1.9)(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/addon-mcp':
specifier: 'catalog:'
version: 0.1.6(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)
@@ -675,10 +656,10 @@ importers:
version: 10.2.10(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vue@3.5.34(typescript@5.9.3))
'@storybook/vue3-vite':
specifier: 'catalog:'
version: 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
version: 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
'@tailwindcss/vite':
specifier: 'catalog:'
version: 4.3.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
version: 4.3.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@testing-library/jest-dom':
specifier: 'catalog:'
version: 6.9.1
@@ -708,7 +689,7 @@ importers:
version: 0.184.1
'@vitejs/plugin-vue':
specifier: 'catalog:'
version: 6.0.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
version: 6.0.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 4.0.16(vitest@4.1.8)
@@ -723,37 +704,40 @@ importers:
version: 10.1.0
eslint:
specifier: 'catalog:'
version: 10.4.0(jiti@2.6.1)
version: 10.4.0(jiti@2.7.0)
eslint-config-prettier:
specifier: 'catalog:'
version: 10.1.8(eslint@10.4.0(jiti@2.6.1))
version: 10.1.8(eslint@10.4.0(jiti@2.7.0))
eslint-import-resolver-typescript:
specifier: 'catalog:'
version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1)))(eslint@10.4.0(jiti@2.6.1))
version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0)))(eslint@10.4.0(jiti@2.7.0))
eslint-plugin-better-tailwindcss:
specifier: 'catalog:'
version: 4.3.1(eslint@10.4.0(jiti@2.6.1))(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(tailwindcss@4.3.0)(typescript@5.9.3)
version: 4.3.1(eslint@10.4.0(jiti@2.7.0))(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(tailwindcss@4.3.0)(typescript@5.9.3)
eslint-plugin-import-x:
specifier: 'catalog:'
version: 4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))
version: 4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))
eslint-plugin-oxlint:
specifier: 'catalog:'
version: 1.69.0(oxlint@1.69.0(oxlint-tsgolint@0.23.0))
eslint-plugin-playwright:
specifier: 'catalog:'
version: 2.10.1(eslint@10.4.0(jiti@2.6.1))
version: 2.10.1(eslint@10.4.0(jiti@2.7.0))
eslint-plugin-storybook:
specifier: 'catalog:'
version: 10.2.10(eslint@10.4.0(jiti@2.6.1))(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)
version: 10.2.10(eslint@10.4.0(jiti@2.7.0))(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)
eslint-plugin-testing-library:
specifier: 'catalog:'
version: 7.16.1(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
version: 7.16.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint-plugin-unused-imports:
specifier: 'catalog:'
version: 4.4.1(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))
version: 4.4.1(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))
eslint-plugin-vue:
specifier: 'catalog:'
version: 10.9.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.6.1)))
version: 10.9.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)))
fallow:
specifier: 'catalog:'
version: 2.102.0
fast-check:
specifier: 'catalog:'
version: 4.5.3
@@ -769,9 +753,6 @@ importers:
husky:
specifier: 'catalog:'
version: 9.1.7
jiti:
specifier: 'catalog:'
version: 2.6.1
jsdom:
specifier: 'catalog:'
version: 27.4.0
@@ -828,7 +809,7 @@ importers:
version: 5.9.3
typescript-eslint:
specifier: 'catalog:'
version: 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
version: 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
unplugin-icons:
specifier: 'catalog:'
version: 22.5.0(@vue/compiler-sfc@3.5.34)
@@ -843,25 +824,25 @@ importers:
version: 11.1.1
vite:
specifier: ^8.0.13
version: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
version: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-dts:
specifier: 'catalog:'
version: 4.5.4(@types/node@24.10.4)(typescript@5.9.3)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
version: 4.5.4(@types/node@24.10.4)(typescript@5.9.3)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-plugin-html:
specifier: 'catalog:'
version: 3.2.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
version: 3.2.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-plugin-vue-devtools:
specifier: 'catalog:'
version: 8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
version: 8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
vitest:
specifier: 'catalog:'
version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
version: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vue-component-type-helpers:
specifier: 'catalog:'
version: 3.3.2
vue-eslint-parser:
specifier: 'catalog:'
version: 10.4.0(eslint@10.4.0(jiti@2.6.1))
version: 10.4.0(eslint@10.4.0(jiti@2.7.0))
vue-tsc:
specifier: 'catalog:'
version: 3.2.5(typescript@5.9.3)
@@ -1883,6 +1864,46 @@ packages:
'@exodus/crypto':
optional: true
'@fallow-cli/darwin-arm64@2.102.0':
resolution: {integrity: sha512-B8wzfzJgoX6h5Gv2xQ9ZidO5Jb8/PWdssAxYbWs1pb5oJHZ6S5PLwXuUdINmNSIaRGQwTk4DC9/tIMFHFvd9uw==}
cpu: [arm64]
os: [darwin]
'@fallow-cli/darwin-x64@2.102.0':
resolution: {integrity: sha512-aLbTWWzQnleKdi56obAPXMJm7YA3qAnkIX9T3eocRHiagYqp8nsf4cslM0rZKvu2WwK34NaBm8x886gl4cl+zg==}
cpu: [x64]
os: [darwin]
'@fallow-cli/linux-arm64-gnu@2.102.0':
resolution: {integrity: sha512-8nYeOSLSewqcKH/KUcKZaCq5QII5VTRX62l60B6UM1iKe/0jcmlQ2mOtx4rkHpeq3LL5emvT/ph4NNgGmWKSBg==}
cpu: [arm64]
os: [linux]
'@fallow-cli/linux-arm64-musl@2.102.0':
resolution: {integrity: sha512-2Zi33PXzZxD7HU5sPVwyElZGP7zyEdGo4hK0ewy6gMYgQ9BDfLnFhgaSSOzN1J4paIhYtBmVsLmqakyDKy22Jw==}
cpu: [arm64]
os: [linux]
'@fallow-cli/linux-x64-gnu@2.102.0':
resolution: {integrity: sha512-7Hys4X6hKuR/lqUaGXwezRzDrwXwu9KfahUy85WTuiG1to+ZbzDCqdbZ04LtnI8kK8ufrPDcq+ZXdyt5ksOJHA==}
cpu: [x64]
os: [linux]
'@fallow-cli/linux-x64-musl@2.102.0':
resolution: {integrity: sha512-RuDY1jOEPgJOuHBgEpHVl6J7Xf2QLFklnNy6zO1nw8R1fLgWUAAKlFirn1Y93pb9bXzqpn5Gre3YlhgIZ3+LBA==}
cpu: [x64]
os: [linux]
'@fallow-cli/win32-arm64-msvc@2.102.0':
resolution: {integrity: sha512-wsvHjLzWFvsYmCqnQLm1doSEHb9Z038+sFp1RzMcffPUBC5tqS3vCr8J8nolcLlPk7o3QWHQMXAqb1xSJe+doA==}
cpu: [arm64]
os: [win32]
'@fallow-cli/win32-x64-msvc@2.102.0':
resolution: {integrity: sha512-rH1hd0PD0mm6pCxh1pw5jubpJsvV6f5rjixMoD5AZLzWa6NPJBpPPuzruLGtH/9CYy8B0y7zPrGGTKRO2PCGzg==}
cpu: [x64]
os: [win32]
'@firebase/analytics-compat@0.2.18':
resolution: {integrity: sha512-Hw9mzsSMZaQu6wrTbi3kYYwGw9nBqOHr47pVLxfr5v8CalsdrG5gfs9XUlPOZjHRVISp3oQrh1j7d3E+ulHPjQ==}
peerDependencies:
@@ -5614,6 +5635,11 @@ packages:
extendable-media-recorder@9.2.27:
resolution: {integrity: sha512-2X+Ixi1cxLek0Cj9x9atmhQ+apG+LwJpP2p3ypP8Pxau0poDnicrg7FTfPVQV5PW/3DHFm/eQ16vbgo5Yk3HGQ==}
fallow@2.102.0:
resolution: {integrity: sha512-bkOT58kPVCB12d2apQjIKBw/qSdsGRPQFrN5ff9Yl5WzXRqlDTbT/MVdMXld4sJD5JQW1ftw2bTxJWCINggh6g==}
engines: {node: '>=16'}
hasBin: true
fast-check@4.5.3:
resolution: {integrity: sha512-IE9csY7lnhxBnA8g/WI5eg/hygA6MGWJMSNfFRrBlXUciADEhS1EDB0SIsMSvzubzIlOBbVITSsypCsW717poA==}
engines: {node: '>=12.17.0'}
@@ -6308,10 +6334,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
jiti@2.7.0:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
@@ -9808,9 +9830,9 @@ snapshots:
'@esbuild/win32-x64@0.27.3':
optional: true
'@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.6.1))':
'@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.7.0))':
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
@@ -9850,9 +9872,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@eslint/js@10.0.1(eslint@10.4.0(jiti@2.6.1))':
'@eslint/js@10.0.1(eslint@10.4.0(jiti@2.7.0))':
optionalDependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
'@eslint/object-schema@3.0.5': {}
@@ -9863,6 +9885,30 @@ snapshots:
'@exodus/bytes@1.7.0': {}
'@fallow-cli/darwin-arm64@2.102.0':
optional: true
'@fallow-cli/darwin-x64@2.102.0':
optional: true
'@fallow-cli/linux-arm64-gnu@2.102.0':
optional: true
'@fallow-cli/linux-arm64-musl@2.102.0':
optional: true
'@fallow-cli/linux-x64-gnu@2.102.0':
optional: true
'@fallow-cli/linux-x64-musl@2.102.0':
optional: true
'@fallow-cli/win32-arm64-msvc@2.102.0':
optional: true
'@fallow-cli/win32-x64-msvc@2.102.0':
optional: true
'@firebase/analytics-compat@0.2.18(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)':
dependencies:
'@firebase/analytics': 0.10.12(@firebase/app@0.11.4)
@@ -10421,14 +10467,14 @@ snapshots:
'@intlify/message-compiler': 9.14.5
'@intlify/shared': 9.14.5
'@intlify/eslint-plugin-vue-i18n@4.5.0(eslint@10.4.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.0)(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.6.1)))(yaml-eslint-parser@1.3.0)':
'@intlify/eslint-plugin-vue-i18n@4.5.0(eslint@10.4.0(jiti@2.7.0))(jsonc-eslint-parser@2.4.0)(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)))(yaml-eslint-parser@1.3.0)':
dependencies:
'@eslint/eslintrc': 3.3.3
'@intlify/core-base': 11.2.8
'@intlify/message-compiler': 11.2.8
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint-compat-utils: 0.6.5(eslint@10.4.0(jiti@2.6.1))
eslint: 10.4.0(jiti@2.7.0)
eslint-compat-utils: 0.6.5(eslint@10.4.0(jiti@2.7.0))
glob: 10.5.0
globals: 16.5.0
ignore: 7.0.5
@@ -10440,7 +10486,7 @@ snapshots:
parse5: 7.3.0
semver: 7.7.4
synckit: 0.11.12
vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.6.1))
vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0))
yaml-eslint-parser: 1.3.0
transitivePeerDependencies:
- supports-color
@@ -11373,10 +11419,10 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
'@storybook/addon-docs@10.2.10(@types/react@19.1.9)(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
'@storybook/addon-docs@10.2.10(@types/react@19.1.9)(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
'@mdx-js/react': 3.1.1(@types/react@19.1.9)(react@19.2.4)
'@storybook/csf-plugin': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/csf-plugin': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@storybook/react-dom-shim': 10.2.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))
react: 19.2.4
@@ -11402,24 +11448,24 @@ snapshots:
- '@tmcp/auth'
- typescript
'@storybook/builder-vite@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
'@storybook/builder-vite@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
'@storybook/csf-plugin': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/csf-plugin': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
ts-dedent: 2.2.0
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
transitivePeerDependencies:
- esbuild
- rollup
- webpack
'@storybook/csf-plugin@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
'@storybook/csf-plugin@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
unplugin: 2.3.11
optionalDependencies:
esbuild: 0.27.3
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
'@storybook/global@5.0.0': {}
@@ -11444,14 +11490,14 @@ snapshots:
react-dom: 19.2.4(react@19.2.4)
storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@storybook/vue3-vite@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
'@storybook/vue3-vite@10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
dependencies:
'@storybook/builder-vite': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/builder-vite': 10.2.10(esbuild@0.27.3)(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@storybook/vue3': 10.2.10(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vue@3.5.34(typescript@5.9.3))
magic-string: 0.30.21
storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
typescript: 5.9.3
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vue-component-meta: 2.2.12(typescript@5.9.3)
vue-docgen-api: 4.79.2(vue@3.5.34(typescript@5.9.3))
transitivePeerDependencies:
@@ -11533,12 +11579,12 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.3.0
'@tailwindcss/oxide-win32-x64-msvc': 4.3.0
'@tailwindcss/vite@4.3.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
'@tailwindcss/vite@4.3.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
'@tailwindcss/node': 4.3.0
'@tailwindcss/oxide': 4.3.0
tailwindcss: 4.3.0
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
'@tailwindcss/vite@4.3.0(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
@@ -11904,15 +11950,15 @@ snapshots:
dependencies:
'@types/node': 25.0.3
'@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)':
'@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.60.0
'@typescript-eslint/type-utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/type-utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.60.0
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@5.9.3)
@@ -11920,14 +11966,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)':
'@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.60.0
'@typescript-eslint/types': 8.60.0
'@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.60.0
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -11950,13 +11996,13 @@ snapshots:
dependencies:
typescript: 5.9.3
'@typescript-eslint/type-utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)':
'@typescript-eslint/type-utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.60.0
'@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
@@ -11979,13 +12025,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)':
'@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.6.1))
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
'@typescript-eslint/scope-manager': 8.60.0
'@typescript-eslint/types': 8.60.0
'@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -12086,10 +12132,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@vitejs/plugin-vue@6.0.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
'@vitejs/plugin-vue@6.0.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
dependencies:
'@rolldown/pluginutils': 1.0.0-beta.53
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vue: 3.5.34(typescript@5.9.3)
'@vitejs/plugin-vue@6.0.3(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
@@ -12117,7 +12163,7 @@ snapshots:
obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.0.3
vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
@@ -12138,13 +12184,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
'@vitest/mocker@4.1.8(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
'@vitest/mocker@4.1.8(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.8
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
'@vitest/mocker@4.1.8(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))':
dependencies:
@@ -12193,7 +12239,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.16
tinyrainbow: 3.0.3
vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vitest: 4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@vitest/utils@3.2.4':
dependencies:
@@ -12373,14 +12419,14 @@ snapshots:
dependencies:
'@vue/devtools-kit': 7.7.9
'@vue/devtools-core@8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
'@vue/devtools-core@8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))':
dependencies:
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
mitt: 3.0.1
nanoid: 5.1.5
pathe: 2.0.3
vite-hot-client: 2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-hot-client: 2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vue: 3.5.34(typescript@5.9.3)
transitivePeerDependencies:
- vite
@@ -13580,14 +13626,14 @@ snapshots:
escape-string-regexp@5.0.0: {}
eslint-compat-utils@0.6.5(eslint@10.4.0(jiti@2.6.1)):
eslint-compat-utils@0.6.5(eslint@10.4.0(jiti@2.7.0)):
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
semver: 7.7.4
eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.6.1)):
eslint-config-prettier@10.1.8(eslint@10.4.0(jiti@2.7.0)):
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
eslint-import-context@0.1.9(unrs-resolver@1.11.1):
dependencies:
@@ -13596,10 +13642,10 @@ snapshots:
optionalDependencies:
unrs-resolver: 1.11.1
eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1)))(eslint@10.4.0(jiti@2.6.1)):
eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0)))(eslint@10.4.0(jiti@2.7.0)):
dependencies:
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
get-tsconfig: 4.14.0
is-bun-module: 2.0.0
@@ -13607,11 +13653,11 @@ snapshots:
tinyglobby: 0.2.16
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))
eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))
transitivePeerDependencies:
- supports-color
eslint-plugin-better-tailwindcss@4.3.1(eslint@10.4.0(jiti@2.6.1))(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(tailwindcss@4.3.0)(typescript@5.9.3):
eslint-plugin-better-tailwindcss@4.3.1(eslint@10.4.0(jiti@2.7.0))(oxlint@1.69.0(oxlint-tsgolint@0.23.0))(tailwindcss@4.3.0)(typescript@5.9.3):
dependencies:
'@eslint/css-tree': 3.6.9
'@valibot/to-json-schema': 1.5.0(valibot@1.2.0(typescript@5.9.3))
@@ -13623,18 +13669,18 @@ snapshots:
tsconfig-paths-webpack-plugin: 4.2.0
valibot: 1.2.0(typescript@5.9.3)
optionalDependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
oxlint: 1.69.0(oxlint-tsgolint@0.23.0)
transitivePeerDependencies:
- typescript
eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1)):
eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0)):
dependencies:
'@package-json/types': 0.0.12
'@typescript-eslint/types': 8.60.0
comment-parser: 1.4.1
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
is-glob: 4.0.3
minimatch: 9.0.9
@@ -13642,7 +13688,7 @@ snapshots:
stable-hash-x: 0.2.0
unrs-resolver: 1.11.1
optionalDependencies:
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
transitivePeerDependencies:
- supports-color
@@ -13651,47 +13697,47 @@ snapshots:
jsonc-parser: 3.3.1
oxlint: 1.69.0(oxlint-tsgolint@0.23.0)
eslint-plugin-playwright@2.10.1(eslint@10.4.0(jiti@2.6.1)):
eslint-plugin-playwright@2.10.1(eslint@10.4.0(jiti@2.7.0)):
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
globals: 17.4.0
eslint-plugin-storybook@10.2.10(eslint@10.4.0(jiti@2.6.1))(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3):
eslint-plugin-storybook@10.2.10(eslint@10.4.0(jiti@2.7.0))(storybook@10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.6.1)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.7.0)
storybook: 10.2.10(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
transitivePeerDependencies:
- supports-color
- typescript
eslint-plugin-testing-library@7.16.1(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3):
eslint-plugin-testing-library@7.16.1(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3):
dependencies:
'@typescript-eslint/scope-manager': 8.60.0
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.6.1)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.7.0)
transitivePeerDependencies:
- supports-color
- typescript
eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1)):
eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0)):
dependencies:
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint-plugin-vue@10.9.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.6.1))):
eslint-plugin-vue@10.9.1(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0))):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.6.1))
eslint: 10.4.0(jiti@2.6.1)
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
eslint: 10.4.0(jiti@2.7.0)
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 7.1.1
semver: 7.7.4
vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.6.1))
vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0))
xml-name-validator: 4.0.0
optionalDependencies:
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint-scope@9.1.2:
dependencies:
@@ -13706,9 +13752,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
eslint@10.4.0(jiti@2.6.1):
eslint@10.4.0(jiti@2.7.0):
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.6.1))
'@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0))
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.6.0
@@ -13739,7 +13785,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
jiti: 2.6.1
jiti: 2.7.0
transitivePeerDependencies:
- supports-color
@@ -13829,6 +13875,19 @@ snapshots:
subscribable-things: 2.1.53
tslib: 2.8.1
fallow@2.102.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
'@fallow-cli/darwin-arm64': 2.102.0
'@fallow-cli/darwin-x64': 2.102.0
'@fallow-cli/linux-arm64-gnu': 2.102.0
'@fallow-cli/linux-arm64-musl': 2.102.0
'@fallow-cli/linux-x64-gnu': 2.102.0
'@fallow-cli/linux-x64-musl': 2.102.0
'@fallow-cli/win32-arm64-msvc': 2.102.0
'@fallow-cli/win32-x64-msvc': 2.102.0
fast-check@4.5.3:
dependencies:
pure-rand: 7.0.1
@@ -14613,8 +14672,6 @@ snapshots:
filelist: 1.0.4
minimatch: 3.1.5
jiti@2.6.1: {}
jiti@2.7.0: {}
jju@1.4.0: {}
@@ -16981,13 +17038,13 @@ snapshots:
dependencies:
semver: 7.7.4
typescript-eslint@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3):
typescript-eslint@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
'@typescript-eslint/parser': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
'@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.6.1))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.6.1)
'@typescript-eslint/utils': 8.60.0(eslint@10.4.0(jiti@2.7.0))(typescript@5.9.3)
eslint: 10.4.0(jiti@2.7.0)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -17237,11 +17294,11 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
vite-dev-rpc@1.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-dev-rpc@1.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
birpc: 2.9.0
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-hot-client: 2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-hot-client: 2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-dev-rpc@1.1.0(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
@@ -17249,15 +17306,15 @@ snapshots:
vite: 8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-hot-client: 2.1.0(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-hot-client@2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-hot-client@2.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-hot-client@2.1.0(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
vite: 8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-dts@4.5.4(@types/node@24.10.4)(typescript@5.9.3)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-plugin-dts@4.5.4(@types/node@24.10.4)(typescript@5.9.3)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
'@microsoft/api-extractor': 7.57.2(@types/node@24.10.4)
'@rollup/pluginutils': 5.3.0
@@ -17270,13 +17327,13 @@ snapshots:
magic-string: 0.30.21
typescript: 5.9.3
optionalDependencies:
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
vite-plugin-html@3.2.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-plugin-html@3.2.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
'@rollup/pluginutils': 4.2.1
colorette: 2.0.20
@@ -17290,7 +17347,7 @@ snapshots:
html-minifier-terser: 6.1.0
node-html-parser: 5.4.2
pathe: 0.2.0
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-html@3.2.2(vite@8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
@@ -17308,7 +17365,7 @@ snapshots:
pathe: 0.2.0
vite: 8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-inspect@11.3.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-plugin-inspect@11.3.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
ansis: 4.2.0
debug: 4.4.3
@@ -17318,8 +17375,8 @@ snapshots:
perfect-debounce: 2.0.0
sirv: 3.0.2
unplugin-utils: 0.3.1
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-dev-rpc: 1.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-dev-rpc: 1.1.0(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
@@ -17338,15 +17395,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite-plugin-vue-devtools@8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3)):
vite-plugin-vue-devtools@8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3)):
dependencies:
'@vue/devtools-core': 8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
'@vue/devtools-core': 8.0.5(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))(vue@3.5.34(typescript@5.9.3))
'@vue/devtools-kit': 8.0.5
'@vue/devtools-shared': 8.0.5
sirv: 3.0.2
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-inspect: 11.3.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-plugin-vue-inspector: 5.3.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite-plugin-inspect: 11.3.3(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
vite-plugin-vue-inspector: 5.3.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
@@ -17380,7 +17437,7 @@ snapshots:
- supports-color
- vue
vite-plugin-vue-inspector@5.3.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vite-plugin-vue-inspector@5.3.2(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0)
@@ -17391,7 +17448,7 @@ snapshots:
'@vue/compiler-dom': 3.5.34
kolorist: 1.8.0
magic-string: 0.30.21
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
@@ -17425,7 +17482,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0):
vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -17436,7 +17493,7 @@ snapshots:
'@types/node': 24.10.4
esbuild: 0.27.3
fsevents: 2.3.3
jiti: 2.6.1
jiti: 2.7.0
terser: 5.39.2
tsx: 4.19.4
yaml: 2.9.0
@@ -17461,10 +17518,10 @@ snapshots:
optionalDependencies:
vite: 8.0.13(@types/node@25.0.3)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
vitest@4.1.8(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/coverage-v8@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.9.0)(jsdom@27.4.0)(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.8
'@vitest/mocker': 4.1.8(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@vitest/mocker': 4.1.8(vite@8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.8
'@vitest/runner': 4.1.8
'@vitest/snapshot': 4.1.8
@@ -17481,7 +17538,7 @@ snapshots:
tinyexec: 1.0.4
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.6.1)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
vite: 8.0.13(@types/node@24.10.4)(esbuild@0.27.3)(jiti@2.7.0)(terser@5.39.2)(tsx@4.19.4)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
@@ -17659,10 +17716,10 @@ snapshots:
vue: 3.5.34(typescript@5.9.3)
vue-inbrowser-compiler-independent-utils: 4.71.1(vue@3.5.34(typescript@5.9.3))
vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.6.1)):
vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)):
dependencies:
debug: 4.4.3
eslint: 10.4.0(jiti@2.6.1)
eslint: 10.4.0(jiti@2.7.0)
eslint-scope: 9.1.2
eslint-visitor-keys: 5.0.1
espree: 11.2.0

View File

@@ -28,12 +28,9 @@ catalog:
'@lucide/vue': ^1.17.0
'@pinia/testing': ^1.0.3
'@playwright/test': ^1.58.1
'@primeuix/forms': 0.0.2
'@primeuix/styled': 0.3.2
'@primeuix/utils': ^0.3.2
'@primevue/core': ^4.2.5
'@primevue/forms': ^4.2.5
'@primevue/icons': 4.2.5
'@primevue/themes': ^4.2.5
'@sentry/vite-plugin': ^4.6.0
'@sentry/vue': ^10.32.1
@@ -88,6 +85,7 @@ catalog:
eslint-plugin-testing-library: ^7.16.1
eslint-plugin-unused-imports: ^4.4.1
eslint-plugin-vue: ^10.9.1
fallow: ^2.102.0
fast-check: ^4.5.3
firebase: ^11.6.0
glob: ^13.0.6
@@ -95,7 +93,6 @@ catalog:
gsap: ^3.14.2
happy-dom: ^20.8.9
husky: ^9.1.7
jiti: 2.6.1
jsdom: ^27.4.0
jsonata: ^2.1.0
knip: ^6.15.0
@@ -166,7 +163,6 @@ allowBuilds:
overrides:
vite: 'catalog:'
'@tiptap/pm': 2.27.2
'@types/eslint': '-'
# Security overrides
lodash: ^4.18.0
yaml: ^2.8.3

View File

@@ -113,13 +113,3 @@ export const formatUsdFromCents = ({
locale,
numberOptions
})
/**
* Clamps a USD value to the allowed range for credit purchases
* @param value - The USD amount to clamp
* @returns The clamped value between $1 and $1000, or 0 if NaN
*/
export const clampUsd = (value: number): number => {
if (Number.isNaN(value)) return 0
return Math.min(1000, Math.max(1, value))
}

View File

@@ -64,12 +64,6 @@ vi.mock('@/composables/canvas/useSelectionToolboxPosition', () => ({
resetMoreOptionsState: vi.fn()
}))
vi.mock('@/composables/element/useRetriggerableAnimation', () => ({
useRetriggerableAnimation: vi.fn(() => ({
shouldAnimate: { value: false }
}))
}))
vi.mock('@/renderer/extensions/minimap/composables/useMinimap', () => ({
useMinimap: vi.fn(() => ({
containerStyles: {

View File

@@ -23,7 +23,6 @@ vi.mock('@/scripts/app', () => ({
vi.mock('@/utils/graphTraversalUtil', () => ({
getNodeByExecutionId: vi.fn(),
getRootParentNode: vi.fn(() => null),
forEachNode: vi.fn(),
mapAllNodes: vi.fn(() => [])
}))

View File

@@ -17,7 +17,6 @@ vi.mock('@/scripts/app', () => ({
vi.mock('@/utils/graphTraversalUtil', () => ({
getNodeByExecutionId: vi.fn(),
getExecutionIdByNode: vi.fn(),
getRootParentNode: vi.fn(() => null),
forEachNode: vi.fn(),
mapAllNodes: vi.fn(() => [])
}))

View File

@@ -17,7 +17,6 @@ vi.mock('@/scripts/app', () => ({
vi.mock('@/utils/graphTraversalUtil', () => ({
getNodeByExecutionId: vi.fn(),
getExecutionIdByNode: vi.fn(),
getRootParentNode: vi.fn(() => null),
forEachNode: vi.fn(),
mapAllNodes: vi.fn(() => [])
}))

View File

@@ -61,13 +61,6 @@ vi.mock('./nodeLibrary/EssentialNodesPanel.vue', () => ({
}
}))
vi.mock('./nodeLibrary/NodeDragPreview.vue', () => ({
default: {
name: 'NodeDragPreview',
template: '<div />'
}
}))
vi.mock('@/components/ui/search-input/SearchInput.vue', () => ({
default: {
name: 'SearchBox',

View File

@@ -20,14 +20,6 @@ const { mockWorkflowStatus, mockCloseWorkflow } = await vi.hoisted(async () => {
}
})
vi.mock('@/stores/firebaseAuthStore', () => ({
useFirebaseAuthStore: () => ({
currentUser: null,
isAuthenticated: false,
isLoading: false
})
}))
vi.mock('@/stores/authStore', () => ({
useAuthStore: () => ({
currentUser: null,

View File

@@ -85,10 +85,6 @@ vi.mock('@/stores/authStore', () => ({
useAuthStore: vi.fn(() => ({}))
}))
vi.mock('@/composables/auth/useFirebaseAuth', () => ({
useFirebaseAuth: vi.fn(() => null)
}))
vi.mock('firebase/auth', () => ({
setPersistence: vi.fn(),
browserLocalPersistence: {},
@@ -133,10 +129,6 @@ vi.mock('@/stores/executionStore', () => ({
useExecutionStore: vi.fn(() => ({}))
}))
vi.mock('@/stores/toastStore', () => ({
useToastStore: vi.fn(() => ({}))
}))
const mockToastAdd = vi.hoisted(() => vi.fn())
vi.mock('@/platform/updates/common/toastStore', () => ({
useToastStore: vi.fn(() => ({ add: mockToastAdd }))

View File

@@ -39,21 +39,6 @@ vi.mock('@/stores/modelToNodeStore', () => ({
})
}))
vi.mock('@/components/common/SearchBox.vue', () => ({
default: {
name: 'SearchBox',
props: ['modelValue', 'size', 'placeholder', 'class'],
emits: ['update:modelValue'],
template: `
<input
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
data-testid="search-box"
/>
`
}
}))
vi.mock('@/components/widget/layout/BaseModalLayout.vue', () => ({
default: {
name: 'BaseModalLayout',

View File

@@ -51,10 +51,6 @@ export type OAuthConsentDecisionParams = {
expectedRedirectUri?: string
}
export type OAuthConsentDecision = (
params: OAuthConsentDecisionParams
) => Promise<void>
// Schemes that execute in our origin if navigated. Never navigable,
// regardless of what the backend returns. Everything else is governed
// by binding to the challenge's registered redirect_uri — no per-client

View File

@@ -1,110 +0,0 @@
import type { Meta, StoryObj } from '@storybook/vue3-vite'
import { ref } from 'vue'
import CreditSlider from './CreditSlider.vue'
const meta: Meta<typeof CreditSlider> = {
title: 'Platform/Subscription/CreditSlider',
component: CreditSlider,
tags: ['autodocs'],
parameters: { layout: 'centered' },
argTypes: {
disabled: { control: 'boolean' }
},
args: {
disabled: false
},
decorators: [
(story) => ({
components: { story },
// Previews at the real layout width: the Figma "Team Plan" card column is
// 512px wide with 32px padding (DES-197), i.e. a 448px content area — the
// width the slider actually renders into inside PricingTableWorkspace.
template: '<div class="w-[512px] px-8"><story /></div>'
})
]
}
export default meta
type Story = StoryObj<typeof meta>
export const Default: Story = {
render: (args) => ({
components: { CreditSlider },
setup() {
const value = ref(700)
return { args, value }
},
template: '<CreditSlider v-model="value" :disabled="args.disabled" />'
})
}
export const Disabled: Story = {
args: { disabled: true },
render: (args) => ({
components: { CreditSlider },
setup() {
const value = ref(700)
return { args, value }
},
template: '<CreditSlider v-model="value" :disabled="args.disabled" />'
})
}
// Sample `GET /api/billing/plans → team_credit_stops` payload (DES-197 yearly).
// In production this comes from the API; here it shows the stops being driven
// entirely through props rather than the hardcoded default constant.
const apiTeamCreditStops = {
default_stop_index: 2,
stops: [
{
id: 'team_200',
credits: 42_200,
yearly: { price_cents: 20_000, discount_percent: 0 }
},
{
id: 'team_400',
credits: 84_400,
yearly: { price_cents: 38_000, discount_percent: 5 }
},
{
id: 'team_700',
credits: 147_700,
yearly: { price_cents: 63_000, discount_percent: 10 }
},
{
id: 'team_1400',
credits: 295_400,
yearly: { price_cents: 119_000, discount_percent: 15 }
},
{
id: 'team_2500',
credits: 527_500,
yearly: { price_cents: 200_000, discount_percent: 20 }
}
]
}
// Reference adapter (FE-934 will own this in the data layer): API → CreditStop[].
// The pre-discount list price is recovered as discounted / (1 - discount).
const mappedStops = apiTeamCreditStops.stops.map((s) => ({
credits: s.credits,
discountPercentYearly: s.yearly.discount_percent,
usd: Math.round(
s.yearly.price_cents / 100 / (1 - s.yearly.discount_percent / 100)
)
}))
export const BackendDrivenStops: Story = {
name: 'Backend-driven stops (props)',
render: (args) => ({
components: { CreditSlider },
setup() {
const defaultStopIndex = apiTeamCreditStops.default_stop_index
const value = ref(mappedStops[defaultStopIndex].usd)
return { args, value, mappedStops, defaultStopIndex }
},
template:
'<CreditSlider v-model="value" :stops="mappedStops" :default-stop-index="defaultStopIndex" :disabled="args.disabled" />'
})
}

View File

@@ -1,189 +0,0 @@
import { render, screen, within } from '@testing-library/vue'
import userEvent from '@testing-library/user-event'
import { describe, expect, it, vi } from 'vitest'
import { nextTick } from 'vue'
import { createI18n } from 'vue-i18n'
import { usdToCredits } from '@/base/credits/comfyCredits'
import { TEAM_PLAN_CREDIT_STOPS } from '@/platform/cloud/subscription/constants/teamPlanCreditStops'
import CreditSlider from './CreditSlider.vue'
const i18n = createI18n({
legacy: false,
locale: 'en',
messages: {
en: {
subscription: {
usdPerMonth: 'USD / mo',
billedYearly: '{total} Billed yearly',
creditSliderSave: 'Save {percent}% ({amount})'
}
}
}
})
function renderSlider(props: Record<string, unknown> = {}) {
return render(CreditSlider, { props, global: { plugins: [i18n] } })
}
async function flush() {
await nextTick()
await nextTick()
}
describe('CreditSlider', () => {
it('defaults to the $700 stop (index 2) when no value is bound', async () => {
renderSlider()
await flush()
const thumb = screen.getByRole('slider')
expect(thumb).toHaveAttribute('aria-valuemin', '0')
expect(thumb).toHaveAttribute('aria-valuemax', '4')
expect(thumb).toHaveAttribute('aria-valuenow', '2')
})
it('snaps to the next fixed stop on ArrowRight (never a value in between)', async () => {
const user = userEvent.setup()
const onUpdate = vi.fn<(usd: number) => void>()
renderSlider({ modelValue: 700, 'onUpdate:modelValue': onUpdate })
await flush()
screen.getByRole('slider').focus()
await user.keyboard('{ArrowRight}')
expect(onUpdate).toHaveBeenCalledWith(1400)
})
it('snaps to the previous fixed stop on ArrowLeft', async () => {
const user = userEvent.setup()
const onUpdate = vi.fn<(usd: number) => void>()
renderSlider({ modelValue: 700, 'onUpdate:modelValue': onUpdate })
await flush()
screen.getByRole('slider').focus()
await user.keyboard('{ArrowLeft}')
expect(onUpdate).toHaveBeenCalledWith(400)
})
it('emits change with the full {index, usd, credits} payload', async () => {
const user = userEvent.setup()
const onChange = vi.fn()
renderSlider({ modelValue: 700, onChange })
await flush()
screen.getByRole('slider').focus()
await user.keyboard('{ArrowRight}')
expect(onChange).toHaveBeenCalledWith({
index: 3,
usd: 1400,
credits: 295_400
})
})
it('emits nothing when disabled (keyboard interaction suppressed)', async () => {
const user = userEvent.setup()
const onUpdate = vi.fn<(usd: number) => void>()
const onChange = vi.fn()
renderSlider({
modelValue: 700,
disabled: true,
'onUpdate:modelValue': onUpdate,
onChange
})
await flush()
screen.getByRole('slider').focus()
await user.keyboard('{ArrowRight}')
expect(onUpdate).not.toHaveBeenCalled()
expect(onChange).not.toHaveBeenCalled()
})
it('shows the discounted price, struck original, save badge and yearly total (DES-197)', async () => {
renderSlider() // default $700 stop → 10% yearly discount
await flush()
expect(screen.getByTestId('credit-slider-price')).toHaveTextContent('$630')
expect(
screen.getByTestId('credit-slider-original-price')
).toHaveTextContent('$700')
expect(screen.getByTestId('credit-slider-save')).toHaveTextContent(
'Save 10% ($70)'
)
expect(screen.getByTestId('credit-slider-billed-yearly')).toHaveTextContent(
'$7,560'
)
})
it('hides the discount UI at the 0% stop ($200)', async () => {
renderSlider({ modelValue: 200 })
await flush()
expect(screen.getByTestId('credit-slider-price')).toHaveTextContent('$200')
expect(
screen.queryByTestId('credit-slider-original-price')
).not.toBeInTheDocument()
expect(screen.queryByTestId('credit-slider-save')).not.toBeInTheDocument()
})
it('renders all five fixed credit stop labels', async () => {
renderSlider({ modelValue: 700 })
await flush()
const stops = within(screen.getByTestId('credit-slider-stops'))
for (const label of ['42.2K', '84.4K', '147.7K', '295.4K', '527.5K']) {
expect(stops.getByText(label)).toBeInTheDocument()
}
})
it('renders nothing when stops is empty (defensive for BE-sourced data)', async () => {
renderSlider({ stops: [] })
await flush()
expect(screen.queryByRole('slider')).not.toBeInTheDocument()
expect(screen.queryByTestId('credit-slider-price')).not.toBeInTheDocument()
})
it('renders stops + default index supplied via props (BE-sourced override)', async () => {
const stops = [
{ usd: 50, credits: 10_550, discountPercentYearly: 0 },
{ usd: 100, credits: 21_100, discountPercentYearly: 25 }
]
// No modelValue → the model default ($700) matches no stop, so selectedIndex
// falls back to defaultStopIndex (here index 1 → $100).
renderSlider({ stops, defaultStopIndex: 1 })
await flush()
const thumb = screen.getByRole('slider')
expect(thumb).toHaveAttribute('aria-valuemax', '1') // 2 stops → max index 1
expect(thumb).toHaveAttribute('aria-valuenow', '1') // default index honored
// index 1 → $100 at 25% yearly → $75 discounted, struck $100, save $25
expect(screen.getByTestId('credit-slider-price')).toHaveTextContent('$75')
expect(
screen.getByTestId('credit-slider-original-price')
).toHaveTextContent('$100')
expect(screen.getByTestId('credit-slider-save')).toHaveTextContent(
'Save 25% ($25)'
)
// Only the prop's labels render — none of the DES-197 defaults.
const labels = within(screen.getByTestId('credit-slider-stops'))
expect(labels.getByText('10.6K')).toBeInTheDocument()
expect(labels.getByText('21.1K')).toBeInTheDocument()
expect(labels.queryByText('147.7K')).not.toBeInTheDocument()
})
it('keeps every credit amount equal to usdToCredits(usd) (guards rate drift)', () => {
for (const stop of TEAM_PLAN_CREDIT_STOPS) {
expect(stop.credits).toBe(usdToCredits(stop.usd))
}
})
})

View File

@@ -1,228 +0,0 @@
<script setup lang="ts">
import {
TransitionPresets,
usePreferredReducedMotion,
useTransition
} from '@vueuse/core'
import { computed } from 'vue'
import type { HTMLAttributes } from 'vue'
import { useI18n } from 'vue-i18n'
import { cn } from '@comfyorg/tailwind-utils'
import Slider from '@/components/ui/slider/Slider.vue'
import {
DEFAULT_TEAM_PLAN_STOP_INDEX,
TEAM_PLAN_CREDIT_STOPS
} from '@/platform/cloud/subscription/constants/teamPlanCreditStops'
import type { CreditStop } from '@/platform/cloud/subscription/constants/teamPlanCreditStops'
const {
disabled = false,
class: rootClass,
stops = TEAM_PLAN_CREDIT_STOPS,
defaultStopIndex = DEFAULT_TEAM_PLAN_STOP_INDEX
} = defineProps<{
disabled?: boolean
class?: HTMLAttributes['class']
/**
* The fixed credit stops the slider snaps to; when empty, the component
* renders nothing. Defaults to the hardcoded DES-197 set; pass the
* backend-sourced stops once the contract lands — map
* `GET /api/billing/plans → team_credit_stops.stops` to `CreditStop[]`
* (credits, the pre-discount `usd`, and `discountPercentYearly`).
*/
stops?: readonly CreditStop[]
/**
* Stop selected when the bound value matches none (e.g. first render).
* Maps to `team_credit_stops.default_stop_index`. Defaults to DES-197 ($700).
*/
defaultStopIndex?: number
}>()
const emit = defineEmits<{
/** Fired when the selected stop changes, with the full derived payload. */
change: [stop: { index: number; usd: number; credits: number }]
}>()
/**
* v-model carries the selected USD value (one of the `stops`). The literal
* default keeps `defineModel` statically analyzable; when custom `stops` are
* passed without a matching v-model, `selectedIndex` falls back to
* `defaultStopIndex`, so the displayed stop is still correct.
*/
const usd = defineModel<number>({
default: TEAM_PLAN_CREDIT_STOPS[DEFAULT_TEAM_PLAN_STOP_INDEX].usd
})
const selectedIndex = computed(() => {
const i = stops.findIndex((stop) => stop.usd === usd.value)
if (i !== -1) return i
// Fall back to the default stop, clamped into range: a backend-driven `stops`
// array can be shorter than expected (or `defaultStopIndex` out of bounds).
return Math.min(Math.max(defaultStopIndex, 0), Math.max(stops.length - 1, 0))
})
// Zero-stop fallback: `useTransition` reads its source eagerly at setup, so an
// empty `stops` must not crash even though the template then renders nothing.
const EMPTY_STOP: CreditStop = { usd: 0, credits: 0, discountPercentYearly: 0 }
const current = computed(() => stops.at(selectedIndex.value) ?? EMPTY_STOP)
// Yearly commitment (per DES-197): the discount applies to the monthly figure.
// The card shows the discounted monthly price, the struck pre-discount price,
// the saving, and the annual total.
const discountedMonthly = computed(() =>
Math.round(
current.value.usd * (1 - current.value.discountPercentYearly / 100)
)
)
const saveAmount = computed(() => current.value.usd - discountedMonthly.value)
const hasDiscount = computed(() => current.value.discountPercentYearly > 0)
/**
* Smoothly count the price figures up/down as the slider moves between stops
* instead of snapping. Honors the user's reduced-motion preference. The save
* badge ("X% ($Y)") is intentionally left snapping — its percent is a discrete
* tier, so animating the bracketed amount alone would read inconsistently.
*/
const prefersReducedMotion = usePreferredReducedMotion()
const priceTween = {
duration: 350,
easing: TransitionPresets.easeOutCubic,
disabled: computed(() => prefersReducedMotion.value === 'reduce')
}
// One vector tween keeps both figures in phase. Deriving the monthly from the
// animated original instead would jump at the start of each move: the discount
// tier snaps per stop while the base price is still mid-tween.
const animatedPrices = useTransition(
() => [discountedMonthly.value, current.value.usd],
priceTween
)
const displayMonthly = computed(() => Math.round(animatedPrices.value[0]))
const displayOriginal = computed(() => Math.round(animatedPrices.value[1]))
// Derive the yearly total from the displayed monthly so it always reads as
// exactly 12× the price shown — even mid-count — rather than drifting as a
// second, independently-phased tween would.
const displayBilledYearly = computed(() => displayMonthly.value * 12)
/**
* Bridge the discrete stop index (0..n-1) to the reka-ui slider's `number[]`
* model. Driving the slider in index space with `step = 1` guarantees the
* thumb can only land on the fixed stops — never a value in between.
*/
const sliderModel = computed<number[]>({
get: () => [selectedIndex.value],
set: ([index]) => {
const stop = stops[index]
if (!stop) return
usd.value = stop.usd
emit('change', { index, usd: stop.usd, credits: stop.credits })
}
})
const lastIndex = computed(() => Math.max(stops.length - 1, 0))
const formatUsd = (value: number) => `$${value.toLocaleString('en-US')}`
const formatCreditsCompact = (value: number) =>
new Intl.NumberFormat('en-US', {
notation: 'compact',
maximumFractionDigits: 1
}).format(value)
const { t } = useI18n()
</script>
<template>
<div
v-if="stops.length > 0"
:class="cn('flex w-full flex-col gap-3', rootClass)"
>
<!-- Price: discounted monthly + struck pre-discount + save badge -->
<div class="flex flex-col gap-1">
<div class="flex flex-wrap items-center gap-x-2 gap-y-1">
<span class="flex shrink-0 items-baseline gap-1.5 whitespace-nowrap">
<span
class="text-[2rem]/none font-semibold text-base-foreground"
data-testid="credit-slider-price"
>
{{ formatUsd(displayMonthly) }}
</span>
<span
v-if="hasDiscount"
class="text-base text-muted-foreground line-through"
data-testid="credit-slider-original-price"
>
{{ formatUsd(displayOriginal) }}
</span>
<span class="text-base text-muted-foreground">
{{ t('subscription.usdPerMonth') }}
</span>
</span>
<!-- Save badge: outlined primary pill, pushed to the right (DES-197) -->
<span
v-if="hasDiscount"
data-testid="credit-slider-save"
class="ms-auto shrink-0 rounded-full border-2 border-primary-background px-2 py-1 text-sm font-bold whitespace-nowrap text-primary-background"
>
{{
t('subscription.creditSliderSave', {
percent: current.discountPercentYearly,
amount: formatUsd(saveAmount)
})
}}
</span>
</div>
<p
class="m-0 text-sm text-muted-foreground"
data-testid="credit-slider-billed-yearly"
>
{{
t('subscription.billedYearly', {
total: formatUsd(displayBilledYearly)
})
}}
</p>
</div>
<!-- Discrete slider: snaps to the 5 fixed DES-197 stops -->
<Slider
v-model="sliderModel"
:min="0"
:max="lastIndex"
:step="1"
:disabled="disabled"
/>
<!-- Credit stop labels; the selected stop is emphasized -->
<ol
data-testid="credit-slider-stops"
class="m-0 flex list-none justify-between p-0"
>
<li
v-for="(stop, i) in stops"
:key="stop.usd"
:data-selected="i === selectedIndex ? '' : undefined"
:class="
cn(
'flex items-center gap-1 text-xs',
i === selectedIndex
? 'font-semibold text-base-foreground'
: 'text-muted-foreground'
)
"
>
<i
:class="
cn(
'icon-[comfy--credits] size-3 shrink-0',
i === selectedIndex ? 'bg-amber-400' : 'bg-muted-foreground'
)
"
aria-hidden="true"
/>
{{ formatCreditsCompact(stop.credits) }}
</li>
</ol>
</div>
</template>

View File

@@ -33,12 +33,6 @@ vi.mock('@/platform/distribution/types', () => ({
isCloud: false
}))
vi.mock('@/stores/settingStore', () => ({
useSettingStore: () => ({
get: vi.fn(() => true)
})
}))
vi.mock('@/platform/settings/settingStore', () => ({
useSettingStore: () => ({
get: vi.fn(() => true)

View File

@@ -18,10 +18,6 @@ Object.defineProperty(window, 'localStorage', {
writable: true
})
vi.mock('@/config/version', () => ({
__COMFYUI_FRONTEND_VERSION__: '1.24.0'
}))
vi.mock('@/platform/settings/settingStore', () => ({
useSettingStore: () => mockSettingStore
}))

View File

@@ -111,13 +111,6 @@ vi.mock('@/platform/telemetry', () => ({
})
}))
// Mock useToastStore
vi.mock('@/stores/toastStore', () => ({
useToastStore: () => ({
add: vi.fn()
})
}))
// Mock useDialogService
vi.mock('@/services/dialogService')
vi.mock('@/platform/distribution/types', () => mockDistributionTypes)

View File

@@ -16,12 +16,6 @@ vi.mock('@/platform/distribution/types', () => ({
const mockShowErrorsTab = vi.hoisted(() => ({ value: false }))
vi.mock('@/stores/settingStore', () => ({
useSettingStore: vi.fn(() => ({
get: vi.fn(() => mockShowErrorsTab.value)
}))
}))
vi.mock('@/platform/settings/settingStore', () => ({
useSettingStore: vi.fn(() => ({
get: vi.fn(() => mockShowErrorsTab.value)

View File

@@ -34,10 +34,6 @@ vi.mock('@/i18n', () => ({
vi.mock('@/platform/distribution/types', () => ({ isCloud: false }))
vi.mock('@/stores/settingStore', () => ({
useSettingStore: vi.fn(() => ({ get: vi.fn(() => false) }))
}))
vi.mock('@/platform/settings/settingStore', () => ({
useSettingStore: vi.fn(() => ({ get: vi.fn(() => false) }))
}))

View File

@@ -308,31 +308,6 @@ export function findSubgraphPathById(
return null
}
/**
* Gets the root parent node associated with a hierarchical execution ID.
* Both Group Nodes and Subgraph Nodes use hierarchical IDs (e.g. "rootId:childId:...").
* The root parent is always located in the rootGraph.
*
* @param rootGraph - The root graph to search from
* @param executionId - The execution ID (e.g., "123:456")
* @returns The root parent node if found, null otherwise
*/
export function getRootParentNode(
rootGraph: LGraph,
executionId: string
): LGraphNode | null {
const parts = parseExecutionId(executionId)
if (!parts || parts.length < 2) return null
const parentId = parts[0]
if (!rootGraph) return null
const localParentId = parseNodeId(parentId)
if (!localParentId) return null
return rootGraph.getNodeById(localParentId) || null
}
/**
* Get a node by its execution ID from anywhere in the graph hierarchy.
* Execution IDs use hierarchical format like "123:456:789" for nested nodes.

View File

@@ -18,7 +18,7 @@ const MEDIA_SRC_REGEX =
/(<(?:img|source|video)[^>]*\ssrc=['"])(?!(?:\/|https?:\/\/))([^'"\s>]+)(['"])/gi
// Create a marked Renderer that prefixes relative URLs with base
export function createMarkdownRenderer(baseUrl?: string): Renderer {
function createMarkdownRenderer(baseUrl?: string): Renderer {
const normalizedBase = baseUrl ? baseUrl.replace(/\/+$/, '') : ''
const renderer = new Renderer()
renderer.image = ({ href, title, text }) => {