- Add router navigation to cloud-login after successful logout
- Check hostname to ensure we only redirect on cloud domains
- Preserves existing toast notification and error handling
* Add support for custom iconify using tailwind plugin
- Register svgs from custom icons folder
- Update existing custom icons to remove padding
- Swap component icons for classes in sidebar tabs
- Update browse templates in menu to use custom icon
* Add basic check for custom SVG icons
* Remove unused iconify packages
* [fix] update selection overlay tests after canvas migration
Update browser tests to work with canvas-based selection overlay introduced in PR #5158.
Replaces DOM-based .selection-overlay-container checks with .selection-toolbox visibility
and converts border visibility tests to canvas screenshot comparisons.
Fixes#5158
* [chore] remove unused file flagged by knip
* [fix] adjust test expectations for canvas-based positioning
- Skip animated webp test unrelated to selection overlay changes
- Update toolbox position expectations to match canvas-based coordinates
- Canvas positioning uses different coordinate system than DOM overlay
* [fix] improve positioning test flexibility and revert webp skip
- Make toolbox position test more flexible for canvas-based coordinates
- Revert animated webp test skip as requested in review
- Canvas positioning varies more than DOM, use reasonable bounds instead
* Update test expectations [skip ci]
* [refactor] address review comments - use fixture locators
- Add selectionToolbox locator to ComfyPage fixture as requested
- Replace .isVisible() === false with .not.toBeVisible() pattern
- Update all selection toolbox locators to use fixture instead of inline selectors
- Improves maintainability and follows established patterns
* [refactor] use fixture canvas locator for screenshots
Replace inline canvas locators with comfyPage.canvas fixture property
for consistency and maintainability as suggested in review.
---------
Co-authored-by: github-actions <github-actions@github.com>
* fix: layout perf issue
* feat: skip a whole host of transform issues created by the SelectionOverlay and instead allowing the canvas to render the overlay and then injecting props to the SelecitonToolbox itself
* refactor: removed unused files/functionality
* refactor: removed unused types
* fix: z index issue
* fix: PR feedback
* fix: PR feedback and more perf improvements
* Update test expectations [skip ci]
---------
Co-authored-by: github-actions <github-actions@github.com>
* [feat] Add formatKeySequence function to format keybindings for commands
* [feat] Add lock and unlock canvas commands with keybindings and update localization
* feat: Implement canvas scale synchronization and zoom level adjustment
* feat: Enhance GraphCanvasMenu with zoom controls and improved button functionality
* feat: Refactor MiniMap component layout and remove unused bottomPanelStore
* feat: Update zoom control shortcuts to use formatted key sequences
* feat: Add tests for ZoomControlsModal and enhance GraphCanvasMenu tests
* Update locales [skip ci]
* Fix browser tests
* ui: align minimap properly
* Update locales [skip ci]
* feat: focus zoom input when zoom modal loads
* style: improve styling of zoom controls and add focus effect
* fix styling and tests
* styling: add divider to graph canvas menu
* styling: position minimap properly
* styling: add close button for minimap
* styling: add horizontal divider to minimap
* styling: update minimap toggle button text and remove old styles
* Update locales [skip ci]
* Update locales [skip ci]
* feat: disable canvas menu in viewport settings after zoom adjustments
* Update test expectations [skip ci]
* fix: update canvas read-only property access to use state object
* Update locales [skip ci]
* fix: adjust button group and minimap positioning
* feat: enhance zoom controls and adjust minimap positioning per PR comments
* feat: implement zoom controls composable
* feat: add timeout delays for headless tests
* fix: update zoom input validation range in applyZoom function
* [refactor] Update positioning and styles for GraphCanvasMenu, MiniMap, and ZoomControlsModal components
* [refactor] Adjust z-index and positioning for GraphCanvasMenu, MiniMap, and ZoomControlsModal components
* [style] Adjust margin for minimap button styles in GraphCanvasMenu component
* [refactor] minimap should show on focus mode
* [refactor] Update LiteGraphCanvasSplitterOverlay to conditionally render side and bottom panels based on focus mode
* [style] Adjust right positioning for MiniMap and ZoomControlsModal components
* [style] Adjust right positioning for MiniMap and ZoomControlsModal components
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
* feat: Remove obsolete Kontext Edit Button
Removes the 'Kontext Edit Button' and its associated code, as it has been made obsolete by the new 'Subgraphs + Partial Execution' feature.
Fixes#5093
* Update locales [skip ci]
---------
Co-authored-by: github-actions <github-actions@github.com>
* [feat] Add Storybook setup and NodePreview story
- Install and configure Storybook v9.1.1 for Vue 3
- Set up Storybook configuration with Vite integration
- Add Pinia store support for Storybook environment
- Create comprehensive NodePreview.stories.ts with multiple node examples:
- KSampler node (complex node with multiple inputs/outputs)
- CLIP Text Encode node (simple text input node)
- VAE Decode node (image processing node)
- Example with long markdown description
- Configure project paths and aliases for Storybook
- Stories demonstrate various ComfyUI node types with realistic mock data
- Update tsconfig.eslint.json to include Storybook files
- Fix ESLint issues with imports and number precision
- Add Storybook ESLint plugin configuration
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [feat] Improve Storybook configuration and setup
- Add comprehensive PrimeVue theme setup with ComfyUI preset
- Configure proper Vue app setup with Pinia stores, i18n, and services
- Remove unused onboarding addon from Storybook dependencies
- Improve Vite configuration with better chunking and alias resolution
- Add proper CSS imports and styling for ComfyUI components
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [docs] Add comprehensive Storybook documentation
- Add README.md explaining Storybook usage, benefits, and comparison with other tools
- Add CLAUDE.md with development guidelines for working with Storybook
- Include best practices, troubleshooting tips, and integration notes
- Address PR review feedback for better developer onboarding
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [refactor] Remove ts-expect-error comment from Storybook preview
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [bugfix] Fix TypeScript errors in Load3D components and GLTF test
- Fix type mismatches in Load3DScene eventConfig by casting string values to proper enum types (MaterialMode, CameraType, UpDirection)
- Fix Uint8Array vs ArrayBuffer type issues in GLTF test by using .buffer property
- Remove unused @ts-expect-error comment in Rectangle.ts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [feat] Add Chromatic GitHub Action for Storybook visual testing
- Add automated visual regression testing for Storybook components
- Configure workflow to run on main branch and PRs
- Auto-accept changes on main branch for baseline updates
- Uses build-storybook script for optimized builds
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [docs] Add Chromatic documentation to Storybook README
- Document Chromatic visual testing integration
- Add information about automated testing workflow
- Include best practices for visual regression testing
- Explain how to view and manage test results
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore(chromatic.yaml): restrict push branches to main only for better workflow management
* [feat] Rebase branch onto main and update Storybook configuration
- Rebase sno-storybook branch onto origin/main with latest changes
- Update .storybook/main.ts with additional plugins and component configuration
- Add icons and component resolvers for Storybook support
- Update .gitignore with new entries
- Regenerate package-lock.json after rebase conflicts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* [bugfix] Fix TypeScript errors in SubgraphNode type checking
Add proper type validation for subgraph node selection before calling
SubgraphNode-specific methods. This prevents undefined values from being
passed to functions expecting SubgraphNode parameters.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(vite.config.mts): correct path alias for src directory to ensure proper resolution in the project
refactor(vite.config.mts): adjust templates proxy configuration for better readability and maintainability
* [feat] Remove bun.lock as it's now ignored
* [bugfix] Fix Storybook builder require() error by converting main.ts to main.mjs
- Convert .storybook/main.ts to main.mjs to resolve ES module compatibility
- Use dynamic imports instead of static imports to avoid require() errors
- Add .storybook directory to tsconfig.json includes
- Storybook build and dev server now work correctly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore(storybook): replace main.mjs with main.ts for improved type safety and maintainability
fix(storybook): remove unused import map plugins in Storybook configuration to prevent potential issues
fix(storybook): update color palette store initialization to streamline code and improve readability
* [feat] Optimize Chromatic workflow with automated PR status comments
- Replace complex GitHub Script actions with edumserrano/find-create-or-update-comment@v3
- Add comprehensive PR comments showing Storybook build progress and results
- Include build metrics: components, stories, visual changes, and errors
- Add direct links to Chromatic builds and Storybook previews
- Reduce workflow complexity by ~60 lines while maintaining functionality
- Use native GitHub Actions expressions for cleaner maintainability
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
* chore(chromatic.yaml): move permissions section inside the chromatic-deployment job for better organization and clarity
* [fix] Resolve Vite CJS deprecation warning in Storybook config
- Use dynamic import for mergeConfig to avoid CJS build warning
- Replace static import with dynamic import in viteFinal function
- Maintain type safety with separate type import
- Fixes "The CJS build of Vite's Node API is deprecated" warning
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(chromatic.yaml): change edit-mode from replace to append to preserve existing comments in pull request
* [fix] Replace __dirname with process.cwd() in Storybook config
__dirname is not available in all environments. Using process.cwd()
provides better compatibility and resolves path issues in Storybook.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feature: storybook-setting (#5088)
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jin Yi <jin12cc@gmail.com>
* move ref initialization to the component
* remove redundant init
* [refactor] Move minimap to domain-driven renderer structure
- Create new src/renderer/extensions/minimap/ structure following domain-driven design
- Add composables: useMinimapGraph, useMinimapViewport, useMinimapRenderer, useMinimapInteraction, useMinimapSettings
- Add minimapCanvasRenderer with efficient batched rendering
- Add comprehensive type definitions in types.ts
- Remove old src/composables/useMinimap.ts composable
- Implement proper separation of concerns with dedicated composables for each domain
The new structure provides cleaner APIs, better performance through batched rendering,
and improved maintainability through domain separation.
* [test] Fix minimap tests for new renderer structure
- Update all test imports to use new renderer paths
- Fix mock implementations to match new composable APIs
- Add proper RAF mocking for throttled functions
- Fix type assertions to handle strict TypeScript checks
- Update test expectations for new implementation behavior
- Fix viewport transform calculations in tests
- Handle async/throttled behavior correctly in tests
All 28 minimap tests now passing with new architecture.
* [fix] Remove unused init import in MiniMap component
* [refactor] Move useWorkflowThumbnail to renderer/thumbnail structure
- Moved useWorkflowThumbnail from src/composables to src/renderer/thumbnail/composables
- Updated all imports in components, stores and services
- Moved test file to match new structure
- This ensures all rendering-related composables live in the renderer directory
* [test] Fix minimap canvas renderer test for connections
- Fixed mock setup for graph links to match LiteGraph's hybrid Map/Object structure
- LiteGraph expects links to be accessible both as a Map and as an object
- Test now properly verifies connection rendering functionality
- Replace single callback storage with Map using graph UUIDs as keys
- Fix minimap not updating when navigating between subgraphs
- Add proper cleanup and error handling for callback management
- Switch from app.canvas.graph to reactive workflowStore.activeSubgraph
- Prevent callback wrapping recursion by tracking setup state per graph
* Restructures the application menu
- rename Workflow to File
- move new & template items to top level
- add View menu and related sub items
Commands
- add "active" state getter shown as checkmark in the menu
Node side panel
- add refresh node defs
- change reset view icon
Help center
- change to use store for visibility
Fixes
- Fix bug with mouse down where if you drag mouse out, mouse up wasn't caught
- Fix issue with canvas info setting not triggering a redraw on change
* Fix missing translation warnings
* Add separator under new
* tidy
* Update locales [skip ci]
* fix some tests
* fix
* Hide icon if there is an active state within the menu item group
* Update locales [skip ci]
* Fix tests
* Implement feedback
- Remove queue, node lib, model lib, workflows, manager, help center
- Add minimap, link visibility
* Update locales [skip ci]
* Add plus icon on "New" menu item
* Update locales [skip ci]
* Fix test
* Fix translations
* Update locales [skip ci]
* Update locales [skip ci]
---------
Co-authored-by: github-actions <github-actions@github.com>
Side toolbar menu UI updates
## Summary
- Currently the template modal is very hidden. Many users do not find it
- The current icons are quite aleatory
## Changes
**What**:
- Add templates shortcut button
- Add item label in normal size
- Use custom icon
Critical design decisions or edge cases that need attention:
- Sidebar tabs registered using custom icons will have their associated
command registed with an undefined icon (currently only string icons are
accepted, not components). I couldn't see anywhere directly using this
icon, but we should consider autogenerating an icon font so we can use
classes for our custom icons (or locating and updating locations to
support both icon types)
## Screenshots (if applicable)
Normal mode:
<img width="621" height="1034" alt="image"
src="https://github.com/user-attachments/assets/c1d1cee2-004e-4ff8-b3fa-197329b0d2ae"
/>
Small mode:
<img width="176" height="325" alt="image"
src="https://github.com/user-attachments/assets/3824b8f6-bc96-4e62-aece-f0265113d2e3"
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-4946-Update-side-toolbar-menu-24d6d73d365081c5b2bdc0ee8b61dc50)
by [Unito](https://www.unito.io)
---------
Co-authored-by: github-actions <github-actions@github.com>
- Updated all imports from '@comfyorg/litegraph' to '@/lib/litegraph/src/'
- Replaced deep dist imports with direct source paths
- Updated CSS import in main.ts
- All imports now use the @ alias consistently