Skip to content

Conversation

@orkhanart
Copy link

@orkhanart orkhanart commented Nov 25, 2025

Summary

Experimental Design System Library

┆Issue is synchronized with this Notion page by Unito

@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Nov 25, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 25, 2025

📝 Walkthrough

Walkthrough

This pull request consolidates Storybook configuration from the desktop-ui workspace to the root level by removing desktop-ui-specific Storybook files and introducing a conditional alias plugin. Additionally, story meta titles are reorganized—Components and Platform categories are rebranded as Core and Cloud respectively. Storybook dependencies are updated to version 9.1.16, and a test file is added.

Changes

Cohort / File(s) Summary
Storybook Root Configuration
.storybook/main.ts
Introduces a new Vite plugin conditionalAliasPlugin that resolves the @ alias differently based on importer location (apps/desktop-ui/ vs root). Extends story paths and component resolvers to support both cloud and desktop-ui sources.
Desktop UI Storybook Removal
apps/desktop-ui/.storybook/main.ts, apps/desktop-ui/.storybook/preview.ts
Removes entire Storybook configuration and preview setup files, including plugin configuration, PrimeVue setup, i18n, theme decorators, and build options.
Dependency Updates
pnpm-workspace.yaml
Bumps Storybook-related dependencies: @storybook/addon-docs, @storybook/vue3, @storybook/vue3-vite, eslint-plugin-storybook, and storybook from ^9.1.x to ^9.1.16.
Core Component Stories
src/components/button/IconButton.stories.ts, src/components/button/IconGroup.stories.ts, src/components/button/IconTextButton.stories.ts, src/components/button/MoreButton.stories.ts, src/components/button/TextButton.stories.ts, src/components/card/Card.stories.ts, src/components/card/CardGridList.stories.ts, src/components/chip/SquareChip.stories.ts, src/components/input/MultiSelect.stories.ts, src/components/input/SearchBox.stories.ts, src/components/input/SingleSelect.stories.ts, src/components/tab/TabList.stories.ts, src/components/widget/layout/BaseModalLayout.stories.ts, src/components/widget/nav/NavItem.stories.ts, src/components/widget/panel/LeftSidePanel.stories.ts
Updates meta title from "Components/*" to "Core/*" for story organization and hierarchy.
Cloud Component Stories
src/components/node/NodePreview.stories.ts, src/components/queue/CompletionSummaryBanner.stories.ts, src/components/queue/job/JobDetailsPopover.stories.ts, src/components/queue/job/QueueJobItem.stories.ts, src/platform/assets/components/AssetBrowserModal.stories.ts, src/platform/assets/components/AssetCard.stories.ts, src/platform/assets/components/AssetFilterBar.stories.ts, src/platform/assets/components/MediaAssetCard.stories.ts, src/platform/assets/composables/useAssetBrowserDialog.stories.ts
Updates meta title from "Platform/*" or "Queue/*" to "Cloud/*" for unified cloud-related story organization.
Test File Addition
test_oma.txt
Adds new test marker file with timestamp.

Sequence Diagram(s)

sequenceDiagram
    actor Builder as Storybook Builder
    participant Plugin as conditionalAliasPlugin
    participant Resolver as Module Resolver

    Builder->>Plugin: Resolve @ alias
    alt Importer from apps/desktop-ui/
        Plugin->>Plugin: Check importer path
        activate Plugin
        Note over Plugin: Importer includes<br/>apps/desktop-ui/
        Plugin->>Resolver: Resolve @ to apps/desktop-ui/src
        deactivate Plugin
    else Importer from root/other paths
        Plugin->>Plugin: Check importer path
        activate Plugin
        Note over Plugin: Importer does not<br/>match desktop-ui path
        Plugin->>Resolver: Resolve @ to src
        deactivate Plugin
    end
    Resolver->>Builder: Return resolved path
Loading
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

🎭 Playwright Test Results

loading Tests are starting...

⏰ Started at: 11/25/2025, 08:48:42 AM UTC

🚀 Running Tests

  • 🧪 chromium: Running tests...
  • 🧪 chromium-0.5x: Running tests...
  • 🧪 chromium-2x: Running tests...
  • 🧪 mobile-chrome: Running tests...

⏱️ Please wait while tests are running...

@github-actions
Copy link

🎨 Storybook Build Status

loading Build is starting...

⏰ Started at: 11/25/2025, 08:48:43 AM UTC

🚀 Building Storybook

  • 📦 Installing dependencies...
  • 🔧 Building Storybook components...
  • 🌐 Preparing deployment to Cloudflare Pages...

⏱️ Please wait while the Storybook build is in progress...

@socket-security
Copy link

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​storybook/​vue3@​9.1.1 ⏵ 9.1.1610010072 +5100 +1100
Updatedeslint-plugin-storybook@​9.1.6 ⏵ 9.1.1610010010099 +1100
Updated@​storybook/​addon-docs@​9.1.1 ⏵ 9.1.1699 +1100100 +2100 +1100
Updated@​storybook/​vue3-vite@​9.1.1 ⏵ 9.1.16100 +2100100 +34100 +1100

View full report

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
.storybook/main.ts (1)

13-35: Make conditionalAliasPlugin importer check OS-agnostic

The logic is clear, but importer.includes('apps/desktop-ui/') assumes POSIX-style / separators. On Windows, the importer path may contain \, which could break desktop detection. You’re already using Node’s path; using path.normalize and an OS-agnostic marker would make this more robust.

Example refactor:

 function conditionalAliasPlugin(): Plugin {
   const rootDir = process.cwd()
-  const desktopSrc = path.join(rootDir, 'apps/desktop-ui/src')
+  const desktopSrc = path.join(rootDir, 'apps', 'desktop-ui', 'src')
   const cloudSrc = path.join(rootDir, 'src')
+  const desktopMarker = path.join('apps', 'desktop-ui') + path.sep
 
   return {
     name: 'conditional-alias',
     enforce: 'pre',
     resolveId(source, importer) {
       if (!source.startsWith('@/') || !importer) return null
 
       const relativePath = source.slice(2) // Remove '@/'
+      const normalizedImporter = path.normalize(importer)
 
-      // Check if importer is from desktop app
-      if (importer.includes('apps/desktop-ui/')) {
+      // Check if importer is from desktop app (cross-platform)
+      if (normalizedImporter.includes(desktopMarker)) {
         return path.join(desktopSrc, relativePath)
       }
 
       // Default to cloud/main src
       return path.join(cloudSrc, relativePath)
     }
   }
 }

This keeps behavior on POSIX while avoiding surprises on Windows Storybook runs.

Run Storybook on a Windows environment (if you support it) to confirm desktop @/ imports continue resolving as expected after this change.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4bb5c12 and be027c4.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .storybook/main.ts (4 hunks)
  • apps/desktop-ui/.storybook/main.ts (0 hunks)
  • apps/desktop-ui/.storybook/preview.ts (0 hunks)
  • pnpm-workspace.yaml (3 hunks)
  • src/components/button/IconButton.stories.ts (1 hunks)
  • src/components/button/IconGroup.stories.ts (1 hunks)
  • src/components/button/IconTextButton.stories.ts (1 hunks)
  • src/components/button/MoreButton.stories.ts (1 hunks)
  • src/components/button/TextButton.stories.ts (1 hunks)
  • src/components/card/Card.stories.ts (1 hunks)
  • src/components/card/CardGridList.stories.ts (1 hunks)
  • src/components/chip/SquareChip.stories.ts (1 hunks)
  • src/components/input/MultiSelect.stories.ts (1 hunks)
  • src/components/input/SearchBox.stories.ts (1 hunks)
  • src/components/input/SingleSelect.stories.ts (1 hunks)
  • src/components/node/NodePreview.stories.ts (1 hunks)
  • src/components/queue/CompletionSummaryBanner.stories.ts (1 hunks)
  • src/components/queue/job/JobDetailsPopover.stories.ts (1 hunks)
  • src/components/queue/job/QueueJobItem.stories.ts (1 hunks)
  • src/components/tab/TabList.stories.ts (1 hunks)
  • src/components/widget/layout/BaseModalLayout.stories.ts (1 hunks)
  • src/components/widget/nav/NavItem.stories.ts (1 hunks)
  • src/components/widget/panel/LeftSidePanel.stories.ts (1 hunks)
  • src/platform/assets/components/AssetBrowserModal.stories.ts (1 hunks)
  • src/platform/assets/components/AssetCard.stories.ts (1 hunks)
  • src/platform/assets/components/AssetFilterBar.stories.ts (1 hunks)
  • src/platform/assets/components/MediaAssetCard.stories.ts (1 hunks)
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts (1 hunks)
  • test_oma.txt (1 hunks)
💤 Files with no reviewable changes (2)
  • apps/desktop-ui/.storybook/preview.ts
  • apps/desktop-ui/.storybook/main.ts
🧰 Additional context used
📓 Path-based instructions (16)
**/*.{vue,ts,tsx}

📄 CodeRabbit inference engine (.cursorrules)

**/*.{vue,ts,tsx}: Leverage VueUse functions for performance-enhancing utilities
Use vue-i18n in Composition API for any string literals and place new translation entries in src/locales/en/main.json

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx,js}

📄 CodeRabbit inference engine (.cursorrules)

Use es-toolkit for utility functions

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursorrules)

Use TypeScript for type safety

**/*.{ts,tsx}: Never use any type - use proper TypeScript types
Never use as any type assertions - fix the underlying type issue

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx,js,vue}

📄 CodeRabbit inference engine (.cursorrules)

Implement proper error handling in components and services

**/*.{ts,tsx,js,vue}: Use 2-space indentation, single quotes, no semicolons, and maintain 80-character line width as configured in .prettierrc
Organize imports by sorting and grouping by plugin, and run pnpm format before committing

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/*.{vue,ts}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.{vue,ts}: Leverage VueUse functions for performance-enhancing styles
Implement proper error handling
Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.json

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/*.ts

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.ts: Use es-toolkit for utility functions
Use TypeScript for type safety

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx,js,jsx,vue}

📄 CodeRabbit inference engine (CLAUDE.md)

Use camelCase for variable and setting names in TypeScript/Vue files

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx,vue}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx,vue}: Use const settingStore = useSettingStore() and settingStore.get('Comfy.SomeSetting') to retrieve settings in TypeScript/Vue files
Use await settingStore.set('Comfy.SomeSetting', newValue) to update settings in TypeScript/Vue files
Check server capabilities using api.serverSupportsFeature('feature_name') before using enhanced features
Use api.getServerFeature('config_name', defaultValue) to retrieve server feature configuration

Enforce ESLint rules for Vue + TypeScript including: no floating promises, no unused imports, and i18n raw text restrictions in templates

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
**/*.ts

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.ts: Define dynamic setting defaults using runtime context with functions in settings configuration
Use defaultsByInstallVersion property for gradual feature rollout based on version in settings configuration

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/*.{ts,tsx,vue}

📄 CodeRabbit inference engine (src/CLAUDE.md)

src/**/*.{ts,tsx,vue}: Sanitize HTML with DOMPurify to prevent XSS attacks
Avoid using @ts-expect-error; use proper TypeScript types instead
Use es-toolkit for utility functions instead of other utility libraries
Implement proper TypeScript types throughout the codebase

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/{composables,components}/**/*.{ts,tsx,vue}

📄 CodeRabbit inference engine (src/CLAUDE.md)

Clean up subscriptions in state management to prevent memory leaks

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/*.{vue,ts,tsx}

📄 CodeRabbit inference engine (src/CLAUDE.md)

Follow Vue 3 composition API style guide

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/{components,composables}/**/*.{ts,tsx,vue}

📄 CodeRabbit inference engine (src/CLAUDE.md)

Use vue-i18n for ALL user-facing strings by adding them to src/locales/en/main.json

Files:

  • src/platform/assets/components/AssetCard.stories.ts
  • src/platform/assets/components/AssetFilterBar.stories.ts
  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/platform/assets/components/AssetBrowserModal.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
  • src/platform/assets/components/MediaAssetCard.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/components/**/*.{vue,ts,js}

📄 CodeRabbit inference engine (src/components/CLAUDE.md)

src/components/**/*.{vue,ts,js}: Use existing VueUse composables (such as useElementHover) instead of manually managing event listeners
Use useIntersectionObserver for visibility detection instead of custom scroll handlers
Use vue-i18n for ALL UI strings

Files:

  • src/components/button/IconGroup.stories.ts
  • src/components/card/Card.stories.ts
  • src/components/chip/SquareChip.stories.ts
  • src/components/button/IconButton.stories.ts
  • src/components/queue/job/QueueJobItem.stories.ts
  • src/components/button/MoreButton.stories.ts
  • src/components/queue/CompletionSummaryBanner.stories.ts
  • src/components/button/IconTextButton.stories.ts
  • src/components/input/SearchBox.stories.ts
  • src/components/widget/layout/BaseModalLayout.stories.ts
  • src/components/button/TextButton.stories.ts
  • src/components/input/MultiSelect.stories.ts
  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
  • src/components/input/SingleSelect.stories.ts
  • src/components/node/NodePreview.stories.ts
  • src/components/card/CardGridList.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
src/**/{services,composables}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (src/CLAUDE.md)

src/**/{services,composables}/**/*.{ts,tsx}: Use api.apiURL() for backend endpoints instead of constructing URLs directly
Use api.fileURL() for static file access instead of constructing URLs directly

Files:

  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
**/composables/use*.ts

📄 CodeRabbit inference engine (AGENTS.md)

Name composables in the format useXyz.ts

Files:

  • src/platform/assets/composables/useAssetBrowserDialog.stories.ts
🧠 Learnings (22)
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue Chips component with AutoComplete with multiple enabled

Applied to files:

  • src/components/chip/SquareChip.stories.ts
  • src/components/input/SearchBox.stories.ts
📚 Learning: 2025-11-24T19:47:45.608Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.608Z
Learning: Applies to src/components/**/*.vue : Define proper props and emits definitions in Vue components

Applied to files:

  • src/components/chip/SquareChip.stories.ts
  • src/components/input/SearchBox.stories.ts
📚 Learning: 2025-11-24T19:47:34.296Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:34.296Z
Learning: Applies to src/**/*.{vue,ts,tsx} : Follow Vue 3 composition API style guide

Applied to files:

  • src/components/chip/SquareChip.stories.ts
  • pnpm-workspace.yaml
  • .storybook/main.ts
  • src/components/tab/TabList.stories.ts
📚 Learning: 2025-11-24T19:46:52.254Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-24T19:46:52.254Z
Learning: Applies to **/*.vue : Do not use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage). Use replacements: Select, Popover, DatePicker, ToggleSwitch, Drawer, AutoComplete, Tabs, Stepper, Message respectively

Applied to files:

  • pnpm-workspace.yaml
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
📚 Learning: 2025-11-24T19:46:52.254Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-24T19:46:52.254Z
Learning: Applies to **/*.vue : Never use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage)

Applied to files:

  • pnpm-workspace.yaml
  • src/components/tab/TabList.stories.ts
📚 Learning: 2025-11-24T19:48:23.077Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-24T19:48:23.077Z
Learning: Applies to **/*.{ts,tsx,js,vue} : Organize imports by sorting and grouping by plugin, and run `pnpm format` before committing

Applied to files:

  • pnpm-workspace.yaml
  • .storybook/main.ts
📚 Learning: 2025-11-24T19:48:23.077Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-24T19:48:23.077Z
Learning: Applies to **/*.{ts,tsx,vue} : Enforce ESLint rules for Vue + TypeScript including: no floating promises, no unused imports, and i18n raw text restrictions in templates

Applied to files:

  • pnpm-workspace.yaml
  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue InputSwitch component with ToggleSwitch

Applied to files:

  • src/components/input/SearchBox.stories.ts
📚 Learning: 2025-11-24T19:48:23.077Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-24T19:48:23.077Z
Learning: Applies to **/*.vue : Use TypeScript with Vue 3 Single File Components (`.vue` files)

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:46:52.254Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-24T19:46:52.254Z
Learning: Organize project structure with directories: components/, constants/, composables/, views/, stores/, services/

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:34.296Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:34.296Z
Learning: Applies to src/**/{components,composables}/**/*.{ts,tsx,vue} : Use vue-i18n for ALL user-facing strings by adding them to `src/locales/en/main.json`

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:48:23.077Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-24T19:48:23.077Z
Learning: Source code should be organized in `src/` directory with key areas: `components/`, `views/`, `stores/` (Pinia), `composables/`, `services/`, `utils/`, `assets/`, `locales/`

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:45.608Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.608Z
Learning: Applies to src/components/**/*.{vue,ts,js} : Use vue-i18n for ALL UI strings

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:22.896Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: browser_tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:22.896Z
Learning: Applies to browser_tests/**/*.{e2e,spec}.{ts,tsx,js,jsx} : Check assets/ directory for test data when writing tests

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:46:52.254Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-24T19:46:52.254Z
Learning: Applies to **/*.vue : Organize Vue components in <template> <script> <style> order

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:46:52.254Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursorrules:0-0
Timestamp: 2025-11-24T19:46:52.254Z
Learning: Applies to **/*.{vue,ts,tsx} : Use vue-i18n in Composition API for any string literals and place new translation entries in src/locales/en/main.json

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:02.828Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T19:47:02.828Z
Learning: Applies to src/**/*.vue : Use Tailwind CSS for styling

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:48:09.286Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: .cursor/rules/unit-test.mdc:0-0
Timestamp: 2025-11-24T19:48:09.286Z
Learning: Applies to test/**/*.{test,spec}.{js,ts,jsx,tsx} : Tests should be cross-platform compatible using `path.resolve`, `path.join`, and `path.sep` for Windows, macOS, and Linux compatibility

Applied to files:

  • .storybook/main.ts
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue TabMenu component with Tabs without panels

Applied to files:

  • src/components/widget/nav/NavItem.stories.ts
  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/tab/TabList.stories.ts
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue Sidebar component with Drawer

Applied to files:

  • src/components/widget/panel/LeftSidePanel.stories.ts
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue OverlayPanel component with Popover

Applied to files:

  • src/components/widget/panel/LeftSidePanel.stories.ts
  • src/components/queue/job/JobDetailsPopover.stories.ts
📚 Learning: 2025-11-24T19:47:45.607Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/components/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:45.607Z
Learning: Applies to src/components/**/*.vue : Replace PrimeVue Dropdown component with Select

Applied to files:

  • src/components/input/SingleSelect.stories.ts
🪛 ESLint
.storybook/main.ts

[error] 1-1: Resolve error: EACCES: permission denied, open '/VsPIfoREIH'
at Object.writeFileSync (node:fs:2409:20)
at l (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:13670)
at createFilesMatcher (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:14422)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:70:65)
at Object.resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:147:20)
at file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:69
at setRuleContext (/home/jailuser/git/node_modules/.pnpm/eslint-import-context@0.1.9_unrs-resolver@1.11.1/node_modules/eslint-import-context/lib/index.js:23:20)
at fullResolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:30)
at relative (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:215:12)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:220:16)
at ExportMap.get (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/export-map.js:88:22)
at processBodyStatement (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/namespace.js:9:31)
at Program (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/namespace.js:100:21)
at ruleErrorHandler (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1173:33)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:46
at Array.forEach ()
at SourceCodeVisitor.callSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:30)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:291:18
at Array.forEach ()
at SourceCodeTraverser.traverseSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:290:10)
at runRules (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1214:12)
at #flatVerifyWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2101:4)
at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2189:43)
at Linter._verifyWithFlatConfigArray (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2292:15)
at Linter.verify (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1677:10)
at Linter.verifyAndFix (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2557:20)
at verifyText (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1179:45)
at readAndVerifyFile (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1320:10)

(import-x/namespace)


[error] 1-1: Resolve error: EACCES: permission denied, open '/iulfBZYAug'
at Object.writeFileSync (node:fs:2409:20)
at l (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:13670)
at createFilesMatcher (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:14422)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:70:65)
at Object.resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:147:20)
at file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:69
at setRuleContext (/home/jailuser/git/node_modules/.pnpm/eslint-import-context@0.1.9_unrs-resolver@1.11.1/node_modules/eslint-import-context/lib/index.js:23:20)
at fullResolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:30)
at relative (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:215:12)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:220:16)
at importType (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/import-type.js:126:63)
at checkImportForRelativePackage (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/no-relative-packages.js:15:38)
at file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/no-relative-packages.js:59:40
at checkSourceValue (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/module-visitor.js:14:9)
at checkSource (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/module-visitor.js:17:9)
at ruleErrorHandler (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1173:33)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:46
at Array.forEach ()
at SourceCodeVisitor.callSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:30)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:291:18
at Array.forEach ()
at SourceCodeTraverser.traverseSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:290:10)
at runRules (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1214:12)
at #flatVerifyWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2101:4)
at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2189:43)
at Linter._verifyWithFlatConfigArray (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2292:15)
at Linter.verify (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1677:10)
at Linter.verifyAndFix (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2557:20)
at verifyText (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1179:45)
at readAndVerifyFile (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1320:10)

(import-x/no-relative-packages)


[error] 1-1: Resolve error: EACCES: permission denied, open '/eepggZVPjV'
at Object.writeFileSync (node:fs:2409:20)
at l (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:13670)
at createFilesMatcher (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:14422)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:70:65)
at Object.resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:147:20)
at file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:69
at setRuleContext (/home/jailuser/git/node_modules/.pnpm/eslint-import-context@0.1.9_unrs-resolver@1.11.1/node_modules/eslint-import-context/lib/index.js:23:20)
at fullResolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:30)
at relative (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:215:12)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:220:16)
at checkSourceValue (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/no-unresolved.js:31:34)
at checkSourceValue (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/module-visitor.js:14:9)
at checkSource (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/module-visitor.js:17:9)
at ruleErrorHandler (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1173:33)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:46
at Array.forEach ()
at SourceCodeVisitor.callSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:30)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:291:18
at Array.forEach ()
at SourceCodeTraverser.traverseSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:290:10)
at runRules (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1214:12)
at #flatVerifyWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2101:4)
at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2189:43)
at Linter._verifyWithFlatConfigArray (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2292:15)
at Linter.verify (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1677:10)
at Linter.verifyAndFix (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2557:20)
at verifyText (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1179:45)
at readAndVerifyFile (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1320:10)

(import-x/no-unresolved)


[error] 1-1: Resolve error: EACCES: permission denied, open '/SRBYwEQnXz'
at Object.writeFileSync (node:fs:2409:20)
at l (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:13670)
at createFilesMatcher (file:///home/jailuser/git/node_modules/.pnpm/get-tsconfig@4.10.1/node_modules/get-tsconfig/dist/index.mjs:7:14422)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:70:65)
at Object.resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-import-resolver-typescript@4.4.4_eslint-plugin-import-x@4.16.1_@typescript-eslin_da4796079dab5a32abf73f9910d12370/node_modules/eslint-import-resolver-typescript/lib/index.js:147:20)
at file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:69
at setRuleContext (/home/jailuser/git/node_modules/.pnpm/eslint-import-context@0.1.9_unrs-resolver@1.11.1/node_modules/eslint-import-context/lib/index.js:23:20)
at fullResolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:170:30)
at relative (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:215:12)
at resolve (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/resolve.js:220:16)
at ExportMap.get (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/utils/export-map.js:88:22)
at checkDefault (file:///home/jailuser/git/node_modules/.pnpm/eslint-plugin-import-x@4.16.1_@typescript-eslint+utils@8.44.0_eslint@9.35.0_jiti@2.5.1__d4b6b79e6f12f59d34d55ebbf27dc73f/node_modules/eslint-plugin-import-x/lib/rules/default.js:22:39)
at ruleErrorHandler (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1173:33)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:46
at Array.forEach ()
at SourceCodeVisitor.callSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-visitor.js:76:30)
at /home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:291:18
at Array.forEach ()
at SourceCodeTraverser.traverseSync (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/source-code-traverser.js:290:10)
at runRules (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1214:12)
at #flatVerifyWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2101:4)
at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2189:43)
at Linter._verifyWithFlatConfigArray (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2292:15)
at Linter.verify (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:1677:10)
at Linter.verifyAndFix (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/linter/linter.js:2557:20)
at verifyText (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1179:45)
at readAndVerifyFile (/home/jailuser/git/node_modules/.pnpm/eslint@9.35.0_jiti@2.5.1/node_modules/eslint/lib/eslint/eslint-helpers.js:1320:10)

(import-x/default)


[error] 4-4: Unable to resolve path to module 'unplugin-icons/loaders'.

(import-x/no-unresolved)


[error] 5-5: Unable to resolve path to module 'unplugin-icons/resolver'.

(import-x/no-unresolved)


[error] 6-6: Unable to resolve path to module 'unplugin-icons/vite'.

(import-x/no-unresolved)


[error] 7-7: Unable to resolve path to module 'unplugin-vue-components/vite'.

(import-x/no-unresolved)

🔇 Additional comments (26)
src/components/button/IconGroup.stories.ts (1)

6-12: Story title rename is consistent with new Storybook structure

The updated title: 'Core/Button/IconGroup' aligns with the new “Core/…” grouping and doesn’t affect component behavior. Looks good as part of the Storybook reorganization.

src/components/button/MoreButton.stories.ts (1)

7-7: LGTM! Storybook category reorganization applied.

The title update from 'Components' to 'Core' aligns with the PR's stated objective of reorganizing the Storybook structure.

src/components/widget/panel/LeftSidePanel.stories.ts (1)

7-7: LGTM! Story hierarchy reorganization.

The meta title update from "Components/..." to "Core/..." aligns with the PR's broader Storybook reorganization effort. This organizational change improves story categorization without affecting functionality.

src/components/widget/nav/NavItem.stories.ts (1)

5-7: Story title rename aligns with new Core taxonomy

The updated title: 'Core/Widget/Nav/NavItem' is consistent with the new Core namespace and introduces no behavioral changes. Looks good to me.

src/components/button/IconTextButton.stories.ts (1)

5-7: Story title namespace update looks consistent

Switching the meta title to Core/Button/IconTextButton aligns with the new Core taxonomy for button primitives and keeps Storybook grouping coherent.

src/platform/assets/components/MediaAssetCard.stories.ts (1)

9-11: MediaAssetCard story re-namespacing is appropriate

Updating the title to Cloud/Assets/MediaAssetCard matches the Platform → Cloud assets migration and will group these stories correctly under Cloud/Assets in Storybook.

src/components/queue/job/QueueJobItem.stories.ts (1)

5-7: QueueJobItem story now correctly grouped under Cloud/Queue

The new Cloud/Queue/QueueJobItem title is consistent with the Cloud queue namespace and should keep queue stories organized together.

src/components/button/TextButton.stories.ts (1)

5-7: TextButton story title aligned with Core/Button taxonomy

Using Core/Button/TextButton matches the new Core namespace for shared button components and keeps Storybook sections coherent.

src/components/tab/TabList.stories.ts (1)

7-9: TabList story correctly moved under Core/Tab

The Core/Tab/TabList title fits the Core namespace for tab primitives and keeps these stories grouped logically without changing runtime behavior.

src/components/node/NodePreview.stories.ts (1)

179-181: Confirm NodePreview namespace: Cloud vs Core

This story’s title is now Cloud/Node/NodePreview, while most src/components/... stories are moving to Core/... and Platform/... stories to Cloud/.... If NodePreview is truly cloud-specific, this is fine; otherwise it might belong under Core/Node/NodePreview for consistency. Please confirm the intended taxonomy.

src/components/chip/SquareChip.stories.ts (1)

5-7: SquareChip story moved under Core/Chip as expected

Renaming the title to Core/Chip/SquareChip matches the new Core chip taxonomy and keeps chip primitives grouped together in Storybook.

src/components/widget/layout/BaseModalLayout.stories.ts (1)

32-34: Story namespace rename to Core looks consistent

meta.title on Line [33] now uses Core/Widget/Layout/BaseModalLayout, which aligns with the new Core hierarchy and doesn’t affect runtime behavior.

src/components/queue/job/JobDetailsPopover.stories.ts (1)

9-11: Queue story moved under Cloud namespace appropriately

meta.title on Line [10] now uses Cloud/Queue/JobDetailsPopover, matching the new Cloud/Queue grouping used for other queue stories.

src/components/card/CardGridList.stories.ts (1)

9-11: Card story reclassified under Core/Card namespace

meta.title on Line [10] now reads Core/Card/CardGridList, which is consistent with the Core/Card story organization introduced in this PR.

pnpm-workspace.yaml (1)

30-32: Storybook dependency versions are aligned; verify local compatibility

All Storybook packages in the catalog (Lines [30]-[32], [57], [81]) are consistently bumped to 9.1.16, which is good for avoiding version skew. Please double‑check that:

  • App-level package.json Storybook versions match these catalog entries
  • pnpm install and your Storybook scripts (pnpm storybook or equivalent) run cleanly after the bump

Also applies to: 57-57, 81-81

src/platform/assets/composables/useAssetBrowserDialog.stories.ts (1)

133-135: Composable story correctly moved to Cloud/Assets namespace

meta.title on Line [134] now uses Cloud/Assets/useAssetBrowserDialog, aligning with the other asset-related Cloud stories.

src/platform/assets/components/AssetCard.stories.ts (1)

27-29: AssetCard story re-namespaced under Cloud/Assets

meta.title on Line [28] now uses Cloud/Assets/AssetCard, which is consistent with the rest of the Cloud asset stories in this PR.

src/components/queue/CompletionSummaryBanner.stories.ts (1)

5-7: Completion summary banner correctly grouped under Cloud/Queue

meta.title on Line [6] now reads Cloud/Queue/CompletionSummaryBanner, consistent with the updated Cloud/Queue namespace for queue UI stories.

src/platform/assets/components/AssetBrowserModal.stories.ts (1)

18-20: AssetBrowserModal story moved to Cloud/Assets consistently

meta.title on Line [19] now uses Cloud/Assets/AssetBrowserModal, matching the Cloud/Assets namespace used by related asset stories and composables.

src/components/input/SingleSelect.stories.ts (1)

7-9: Story title namespace updated correctly

The meta title now uses the Core/Input/SingleSelect namespace, which matches the new Core/ prefix convention and doesn’t affect runtime behavior. Looks good.

src/platform/assets/components/AssetFilterBar.stories.ts (1)

14-16: Aligns AssetFilterBar story with Cloud namespace

Changing the title to Cloud/Assets/AssetFilterBar cleanly aligns this story with the new Cloud/Assets grouping without impacting the component or stories themselves.

.storybook/main.ts (1)

38-41: Story sources and Vite plugin stack look coherent for cloud + desktop UI

Including both ../src/**/*.stories... and ../apps/desktop-ui/src/**/*.stories... plus the explicit plugin list (conditional alias, Tailwind, Icons, auto-components) gives a clear, unified Storybook setup. The dedicated @frontend-locales alias is also well-scoped to Storybook.

No issues from a configuration perspective.

Also applies to: 71-105, 110-114

src/components/input/MultiSelect.stories.ts (1)

24-26: MultiSelect story moved under Core namespace

The title update to Core/Input/MultiSelect is consistent with the new Core/ grouping and doesn’t alter story behavior.

src/components/button/IconButton.stories.ts (1)

5-7: IconButton story title renamed to Core namespace

Using Core/Button/IconButton matches the updated design-system categorization while keeping the existing stories intact.

src/components/card/Card.stories.ts (1)

52-54: Card stories re-namespaced under Core/Card

The meta title change to Core/Card/Card aligns this suite of card stories with the new Core/ namespace; no functional impact.

src/components/input/SearchBox.stories.ts (1)

6-8: SearchBox story title updated to Core/Input namespace

Renaming the title to Core/Input/SearchBox is consistent with the broader Storybook reorganization and has no runtime side effects.

@@ -0,0 +1 @@
OMA Edition test file - Tue Nov 25 11:41:38 +03 2025
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Clarify or remove stray test_oma.txt artifact

This file looks like a one-off local test marker with a hardcoded timestamp. If it isn’t used by tests, tooling, or documentation, consider removing it from the repo or replacing it with a more intentional doc/test asset to avoid clutter.

🤖 Prompt for AI Agents
In test_oma.txt around lines 1 to 1, this appears to be a stray one-line test
artifact with a hardcoded timestamp; either delete the file from the repo if
it's unused (remove from the commit and ensure no tooling depends on it), or
replace it with a purposeful file (e.g., a short README or test fixture) that
documents its intent and removes the hardcoded timestamp; if the file must
remain but is generated locally, add it to .gitignore and update any
contributing docs to explain how/when it’s produced.

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

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant