Skip to content

feat: add session download tracking to assetDownloadStore#8213

Merged
DrJKL merged 3 commits intomainfrom
drjkl/session-download-tracking
Jan 22, 2026
Merged

feat: add session download tracking to assetDownloadStore#8213
DrJKL merged 3 commits intomainfrom
drjkl/session-download-tracking

Conversation

@DrJKL
Copy link
Contributor

@DrJKL DrJKL commented Jan 21, 2026

Summary

Add session download tracking to track which assets were downloaded during the current session. This enables UI features like:

  • Badge count on "Imported" nav showing newly downloaded assets
  • Visual indicator on asset cards for recently downloaded items

Changes

  • Add acknowledged flag to AssetDownload interface
  • Add unacknowledgedDownloads computed for filtering
  • Add sessionDownloadCount computed for badge display
  • Add isDownloadedThisSession(identifier) to check individual assets
  • Add acknowledgeDownload(identifier) to mark assets as seen

Testing

  • 6 new unit tests covering all session tracking functionality
  • Run: pnpm test:unit -- src/stores/assetDownloadStore.test.ts

Related

┆Issue is synchronized with this Notion page by Unito

@DrJKL DrJKL requested a review from a team as a code owner January 21, 2026 08:21
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jan 21, 2026
@github-actions
Copy link

github-actions bot commented Jan 21, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/21/2026, 10:58:19 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Jan 21, 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)

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 21, 2026

📝 Walkthrough

Walkthrough

Adds session-level download tracking and UI surfacing: assets gain an acknowledged flag; store exposes unacknowledgedDownloads, sessionDownloadCount, isDownloadedThisSession, and acknowledgeAsset; asset browser composable and modal surface a badge using the session count; tests added for session tracking behavior.

Changes

Cohort / File(s) Summary
Asset download store
src/stores/assetDownloadStore.ts
Add acknowledged?: boolean to AssetDownload; add unacknowledgedDownloads computed; expose sessionDownloadCount, isDownloadedThisSession(assetId), and acknowledgeAsset(assetId) in store public API.
Asset download tests
src/stores/assetDownloadStore.test.ts
Add tests for session download tracking: counting unacknowledged completed downloads, ignoring downloads without asset_id or failed downloads, isDownloadedThisSession, and acknowledgeAsset behaviors. (Note: tests include duplicate test blocks in two locations.)
Asset browser composable & tests
src/platform/assets/composables/useAssetBrowser.ts, src/platform/assets/composables/useAssetBrowser.test.ts
Replace category-centric API with nav-item model (selectedNavItem, navItems); integrate assetDownloadStore sessionDownloadCount into navItems for badge; update filtering/title logic to derive from selectedNavItem; tests updated to exercise new nav structure and translations.
Asset browser modal
src/platform/assets/components/AssetBrowserModal.vue
Template bindings switched to selectedNavItem/navItems; header icon changed; script usage aligned with updated composable return shape.
Locales
src/locales/en/main.json
Add assetBrowser localization keys: byType, emptyImported (with canImport, restricted), and imported.

Sequence Diagram(s)

sequenceDiagram
  participant Downloader as Downloader (download process)
  participant Store as AssetDownloadStore
  participant Composable as useAssetBrowser
  participant Modal as AssetBrowserModal (UI)

  Downloader->>Store: record completed download (asset_id) [acknowledged = false]
  Store->>Store: update unacknowledgedDownloads, sessionDownloadCount
  Modal->>Composable: render / mount
  Composable->>Store: read sessionDownloadCount
  Store-->>Composable: return sessionDownloadCount
  Composable-->>Modal: provide navItems with badge (count)
  Modal->>Modal: display badge on "Imported" nav item
Loading

Possibly related PRs

Suggested reviewers

  • KarryCharon
  • christian-byrne
  • 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.

@DrJKL DrJKL marked this pull request as draft January 21, 2026 08:21
@github-actions
Copy link

github-actions bot commented Jan 21, 2026

Bundle Size Report

Summary

  • Raw size: 21.4 MB baseline 21.4 MB — 🔴 +1.81 kB
  • Gzip: 4.44 MB baseline 4.44 MB — 🔴 +257 B
  • Brotli: 3.29 MB baseline 3.29 MB — 🔴 +491 B
  • Bundles: 151 current • 151 baseline • 62 added / 62 removed

Category Glance
Data & Services 🔴 +1.81 kB (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-cAXpaWhX.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +6.72 kB 🔴 +5.91 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-DpAlqWQa.js (removed) 1.02 MB 🟢 -1.02 MB 🟢 -201 kB 🟢 -153 kB
assets/GraphView-POgVlzh7.js (new) 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-BfBGmHKC.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-CBBLdlz3.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.08 kB 🔴 +2.72 kB
assets/UserCheckView-CpWJP46R.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/UserCheckView-Nq7dYNAN.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.13 kB
assets/CloudLayoutView-BB6sSt06.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.25 kB 🔴 +1.95 kB
assets/CloudLayoutView-DyWE1Pf7.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.25 kB 🟢 -1.96 kB
assets/CloudSignupView-Df-LNonW.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.02 kB
assets/CloudSignupView-DUTkJX-K.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.02 kB
assets/CloudForgotPasswordView-CbtpwW1y.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.92 kB 🔴 +1.68 kB
assets/CloudForgotPasswordView-Y8oHSei2.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/UserSelectView-CpXseGk5.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-BOsSh5xa.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudSubscriptionRedirectView-CH1WIgha.js (removed) 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-K97tgUqx.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.7 kB 🔴 +1.49 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-C9emgQaJ.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.94 kB 🟢 -5.23 kB
assets/LegacyCreditsPanel-vlD0rJKd.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.94 kB 🔴 +5.24 kB
assets/SubscriptionPanel-Cv89LhJ5.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +4.99 kB 🔴 +4.39 kB
assets/SubscriptionPanel-Dkxgg2-J.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -4.99 kB 🟢 -4.39 kB
assets/KeybindingPanel-CTPNpxo1.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/KeybindingPanel-DpFwojjl.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.73 kB 🟢 -3.31 kB
assets/AboutPanel-BUoTaqNl.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.43 kB
assets/AboutPanel-CrLLAiRj.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.43 kB
assets/ExtensionPanel-BttwNLDo.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-C8ZJgKRy.js (removed) 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-DxblQIgd.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.16 kB 🔴 +1.94 kB
assets/UserPanel-Dof4SWhF.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-BzVPoBZq.js (new) 1.82 kB 🔴 +1.82 kB 🔴 +772 B 🔴 +665 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-CQiB1JJf.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.23 kB 🟢 -1.06 kB
assets/auth-DLOTZF7P.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.07 kB
assets/firebaseAuthStore-CpRRxJZ2.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-6YkCIOQ0.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +132 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-CtR5c_D9.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-CaZ2DPap.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +96 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-Cqfetjrq.js (new) 12.5 kB 🔴 +12.5 kB 🔴 +3 kB 🔴 +2.71 kB
assets/SubscribeButton-DOprt6cf.js (removed) 12.5 kB 🟢 -12.5 kB 🟢 -3 kB 🟢 -2.69 kB
assets/ComfyQueueButton-BHQJAR_s.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.41 kB
assets/ComfyQueueButton-DuL84Ubr.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.42 kB
assets/CloudBadge-Cxu_FOoH.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +725 B 🔴 +645 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-DouYjjLV.js (new) 866 B 🔴 +866 B 🔴 +525 B 🔴 +459 B
assets/ComfyQueueButton-BY2H_ihO.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +124 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) • 🔴 +1.81 kB

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-Cqf-SSm0.js (new) 1.88 MB 🔴 +1.88 MB 🔴 +398 kB 🔴 +305 kB
assets/dialogService-CRsobzW1.js (removed) 1.87 MB 🟢 -1.87 MB 🟢 -398 kB 🟢 -304 kB
assets/api-RKaiXI_8.js (new) 1.15 MB 🔴 +1.15 MB 🔴 +240 kB 🔴 +186 kB
assets/api-h6ldKzu1.js (removed) 1.15 MB 🟢 -1.15 MB 🟢 -240 kB 🟢 -186 kB
assets/releaseStore-0h7FO7m6.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-tW-J83Aa.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/userStore-BH1xvTLv.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +813 B 🔴 +727 B
assets/userStore-D_Ak3MPq.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -814 B 🟢 -727 B
assets/audioService-BZEB60HQ.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -931 B 🟢 -816 B
assets/audioService-IX541u8E.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +931 B 🔴 +823 B
assets/releaseStore-CgAfEF0d.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -105 B
assets/releaseStore-CLN-rCtZ.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +109 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-DXIuJI9F.js (new) 5.08 kB 🔴 +5.08 kB 🔴 +1.5 kB 🔴 +1.31 kB
assets/subscriptionCheckoutUtil-Cg8nQJbp.js (removed) 1.98 kB 🟢 -1.98 kB 🟢 -857 B 🟢 -744 B
assets/subscriptionCheckoutUtil-DiYajf92.js (new) 1.98 kB 🔴 +1.98 kB 🔴 +857 B 🔴 +753 B
assets/audioUtils-B_JHjDb3.js (new) 970 B 🔴 +970 B 🔴 +546 B 🔴 +487 B
assets/audioUtils-ByU-a5Eg.js (removed) 970 B 🟢 -970 B 🟢 -548 B 🟢 -491 B
assets/useCurrentUser-BJeCDZ6J.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -100 B
assets/useCurrentUser-Cwca-G2S.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-D7f3QofR.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-CD8MBjfq.js (new) 55.7 kB 🔴 +55.7 kB 🔴 +9.17 kB 🔴 +7.91 kB
assets/WidgetSelect-D5Rx954q.js (new) 50.5 kB 🔴 +50.5 kB 🔴 +11.1 kB 🔴 +9.69 kB
assets/WidgetSelect-DS4bHRNZ.js (removed) 50.5 kB 🟢 -50.5 kB 🟢 -11.1 kB 🟢 -9.69 kB
assets/SubscriptionRequiredDialogContent-CPRC_2vx.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.77 kB 🔴 +5.89 kB
assets/SubscriptionRequiredDialogContent-DodVeKCp.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.9 kB
assets/WidgetRecordAudio-BssZAOfk.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.96 kB 🟢 -4.44 kB
assets/WidgetRecordAudio-D9JnexaH.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.96 kB 🔴 +4.43 kB
assets/WidgetInputNumber-D4a1z_pz.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.49 kB 🔴 +4 kB
assets/WidgetInputNumber-RIcw1hUk.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.49 kB 🟢 -4 kB
assets/WidgetImageCrop-Kvs72B7C.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.13 kB 🟢 -3.62 kB
assets/WidgetImageCrop-kZx-hJPA.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.13 kB 🔴 +3.63 kB
assets/PanelTemplate-BOM_LVvq.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.45 kB 🟢 -4.79 kB
assets/PanelTemplate-WB9S_74P.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.45 kB 🔴 +4.8 kB
assets/AudioPreviewPlayer-B4uDoszm.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-BwF9ljBg.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.98 kB 🔴 +2.65 kB
assets/WidgetWithControl-DiinP6KT.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.65 kB 🔴 +2.39 kB
assets/WidgetWithControl-J_kUQgqs.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.65 kB 🟢 -2.38 kB
assets/ValueControlPopover-BlJUrk37.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/ValueControlPopover-CTKTuoP8.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.55 kB 🟢 -1.37 kB
assets/GlobalToast-w-iR6FXI.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.09 kB 🔴 +940 B
assets/GlobalToast-zbXaYM4k.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -937 B
assets/SubscribeToRun-C2QXbw3r.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.01 kB
assets/SubscribeToRun-Dpt867BW.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/cloudSessionCookie-CWYiDv9p.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -931 B 🟢 -809 B
assets/cloudSessionCookie-kSzFrvpE.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +932 B 🔴 +806 B
assets/BaseViewTemplate-DyzKptL3.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +944 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-BrjUYPfd.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +639 B 🔴 +594 B
assets/cloudBadges-B3mQiXRY.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +536 B 🔴 +481 B
assets/cloudBadges-BL5KWdqH.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -535 B 🟢 -477 B
assets/graphHasMissingNodes-B5dxvxoy.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +460 B 🔴 +411 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-DkzfNepb.js (new) 976 B 🔴 +976 B 🔴 +454 B 🔴 +396 B
assets/WidgetInputNumber-DVjQ-McW.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +120 B
assets/WidgetInputNumber-GAWJZkni.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -122 B
assets/WidgetLegacy-D9NQkjWK.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -108 B
assets/WidgetLegacy-rAnmfTel.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +109 B
assets/Load3D-BROcIj8M.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +107 B
assets/Load3D-DJy-D3zp.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -120 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

@DrJKL DrJKL force-pushed the drjkl/session-download-tracking branch from d9127b1 to 0494cb6 Compare January 21, 2026 22:19
- Add 'Imported' nav item with badge showing session download count

- Refactor useAssetBrowser to use selectedNavItem for nav selection

- Add i18n keys for imported, byType, and emptyImported messages

- Update tests for new nav-based ownership filtering

Amp-Thread-ID: https://ampcode.com/threads/T-019be2a9-fcd7-703a-a2ca-26b30b837c7a
Co-authored-by: Amp <amp@ampcode.com>
@DrJKL DrJKL marked this pull request as ready for review January 21, 2026 23:43
@DrJKL DrJKL requested a review from a team as a code owner January 21, 2026 23:43

export type OwnershipOption = 'all' | 'my-models' | 'public-models'

type NavId = 'all' | 'imported' | (string & {})
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is just for type hinting, right? I vaguely recall you sharing that 'all' | 'imported' | string gets simplified by typescript into string

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Exactly, it accepts any string but autocomplete will suggest the known values first.

@DrJKL DrJKL merged commit f1d1747 into main Jan 22, 2026
28 checks passed
@DrJKL DrJKL deleted the drjkl/session-download-tracking branch January 22, 2026 00:32
@DrJKL DrJKL 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 22, 2026
github-actions bot pushed a commit that referenced this pull request Jan 22, 2026
## Summary

Add session download tracking to track which assets were downloaded
during the current session. This enables UI features like:
- Badge count on "Imported" nav showing newly downloaded assets
- Visual indicator on asset cards for recently downloaded items

## Changes

- Add `acknowledged` flag to `AssetDownload` interface
- Add `unacknowledgedDownloads` computed for filtering
- Add `sessionDownloadCount` computed for badge display
- Add `isDownloadedThisSession(identifier)` to check individual assets
- Add `acknowledgeDownload(identifier)` to mark assets as seen

## Testing

- 6 new unit tests covering all session tracking functionality
- Run: `pnpm test:unit -- src/stores/assetDownloadStore.test.ts`

## Related

- Part of Asset Browser improvements (#8090)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8213-feat-add-session-download-tracking-to-assetDownloadStore-2ef6d73d365081538045e8544d26bafa)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Amp <amp@ampcode.com>
@comfy-pr-bot
Copy link
Member

@DrJKL Successfully backported to #8233

@github-actions github-actions bot removed the needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch label Jan 22, 2026
DrJKL added a commit that referenced this pull request Jan 22, 2026
## Summary

Add session download tracking to track which assets were downloaded
during the current session. This enables UI features like:
- Badge count on "Imported" nav showing newly downloaded assets
- Visual indicator on asset cards for recently downloaded items

## Changes

- Add `acknowledged` flag to `AssetDownload` interface
- Add `unacknowledgedDownloads` computed for filtering
- Add `sessionDownloadCount` computed for badge display
- Add `isDownloadedThisSession(identifier)` to check individual assets
- Add `acknowledgeDownload(identifier)` to mark assets as seen

## Testing

- 6 new unit tests covering all session tracking functionality
- Run: `pnpm test:unit -- src/stores/assetDownloadStore.test.ts`

## Related

- Part of Asset Browser improvements (#8090)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8213-feat-add-session-download-tracking-to-assetDownloadStore-2ef6d73d365081538045e8544d26bafa)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Amp <amp@ampcode.com>
DrJKL added a commit that referenced this pull request Jan 22, 2026
…nloadStore (#8233)

Backport of #8213 to `cloud/1.37`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8233-backport-cloud-1-37-feat-add-session-download-tracking-to-assetDownloadStore-2f06d73d36508147b5fadd98af2a602e)
by [Unito](https://www.unito.io)

Co-authored-by: Alexander Brown <drjkl@comfy.org>
Co-authored-by: Amp <amp@ampcode.com>
godwiniheuwa pushed a commit to godwiniheuwa/ComfyUI_frontend that referenced this pull request Jan 22, 2026
…8213)

## Summary

Add session download tracking to track which assets were downloaded
during the current session. This enables UI features like:
- Badge count on "Imported" nav showing newly downloaded assets
- Visual indicator on asset cards for recently downloaded items

## Changes

- Add `acknowledged` flag to `AssetDownload` interface
- Add `unacknowledgedDownloads` computed for filtering
- Add `sessionDownloadCount` computed for badge display
- Add `isDownloadedThisSession(identifier)` to check individual assets
- Add `acknowledgeDownload(identifier)` to mark assets as seen

## Testing

- 6 new unit tests covering all session tracking functionality
- Run: `pnpm test:unit -- src/stores/assetDownloadStore.test.ts`

## Related

- Part of Asset Browser improvements (Comfy-Org#8090)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8213-feat-add-session-download-tracking-to-assetDownloadStore-2ef6d73d365081538045e8544d26bafa)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Amp <amp@ampcode.com>
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 size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants