Skip to content

Conversation

@benceruleanlu
Copy link
Member

@benceruleanlu benceruleanlu commented Jan 21, 2026

Sort queue overlay ordering by create_time instead of priority so queued jobs keep their order when completions arrive.

┆Issue is synchronized with this Notion page by Unito

@benceruleanlu benceruleanlu requested a review from a team as a code owner January 21, 2026 23:07
Copilot AI review requested due to automatic review settings January 21, 2026 23:07
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jan 21, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 21, 2026

📝 Walkthrough

Walkthrough

The sorting logic in the job list composable has been updated to sort tasks by createTime (descending) instead of queueIndex. Both the implementation and corresponding test have been modified to reflect this sorting criterion change.

Changes

Cohort / File(s) Summary
Job List sorting logic
src/composables/queue/useJobList.ts, src/composables/queue/useJobList.test.ts
Changed sort comparator from queueIndex-based to createTime-based (mostRecentTimestamp). Implementation now extracts createTime for tasks and sorts descending. Test data updated to include createTime fields for all task states and expected sort order adjusted accordingly.

Possibly related PRs

Suggested reviewers

  • shinshin86
  • KarryCharon
  • Yorha4D
✨ Finishing touches
  • 📝 Generate docstrings

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.

@github-actions
Copy link

github-actions bot commented Jan 21, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/21/2026, 11:08:54 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@benceruleanlu benceruleanlu added preview and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Jan 21, 2026
@github-actions
Copy link

github-actions bot commented Jan 21, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 501 passed, 0 failed, 3 flaky, 8 skipped (Total: 512)

❌ Failed Tests

📊 Browser Reports
  • chromium: View Report (✅ 491 / ❌ 0 / ⚠️ 2 / ⏭️ 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)

@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jan 21, 2026
@github-actions
Copy link

Bundle Size Report

Summary

  • Raw size: 21.4 MB baseline 21.4 MB — 🔴 +140 B
  • Gzip: 4.44 MB baseline 4.44 MB — 🔴 +83 B
  • Brotli: 3.29 MB baseline 3.29 MB — 🔴 +198 B
  • Bundles: 151 current • 151 baseline • 62 added / 62 removed

Category Glance
Data & Services 🔴 +140 B (3.05 MB) · Vendor & Third-Party ⚪ 0 B (10.4 MB) · Other ⚪ 0 B (6.28 MB) · Graph Workspace ⚪ 0 B (1.02 MB) · Panels & Settings ⚪ 0 B (430 kB) · 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-QrF4Uv3m.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +6.73 kB 🔴 +5.92 kB
assets/index-xE88rY9t.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -6.72 kB 🟢 -5.93 kB

Status: 1 added / 1 removed

Graph Workspace — 1.02 MB (baseline 1.02 MB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CZ948VGu.js (new) 1.02 MB 🔴 +1.02 MB 🔴 +201 kB 🔴 +153 kB
assets/GraphView-DpAlqWQa.js (removed) 1.02 MB 🟢 -1.02 MB 🟢 -201 kB 🟢 -153 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-CJsXd_M1.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.61 kB 🔴 +3.06 kB
assets/CloudSurveyView-CoDykbVV.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.61 kB 🟢 -3.06 kB
assets/CloudLoginView-C6YimQZ2.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.72 kB
assets/CloudLoginView-TS8JeIWT.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.71 kB
assets/UserCheckView-BQW411y-.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.13 kB
assets/UserCheckView-CpWJP46R.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/CloudLayoutView-C3d44E0e.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.25 kB 🔴 +1.96 kB
assets/CloudLayoutView-DyWE1Pf7.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.25 kB 🟢 -1.96 kB
assets/CloudSignupView-CCWVGZrP.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.03 kB
assets/CloudSignupView-DUTkJX-K.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.02 kB
assets/CloudForgotPasswordView-0l0ez9kI.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.92 kB 🔴 +1.69 kB
assets/CloudForgotPasswordView-Y8oHSei2.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/UserSelectView-CmnW0zJa.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.57 kB
assets/UserSelectView-DXk40gBL.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.57 kB
assets/CloudSubscriptionRedirectView-CH1WIgha.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.53 kB
assets/CloudSubscriptionRedirectView-Q2SsKt-R.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.53 kB
assets/CloudAuthTimeoutView-BRp7A3ZV.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.7 kB 🟢 -1.49 kB
assets/CloudAuthTimeoutView-CtsGpAO3.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.7 kB 🔴 +1.48 kB
assets/CloudSorryContactSupportView-41RMhsFA.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-DT-CUejm.js 500 B 500 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 430 kB (baseline 430 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/LegacyCreditsPanel--ogqFy0U.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.94 kB 🔴 +5.24 kB
assets/LegacyCreditsPanel-C9emgQaJ.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.94 kB 🟢 -5.23 kB
assets/SubscriptionPanel-CkZWzv0z.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +4.99 kB 🔴 +4.38 kB
assets/SubscriptionPanel-Dkxgg2-J.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -4.99 kB 🟢 -4.39 kB
assets/KeybindingPanel-DpFwojjl.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.73 kB 🟢 -3.31 kB
assets/KeybindingPanel-VVeQWn8A.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/AboutPanel-CrLLAiRj.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.43 kB
assets/AboutPanel-OFF1_uQM.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.43 kB
assets/ExtensionPanel-C8ZJgKRy.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ExtensionPanel-D4JOVwkl.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ServerConfigPanel-Cw1XD08Q.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.16 kB 🟢 -1.94 kB
assets/ServerConfigPanel-Dnkxtr4E.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.16 kB 🔴 +1.94 kB
assets/UserPanel-DvsNrpSk.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/UserPanel-jimc-VyN.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.9 kB 🟢 -1.67 kB
assets/cloudRemoteConfig-BqRU3hrs.js (removed) 1.82 kB 🟢 -1.82 kB 🟢 -767 B 🟢 -663 B
assets/cloudRemoteConfig-D_GY6k3p.js (new) 1.82 kB 🔴 +1.82 kB 🔴 +772 B 🔴 +660 B
assets/remoteConfig-BEkdBLxH.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/remoteConfig-D_gf6SLU.js 188 B 188 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-6DVADt2n.js 34.3 kB 34.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B0j03ezr.js 38.3 kB 38.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BHe-AJJN.js 29.6 kB 29.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BT2lfy0S.js 29.5 kB 29.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Cp0lF2Mp.js 31.2 kB 31.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CwdesOpm.js 32.1 kB 32.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-D3SeHgho.js 28.6 kB 28.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-D42m_JEJ.js 25.9 kB 25.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-FF_vLB0C.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-reUMVWRn.js 30.4 kB 30.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-s7kHNBdQ.js 28.9 kB 28.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 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-BlEvq4j2.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.23 kB 🔴 +1.06 kB
assets/auth-CQiB1JJf.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.23 kB 🟢 -1.06 kB
assets/firebaseAuthStore-2xSSCmrn.js (new) 217 B 🔴 +217 B 🔴 +137 B 🔴 +119 B
assets/firebaseAuthStore-UC9M73sx.js (removed) 217 B 🟢 -217 B 🟢 -137 B 🟢 -129 B
assets/auth-5he6UK-p.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +136 B
assets/auth-DKLGYC1g.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -144 B

Status: 3 added / 3 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-BikZVGqh.js (removed) 2.62 kB 🟢 -2.62 kB 🟢 -1.24 kB 🟢 -1.09 kB
assets/useSubscriptionDialog-Cz3eIL10.js (new) 2.62 kB 🔴 +2.62 kB 🔴 +1.24 kB 🔴 +1.09 kB
assets/useSubscriptionDialog-B_gaLYfc.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -103 B
assets/useSubscriptionDialog-DKkFYvCI.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +102 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SubscribeButton-DOprt6cf.js (removed) 12.5 kB 🟢 -12.5 kB 🟢 -3 kB 🟢 -2.69 kB
assets/SubscribeButton-EPncwkJz.js (new) 12.5 kB 🔴 +12.5 kB 🔴 +3.01 kB 🔴 +2.7 kB
assets/ComfyQueueButton-BHQJAR_s.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.41 kB
assets/ComfyQueueButton-lOKDyCSV.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.42 kB
assets/CloudBadge-BeL-tIwt.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +727 B 🔴 +647 B
assets/CloudBadge-yIy-GLD4.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -727 B 🟢 -645 B
assets/cloudFeedbackTopbarButton-_zLXR0By.js (removed) 866 B 🟢 -866 B 🟢 -525 B 🟢 -447 B
assets/cloudFeedbackTopbarButton-CKHau4ks.js (new) 866 B 🔴 +866 B 🔴 +525 B 🔴 +441 B
assets/ComfyQueueButton-CEGconrm.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +119 B
assets/ComfyQueueButton-DZY-qVf1.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -107 B
assets/Button-CKxdX0Yq.js 3.75 kB 3.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-Bj7TTp1S.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-ftAKT8u9.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 3.05 MB (baseline 3.05 MB) • 🔴 +140 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-CfPQuuGT.js (new) 1.87 MB 🔴 +1.87 MB 🔴 +398 kB 🔴 +305 kB
assets/dialogService-CRsobzW1.js (removed) 1.87 MB 🟢 -1.87 MB 🟢 -398 kB 🟢 -304 kB
assets/api-h6ldKzu1.js (removed) 1.15 MB 🟢 -1.15 MB 🟢 -240 kB 🟢 -186 kB
assets/api-XDRsL2Eo.js (new) 1.15 MB 🔴 +1.15 MB 🔴 +240 kB 🔴 +186 kB
assets/releaseStore-BY9HC96r.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.41 kB 🔴 +2.13 kB
assets/releaseStore-hQy76hWZ.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.41 kB 🟢 -2.12 kB
assets/keybindingService-CMSpnbSz.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.51 kB
assets/keybindingService-DOvLQHOS.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/userStore-D_Ak3MPq.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -814 B 🟢 -727 B
assets/userStore-DOL5CxCJ.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +813 B 🔴 +728 B
assets/audioService-BZEB60HQ.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -931 B 🟢 -816 B
assets/audioService-kZzh5AwT.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +930 B 🔴 +823 B
assets/releaseStore-BfP-kFtu.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +112 B
assets/releaseStore-CgAfEF0d.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -105 B
assets/serverConfigStore-sopnD88s.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-C-bcBao-.js (removed) 5.08 kB 🟢 -5.08 kB 🟢 -1.5 kB 🟢 -1.3 kB
assets/useErrorHandling-Dfpw_qhB.js (new) 5.08 kB 🔴 +5.08 kB 🔴 +1.5 kB 🔴 +1.3 kB
assets/subscriptionCheckoutUtil-Cg8nQJbp.js (removed) 1.98 kB 🟢 -1.98 kB 🟢 -857 B 🟢 -744 B
assets/subscriptionCheckoutUtil-K2RRTymf.js (new) 1.98 kB 🔴 +1.98 kB 🔴 +858 B 🔴 +750 B
assets/audioUtils-ByU-a5Eg.js (removed) 970 B 🟢 -970 B 🟢 -548 B 🟢 -491 B
assets/audioUtils-CvBoHp18.js (new) 970 B 🔴 +970 B 🔴 +547 B 🔴 +463 B
assets/useCurrentUser-BJeCDZ6J.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -100 B
assets/useCurrentUser-Cb4jcd6U.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +106 B
assets/_plugin-vue_export-helper-xVPqUhAl.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-BTZOs5h9.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-B9qvfWYq.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-DTv34axN.js 487 B 487 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 4 added / 4 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-Dr8GmMlH.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-CpOC_out.js 3.92 MB 3.92 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-DvjPM_Lx.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-BRjoKiJi.js 172 kB 172 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-Dqb1VEds.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BxNhpyUI.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-7XRCqLaG.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-CArXWFIl.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 6.28 MB (baseline 6.28 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-9TnCUoYC.js (removed) 177 kB 🟢 -177 kB 🟢 -42.8 kB 🟢 -35.8 kB
assets/core-DU_RTQGB.js (new) 177 kB 🔴 +177 kB 🔴 +42.8 kB 🔴 +35.8 kB
assets/Load3D-CAbo7aX4.js (removed) 55.7 kB 🟢 -55.7 kB 🟢 -9.18 kB 🟢 -7.91 kB
assets/Load3D-DxWKx8w0.js (new) 55.7 kB 🔴 +55.7 kB 🔴 +9.18 kB 🔴 +7.91 kB
assets/WidgetSelect-CL8GDReA.js (new) 50.5 kB 🔴 +50.5 kB 🔴 +11.1 kB 🔴 +9.68 kB
assets/WidgetSelect-DS4bHRNZ.js (removed) 50.5 kB 🟢 -50.5 kB 🟢 -11.1 kB 🟢 -9.69 kB
assets/SubscriptionRequiredDialogContent-DodVeKCp.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.9 kB
assets/SubscriptionRequiredDialogContent-DZuIbEfc.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.78 kB 🔴 +5.91 kB
assets/WidgetRecordAudio-BssZAOfk.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.96 kB 🟢 -4.44 kB
assets/WidgetRecordAudio-ByFkiTd7.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.96 kB 🔴 +4.43 kB
assets/WidgetInputNumber-BVAqIXzR.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.49 kB 🔴 +4.01 kB
assets/WidgetInputNumber-RIcw1hUk.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.49 kB 🟢 -4 kB
assets/WidgetImageCrop-C0Sfiuy-.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.62 kB
assets/WidgetImageCrop-Kvs72B7C.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.13 kB 🟢 -3.62 kB
assets/PanelTemplate-BOM_LVvq.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.45 kB 🟢 -4.79 kB
assets/PanelTemplate-D5H3WHIZ.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.45 kB 🔴 +4.79 kB
assets/AudioPreviewPlayer-B4uDoszm.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-CZQQu-bR.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.65 kB
assets/WidgetWithControl-BrPUsOsI.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.65 kB 🔴 +2.38 kB
assets/WidgetWithControl-J_kUQgqs.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.65 kB 🟢 -2.38 kB
assets/ValueControlPopover-CTKTuoP8.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.55 kB 🟢 -1.37 kB
assets/ValueControlPopover-DdmA9E_C.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/GlobalToast-S562Hr7s.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +938 B
assets/GlobalToast-zbXaYM4k.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -937 B
assets/SubscribeToRun-58rhhwd8.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/SubscribeToRun-C2QXbw3r.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.01 kB
assets/cloudSessionCookie-B04jupu7.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +932 B 🔴 +806 B
assets/cloudSessionCookie-CWYiDv9p.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -931 B 🟢 -809 B
assets/BaseViewTemplate-CjYqacMD.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +947 B
assets/BaseViewTemplate-TonT-qhP.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -943 B
assets/CloudRunButtonWrapper-B1vdwC-z.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -639 B 🟢 -567 B
assets/CloudRunButtonWrapper-DI0lGfbi.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +640 B 🔴 +575 B
assets/cloudBadges-BL5KWdqH.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -535 B 🟢 -477 B
assets/cloudBadges-Clz_Z_xg.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +535 B 🔴 +498 B
assets/graphHasMissingNodes-34GJQgm3.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +461 B 🔴 +413 B
assets/graphHasMissingNodes-BvRRy6Qo.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -459 B 🟢 -424 B
assets/cloudSubscription-BgXzcc_C.js (removed) 976 B 🟢 -976 B 🟢 -457 B 🟢 -399 B
assets/cloudSubscription-DRaQdAbd.js (new) 976 B 🔴 +976 B 🔴 +454 B 🔴 +400 B
assets/WidgetInputNumber-GAWJZkni.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -122 B
assets/WidgetInputNumber-x3ENaRO_.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +114 B
assets/WidgetLegacy-CuIzgxgE.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +110 B
assets/WidgetLegacy-D9NQkjWK.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -108 B
assets/Load3D-DJy-D3zp.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -120 B
assets/Load3D-DXo_cusJ.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +117 B
assets/auto-Bv9cmrEd.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-6dIwsSNi.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BahwM9ZP.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BoJZgy7S.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BQtdp20P.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CEMgeOuO.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CnxND6sZ.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-coXkrooi.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CZcHDaAg.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DDPGTXy9.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DsGC6118.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-yZ2AjT4s.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-BuqR6Hu5.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B_sPkRkB.js 121 kB 121 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BAkXMjmM.js 141 kB 141 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BENvLtOF.js 117 kB 117 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BNsn8_Lr.js 120 kB 120 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C9XUWxrh.js 105 kB 105 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Ch4S7NKM.js 105 kB 105 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DqG_JuMY.js 161 kB 161 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DSqO9eB5.js 124 kB 124 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-F6Zr8qmN.js 118 kB 118 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-kF4hEjF-.js 145 kB 145 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-KWKxelma.js 134 kB 134 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-DEJN4gIz.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-D39-6tpk.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-CVYh1Dta.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-D7WAsNtO.js 2.84 kB 2.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-DaKz7N-R.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-42NP799-.js 358 kB 358 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-5Wl7kJtq.js 361 kB 361 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bfo_nHET.js 361 kB 361 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BIaHseXE.js 334 kB 334 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BqTE0tnV.js 437 kB 437 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CkFt94jg.js 365 kB 365 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-COXALCSv.js 374 kB 374 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cuv6XdUW.js 332 kB 332 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CyylrXT5.js 355 kB 355 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DN_FfVrO.js 403 kB 403 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Dxwvr4db.js 403 kB 403 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/preservedQueryNamespaces-BsMrb3S_.js 3.23 kB 3.23 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-DZ1Jt5wB.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-CqTjxoQm.js 1.53 kB 1.53 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-Buvb2eP-.js 4.21 kB 4.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-Dneex3J5.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-BRX2wHPg.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-BttrDPHP.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-D3w-Nwsc.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-E9_-OJ5u.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-BekALFye.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-BqwXGWo9.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-BUBXlHZn.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-BmL9OHU7.js 2.61 kB 2.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-BdG0Jp83.js 3.22 kB 3.22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-B0BM5Ibm.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-Dm4Ij7fB.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-jOzkIkDw.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 22 added / 22 removed

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 changes the queue job sorting mechanism from priority-based to creation-time-based ordering to ensure queued jobs maintain stable positions in the overlay when completions arrive.

Changes:

  • Modified allTasksSorted to sort by createTime instead of queueIndex (priority)
  • Added mostRecentTimestamp helper function to extract and handle undefined createTime values
  • Updated the corresponding unit test to validate create time sorting behavior

Reviewed changes

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

File Description
src/composables/queue/useJobList.ts Changed sorting logic from priority-based to create-time-based with descending order (most recent first)
src/composables/queue/useJobList.test.ts Updated test name, test data with explicit createTime values, and expected ordering to match new sorting behavior

return all.sort((a, b) => b.queueIndex - a.queueIndex)
return all.sort((a, b) => {
const delta = mostRecentTimestamp(b) - mostRecentTimestamp(a)
return delta === 0 ? 0 : delta
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

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

The ternary check delta === 0 ? 0 : delta is redundant. The expression can be simplified to just return delta since returning 0 when delta is 0 and delta otherwise is equivalent to just returning delta.

Suggested change
return delta === 0 ? 0 : delta
return delta

Copilot uses AI. Check for mistakes.
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: 2

🤖 Fix all issues with AI agents
In `@src/composables/queue/useJobList.ts`:
- Around line 208-211: The comparator inside the return of the all.sort call is
using a redundant ternary `delta === 0 ? 0 : delta`; replace that with returning
delta directly (i.e., return mostRecentTimestamp(b) - mostRecentTimestamp(a)) in
the comparator used in useJobList.ts so the sort is simplified and no-op
branches are removed.
- Around line 200-201: Replace the const arrow helper with a plain function
declaration: convert the const mostRecentTimestamp = (task: TaskItemImpl) =>
task.createTime ?? 0 into function mostRecentTimestamp(task: TaskItemImpl) {
return task.createTime ?? 0; } so the pure helper uses a function declaration
(keep the TaskItemImpl type and behavior unchanged and update any local
references to mostRecentTimestamp if needed).

Comment on lines +200 to +201
const mostRecentTimestamp = (task: TaskItemImpl) => task.createTime ?? 0

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

Prefer function declaration for pure helper functions.

Based on learnings, prefer function mostRecentTimestamp(task: TaskItemImpl) over a const arrow expression for pure functions.

Suggested change
-  const mostRecentTimestamp = (task: TaskItemImpl) => task.createTime ?? 0
+  function mostRecentTimestamp(task: TaskItemImpl): number {
+    return task.createTime ?? 0
+  }
📝 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
const mostRecentTimestamp = (task: TaskItemImpl) => task.createTime ?? 0
function mostRecentTimestamp(task: TaskItemImpl): number {
return task.createTime ?? 0
}
🤖 Prompt for AI Agents
In `@src/composables/queue/useJobList.ts` around lines 200 - 201, Replace the
const arrow helper with a plain function declaration: convert the const
mostRecentTimestamp = (task: TaskItemImpl) => task.createTime ?? 0 into function
mostRecentTimestamp(task: TaskItemImpl) { return task.createTime ?? 0; } so the
pure helper uses a function declaration (keep the TaskItemImpl type and behavior
unchanged and update any local references to mostRecentTimestamp if needed).

Comment on lines +208 to +211
return all.sort((a, b) => {
const delta = mostRecentTimestamp(b) - mostRecentTimestamp(a)
return delta === 0 ? 0 : delta
})
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

Redundant ternary expression.

The expression delta === 0 ? 0 : delta always evaluates to delta. Simplify the comparator.

Suggested fix
     return all.sort((a, b) => {
-      const delta = mostRecentTimestamp(b) - mostRecentTimestamp(a)
-      return delta === 0 ? 0 : delta
+      return mostRecentTimestamp(b) - mostRecentTimestamp(a)
     })
📝 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
return all.sort((a, b) => {
const delta = mostRecentTimestamp(b) - mostRecentTimestamp(a)
return delta === 0 ? 0 : delta
})
return all.sort((a, b) => {
return mostRecentTimestamp(b) - mostRecentTimestamp(a)
})
🤖 Prompt for AI Agents
In `@src/composables/queue/useJobList.ts` around lines 208 - 211, The comparator
inside the return of the all.sort call is using a redundant ternary `delta === 0
? 0 : delta`; replace that with returning delta directly (i.e., return
mostRecentTimestamp(b) - mostRecentTimestamp(a)) in the comparator used in
useJobList.ts so the sort is simplified and no-op branches are removed.

@benceruleanlu benceruleanlu enabled auto-merge (squash) January 21, 2026 23:13
@benceruleanlu benceruleanlu merged commit d12c6d7 into main Jan 21, 2026
47 checks passed
@benceruleanlu benceruleanlu deleted the fix/queue-order-create-time branch January 21, 2026 23:13
godwiniheuwa pushed a commit to godwiniheuwa/ComfyUI_frontend that referenced this pull request Jan 22, 2026
Sort queue overlay ordering by create_time instead of priority so queued
jobs keep their order when completions arrive.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8225-fix-sort-queue-jobs-by-create-time-2ef6d73d3650815a8a81ec9d0b23a4e6)
by [Unito](https://www.unito.io)
@christian-byrne christian-byrne added needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch cloud/1.37 Backport PRs for cloud 1.37 labels Jan 24, 2026
@github-actions
Copy link

⚠️ Backport to cloud/1.37 failed

Reason: Merge conflicts detected during cherry-pick of d12c6d7

📄 Conflicting files
src/composables/queue/useJobList.test.ts
🤖 Prompt for AI Agents
Backport PR #8225 (https://github.com/Comfy-Org/ComfyUI_frontend/pull/8225) to cloud/1.37.
Cherry-pick merge commit d12c6d7814f6aea2bb5ccfc4777ca87d076d4d37 onto new branch
backport-8225-to-cloud-1.37 from origin/cloud/1.37.
Resolve conflicts in: src/composables/queue/useJobList.test.ts .
For test snapshots (browser_tests/**/*-snapshots/), accept PR version if
changed in original PR, else keep target. For package.json versions, keep
target branch. For pnpm-lock.yaml, regenerate with pnpm install.
Ask user for non-obvious conflicts.
Create PR titled "[backport cloud/1.37] <original title>" with label "backport".
See .github/workflows/pr-backport.yaml for workflow details.

cc @benceruleanlu

1 similar comment
@github-actions
Copy link

⚠️ Backport to cloud/1.37 failed

Reason: Merge conflicts detected during cherry-pick of d12c6d7

📄 Conflicting files
src/composables/queue/useJobList.test.ts
🤖 Prompt for AI Agents
Backport PR #8225 (https://github.com/Comfy-Org/ComfyUI_frontend/pull/8225) to cloud/1.37.
Cherry-pick merge commit d12c6d7814f6aea2bb5ccfc4777ca87d076d4d37 onto new branch
backport-8225-to-cloud-1.37 from origin/cloud/1.37.
Resolve conflicts in: src/composables/queue/useJobList.test.ts .
For test snapshots (browser_tests/**/*-snapshots/), accept PR version if
changed in original PR, else keep target. For package.json versions, keep
target branch. For pnpm-lock.yaml, regenerate with pnpm install.
Ask user for non-obvious conflicts.
Create PR titled "[backport cloud/1.37] <original title>" with label "backport".
See .github/workflows/pr-backport.yaml for workflow details.

cc @benceruleanlu

christian-byrne added a commit that referenced this pull request Feb 3, 2026
…8561)

## Summary

Active jobs (pending/running) in the media assets panel now display in
FIFO order - oldest jobs first (first to be processed at top). This
matches the queue processing order and the old queue panel behavior.

## Changes

- **AssetsSidebarListView.vue**: Add `.toReversed()` to `activeJobItems`
computed to reverse job order for display
- **AssetsSidebarGridView.vue**: Same change for grid view consistency
- **AssetsSidebarListView.test.ts**: Unit test verifying oldest-first
ordering

## Root Cause

PR #8225 changed sorting from `queueIndex` to `createTime` descending in
`useJobList.ts`, which placed newest jobs first. For active jobs, users
expect oldest first (FIFO - first to be processed appears at top).

## Solution

Rather than modifying the shared `useJobList` composable (which serves
both the assets panel and queue overlay), the fix applies
`.toReversed()` at the view layer for the active jobs section only.
This:
- Preserves the newest-first order for completed/history jobs
- Displays active jobs in oldest-first order
- Maintains backward compatibility with the queue overlay

## Testing

- Unit test added to verify FIFO ordering of active jobs
- All existing `useJobList` tests pass

Fixes COM-14151

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Bug Fixes**
* Corrected the display order of active jobs in the sidebar to show jobs
in oldest-first (FIFO) sequence.

* **Tests**
* Added unit tests for the assets sidebar list view to verify job
ordering and filtering behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8561-fix-display-active-jobs-in-oldest-first-order-in-media-assets-panel-2fc6d73d365081c6bf31cb076a8d6014)
by [Unito](https://www.unito.io)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cloud/1.37 Backport PRs for cloud 1.37 needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch preview size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants