Skip to content

refactor(desktop): remove the new-sidebar experiment and its legacy path - #8790

Merged
Kitenite merged 1 commit into
mainfrom
delete-flag-and-off-exper-08a3ccf4
Oct 23, 2026
Merged

Kitenite merged 1 commit into
mainfrom
delete-flag-and-off-exper-08a3ccf4

Conversation

@Kitenite

@Kitenite Kitenite commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Summary

  • The new sidebar is now the only sidebar. The "New sidebar" toggle in Settings › Experimental and the sidebar-inline-cloud-workspaces PostHog flag are gone, along with everything only the off side rendered.
  • About 5.2k lines deleted across 75 files, mostly the standalone Cloud section and the legacy workspace row.

Why / Context

The experiment is concluded. Keeping both paths meant two workspace rows, two cloud layouts and a header that changed shape depending on a local toggle.

How It Works

  • Data: useDashboardSidebarData and TagFolderWorkspacesProvider always take the inline-cloud path. useCloudWorkspaces already returns [] when cloud-workspaces is off, so without cloud the cloud layout is empty and applyCloudSidebarRows/applyCloudSidebarPinnedRows pass the rows through unchanged.
  • Filter: the local/cloud host filter is gated on cloud-workspaces directly, which is the only remaining gate.
  • Rows and header: DashboardSidebarWorkspaceItem always renders DashboardSidebarExpandedWorkspaceRow. The header drops the Cloud workspaces / Projects links that only the legacy sidebar showed.
  • Deleted:
    • stores/new-dashboard-sidebar.ts (its key new-dashboard-sidebar moves to DEAD_KEYS so the boot sweep clears it)
    • hooks/useNewDashboardSidebarEnabled and its context
    • DashboardSidebarCloudSection/**
    • DashboardSidebarLegacyExpandedWorkspaceRow
    • the EXPERIMENTAL_NEW_SIDEBAR settings entry
    • FEATURE_FLAGS.SIDEBAR_INLINE_CLOUD_WORKSPACES
  • i18n: catalogs regenerated. 18 messages are no longer used and are removed from all locales; no new strings.

Behavior changes

  • People without cloud workspaces now get the redesigned row. Before, they still had the legacy row.
  • Cloud users who had switched the toggle off lose the separate Cloud section and the sidebar's Cloud workspaces / Projects links. The /cloud-workspaces and /projects routes still exist.

Manual QA Checklist

Checked end-to-end in this branch's dev desktop app (renderer on :8325), with real mouse input over CDP:

  • Cloud flag on: the cloud workspace sits under its project (Superset). The sidebar has no Cloud section, and the header has no Cloud workspaces / Projects links. Sort menu shows "Show: All workspaces / Local / Cloud"; picking Cloud leaves only the cloud row (restored to All afterwards)
  • Cloud flag off (PostHog override cloud-workspaces: false): the "Show" section leaves the menu, the cloud row goes, and the projects and rows render normally
  • Settings › Experimental lists only Ports in top bar dropdown / Workspace agents / Wait for setup. Settings search "new sidebar" only finds the unrelated Files & Editor "Sidebar file rows"
  • Planting new-dashboard-sidebar = {enabled:false} and reloading: the key is cleared by the boot sweep, and the new sidebar still renders
  • Renderer log: no errors (only pre-existing leaderboard rate-limit warnings)

Testing

  • bunx biome check on changed files: clean
  • bun test for persisted-keys, openPullRequestLink, DashboardSidebar and settings: 329 pass
  • bun run check:i18n: passes
  • bun run typecheck (desktop): 27 errors, all better-auth typings in packages/auth / packages/trpc and auth-session call sites. The base commit 8cd20d0b8a has the same 27; none are in files this PR touches.

Follow-ups

  • Archive the sidebar-inline-cloud-workspaces flag in PostHog.
  • cloudSidebarStore group actions (createGroup, renameGroup, deleteGroup, moveToGroup, toggleGroupCollapsed, markUnread) have no callers now.
  • useNavigateAwayFromWorkspace still orders siblings with the old Cloud-section groups first, so after removing the open workspace it can pick the wrong next one. This already happened with the new sidebar on; it is left out of this PR to keep it focused.

Summary by cubic

The new-sidebar experiment is concluded: the redesigned sidebar (cloud workspaces under their projects, host filter, redesigned workspace row) is now the only sidebar. Removes the "New sidebar" toggle in Settings › Experimental, the sidebar-inline-cloud-workspaces flag, the standalone Cloud section, and the legacy workspace row, deleting ~5.2k lines across 75 files.

Behavior changes

  • People without cloud workspaces now get the redesigned row instead of the legacy one.
  • Cloud users who had the toggle off lose the separate Cloud section and the sidebar's Cloud workspaces / Projects links; the /cloud-workspaces and /projects routes still exist.
  • The new-dashboard-sidebar localStorage key moves to DEAD_KEYS so the boot sweep clears it.

Follow-ups

  • Archive the sidebar-inline-cloud-workspaces flag in PostHog.
  • cloudSidebarStore group actions no longer have callers.
  • useNavigateAwayFromWorkspace still orders old Cloud-section groups first, so it can pick the wrong next workspace after closing one.

Written for commit e1d0224. Summary will update on new commits.

View guided diff Turn on auto-fix

Summary by CodeRabbit

  • Changes
    • The newer expanded workspace-row layout is now used throughout the dashboard sidebar; the legacy layout and its change statistics are no longer shown.
    • The separate cloud-workspace sidebar section, including its workspace rows, hover cards, and context menus, has been removed.
    • Cloud-workspace and project navigation links are no longer shown in the sidebar.
    • The experimental setting for the new sidebar has been removed.

The new sidebar is now the only sidebar: cloud workspaces sit under their
projects, the local/cloud filter shows whenever cloud workspaces are on,
and every workspace uses the redesigned row.

Removes the Experimental toggle, its settings-search entry and persisted
store (key moved to DEAD_KEYS), the sidebar-inline-cloud-workspaces flag,
the standalone Cloud section, the legacy workspace row, and the header's
Cloud workspaces / Projects links that only the legacy sidebar showed.
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5894f014-5566-4da3-9ad6-b1f765896830
📥 Commits

Reviewing files that changed from the base of the PR and between 4a0cdec and e1d0224.

📒 Files selected for processing: 75
  • apps/desktop/src/renderer/lib/github/openPullRequestLink/pullRequestLinkSurfaces.test.ts
  • apps/desktop/src/renderer/lib/persisted-keys/persisted-key-registry.test-data.ts
  • apps/desktop/src/renderer/lib/persisted-keys/persisted-keys.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/DashboardSidebar.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/DashboardSidebarCloudSection.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/DashboardSidebarCloudContextMenu.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/DashboardSidebarCloudContextMenu.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/components/LinkTaskCommand/LinkTaskCommand.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/components/LinkTaskCommand/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/DashboardSidebarCloudGroup.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/DashboardSidebarCloudGroup.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/DashboardSidebarCloudHoverCard.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/DashboardSidebarCloudHoverCard.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.css
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/DashboardSidebarCloudItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/hooks/useCloudWorkspaceMenuMutations/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/hooks/useCloudWorkspaceMenuMutations/useCloudWorkspaceMenuMutations.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRailItem/DashboardSidebarCloudRailItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRailItem/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/DashboardSidebarCloudRow.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/DashboardSidebarCloudRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/DashboardSidebarCloudPortsButton.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/DashboardSidebarCloudPortsButton.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/DashboardSidebarCloudPullRequestButton.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/DashboardSidebarCloudPullRequestButton.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/DashboardSidebarPortsCard.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/DashboardSidebarPortsCard.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useCloudHoverCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useCloudHoverCard/useCloudHoverCard.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useOpenCloudWorkspacePullRequest/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useOpenCloudWorkspacePullRequest/useOpenCloudWorkspacePullRequest.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarHeader/DashboardSidebarHeader.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/DashboardSidebarWorkspaceItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/DashboardSidebarLegacyExpandedWorkspaceRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/components/DashboardSidebarWorkspaceDiffStats/DashboardSidebarWorkspaceDiffStats.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/components/DashboardSidebarWorkspaceDiffStats/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useDashboardSidebarData/useDashboardSidebarData.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/NewDashboardSidebarContext.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/useNewDashboardSidebarEnabled.ts
  • apps/desktop/src/renderer/routes/_authenticated/providers/TagFolderWorkspacesProvider/TagFolderWorkspacesProvider.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/experimental/components/ExperimentalSettings/components/ExperimentalSettingsList/ExperimentalSettingsList.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
  • apps/desktop/src/renderer/stores/new-dashboard-sidebar.ts
  • packages/i18n/locales/cs/messages.po
  • packages/i18n/locales/de/messages.po
  • packages/i18n/locales/en/messages.po
  • packages/i18n/locales/es/messages.po
  • packages/i18n/locales/fr/messages.po
  • packages/i18n/locales/id/messages.po
  • packages/i18n/locales/it/messages.po
  • packages/i18n/locales/ja/messages.po
  • packages/i18n/locales/ko/messages.po
  • packages/i18n/locales/nl/messages.po
  • packages/i18n/locales/pl/messages.po
  • packages/i18n/locales/pt-BR/messages.po
  • packages/i18n/locales/ru/messages.po
  • packages/i18n/locales/tr/messages.po
  • packages/i18n/locales/vi/messages.po
  • packages/i18n/locales/zh-CN/messages.po
  • packages/i18n/locales/zh-TW/messages.po
  • packages/shared/src/constants.ts
💤 Files with no reviewable changes: 70
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useOpenCloudWorkspacePullRequest/index.ts
  • apps/desktop/src/renderer/lib/persisted-keys/persisted-key-registry.test-data.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/DashboardSidebarCloudRow.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/DashboardSidebarCloudPullRequestButton.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/DashboardSidebarCloudSection.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/DashboardSidebarCloudItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.css
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/components/LinkTaskCommand/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/useNewDashboardSidebarEnabled.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useOpenCloudWorkspacePullRequest/useOpenCloudWorkspacePullRequest.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/components/DashboardSidebarWorkspaceDiffStats/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/DashboardSidebarPortsCard.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/DashboardSidebarLegacyExpandedWorkspaceRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarPortsCard/DashboardSidebarPortsCard.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useCloudHoverCard/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/DashboardSidebarCloudPortsButton.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRailItem/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/DashboardSidebarCloudGroup.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/experimental/components/ExperimentalSettings/components/ExperimentalSettingsList/ExperimentalSettingsList.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/components/LinkTaskCommand/LinkTaskCommand.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/NewDashboardSidebarContext.ts
  • packages/shared/src/constants.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPullRequestButton/DashboardSidebarCloudPullRequestButton.stories.tsx
  • apps/desktop/src/renderer/lib/github/openPullRequestLink/pullRequestLinkSurfaces.test.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/hooks/useCloudWorkspaceMenuMutations/useCloudWorkspaceMenuMutations.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/DashboardSidebarCloudContextMenu.stories.tsx
  • apps/desktop/src/renderer/stores/new-dashboard-sidebar.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/DashboardSidebarCloudHoverCard.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudItem/hooks/useCloudWorkspaceMenuMutations/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarLegacyExpandedWorkspaceRow/components/DashboardSidebarWorkspaceDiffStats/DashboardSidebarWorkspaceDiffStats.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRailItem/DashboardSidebarCloudRailItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/DashboardSidebarCloudRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverCard/DashboardSidebarCloudHoverCard.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudHoverOverlay/DashboardSidebarCloudHoverOverlay.stories.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudRow/components/DashboardSidebarCloudPortsButton/DashboardSidebarCloudPortsButton.tsx
  • packages/i18n/locales/nl/messages.po
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudContextMenu/DashboardSidebarCloudContextMenu.tsx
  • packages/i18n/locales/fr/messages.po
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/hooks/useCloudHoverCard/useCloudHoverCard.ts
  • packages/i18n/locales/en/messages.po
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarHeader/DashboardSidebarHeader.tsx
  • packages/i18n/locales/ja/messages.po
  • packages/i18n/locales/zh-TW/messages.po
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/components/DashboardSidebarCloudGroup/DashboardSidebarCloudGroup.stories.tsx
  • packages/i18n/locales/es/messages.po
  • packages/i18n/locales/tr/messages.po
  • packages/i18n/locales/id/messages.po
  • packages/i18n/locales/vi/messages.po
  • packages/i18n/locales/ko/messages.po
  • packages/i18n/locales/it/messages.po
  • packages/i18n/locales/de/messages.po
  • packages/i18n/locales/pt-BR/messages.po
  • packages/i18n/locales/pl/messages.po
  • packages/i18n/locales/zh-CN/messages.po
  • packages/i18n/locales/cs/messages.po
  • packages/i18n/locales/ru/messages.po

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.

📝 Walkthrough

The dashboard sidebar removes the new-sidebar experiment and its separate cloud-workspace section. Expanded workspaces now use one row implementation. Cloud workspace data filtering remains active, and related settings, persisted state, feature-flag declarations, and locale entries are removed.

Changes: Dashboard sidebar retirement

Layer / File(s) Summary
Sidebar wiring and cloud workspace data
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/DashboardSidebar.tsx, .../DashboardSidebarHeader/DashboardSidebarHeader.tsx, .../hooks/useDashboardSidebarData/useDashboardSidebarData.ts, apps/desktop/src/renderer/routes/_authenticated/providers/TagFolderWorkspacesProvider/TagFolderWorkspacesProvider.tsx
The sidebar uses the cloud-workspaces feature flag for its cloud-workspace controls and no longer renders the separate Cloud section or projects/cloud navigation links. Cloud workspace filtering and layout processing no longer depend on the inline-sidebar option.
Remove cloud sidebar components
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarCloudSection/*
The cloud sidebar and its workspace rows, groups, menus, hover cards, port and pull-request controls, hooks, stories, and exports are removed.
Standardize expanded workspace rows
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/*, apps/desktop/src/renderer/lib/github/openPullRequestLink/pullRequestLinkSurfaces.test.ts
Expanded workspaces always render DashboardSidebarExpandedWorkspaceRow. The legacy row and diff-stat component are removed, and the legacy row is dropped from the pull-request-link surface test.
Remove experiment state and related entries
apps/desktop/src/renderer/routes/_authenticated/settings/*, apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNewDashboardSidebarEnabled/*, apps/desktop/src/renderer/stores/new-dashboard-sidebar.ts, apps/desktop/src/renderer/lib/persisted-keys/*, packages/shared/src/constants.ts, packages/i18n/locales/*/messages.po
The new-sidebar setting, context, hook, store, feature-flag constant, persisted-key registry entry, and related locale strings are removed. The persisted key is added to the dead-key list.

Priority: ⬇️ Low

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Refactor

Possibly related PRs

  • superset-sh/superset#5887: It changes the same expanded workspace-row implementation that this PR retains as the only expanded row.

Suggested reviewers: avipeltz, saddlepaddle

Merge Risk: ⚪ Minimal · up to e1d02

The sidebar retirement is mergeable after normal checks; no specific user-facing regression remains established.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 5 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly describes the main change: removing the new-sidebar experiment and its legacy rendering path. It follows the required conventional commit format.
Description check Passed The description is detailed and covers the change, rationale, implementation, behavior changes, testing, known typecheck baseline failures, and follow-ups. It uses equivalent headings instead of the t…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is detailed and covers the change, rationale, implementation, behavior changes, testing, known typecheck baseline failures, and follow-ups. It uses equivalent headings instead of the template headings, but it is mostly complete and relevant.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ✅ Neon database branch

Thank you for your contribution! 🎉

@greptile-apps

greptile-apps Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues were found.

Summary

Makes the redesigned desktop sidebar the only sidebar.

  • Cloud workspaces now sit under their projects in the dashboard sidebar.
  • Every expanded workspace row now uses the redesigned layout.
  • The separate Cloud section and its sidebar header links are removed.
  • The sidebar experiment setting and its feature flag are removed.

No actionable issues found. Runtime UI checks were not performed.

Acknowledgments from Kitenite:

  • Removing the separate Cloud section and its Cloud workspaces / Projects header links is intentional.
  • Unused cloudSidebarStore group actions are deferred cleanup.
  • The old sibling order in useNavigateAwayFromWorkspace is a known, deferred issue that already affected the new sidebar.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Cloud workspace flag] --> B[useCloudWorkspaces]
  B --> C[Visible cloud rows]
  C --> D[Project placements]
  E[Local workspace placements] --> F[Sidebar projects and pinned rows]
  D --> F
  F --> G[DashboardSidebarExpandedWorkspaceRow]
Loading

Reviews (1) · Last reviewed commit: "refactor(desktop): remove the new-sideba..." · Reviewed by Greptile

Copy link
Copy Markdown
Contributor

Review verdict: minor issues. The removal is complete and works in the running desktop app at e1d02248. I checked inline cloud rows, the Local/Cloud filter, the Experimental settings list without "New sidebar", and that the boot sweep clears new-dashboard-sidebar. CI is green, and desktop typecheck shows 0 errors here.

  • Dead code: DashboardSidebarWorkspaceStatusProvider.tsx:333. The provider still fetches activeDiffStats and puts diffStats on every entry (lines 44, 54, 165–169, 394), but the legacy row was the only reader. Remove the field and the query.
  • Stale docs: plans/cloud-sidebar-components.md:44, the mobile CloudWorkspaceRow.tsx:22 comment and apps/mobile/plans/20260817-cloud-workspaces.md:9 still point at the deleted DashboardSidebarCloud* components.
  • Follow-up: cloudSidebarStore.ts:20. Persisted groups now have no reader or delete path. Add a persist migration with the group-action cleanup.

I did not run the cloud-flag-off path (the flag comes from PostHog) or the collapsed rail.

Full report with screenshots: https://app.superset.sh/page/pr-8790-review-remove-new-sidebar-experiment-fzhjvm

@expo

expo Bot commented Oct 23, 2026

Copy link
Copy Markdown

Preview update published for development build f943abc4 (fingerprint e28b4b490ccc). Open the build on your phone and scan:

Update group 3e276a5b

@Kitenite
Kitenite merged commit b825841 into main Oct 23, 2026
19 checks passed

This branch was previously deployed

1 inactive deployment
preview — e1d02248 Deployed Oct 22, 2026 by Kitenite via Deploy API #12580
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants