Skip to content

Conversation

@benceruleanlu
Copy link
Member

@benceruleanlu benceruleanlu commented Jan 23, 2026

Route the queue progress button to toggle the Assets sidebar when QPO V2 is enabled.

This effectively "removes" the QPO for users with QPOV2 enabled.

Screen.Recording.2026-01-23.024241.mp4

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 23, 2026

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

Adds feature-flagged Queue Progress Overlay V2 behavior to TopMenuSection: toggling the queue overlay routes to the assets sidebar tab when enabled, conditional rendering of QueueProgressOverlay, and corresponding tests covering V2 and legacy flows.

Changes

Cohort / File(s) Changes
TopMenuSection tests
src/components/TopMenuSection.test.ts
Test wrapper updated to accept an injected Pinia; added tests for QPO V2 scenarios (overlay hidden when V2 enabled, toggle triggers command when V2 disabled, opening overlay opens assets tab when V2 enabled, assets tab toggling clears/updates active tab)
TopMenuSection implementation
src/components/TopMenuSection.vue
Introduced feature-flag checks (isQueuePanelV2Enabled, isQueueProgressOverlayEnabled); aria-pressed and sr-only text logic adjusted; QueueProgressOverlay rendered conditionally; toggleQueueOverlay routes to sidebarTabStore assets tab when V2 enabled, preserving legacy behavior otherwise

Sequence Diagram(s)

sequenceDiagram
    participant User as User (click)
    participant TopMenu as TopMenuSection
    participant Sidebar as SidebarTabStore
    participant QueueOverlay as QueueProgressOverlay
    participant Command as CommandBus

    User->>TopMenu: click queue overlay toggle
    alt QPO V2 enabled
        TopMenu->>Sidebar: set active tab = "assets"
        Sidebar-->>TopMenu: activeSidebarTabId = "assets"
        TopMenu->>QueueOverlay: (not rendered / hidden)
    else QPO V2 disabled
        TopMenu->>Command: Comfy.Queue.ToggleOverlay
        Command-->>QueueOverlay: toggle visibility
        QueueOverlay-->>TopMenu: visibility state
    end
Loading

Possibly related PRs

Suggested reviewers

  • shinshin86
  • KarryCharon
  • Yorha4D

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@benceruleanlu benceruleanlu marked this pull request as ready for review January 23, 2026 03:28
@benceruleanlu benceruleanlu requested a review from a team as a code owner January 23, 2026 03:28
Copilot AI review requested due to automatic review settings January 23, 2026 03:28
@benceruleanlu benceruleanlu marked this pull request as draft January 23, 2026 03:28
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jan 23, 2026
…on-assets

# Conflicts:
#	src/components/TopMenuSection.test.ts
@github-actions
Copy link

github-actions bot commented Jan 23, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/24/2026, 01:14:00 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Jan 23, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 505 passed, 0 failed, 1 flaky, 8 skipped (Total: 514)

❌ Failed Tests

📊 Browser Reports
  • chromium: View Report (✅ 495 / ❌ 0 / ⚠️ 0 / ⏭️ 8)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 7 / ❌ 0 / ⚠️ 1 / ⏭️ 0)

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request modifies the queue progress button behavior when Queue Progress Overlay V2 (QPO V2) is enabled. Instead of toggling the floating queue overlay, the button now opens/toggles the Assets sidebar tab, effectively integrating the queue functionality into the sidebar.

Changes:

  • Modified the queue progress button to toggle the Assets sidebar when QPO V2 is enabled
  • Conditionally hides the QueueProgressOverlay component when QPO V2 is enabled
  • Updated screen reader text to reflect the new button behavior
  • Added comprehensive test coverage for the new QPO V2 behavior

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/components/TopMenuSection.vue Added conditional logic to toggle Assets sidebar instead of Queue overlay when QPO V2 is enabled; conditionally renders QueueProgressOverlay based on QPO V2 setting
src/components/TopMenuSection.test.ts Added three new tests to verify QPO V2 behavior: hiding overlay, opening assets sidebar, and toggling functionality

size="md"
:aria-pressed="isQueueOverlayExpanded"
:aria-pressed="
isQueueProgressOverlayVisible ? isQueueOverlayExpanded : undefined
Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

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

The aria-pressed attribute should reflect the actual button state. When QPO V2 is enabled, this button toggles the assets sidebar, so aria-pressed should be bound to the sidebar tab's active state (checking if activeSidebarTabId equals 'assets'). Currently, when QPO V2 is enabled, aria-pressed is always undefined, which doesn't accurately convey the toggle state to assistive technologies.

Suggested change
isQueueProgressOverlayVisible ? isQueueOverlayExpanded : undefined
isQueuePanelV2Enabled
? activeSidebarTabId === 'assets'
: isQueueProgressOverlayVisible
? isQueueOverlayExpanded
: undefined

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

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

resolved

Comment on lines +172 to +187
const sidebarTabStore = useSidebarTabStore(pinia)

await wrapper.find('[data-testid="queue-overlay-toggle"]').trigger('click')

expect(sidebarTabStore.activeSidebarTabId).toBe('assets')
})

it('toggles the assets sidebar tab when QPO V2 is enabled', async () => {
const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false })
const settingStore = useSettingStore(pinia)
vi.mocked(settingStore.get).mockImplementation((key) =>
key === 'Comfy.Queue.QPOV2' ? true : undefined
)
const wrapper = createWrapper(pinia)
const sidebarTabStore = useSidebarTabStore(pinia)
const toggleButton = wrapper.find('[data-testid="queue-overlay-toggle"]')
Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

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

While tests are added for the QPO V2 enabled behavior, there's no test coverage for the original behavior when QPO V2 is disabled. Add a test that verifies the command 'Comfy.Queue.ToggleOverlay' is executed when the button is clicked and QPO V2 is disabled.

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

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

resolved

@github-actions
Copy link

github-actions bot commented Jan 23, 2026

Bundle Size Report

Summary

  • Raw size: 21.8 MB baseline 21.8 MB — 🔴 +530 B
  • Gzip: 4.54 MB baseline 4.54 MB — 🔴 +49 B
  • Brotli: 3.37 MB baseline 3.37 MB — 🔴 +6 B
  • Bundles: 167 current • 167 baseline • 78 added / 78 removed

Category Glance
Graph Workspace 🔴 +729 B (950 kB) · Other 🟢 -192 B (6.42 MB) · Panels & Settings 🟢 -8 B (440 kB) · Data & Services 🔴 +1 B (3.17 MB) · Vendor & Third-Party ⚪ 0 B (10.7 MB) · Views & Navigation ⚪ 0 B (80.7 kB) · + 5 more

Per-category breakdown
App Entry Points — 22.3 kB (baseline 22.3 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-B4UxwP0w.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -6.71 kB 🟢 -5.88 kB
assets/index-BUg3oL0x.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +6.71 kB 🔴 +5.89 kB

Status: 1 added / 1 removed

Graph Workspace — 950 kB (baseline 949 kB) • 🔴 +729 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CywsByUq.js (new) 950 kB 🔴 +950 kB 🔴 +192 kB 🔴 +145 kB
assets/GraphView-CLaco5J0.js (removed) 949 kB 🟢 -949 kB 🟢 -192 kB 🟢 -145 kB

Status: 1 added / 1 removed

Views & Navigation — 80.7 kB (baseline 80.7 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-Db2vqgR9.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.61 kB 🟢 -3.06 kB
assets/CloudSurveyView-e6e39yB5.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.61 kB 🔴 +3.06 kB
assets/CloudLoginView-6Jmmv_Wl.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.71 kB
assets/CloudLoginView-DPNzWWLk.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.71 kB
assets/UserCheckView-BHpmuqzL.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/UserCheckView-DUEvEfCj.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.44 kB 🔴 +2.13 kB
assets/CloudLayoutView-C_nHLgLt.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.24 kB 🟢 -1.96 kB
assets/CloudLayoutView-JJUu8LTr.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.24 kB 🔴 +1.96 kB
assets/CloudSignupView-CVTATL_I.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.02 kB
assets/CloudSignupView-pekmzIfL.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.03 kB
assets/CloudForgotPasswordView-Cvv6jaev.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/CloudForgotPasswordView-DC_5_jyp.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.92 kB 🔴 +1.68 kB
assets/UserSelectView-B_dGbMVJ.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.58 kB
assets/UserSelectView-Qwj3r9Ht.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.58 kB
assets/CloudSubscriptionRedirectView-C8p9u-YX.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudSubscriptionRedirectView-D-W8NGs4.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudAuthTimeoutView-B0J459gx.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.7 kB 🟢 -1.48 kB
assets/CloudAuthTimeoutView-DYBMK50Q.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.71 kB 🔴 +1.48 kB
assets/CloudSorryContactSupportView-nLYfbQhS.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-R7hLt225.js 500 B 500 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 440 kB (baseline 440 kB) • 🟢 -8 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/LegacyCreditsPanel-CkXVYTdD.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.94 kB 🟢 -5.22 kB
assets/LegacyCreditsPanel-DMND0FTx.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.94 kB 🔴 +5.22 kB
assets/SubscriptionPanel-C1GHCND5.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -5.01 kB 🟢 -4.42 kB
assets/SubscriptionPanel-dmTkra67.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +5.01 kB 🔴 +4.42 kB
assets/KeybindingPanel-C9XY6lug.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.73 kB 🔴 +3.31 kB
assets/KeybindingPanel-CT9zT3SW.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.74 kB 🟢 -3.31 kB
assets/AboutPanel-BqjvDdIh.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.43 kB
assets/AboutPanel-l-O_MDbh.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.44 kB
assets/ExtensionPanel-Brfmcig3.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-BvHXKJam.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/WorkspacePanel-FAGNXKFf.js (removed) 8.17 kB 🟢 -8.17 kB 🟢 -2.31 kB 🟢 -2.08 kB
assets/WorkspacePanel-r4sTWX2U.js (new) 8.17 kB 🔴 +8.17 kB 🔴 +2.31 kB 🔴 +2.08 kB
assets/ServerConfigPanel-CkbOkWwC.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.16 kB 🔴 +1.94 kB
assets/ServerConfigPanel-vW360iVf.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.17 kB 🟢 -1.94 kB
assets/UserPanel-BlGxgfuG.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.9 kB 🟢 -1.67 kB
assets/UserPanel-CQjV_OY1.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/config-BQJn7I88.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -611 B 🟢 -538 B
assets/config-B8fsgDm9.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +605 B 🔴 +537 B
assets/refreshRemoteConfig-C6b5kLpC.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -523 B 🟢 -451 B
assets/refreshRemoteConfig-DUOt-Lz8.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +522 B 🔴 +453 B
assets/cloudRemoteConfig-DG9MMnrm.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +508 B 🔴 +441 B
assets/cloudRemoteConfig-DmFgtd0B.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -508 B 🟢 -440 B
assets/refreshRemoteConfig-Cte3vcSg.js (new) 169 B 🔴 +169 B 🔴 +108 B 🔴 +102 B
assets/refreshRemoteConfig-y4wEhdwq.js (removed) 169 B 🟢 -169 B 🟢 -108 B 🟢 -107 B
assets/remoteConfig-BufOGckh.js 536 B 536 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-2k-uW27U.js 29.6 kB 29.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-3W2Cy6cq.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B3VsXFLW.js 32.1 kB 32.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B4_MooYG.js 31.2 kB 31.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BhUxE7XO.js 30.4 kB 30.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C252B0j_.js 29.5 kB 29.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DBhZ2LBE.js 28.6 kB 28.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DhmTNLI9.js 34.3 kB 34.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DIlohv1U.js 28.9 kB 28.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DJTea6Ev.js 38.3 kB 38.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DQsjqwD9.js 25.9 kB 25.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

User & Accounts — 3.94 kB (baseline 3.94 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-_ADqktpx.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.23 kB 🔴 +1.06 kB
assets/auth-BnObBWSu.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.07 kB
assets/firebaseAuthStore-0SreHkUX.js (new) 217 B 🔴 +217 B 🔴 +136 B 🔴 +120 B
assets/firebaseAuthStore-DJqQtzgT.js (removed) 217 B 🟢 -217 B 🟢 -136 B 🟢 -117 B
assets/auth-DTOMLNYX.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +131 B
assets/auth-WdoPZoWP.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -132 B

Status: 3 added / 3 removed

Editors & Dialogs — 2.83 kB (baseline 2.83 kB) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-BvFPuyad.js (new) 2.65 kB 🔴 +2.65 kB 🔴 +1.26 kB 🔴 +1.11 kB
assets/useSubscriptionDialog-C50mQgOK.js (removed) 2.65 kB 🟢 -2.65 kB 🟢 -1.25 kB 🟢 -1.1 kB
assets/useSubscriptionDialog-DiqSgzaH.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -103 B
assets/useSubscriptionDialog-Tp5C43tm.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +100 B

Status: 2 added / 2 removed

UI Components — 33.7 kB (baseline 33.7 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-7Yt5VlEJ.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.41 kB
assets/ComfyQueueButton-DyimfYOD.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.41 kB
assets/SubscribeButton-C80WwbUE.js (removed) 4.63 kB 🟢 -4.63 kB 🟢 -1.57 kB 🟢 -1.39 kB
assets/SubscribeButton-IMp-s6RL.js (new) 4.63 kB 🔴 +4.63 kB 🔴 +1.57 kB 🔴 +1.39 kB
assets/CloudBadge-Bg5YCdM0.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -723 B 🟢 -650 B
assets/CloudBadge-Wp7IWHCy.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +723 B 🔴 +643 B
assets/cloudFeedbackTopbarButton-DK_FGUCK.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -679 B 🟢 -577 B
assets/cloudFeedbackTopbarButton-DulzzIzr.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +678 B 🔴 +578 B
assets/ComfyQueueButton-BSfBEHCP.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -116 B
assets/ComfyQueueButton-Dfe26HN4.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +114 B
assets/Button-CFyWbSrm.js 3.77 kB 3.77 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-CL9DeJLz.js 8.36 kB 8.36 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-wKdSR6pn.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-Bfa7g-N9.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 3.17 MB (baseline 3.17 MB) • 🔴 +1 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-DOTA66f4.js (removed) 1.99 MB 🟢 -1.99 MB 🟢 -420 kB 🟢 -321 kB
assets/dialogService-YvF0jTJK.js (new) 1.99 MB 🔴 +1.99 MB 🔴 +420 kB 🔴 +321 kB
assets/api-DVGB6vRv.js (new) 1.16 MB 🔴 +1.16 MB 🔴 +241 kB 🔴 +187 kB
assets/api-Cz0P59Kg.js (removed) 1.16 MB 🟢 -1.16 MB 🟢 -241 kB 🟢 -187 kB
assets/releaseStore-aQImYbEF.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.4 kB 🔴 +2.12 kB
assets/releaseStore-B4DDQ2ue.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.4 kB 🟢 -2.12 kB
assets/keybindingService-BA155Lbh.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.75 kB 🔴 +1.53 kB
assets/keybindingService-ufjmjDzp.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.52 kB
assets/userStore-DOu2QgZ_.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +813 B 🔴 +723 B
assets/userStore-T9ido5iJ.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -811 B 🟢 -724 B
assets/audioService-BZRRi1Ub.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -931 B 🟢 -823 B
assets/audioService-Ckxzi83-.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +931 B 🔴 +822 B
assets/teamWorkspaceStore-CyDCZu3Z.js (new) 165 B 🔴 +165 B 🔴 +123 B 🔴 +108 B
assets/teamWorkspaceStore-D2yS-vgb.js (removed) 165 B 🟢 -165 B 🟢 -123 B 🟢 -113 B
assets/releaseStore-CNQUwmVS.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +107 B
assets/releaseStore-DbupXyPm.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -106 B
assets/serverConfigStore-D2Rof7C_.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 removed

Utilities & Hooks — 24 kB (baseline 24 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-D5804q5-.js (new) 5.08 kB 🔴 +5.08 kB 🔴 +1.5 kB 🔴 +1.3 kB
assets/useErrorHandling-kJj-kgUK.js (removed) 5.08 kB 🟢 -5.08 kB 🟢 -1.5 kB 🟢 -1.31 kB
assets/useWorkspaceUI-B6Zc7KqJ.js (removed) 2.25 kB 🟢 -2.25 kB 🟢 -757 B 🟢 -658 B
assets/useWorkspaceUI-CikW6Qfp.js (new) 2.25 kB 🔴 +2.25 kB 🔴 +756 B 🔴 +656 B
assets/useSubscriptionActions-BlJvWW_u.js (new) 2.22 kB 🔴 +2.22 kB 🔴 +869 B 🔴 +762 B
assets/useSubscriptionActions-pJAkN1ix.js (removed) 2.22 kB 🟢 -2.22 kB 🟢 -870 B 🟢 -766 B
assets/subscriptionCheckoutUtil-B-0KogBJ.js (removed) 1.98 kB 🟢 -1.98 kB 🟢 -863 B 🟢 -748 B
assets/subscriptionCheckoutUtil-T0mVkaTW.js (new) 1.98 kB 🔴 +1.98 kB 🔴 +864 B 🔴 +746 B
assets/useSubscriptionCredits-CK42Jyxt.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -598 B 🟢 -525 B
assets/useSubscriptionCredits-D5ePZBbS.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +598 B 🔴 +527 B
assets/audioUtils-B4GoR9T2.js (new) 970 B 🔴 +970 B 🔴 +548 B 🔴 +484 B
assets/audioUtils-DSnJQ3b6.js (removed) 970 B 🟢 -970 B 🟢 -548 B 🟢 -459 B
assets/useCurrentUser-Bvhl9KA8.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +101 B
assets/useCurrentUser-Cemwt-Nd.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -109 B
assets/_plugin-vue_export-helper-DLRTaeJK.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-CCK-3Mky.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-lUeVlENO.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-CPQi43_-.js 488 B 488 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

Vendor & Third-Party — 10.7 MB (baseline 10.7 MB) • ⚪ 0 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-OCOwIMuw.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-9wjwspTM.js 4.1 MB 4.1 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-DfDkDSrj.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-v0jgPg5n.js 256 kB 256 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-BKpliY5_.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BFRBT3RT.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-CRvEKkVc.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-PDw3y6Aq.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 6.42 MB (baseline 6.42 MB) • 🟢 -192 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-BM8PdZpE.js (removed) 178 kB 🟢 -178 kB 🟢 -43 kB 🟢 -36 kB
assets/core-DQoT5YZs.js (new) 178 kB 🔴 +178 kB 🔴 +43 kB 🔴 +35.9 kB
assets/Load3D-Cw1-GOfQ.js (new) 55.7 kB 🔴 +55.7 kB 🔴 +9.18 kB 🔴 +7.91 kB
assets/Load3D-MvFLD2_X.js (removed) 55.7 kB 🟢 -55.7 kB 🟢 -9.18 kB 🟢 -7.91 kB
assets/WidgetSelect-BrQIdIJf.js (removed) 50.5 kB 🟢 -50.5 kB 🟢 -11.1 kB 🟢 -9.7 kB
assets/WidgetSelect-lqRT_OeS.js (new) 50.5 kB 🔴 +50.5 kB 🔴 +11.1 kB 🔴 +9.7 kB
assets/SubscriptionRequiredDialogContent-BGtmExIl.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.91 kB
assets/SubscriptionRequiredDialogContent-BI_Fm6dP.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.77 kB 🔴 +5.91 kB
assets/CurrentUserPopoverWorkspace-9a0pyyCN.js (removed) 21.6 kB 🟢 -21.6 kB 🟢 -4.84 kB 🟢 -4.3 kB
assets/CurrentUserPopoverWorkspace-iGmDk_ha.js (new) 21.6 kB 🔴 +21.6 kB 🔴 +4.84 kB 🔴 +4.29 kB
assets/WidgetInputNumber-B2BkVkvm.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.51 kB 🔴 +4.01 kB
assets/WidgetInputNumber-SLw0KwH5.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.51 kB 🟢 -4.01 kB
assets/WidgetRecordAudio-Bvo5Tv7u.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.96 kB 🟢 -4.43 kB
assets/WidgetRecordAudio-DQreEFAi.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.96 kB 🔴 +4.43 kB
assets/SubscriptionPanelContentWorkspace-C8_3xSpG.js (removed) 17.7 kB 🟢 -17.7 kB 🟢 -4.34 kB 🟢 -3.78 kB
assets/SubscriptionPanelContentWorkspace-DY8g1b0o.js (new) 17.7 kB 🔴 +17.7 kB 🔴 +4.34 kB 🔴 +3.78 kB
assets/WidgetImageCrop-C9s8hmZH.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.62 kB
assets/WidgetImageCrop-hpOo-w5U.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.63 kB
assets/PanelTemplate-3gK7dl9c.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.45 kB 🟢 -4.79 kB
assets/PanelTemplate-iapoy4wd.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.44 kB 🔴 +4.79 kB
assets/AudioPreviewPlayer-CdB6atJ3.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-DqHkeL0T.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.65 kB
assets/WidgetWithControl-CnM64bhD.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.65 kB 🟢 -2.38 kB
assets/WidgetWithControl-Co3KNDpR.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.65 kB 🔴 +2.38 kB
assets/CreateWorkspaceDialogContent-CV1EV9cT.js (new) 5.92 kB 🔴 +5.92 kB 🔴 +1.92 kB 🔴 +1.67 kB
assets/CreateWorkspaceDialogContent-U8JvFn34.js (removed) 5.92 kB 🟢 -5.92 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/EditWorkspaceDialogContent-8zi4YkMH.js (removed) 5.69 kB 🟢 -5.69 kB 🟢 -1.87 kB 🟢 -1.64 kB
assets/EditWorkspaceDialogContent-BXs2SJqL.js (new) 5.69 kB 🔴 +5.69 kB 🔴 +1.87 kB 🔴 +1.64 kB
assets/ValueControlPopover-C_R54Iqi.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.55 kB 🟢 -1.37 kB
assets/ValueControlPopover-iJs-Ai-a.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/DeleteWorkspaceDialogContent-DymsEzx2.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.56 kB 🔴 +1.35 kB
assets/DeleteWorkspaceDialogContent-v25l21Jv.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.56 kB 🟢 -1.35 kB
assets/LeaveWorkspaceDialogContent-BfUQVhvc.js (removed) 4.41 kB 🟢 -4.41 kB 🟢 -1.5 kB 🟢 -1.31 kB
assets/LeaveWorkspaceDialogContent-bSWelgB0.js (new) 4.41 kB 🔴 +4.41 kB 🔴 +1.5 kB 🔴 +1.31 kB
assets/GlobalToast-B67svT0H.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -942 B
assets/GlobalToast-CYxVnFG_.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +941 B
assets/SubscribeToRun-6Phl1yqP.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.16 kB 🔴 +1.01 kB
assets/SubscribeToRun-CVULD3zx.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.16 kB 🟢 -1.01 kB
assets/cloudSessionCookie-AhaAW_-J.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -935 B 🟢 -803 B
assets/cloudSessionCookie-D8Qzdtka.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +938 B 🔴 +803 B
assets/BaseViewTemplate-npnBGGRz.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -946 B
assets/BaseViewTemplate-nXW5L_P0.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +941 B
assets/CloudRunButtonWrapper-D3GjHk4i.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -642 B 🟢 -560 B
assets/CloudRunButtonWrapper-DkvOim6G.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +645 B 🔴 +561 B
assets/cloudBadges-Bcqrkg3v.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -540 B 🟢 -483 B
assets/cloudBadges-Be5vumyt.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +538 B 🔴 +480 B
assets/graphHasMissingNodes-CfqmEdcN.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -460 B 🟢 -422 B
assets/graphHasMissingNodes-CVx2w1i2.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +460 B 🔴 +425 B
assets/cloudSubscription-D2B7dqJV.js (new) 976 B 🔴 +976 B 🔴 +463 B 🔴 +401 B
assets/cloudSubscription-DAmmSYl5.js (removed) 976 B 🟢 -976 B 🟢 -461 B 🟢 -398 B
assets/nightlyBadges-DONnvALG.js (new) 594 B 🔴 +594 B 🔴 +359 B 🔴 +312 B
assets/nightlyBadges-IFLockav.js (removed) 594 B 🟢 -594 B 🟢 -359 B 🟢 -311 B
assets/SubscriptionPanelContentWorkspace-DqLgfbXD.js (new) 266 B 🔴 +266 B 🔴 +136 B 🔴 +126 B
assets/SubscriptionPanelContentWorkspace-DSgUaVgb.js (removed) 266 B 🟢 -266 B 🟢 -136 B 🟢 -116 B
assets/WidgetInputNumber-BWu4gfQg.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -112 B
assets/WidgetInputNumber-DVEsc3xC.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +112 B
assets/WidgetLegacy-BnnWau2Q.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -125 B
assets/WidgetLegacy-Ch3_evsk.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +123 B
assets/Load3D-B8JjQreu.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +105 B
assets/Load3D-cHC4ZhYr.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -109 B
assets/auto-ShMUXBDI.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BCMa3myQ.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BJLS4KsL.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Bxi6-Pt0.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C0ihBqw2.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cge8p8D7.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CLzYTTQL.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CVbuwW7U.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D7JSvcea.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DO2o9ZPA.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DUy-2VbT.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-wBNS4y4c.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-CWAjmWVI.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-9QDOXbzo.js 140 kB 140 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B8XX36kH.js 122 kB 122 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bb7LViqw.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bc8UNWJl.js 151 kB 151 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C_Z2flfA.js 146 kB 146 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C-5HPtOO.js 168 kB 168 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C8VQB_yW.js 122 kB 122 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D-4J6ABr.js 124 kB 124 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DUt9sjCO.js 129 kB 129 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-ReiZV-pH.js 126 kB 126 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-VpW1uLPj.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-5zcsMbsP.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-yJJ6Isec.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-CpXmTAor.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-To_wqfzI.js 2.84 kB 2.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-E4_aQOyn.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-12U736i2.js 336 kB 336 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-B7pXu23d.js 359 kB 359 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BCufohiu.js 405 kB 405 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BMl5y27M.js 334 kB 334 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-C3DlQc9w.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CB70HGLr.js 363 kB 363 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CDhhI5kx.js 376 kB 376 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CLZp2I7k.js 363 kB 363 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CyAJTPTV.js 356 kB 356 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DEM6bbWr.js 405 kB 405 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DktkFd8R.js 440 kB 440 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/preservedQueryNamespaces-D99dMmBP.js 3.23 kB 3.23 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-BFJQC27i.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-cVp-94Rc.js 1.96 kB 1.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-PbcJpAgB.js 4.21 kB 4.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-CD3JnB1i.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-CTWd5ZRc.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-KpJ-3L5b.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-Dbj11DNq.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-YiEvSPW9.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-DBXCpmeW.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-DiWB5Po2.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-DZQxxwRV.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-DgB_EnjQ.js 2.61 kB 2.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-BZpKAnw5.js 3.22 kB 3.22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-B2AM-H0O.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-DTT-zbcW.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-C6QklopL.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 30 added / 30 removed

@benceruleanlu benceruleanlu marked this pull request as ready for review January 23, 2026 04:14
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Jan 23, 2026
Copy link
Contributor

@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

🤖 Fix all issues with AI agents
In `@src/components/TopMenuSection.test.ts`:
- Around line 166-180: The test unnecessarily sets stubActions: false when it
only asserts that commandStore.execute was called; change createTestingPinia({
createSpy: vi.fn, stubActions: false }) to use the default stubbed actions
(remove or set stubActions: true) so the commandStore.execute is a stubbed spy
and you don't need to mock or rely on real action behavior—update the call site
where createTestingPinia is used in this test (and keep usage of useSettingStore
and useCommandStore as-is) to simplify the test.

Comment on lines +166 to +180
it('toggles the queue progress overlay when QPO V2 is disabled', async () => {
const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false })
const settingStore = useSettingStore(pinia)
vi.mocked(settingStore.get).mockImplementation((key) =>
key === 'Comfy.Queue.QPOV2' ? false : undefined
)
const wrapper = createWrapper(pinia)
const commandStore = useCommandStore(pinia)

await wrapper.find('[data-testid="queue-overlay-toggle"]').trigger('click')

expect(commandStore.execute).toHaveBeenCalledWith(
'Comfy.Queue.ToggleOverlay'
)
})
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Consider using default stubbed actions for this test.

This test uses stubActions: false, but since you're only verifying that execute was called (not testing the command's actual behavior), the default stubbed actions would be sufficient and simpler. The current approach works because the component doesn't await commandStore.execute, but it could be cleaner.

Suggested simplification
-  it('toggles the queue progress overlay when QPO V2 is disabled', async () => {
-    const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false })
+  it('executes toggle overlay command when QPO V2 is disabled', async () => {
+    const pinia = createTestingPinia({ createSpy: vi.fn })
     const settingStore = useSettingStore(pinia)
     vi.mocked(settingStore.get).mockImplementation((key) =>
       key === 'Comfy.Queue.QPOV2' ? false : undefined
     )
     const wrapper = createWrapper(pinia)
     const commandStore = useCommandStore(pinia)

     await wrapper.find('[data-testid="queue-overlay-toggle"]').trigger('click')

     expect(commandStore.execute).toHaveBeenCalledWith(
       'Comfy.Queue.ToggleOverlay'
     )
   })
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
it('toggles the queue progress overlay when QPO V2 is disabled', async () => {
const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false })
const settingStore = useSettingStore(pinia)
vi.mocked(settingStore.get).mockImplementation((key) =>
key === 'Comfy.Queue.QPOV2' ? false : undefined
)
const wrapper = createWrapper(pinia)
const commandStore = useCommandStore(pinia)
await wrapper.find('[data-testid="queue-overlay-toggle"]').trigger('click')
expect(commandStore.execute).toHaveBeenCalledWith(
'Comfy.Queue.ToggleOverlay'
)
})
it('executes toggle overlay command when QPO V2 is disabled', async () => {
const pinia = createTestingPinia({ createSpy: vi.fn })
const settingStore = useSettingStore(pinia)
vi.mocked(settingStore.get).mockImplementation((key) =>
key === 'Comfy.Queue.QPOV2' ? false : undefined
)
const wrapper = createWrapper(pinia)
const commandStore = useCommandStore(pinia)
await wrapper.find('[data-testid="queue-overlay-toggle"]').trigger('click')
expect(commandStore.execute).toHaveBeenCalledWith(
'Comfy.Queue.ToggleOverlay'
)
})
🤖 Prompt for AI Agents
In `@src/components/TopMenuSection.test.ts` around lines 166 - 180, The test
unnecessarily sets stubActions: false when it only asserts that
commandStore.execute was called; change createTestingPinia({ createSpy: vi.fn,
stubActions: false }) to use the default stubbed actions (remove or set
stubActions: true) so the commandStore.execute is a stubbed spy and you don't
need to mock or rely on real action behavior—update the call site where
createTestingPinia is used in this test (and keep usage of useSettingStore and
useCommandStore as-is) to simplify the test.

@benceruleanlu benceruleanlu changed the title fix: open assets tab when QPO V2 enabled Replace QPO with opening assets tab Jan 23, 2026
const isQueuePanelV2Enabled = computed(() =>
settingStore.get('Comfy.Queue.QPOV2')
)
const isQueueProgressOverlayVisible = computed(
Copy link
Contributor

Choose a reason for hiding this comment

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

It's always visible if V2 is not enabled?

Copy link
Member Author

Choose a reason for hiding this comment

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

The naming is just a bit confusing, there is the expanded check required before showing, I renamed it.

@benceruleanlu benceruleanlu removed their assignment Jan 24, 2026
Copy link
Contributor

@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: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/TopMenuSection.vue (1)

48-68: Keep tooltip text consistent with the V1/V2 button label.

The sr-only label now switches between “view job history” and “expand/collapse queue,” but the tooltip remains hard-coded to “view job history.” That can mislead sighted users in the legacy flow. Consider making the tooltip conditional using the same flag.

♻️ Proposed fix
-const queueHistoryTooltipConfig = computed(() =>
-  buildTooltipConfig(t('sideToolbar.queueProgressOverlay.viewJobHistory'))
-)
+const queueHistoryTooltipConfig = computed(() =>
+  buildTooltipConfig(
+    isQueuePanelV2Enabled.value
+      ? t('sideToolbar.queueProgressOverlay.viewJobHistory')
+      : t('sideToolbar.queueProgressOverlay.expandCollapsedQueue')
+  )
+)

Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

LGTM!

@christian-byrne christian-byrne merged commit 7c61dad into main Jan 24, 2026
27 checks passed
@christian-byrne christian-byrne deleted the fix/qpo-v2-queue-button-assets branch January 24, 2026 01:52
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.

2 participants