-
Notifications
You must be signed in to change notification settings - Fork 419
Oma edition #6919
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Oma edition #6919
Conversation
📝 WalkthroughWalkthroughThis 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
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
✨ Finishing touches
🧪 Generate unit tests (beta)
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.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. Comment |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this 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: MakeconditionalAliasPluginimporter check OS-agnosticThe 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’spath; usingpath.normalizeand 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
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis 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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (.cursorrules)
Use TypeScript for type safety
**/*.{ts,tsx}: Never useanytype - use proper TypeScript types
Never useas anytype assertions - fix the underlying type issue
Files:
src/platform/assets/components/AssetCard.stories.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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 runpnpm formatbefore committing
Files:
src/platform/assets/components/AssetCard.stories.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/components/queue/job/JobDetailsPopover.stories.ts
**/*.{ts,tsx,vue}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx,vue}: Useconst settingStore = useSettingStore()andsettingStore.get('Comfy.SomeSetting')to retrieve settings in TypeScript/Vue files
Useawait settingStore.set('Comfy.SomeSetting', newValue)to update settings in TypeScript/Vue files
Check server capabilities usingapi.serverSupportsFeature('feature_name')before using enhanced features
Useapi.getServerFeature('config_name', defaultValue)to retrieve server feature configurationEnforce 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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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
UsedefaultsByInstallVersionproperty for gradual feature rollout based on version in settings configuration
Files:
src/platform/assets/components/AssetCard.stories.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/platform/assets/components/AssetFilterBar.stories.tssrc/components/button/IconGroup.stories.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/platform/assets/components/AssetBrowserModal.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/platform/assets/composables/useAssetBrowserDialog.stories.tssrc/platform/assets/components/MediaAssetCard.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/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.tssrc/components/card/Card.stories.tssrc/components/chip/SquareChip.stories.tssrc/components/button/IconButton.stories.tssrc/components/queue/job/QueueJobItem.stories.tssrc/components/button/MoreButton.stories.tssrc/components/queue/CompletionSummaryBanner.stories.tssrc/components/button/IconTextButton.stories.tssrc/components/input/SearchBox.stories.tssrc/components/widget/layout/BaseModalLayout.stories.tssrc/components/button/TextButton.stories.tssrc/components/input/MultiSelect.stories.tssrc/components/widget/nav/NavItem.stories.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/components/tab/TabList.stories.tssrc/components/input/SingleSelect.stories.tssrc/components/node/NodePreview.stories.tssrc/components/card/CardGridList.stories.tssrc/components/queue/job/JobDetailsPopover.stories.ts
src/**/{services,composables}/**/*.{ts,tsx}
📄 CodeRabbit inference engine (src/CLAUDE.md)
src/**/{services,composables}/**/*.{ts,tsx}: Useapi.apiURL()for backend endpoints instead of constructing URLs directly
Useapi.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.tssrc/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.tssrc/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.tspnpm-workspace.yaml.storybook/main.tssrc/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.yamlsrc/components/widget/panel/LeftSidePanel.stories.tssrc/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.yamlsrc/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.tssrc/components/widget/panel/LeftSidePanel.stories.tssrc/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.tssrc/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 structureThe 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 taxonomyThe 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 consistentSwitching the meta title to
Core/Button/IconTextButtonaligns 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 appropriateUpdating the title to
Cloud/Assets/MediaAssetCardmatches 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/QueueThe new
Cloud/Queue/QueueJobItemtitle 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 taxonomyUsing
Core/Button/TextButtonmatches 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/TabThe
Core/Tab/TabListtitle 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 CoreThis story’s title is now
Cloud/Node/NodePreview, while mostsrc/components/...stories are moving toCore/...andPlatform/...stories toCloud/.... If NodePreview is truly cloud-specific, this is fine; otherwise it might belong underCore/Node/NodePreviewfor consistency. Please confirm the intended taxonomy.src/components/chip/SquareChip.stories.ts (1)
5-7: SquareChip story moved under Core/Chip as expectedRenaming the title to
Core/Chip/SquareChipmatches 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.titleon Line [33] now usesCore/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.titleon Line [10] now usesCloud/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.titleon Line [10] now readsCore/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 compatibilityAll 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.jsonStorybook versions match these catalog entriespnpm installand your Storybook scripts (pnpm storybookor equivalent) run cleanly after the bumpAlso 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.titleon Line [134] now usesCloud/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.titleon Line [28] now usesCloud/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.titleon Line [6] now readsCloud/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.titleon Line [19] now usesCloud/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 correctlyThe meta title now uses the
Core/Input/SingleSelectnamespace, 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 namespaceChanging the title to
Cloud/Assets/AssetFilterBarcleanly 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 UIIncluding 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-localesalias 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 namespaceThe title update to
Core/Input/MultiSelectis 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 namespaceUsing
Core/Button/IconButtonmatches 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/CardThe meta title change to
Core/Card/Cardaligns 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 namespaceRenaming the title to
Core/Input/SearchBoxis 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 | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.

Summary
Experimental Design System Library
┆Issue is synchronized with this Notion page by Unito