-
Notifications
You must be signed in to change notification settings - Fork 410
Share button and Assets Panel in Linear Mode #6794
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?
Conversation
🎭 Playwright Test Results⏰ Completed at: 11/22/2025, 05:30:26 PM UTC 📈 Summary
📊 Test Reports by Browser
🎉 Click on the links above to view detailed test results for each browser configuration. |
🎨 Storybook Build Status✅ Build completed successfully! ⏰ Completed at: 11/22/2025, 05:16:33 PM UTC 🔗 Links🎉 Your Storybook is ready for review! |
Bundle Size ReportSummary
Category Glance Per-category breakdownApp Entry Points — 3.18 MB (baseline 3.18 MB) • 🔴 +131 BMain entry bundles and manifests
Status: 3 added / 3 removed Graph Workspace — 942 kB (baseline 940 kB) • 🔴 +1.03 kBGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 7.97 kB (baseline 7.97 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 1 added / 1 removed Panels & Settings — 306 kB (baseline 306 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 6 added / 6 removed UI Components — 141 kB (baseline 141 kB) • ⚪ 0 BReusable component library chunks
Status: 6 added / 6 removed Data & Services — 12.5 kB (baseline 12.5 kB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 2 added / 2 removed Utilities & Hooks — 2.94 kB (baseline 2.94 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 1 added / 1 removed Vendor & Third-Party — 5.7 MB (baseline 5.7 MB) • ⚪ 0 BExternal libraries and shared vendor chunks
Other — 3.87 MB (baseline 3.87 MB) • ⚪ 0 BBundles that do not match a named category
Status: 18 added / 18 removed |
📝 WalkthroughWalkthroughAdded linearMode translation entries to the English locale file. Modified LinearView.vue to integrate UI extension slot support, workflow export functionality, adjust layout with a left sidebar panel, and replace hard-coded button labels with internationalized translations. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant LinearView
participant WorkflowService
User->>LinearView: Click Share button
LinearView->>WorkflowService: exportWorkflow(workflowData)
WorkflowService-->>LinearView: Export result
LinearView-->>User: Workflow exported
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
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
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/locales/en/main.json(1 hunks)src/views/LinearView.vue(4 hunks)
🧰 Additional context used
🪛 ESLint
src/views/LinearView.vue
[error] 8-8: Unable to resolve path to module '@/components/common/ExtensionSlot.vue'.
(import-x/no-unresolved)
[error] 18-18: Unable to resolve path to module '@/composables/sidebarTabs/useAssetsSidebarTab'.
(import-x/no-unresolved)
[error] 19-19: Unable to resolve path to module '@/i18n'.
(import-x/no-unresolved)
[error] 21-21: Unable to resolve path to module '@/platform/telemetry'.
(import-x/no-unresolved)
[error] 22-22: Unable to resolve path to module '@/platform/workflow/core/services/workflowService'.
(import-x/no-unresolved)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: collect
- GitHub Check: lint-and-format
- GitHub Check: collect
- GitHub Check: setup
- GitHub Check: test
🔇 Additional comments (4)
src/locales/en/main.json (1)
2200-2203: LGTM!The translation entries are correctly structured and align with the usage in LinearView.vue.
src/views/LinearView.vue (3)
8-8: New imports look appropriate.The static analysis errors about unresolved imports are likely false positives due to TypeScript path aliases configured in your build system. The imports align with the PR's objective to add the Assets Panel and workflow export functionality.
Also applies to: 18-18, 22-22
126-127: Layout adjustments look correct.The size reduction from 99 to 98 properly accommodates the new left sidebar panel (size 1), and the margin addition improves the visual spacing.
143-162: Excellent i18n implementation.The buttons now properly use translated labels via
t(), and the Share button correctly callsexportWorkflow()to export the current workflow as described in the PR objectives.
| <SplitterPanel :size="1" class="min-w-min bg-comfy-menu-bg"> | ||
| <div | ||
| class="sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border" | ||
| > | ||
| <ExtensionSlot :extension="useAssetsSidebarTab()" /> | ||
| </div> | ||
| </SplitterPanel> |
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.
Avoid calling composables directly in the template.
Calling useAssetsSidebarTab() directly in the template (line 122) is an anti-pattern in Vue because:
- Composables are re-executed on every render
- May cause reactivity and lifecycle management issues
- Goes against Vue's composition API best practices
Apply this diff to fix:
const { isLoggedIn } = useCurrentUser()
const isDesktop = isElectron()
+const assetsSidebarExtension = useAssetsSidebarTab()
const batchCountWidget = {Then update the template:
- <ExtensionSlot :extension="useAssetsSidebarTab()" />
+ <ExtensionSlot :extension="assetsSidebarExtension" />Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In src/views/LinearView.vue around lines 118 to 124, the template is calling the
composable useAssetsSidebarTab() directly which causes it to run on every
render; move the composable invocation into the component's script setup (or
setup function), assign its return value to a const (or computed/ref as
appropriate), and then use that variable in the template's ExtensionSlot prop
(replace :extension="useAssetsSidebarTab()" with :extension="assetsSidebarTab"
or similar); ensure the variable is exported/returned from setup so the template
can access it.
┆Issue is synchronized with this Notion page by Unito