Skip to content

feat(desktop): re-add Settings to org dropdown for v1#4093

Merged
AviPeltz merged 2 commits into
mainfrom
add-settings-to-org-dropdown-in-two-places
May 5, 2026
Merged

feat(desktop): re-add Settings to org dropdown for v1#4093
AviPeltz merged 2 commits into
mainfrom
add-settings-to-org-dropdown-in-two-places

Conversation

@AviPeltz

@AviPeltz AviPeltz commented May 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Re-adds the Settings entry to OrganizationDropdown so v1 users can reach /settings/account from the org menu (it was removed when Settings moved to the v2 sidebar footer).
  • Marked with a TODO(v1) comment so it can be removed once v1 is gone.
  • Because the dropdown is shared, the item now shows in both places it's mounted: the topbar (TopBar) and the sidebar header (DashboardSidebarHeader, collapsed + expanded).

Test plan

  • In v1 mode, open the topbar org dropdown — Settings appears with the OPEN_SETTINGS hotkey shortcut and navigates to /settings/account.
  • In v1 mode, open the sidebar header org dropdown (both collapsed and expanded) — Settings appears in the same spot.
  • Verify hotkey shortcut renders only when assigned.
  • bun run typecheck and bun run lint are clean.

Summary by cubic

Re-added a Settings item to the organization dropdown so v1 users can open /settings/account from the menu again. It appears in both the topbar and sidebar header dropdowns, shows the OPEN_SETTINGS shortcut via HotkeyMenuShortcut, and is tagged TODO(v1) for removal after v1.

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

Summary by CodeRabbit

  • New Features
    • Added a Settings entry to the organization dropdown menu, including a gear icon and an optional keyboard shortcut indicator for quicker access to account settings and improved navigation.

Settings was removed from the OrganizationDropdown when it moved to the
sidebar footer. v1 still relies on the dropdown, so add it back with a
TODO to remove once v1 is gone. Item appears in both the topbar
dropdown and the sidebar header dropdown.
@coderabbitai

coderabbitai Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ffe9c996-fccd-4cf6-b36d-5896fdf5d076

📥 Commits

Reviewing files that changed from the base of the PR and between f5e5483 and c30e646.

📒 Files selected for processing (1)
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx

📝 Walkthrough

Walkthrough

Adds a "Settings" entry to the OrganizationDropdown menu: imports a cog icon and the HotkeyMenuShortcut component, renders a DropdownMenuItem that navigates to /settings/account, shows the cog icon and label, and displays the OPEN_SETTINGS hotkey shortcut.

Changes

Organization Dropdown Settings Item

Layer / File(s) Summary
Imports
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx
Adds HiOutlineCog6Tooth import from react-icons/hi2 and imports HotkeyMenuShortcut from renderer/components/HotkeyMenuShortcut.
UI Addition / Core
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx
Inserts a new DropdownMenuItem labeled "Settings" that navigates to /settings/account, includes the cog icon, and renders HotkeyMenuShortcut with hotkeyId="OPEN_SETTINGS".
Comment / TODO
apps/.../OrganizationDropdown.tsx
Adds a TODO noting the Settings placement is temporary for v1.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

🐰
A tiny cog hops into view,
I tuck a shortcut, neat and true,
Click the menu, find the key,
Settings ready — quick as me! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main change: re-adding a Settings item to the organization dropdown menu for v1 users.
Description check ✅ Passed The description is comprehensive and well-structured, covering the changes, rationale, and a detailed test plan with all required template sections addressed.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch add-settings-to-org-dropdown-in-two-places

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.

@greptile-apps

greptile-apps Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

  • Re-adds a Settings entry to OrganizationDropdown for v1 users, navigating to /settings/account with OPEN_SETTINGS hotkey support and a TODO(v1) marker for future cleanup.
  • The hotkey display logic is implemented inline, duplicating the existing HotkeyMenuShortcut component (renderer/components/HotkeyMenuShortcut) which handles the same useHotkeyDisplay + "Unassigned" guard + DropdownMenuShortcut pattern.
  • No v1/v2 version gate is applied — the Settings item appears in all variants (topbar, expanded, collapsed), which the PR description acknowledges as intentional.

Confidence Score: 4/5

Safe to merge; only a style-level duplication of an existing abstraction.

The change is straightforward and functionally correct. The only issue is that the inline hotkey-display pattern duplicates the existing HotkeyMenuShortcut component, which is a P2 style concern.

No files require special attention beyond the single changed file.

Important Files Changed

Filename Overview
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx Adds a Settings menu item with hotkey shortcut to OrganizationDropdown for v1 compatibility; the hotkey display logic duplicates the existing HotkeyMenuShortcut abstraction.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[OrganizationDropdown rendered] --> B{variant?}
    B -->|topbar| C[TopBar]
    B -->|expanded| D[DashboardSidebarHeader expanded]
    B -->|collapsed| E[DashboardSidebarHeader collapsed]
    C & D & E --> F[DropdownMenu opens]
    F --> G[Settings item - NEW]
    G --> H{settingsHotkey !== 'Unassigned'?}
    H -->|yes| I[Render DropdownMenuShortcut]
    H -->|no| J[No shortcut shown]
    I & J --> K[onSelect → navigate to /settings/account]
    F --> L[Manage members]
    F --> M[Switch organization]
    F --> N[Log out]
Loading
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx:25
**Duplicates existing `HotkeyMenuShortcut` abstraction**

`HotkeyMenuShortcut` in `renderer/components/HotkeyMenuShortcut` already encapsulates the `useHotkeyDisplay` call, the `"Unassigned"` guard, and the `DropdownMenuShortcut` render. The inline expansion here duplicates that logic and leaves the `settingsHotkey` variable unused after the refactor.

```suggestion
import { HotkeyMenuShortcut } from "renderer/components/HotkeyMenuShortcut/HotkeyMenuShortcut";
```

### Issue 2 of 2
apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx:139-147
**Use `HotkeyMenuShortcut` instead of inline expansion**

The codebase has a dedicated `HotkeyMenuShortcut` component that handles the `useHotkeyDisplay` + `"Unassigned"` guard + `DropdownMenuShortcut` pattern. Using it here removes the need for the `settingsHotkey` local variable and keeps the pattern consistent across the app.

```suggestion
				<DropdownMenuItem
					onSelect={() => navigate({ to: "/settings/account" })}
				>
					<HiOutlineCog6Tooth className="h-4 w-4" />
					<span>Settings</span>
					<HotkeyMenuShortcut hotkeyId="OPEN_SETTINGS" />
				</DropdownMenuItem>
```

Reviews (1): Last reviewed commit: "feat(desktop): re-add Settings entry to ..." | Re-trigger Greptile

HiOutlineCog6Tooth,
} from "react-icons/hi2";
import { useCurrentPlan } from "renderer/hooks/useCurrentPlan";
import { useHotkeyDisplay } from "renderer/hotkeys";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Duplicates existing HotkeyMenuShortcut abstraction

HotkeyMenuShortcut in renderer/components/HotkeyMenuShortcut already encapsulates the useHotkeyDisplay call, the "Unassigned" guard, and the DropdownMenuShortcut render. The inline expansion here duplicates that logic and leaves the settingsHotkey variable unused after the refactor.

Suggested change
import { useHotkeyDisplay } from "renderer/hotkeys";
import { HotkeyMenuShortcut } from "renderer/components/HotkeyMenuShortcut/HotkeyMenuShortcut";
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx
Line: 25

Comment:
**Duplicates existing `HotkeyMenuShortcut` abstraction**

`HotkeyMenuShortcut` in `renderer/components/HotkeyMenuShortcut` already encapsulates the `useHotkeyDisplay` call, the `"Unassigned"` guard, and the `DropdownMenuShortcut` render. The inline expansion here duplicates that logic and leaves the `settingsHotkey` variable unused after the refactor.

```suggestion
import { HotkeyMenuShortcut } from "renderer/components/HotkeyMenuShortcut/HotkeyMenuShortcut";
```

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines +139 to +147
<DropdownMenuItem
onSelect={() => navigate({ to: "/settings/account" })}
>
<HiOutlineCog6Tooth className="h-4 w-4" />
<span>Settings</span>
{settingsHotkey !== "Unassigned" && (
<DropdownMenuShortcut>{settingsHotkey}</DropdownMenuShortcut>
)}
</DropdownMenuItem>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 Use HotkeyMenuShortcut instead of inline expansion

The codebase has a dedicated HotkeyMenuShortcut component that handles the useHotkeyDisplay + "Unassigned" guard + DropdownMenuShortcut pattern. Using it here removes the need for the settingsHotkey local variable and keeps the pattern consistent across the app.

Suggested change
<DropdownMenuItem
onSelect={() => navigate({ to: "/settings/account" })}
>
<HiOutlineCog6Tooth className="h-4 w-4" />
<span>Settings</span>
{settingsHotkey !== "Unassigned" && (
<DropdownMenuShortcut>{settingsHotkey}</DropdownMenuShortcut>
)}
</DropdownMenuItem>
<DropdownMenuItem
onSelect={() => navigate({ to: "/settings/account" })}
>
<HiOutlineCog6Tooth className="h-4 w-4" />
<span>Settings</span>
<HotkeyMenuShortcut hotkeyId="OPEN_SETTINGS" />
</DropdownMenuItem>
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx
Line: 139-147

Comment:
**Use `HotkeyMenuShortcut` instead of inline expansion**

The codebase has a dedicated `HotkeyMenuShortcut` component that handles the `useHotkeyDisplay` + `"Unassigned"` guard + `DropdownMenuShortcut` pattern. Using it here removes the need for the `settingsHotkey` local variable and keeps the pattern consistent across the app.

```suggestion
				<DropdownMenuItem
					onSelect={() => navigate({ to: "/settings/account" })}
				>
					<HiOutlineCog6Tooth className="h-4 w-4" />
					<span>Settings</span>
					<HotkeyMenuShortcut hotkeyId="OPEN_SETTINGS" />
				</DropdownMenuItem>
```

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@AviPeltz AviPeltz merged commit a540267 into main May 5, 2026
9 of 10 checks passed
@github-actions

github-actions Bot commented May 5, 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! 🎉

saddlepaddle pushed a commit that referenced this pull request May 6, 2026
* feat(desktop): re-add Settings entry to org dropdown for v1

Settings was removed from the OrganizationDropdown when it moved to the
sidebar footer. v1 still relies on the dropdown, so add it back with a
TODO to remove once v1 is gone. Item appears in both the topbar
dropdown and the sidebar header dropdown.

* refactor(desktop): use HotkeyMenuShortcut helper in org dropdown
@Kitenite Kitenite deleted the add-settings-to-org-dropdown-in-two-places branch May 6, 2026 04:51
MocA-Love pushed a commit to MocA-Love/superset that referenced this pull request May 21, 2026
* feat(desktop): re-add Settings entry to org dropdown for v1

Settings was removed from the OrganizationDropdown when it moved to the
sidebar footer. v1 still relies on the dropdown, so add it back with a
TODO to remove once v1 is gone. Item appears in both the topbar
dropdown and the sidebar header dropdown.

* refactor(desktop): use HotkeyMenuShortcut helper in org dropdown
MocA-Love added a commit to MocA-Love/superset that referenced this pull request May 21, 2026
…o-v2

superset-sh#4113 remove skip-all onboarding affordance: integrate fork's
githubSyncService import alongside upstream's selectExternalWorktreesForImport
in workspaces/procedures/git-status.ts.

superset-sh#4115 default new users to v2 + v2 banner in v1:
- Adopt upstream's V2_CLOUD flag removal: collapse useIsV2CloudEnabled to
  a plain boolean (drop isRemoteV2Enabled) and update every callsite
  back to scalar destructure (TopBar, settings/{behavior,experimental,
  git,links,terminal}/page, SettingsSidebar/{GeneralSettings,SettingsSidebar}).
- ExperimentalSettings.tsx: drop isRemoteV2Enabled-gated 'Early access
  not enabled' note and Switch disabled prop; simplify track call.
- v2-local-override.ts: keep fork's IS_DEV strong default (dev installs
  land on v2) alongside upstream's hasPriorSupersetUsage probe
  (initialOptInV2 = IS_DEV ? true : !hasPriorSupersetUsage()).
- TopBar.tsx: integrate upstream's useWorkspaceSidebarStore reads with
  fork's existing chrome layout.
- useMigrateV1DataToV2/useMigrateV1DataToV2.ts: re-delete (DU; upstream
  attempted to revive via superset-sh#4115 vocabulary cleanup; cycle 38 rationale
  still applies — fork trpc lacks the required procedures).

superset-sh#4125 onboarding auto-skip drop, SetupButton design alignment: clean
cherry-pick.

superset-sh#4175 keep Skip-for-now visible during loading: clean cherry-pick.
Replaces v2Projects live query with imperative v2Project.list trpc
call; backfill list procedure (jwtProcedure variant) into fork's
v2-project router (mirrors get pattern using ctx.organizationIds
membership check).

superset-sh#4214 stable Adopt button + Adopt-all (skipped): touches v1
ImportWorkspacesPage/V1ImportModal which the fork has removed. The
upstream improvements (idempotent adopt-all guard, smarter skip-when-
already-running) have no shipping surface in this fork; pick up if and
when v1 import modal is reintroduced.

superset-sh#4093 re-add Settings to org dropdown for v1: clean cherry-pick.
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.

1 participant