Skip to content

feat(workspace): 1/5 Foundation - API client and session manager#8181

Closed
simula-r wants to merge 1 commit intomainfrom
feat/workspace-1-foundation
Closed

feat(workspace): 1/5 Foundation - API client and session manager#8181
simula-r wants to merge 1 commit intomainfrom
feat/workspace-1-foundation

Conversation

@simula-r
Copy link
Contributor

@simula-r simula-r commented Jan 20, 2026

Stack: 1/5 | Part of workspace feature (see full branch)

Adds workspace API client and session storage manager. Pure infrastructure—no UI, no integrations. Safe to merge as dead code until subsequent PRs land. All code gated by isCloud && teamWorkspacesEnabled.

Files: workspaceApi.ts, sessionManager.ts, workspaceConstants.ts

┆Issue is synchronized with this Notion page by Unito

- Add workspaceApi.ts with all workspace endpoint methods
- Add sessionManager.ts for workspace token storage
- Update workspaceConstants.ts with storage keys
- Add INVITE namespace to preservedQueryNamespaces
@simula-r simula-r requested a review from a team as a code owner January 20, 2026 20:17
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jan 20, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 20, 2026

📝 Walkthrough

Walkthrough

Adds workspace constants for persistent storage tracking, expands navigation namespaces for invite handling, introduces a comprehensive Workspace API client with authentication wrappers and type definitions, and adds a session manager service for managing workspace-related storage and page reloads.

Changes

Cohort / File(s) Summary
Storage Keys Configuration
src/platform/auth/workspace/workspaceConstants.ts
Added LAST_WORKSPACE_ID key to WORKSPACE_STORAGE_KEYS for tracking last accessed workspace across sessions; added clarifying comments distinguishing sessionStorage (cleared on close) from localStorage (persistent).
Navigation Configuration
src/platform/navigation/preservedQueryNamespaces.ts
Added INVITE: 'invite' preserved namespace to support invite-related query parameter handling.
Workspace API Client
src/platform/workspace/api/workspaceApi.ts
Introduced comprehensive API client with workspace types (WorkspaceType, WorkspaceRole), domain models (Workspace, Member, PendingInvite), request/response interfaces, WorkspaceApiError class, and Axios-based API methods (list, create, update, delete, leave, listMembers, removeMember, listInvites, createInvite, revokeInvite, acceptInvite, exchangeToken, accessBillingPortal); includes two auth wrappers: withAuth (Firebase ID token via store) and withFirebaseAuth (direct Firebase token with error code mapping).
Session Manager Service
src/platform/workspace/services/sessionManager.ts
New exported service providing workspace session utilities: methods to get/set/clear current and last workspace IDs, manage workspace tokens with expiry, and orchestrate workspace switching with page reload; uses WORKSPACE_STORAGE_KEYS for storage access with try-catch error handling.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Client
    participant sessionManager
    participant workspaceApi
    participant Firebase
    participant Backend

    User->>Client: Switch to workspace
    Client->>sessionManager: switchWorkspaceAndReload(workspaceId)
    sessionManager->>sessionManager: clearWorkspaceToken()
    sessionManager->>sessionManager: setCurrentWorkspaceId(workspaceId)
    sessionManager->>sessionManager: setLastWorkspaceId(workspaceId)
    sessionManager->>Client: Trigger page reload
    Client->>Client: Page reloads
    Client->>workspaceApi: exchangeToken({workspace_id})
    workspaceApi->>Firebase: Get ID token
    Firebase-->>workspaceApi: ID token
    workspaceApi->>Backend: POST /auth/token with Firebase token + workspace_id
    Backend-->>workspaceApi: ExchangeTokenResponse (token, expires_at)
    workspaceApi-->>Client: Token received
    Client->>sessionManager: setWorkspaceToken(token, expiresAt)
    sessionManager->>sessionManager: Store in localStorage
Loading

Possibly related PRs

Suggested reviewers

  • shinshin86
  • Yorha4D
  • pythongosssss
✨ 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 20, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 503 passed, 0 failed, 2 flaky, 8 skipped (Total: 513)

❌ Failed Tests

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

@github-actions
Copy link

github-actions bot commented Jan 20, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/20/2026, 08:19:02 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

Bundle Size Report

Summary

  • Raw size: 21.3 MB baseline 21.3 MB — 🔴 +79 B
  • Gzip: 4.43 MB baseline 4.43 MB — 🔴 +68 B
  • Brotli: 3.28 MB baseline 3.28 MB — 🔴 +170 B
  • Bundles: 155 current • 155 baseline • 66 added / 66 removed

Category Glance
Data & Services 🔴 +56 B (3.04 MB) · Other 🔴 +23 B (6.25 MB) · Vendor & Third-Party ⚪ 0 B (10.4 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.4 kB (baseline 22.4 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BPErPlnT.js (new) 22.4 kB 🔴 +22.4 kB 🔴 +6.75 kB 🔴 +5.92 kB
assets/index-ClIoWONr.js (removed) 22.4 kB 🟢 -22.4 kB 🟢 -6.74 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-DX19GHRq.js (removed) 1.02 MB 🟢 -1.02 MB 🟢 -201 kB 🟢 -153 kB
assets/GraphView-Dx5RmSPf.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-Ceq6Kqng.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.61 kB 🔴 +3.05 kB
assets/CloudSurveyView-Datel9jP.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.61 kB 🟢 -3.06 kB
assets/CloudLoginView-BlYEUrNJ.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.1 kB 🟢 -2.72 kB
assets/CloudLoginView-COVJlIkD.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.1 kB 🔴 +2.72 kB
assets/UserCheckView-BgTK5yKN.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.46 kB 🟢 -2.13 kB
assets/UserCheckView-K5HHKV41.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.13 kB
assets/CloudLayoutView-BjwFKPHZ.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.25 kB 🟢 -1.97 kB
assets/CloudLayoutView-BMk6vbdn.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.25 kB 🔴 +1.96 kB
assets/CloudSignupView-CzcejQdS.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.03 kB
assets/CloudSignupView-DGMC1cUY.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.03 kB
assets/CloudForgotPasswordView-BPB08Kx2.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.93 kB 🔴 +1.68 kB
assets/CloudForgotPasswordView-DvyMktDH.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.93 kB 🟢 -1.68 kB
assets/UserSelectView-Ba2jNYDU.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.57 kB
assets/UserSelectView-CW9JlDMW.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.56 kB
assets/CloudSubscriptionRedirectView-Ch_p3kwV.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudSubscriptionRedirectView-DiS3_tHO.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudAuthTimeoutView-BgZhfVKA.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.72 kB 🔴 +1.48 kB
assets/CloudAuthTimeoutView-DpioZYiG.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.72 kB 🟢 -1.48 kB
assets/CloudSorryContactSupportView-QtHXqQri.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-Bf1taiS0.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-BBRv4F3g.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.95 kB 🔴 +5.23 kB
assets/LegacyCreditsPanel-fSCmxtXj.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.95 kB 🟢 -5.23 kB
assets/SubscriptionPanel-BWZvhuXN.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5 kB 🔴 +4.39 kB
assets/SubscriptionPanel-CGvA5lq7.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5 kB 🟢 -4.38 kB
assets/KeybindingPanel-BG_TWlhO.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.74 kB 🟢 -3.31 kB
assets/KeybindingPanel-C6la7sgC.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.75 kB 🔴 +3.31 kB
assets/AboutPanel-DtINB2-L.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.69 kB 🟢 -2.43 kB
assets/AboutPanel-JE6O72-S.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.69 kB 🔴 +2.43 kB
assets/ExtensionPanel-BMUqmFaD.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-DG8t_wal.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ServerConfigPanel-BPNjB_P3.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.17 kB 🔴 +1.94 kB
assets/ServerConfigPanel-Dl-BYJtT.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.17 kB 🟢 -1.94 kB
assets/UserPanel-fqiC16zR.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.91 kB 🔴 +1.68 kB
assets/UserPanel-m36VW4ej.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.91 kB 🟢 -1.67 kB
assets/cloudRemoteConfig-Dbh02Jcm.js (removed) 1.82 kB 🟢 -1.82 kB 🟢 -769 B 🟢 -656 B
assets/cloudRemoteConfig-DoFYJjoq.js (new) 1.82 kB 🔴 +1.82 kB 🔴 +771 B 🔴 +658 B
assets/remoteConfig-B0rgMcLx.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/remoteConfig-CW7J8vSK.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-CBwHAJ5U.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.08 kB
assets/auth-DO4oxen_.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.06 kB
assets/firebaseAuthStore-D-EebVL7.js (removed) 217 B 🟢 -217 B 🟢 -138 B 🟢 -122 B
assets/firebaseAuthStore-kdo5ptdX.js (new) 217 B 🔴 +217 B 🔴 +138 B 🔴 +121 B
assets/auth-CcIQDrSP.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +129 B
assets/auth-Ka6Iu1bV.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -143 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-Cx5XhPaQ.js (new) 2.62 kB 🔴 +2.62 kB 🔴 +1.24 kB 🔴 +1.09 kB
assets/useSubscriptionDialog-D3v76K0U.js (removed) 2.62 kB 🟢 -2.62 kB 🟢 -1.24 kB 🟢 -1.09 kB
assets/useSubscriptionDialog-CI8MZNiu.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +103 B
assets/useSubscriptionDialog-RvWnZ75q.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -95 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-B3bpukh-.js (removed) 12.5 kB 🟢 -12.5 kB 🟢 -3 kB 🟢 -2.7 kB
assets/SubscribeButton-DIeFzAUx.js (new) 12.5 kB 🔴 +12.5 kB 🔴 +3.01 kB 🔴 +2.71 kB
assets/ComfyQueueButton-C8yb5GPT.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.41 kB
assets/ComfyQueueButton-CSJ-Kz-7.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.41 kB
assets/CloudBadge-CEzeqobt.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -729 B 🟢 -646 B
assets/CloudBadge-em1LQ3YG.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +733 B 🔴 +649 B
assets/cloudFeedbackTopbarButton-Du-pRDiP.js (new) 866 B 🔴 +866 B 🔴 +525 B 🔴 +447 B
assets/cloudFeedbackTopbarButton-Y8Rk-crm.js (removed) 866 B 🟢 -866 B 🟢 -524 B 🟢 -438 B
assets/ComfyQueueButton-C1cHc9p2.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -120 B
assets/ComfyQueueButton-SOfk7Obs.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +123 B
assets/Button-BFptkwN0.js 3.75 kB 3.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-CkcXZWJQ.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-_hGIrcI2.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 3.04 MB (baseline 3.04 MB) • 🔴 +56 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-DgwnAzQC.js (new) 1.87 MB 🔴 +1.87 MB 🔴 +397 kB 🔴 +304 kB
assets/dialogService-CEzbYeif.js (removed) 1.87 MB 🟢 -1.87 MB 🟢 -397 kB 🟢 -304 kB
assets/api--8uhkDQN.js (removed) 1.15 MB 🟢 -1.15 MB 🟢 -239 kB 🟢 -185 kB
assets/api-C9R4isUz.js (new) 1.15 MB 🔴 +1.15 MB 🔴 +239 kB 🔴 +185 kB
assets/releaseStore-BBf91bgg.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.41 kB 🔴 +2.13 kB
assets/releaseStore-CfkrRjTp.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.41 kB 🟢 -2.13 kB
assets/keybindingService-C-ftQjXa.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/keybindingService-CfcSeuv9.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.51 kB
assets/userStore-BCEuz1Sx.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -814 B 🟢 -724 B
assets/userStore-DKXGsFTP.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +816 B 🔴 +725 B
assets/audioService-CcbWb1Nq.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -932 B 🟢 -821 B
assets/audioService-DQVQnAy5.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +932 B 🔴 +824 B
assets/releaseStore-0VIpEt2w.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -106 B
assets/releaseStore-CskuLOqN.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +108 B
assets/serverConfigStore-CDOQj4Ec.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-CChesXx1.js (new) 5 kB 🔴 +5 kB 🔴 +1.47 kB 🔴 +1.32 kB
assets/useErrorHandling-CiN0jmUW.js (removed) 5 kB 🟢 -5 kB 🟢 -1.47 kB 🟢 -1.28 kB
assets/subscriptionCheckoutUtil-3fcBzhhA.js (new) 1.98 kB 🔴 +1.98 kB 🔴 +860 B 🔴 +749 B
assets/subscriptionCheckoutUtil-CJEE5QYg.js (removed) 1.98 kB 🟢 -1.98 kB 🟢 -862 B 🟢 -749 B
assets/audioUtils-CLop9NR6.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +618 B 🔴 +519 B
assets/audioUtils-T5kpRwN5.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -620 B 🟢 -524 B
assets/useCurrentUser-BtscdR1n.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -102 B
assets/useCurrentUser-DkUKu2JN.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +102 B
assets/_plugin-vue_export-helper-xVPqUhAl.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-De0C_hc6.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-0PqWmn-8.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeFilterUtil-BUCOyXf2.js 421 B 421 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-Chuu3TbR.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-DqqTGPL6.js 3.92 MB 3.92 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-EBXVECvF.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-ViWrLgbb.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-VHAq3Lid.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.25 MB (baseline 6.25 MB) • 🔴 +23 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-CaDoB35F.js (removed) 177 kB 🟢 -177 kB 🟢 -42.8 kB 🟢 -35.7 kB
assets/core-P6SBWys0.js (new) 177 kB 🔴 +177 kB 🔴 +42.8 kB 🔴 +35.7 kB
assets/Load3D-BewWt72v.js (removed) 55.7 kB 🟢 -55.7 kB 🟢 -9.18 kB 🟢 -7.91 kB
assets/Load3D-Q9Wib-XO.js (new) 55.7 kB 🔴 +55.7 kB 🔴 +9.18 kB 🔴 +7.92 kB
assets/WidgetSelect-C7IQksyJ.js (removed) 50.5 kB 🟢 -50.5 kB 🟢 -11.1 kB 🟢 -9.68 kB
assets/WidgetSelect-OQVQA0gM.js (new) 50.5 kB 🔴 +50.5 kB 🔴 +11.1 kB 🔴 +9.68 kB
assets/SubscriptionRequiredDialogContent-C4pA6WLW.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.91 kB
assets/SubscriptionRequiredDialogContent-CShYQyRw.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.78 kB 🔴 +5.91 kB
assets/WidgetRecordAudio-HG3vnHSQ.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.97 kB 🟢 -4.43 kB
assets/WidgetRecordAudio-jOmt09jj.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.96 kB 🔴 +4.43 kB
assets/WidgetInputNumber-CZDCMa0R.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.49 kB 🔴 +4.01 kB
assets/WidgetInputNumber-DCS6z9Vp.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.49 kB 🟢 -4.01 kB
assets/WidgetImageCrop-BbFJdhwm.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.62 kB
assets/WidgetImageCrop-OlAL0cYS.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.62 kB
assets/PanelTemplate-DAWExeGT.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.45 kB 🔴 +4.8 kB
assets/PanelTemplate-l9SMS8Gm.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.45 kB 🟢 -4.8 kB
assets/AudioPreviewPlayer-4AgM2qQn.js (removed) 12.7 kB 🟢 -12.7 kB 🟢 -3.48 kB 🟢 -3.12 kB
assets/AudioPreviewPlayer-CTCzSuCE.js (new) 12.7 kB 🔴 +12.7 kB 🔴 +3.48 kB 🔴 +3.12 kB
assets/WidgetWithControl-Dnn9sDR4.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.65 kB 🔴 +2.38 kB
assets/WidgetWithControl-XUVzqlyC.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.65 kB 🟢 -2.38 kB
assets/ValueControlPopover-DaWlXzYk.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/ValueControlPopover-rO-dcvUv.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.55 kB 🟢 -1.37 kB
assets/preservedQueryNamespaces-Bqndnyfg.js (new) 3.25 kB 🔴 +3.25 kB 🔴 +1.08 kB 🔴 +939 B
assets/preservedQueryNamespaces-BsMrb3S_.js (removed) 3.23 kB 🟢 -3.23 kB 🟢 -1.07 kB 🟢 -929 B
assets/WidgetAudioUI-1qLq9hs6.js (removed) 3.22 kB 🟢 -3.22 kB 🟢 -1.19 kB 🟢 -1.09 kB
assets/WidgetAudioUI-DTM2Oe8s.js (new) 3.22 kB 🔴 +3.22 kB 🔴 +1.19 kB 🔴 +1.08 kB
assets/GlobalToast-4JlA9-3s.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +940 B
assets/GlobalToast-DFuNh7cd.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -940 B
assets/SubscribeToRun-BtytHFBv.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.16 kB 🔴 +1.02 kB
assets/SubscribeToRun-CBC6dpBH.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.02 kB
assets/cloudSessionCookie-B20qF5MG.js (removed) 2.9 kB 🟢 -2.9 kB 🟢 -920 B 🟢 -794 B
assets/cloudSessionCookie-CynmFQsw.js (new) 2.9 kB 🔴 +2.9 kB 🔴 +915 B 🔴 +795 B
assets/BaseViewTemplate-CEvI7bGp.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +946 B
assets/BaseViewTemplate-DvV0Ic8F.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -946 B
assets/CloudRunButtonWrapper-BMr61qQT.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -643 B 🟢 -595 B
assets/CloudRunButtonWrapper-BvttsDbs.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +641 B 🔴 +595 B
assets/cloudBadges-32T__F85.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -537 B 🟢 -478 B
assets/cloudBadges-nxXKK2so.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +537 B 🔴 +503 B
assets/graphHasMissingNodes-CNm0DyBF.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -460 B 🟢 -425 B
assets/graphHasMissingNodes-DCEc82qN.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +463 B 🔴 +424 B
assets/cloudSubscription-7WpBxjju.js (new) 976 B 🔴 +976 B 🔴 +457 B 🔴 +395 B
assets/cloudSubscription-DsXtNEwu.js (removed) 976 B 🟢 -976 B 🟢 -455 B 🟢 -393 B
assets/AudioPreviewPlayer-Bj3X8oPr.js (new) 191 B 🔴 +191 B 🔴 +120 B 🔴 +118 B
assets/AudioPreviewPlayer-FjjNMkYg.js (removed) 191 B 🟢 -191 B 🟢 -120 B 🟢 -109 B
assets/WidgetInputNumber-BeePlr-Q.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -123 B
assets/WidgetInputNumber-jImY3W8g.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +112 B
assets/WidgetLegacy-C9Xm408_.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +107 B
assets/WidgetLegacy-CtLX1i1n.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -110 B
assets/WidgetSelect-B_BIH3B6.js (removed) 161 B 🟢 -161 B 🟢 -113 B 🟢 -106 B
assets/WidgetSelect-x7MttRaL.js (new) 161 B 🔴 +161 B 🔴 +113 B 🔴 +108 B
assets/Load3D-BJZJA6IN.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +111 B
assets/Load3D-BoY7EWO7.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -118 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-B2qJgYQV.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BH76kbq7.js 104 kB 104 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C-gNarDo.js 105 kB 105 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CA0dzqpC.js 124 kB 124 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CbaIObx3.js 121 kB 121 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CKH_pYcz.js 161 kB 161 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CotnVZA-.js 134 kB 134 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D-IO_jVl.js 119 kB 119 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DLii8dI6.js 117 kB 117 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-i8aQGyai.js 145 kB 145 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Uwzs8jut.js 141 kB 141 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-vWcCEZeZ.js 117 kB 117 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-Bj6UL3Mt.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-D8pQnmES.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-D0aiBzXG.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-BCNtw1s2.js 2.84 kB 2.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-FcNs04XW.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-6qSb98D5.js 329 kB 329 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-B4G_Dl5E.js 361 kB 361 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BhmSU7DZ.js 371 kB 371 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bxky0ZDY.js 332 kB 332 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CCSKuw9P.js 400 kB 400 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Cd4f2ERd.js 358 kB 358 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CLdE8MPH.js 355 kB 355 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CqDWLi76.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CqyprhWq.js 433 kB 433 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-D4Fo85EU.js 358 kB 358 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DF-ErmAt.js 351 kB 351 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 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-BIIoltvA.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-CUDq_bgN.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-T8Ljl7oe.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-1bZGfe6O.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-CE6qc5iJ.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-Bjqrk0m2.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-CrN6SGuP.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-CtnWVTX2.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-zNq5xTi-.js 2.61 kB 2.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-D4Dx6Rvq.js 3.22 kB 3.22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-DfR_ZXyS.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-CDG12iu3.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-VNa5cXfN.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 26 added / 26 removed

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/platform/workspace/services/sessionManager.ts`:
- Around line 143-147: The clearAndReload() method currently calls
clearWorkspaceToken() and clearCurrentWorkspaceId() but does not remove the
persisted LAST_WORKSPACE_ID key, so a deleted workspace can be rehydrated on
next boot; update clearAndReload() in sessionManager.ts to also remove the
LAST_WORKSPACE_ID entry from localStorage (or call the existing helper that
clears that key) before calling window.location.reload() so the app falls back
to the personal workspace on next start.

Comment on lines +143 to +147
clearAndReload(): void {
this.clearWorkspaceToken()
this.clearCurrentWorkspaceId()
window.location.reload()
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Clear LAST_WORKSPACE_ID when resetting context.
clearAndReload() is documented to fall back to personal workspace, but it leaves LAST_WORKSPACE_ID in localStorage, which can rehydrate a deleted workspace on next boot. Clear it before reload.

🛠️ Proposed fix
   clearAndReload(): void {
     this.clearWorkspaceToken()
     this.clearCurrentWorkspaceId()
+    this.clearLastWorkspaceId()
     window.location.reload()
   }
🤖 Prompt for AI Agents
In `@src/platform/workspace/services/sessionManager.ts` around lines 143 - 147,
The clearAndReload() method currently calls clearWorkspaceToken() and
clearCurrentWorkspaceId() but does not remove the persisted LAST_WORKSPACE_ID
key, so a deleted workspace can be rehydrated on next boot; update
clearAndReload() in sessionManager.ts to also remove the LAST_WORKSPACE_ID entry
from localStorage (or call the existing helper that clears that key) before
calling window.location.reload() so the app falls back to the personal workspace
on next start.

@simula-r simula-r closed this Jan 20, 2026
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.

1 participant