Skip to content

feat(desktop): help button and settings improvement#448

Merged
AviPeltz merged 2 commits intomainfrom
disgusted-lamprey-87c9f0
Dec 20, 2025
Merged

feat(desktop): help button and settings improvement#448
AviPeltz merged 2 commits intomainfrom
disgusted-lamprey-87c9f0

Conversation

@AviPeltz
Copy link
Copy Markdown
Collaborator

@AviPeltz AviPeltz commented Dec 20, 2025

Description

Related Issues

Type of Change

  • Bug fix
  • New feature
  • Documentation
  • [ x] Refactor
  • Other (please describe):

Testing

Screenshots (if applicable)

Additional Notes

Summary by CodeRabbit

  • Style
    • Refreshed Help menu with updated icon, inline label, and tooltip text ("Get help & support")
    • Enhanced Settings button with new icon and improved tooltip label ("Open settings")
    • Adjusted Help menu positioning within the workspace interface

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 20, 2025

Walkthrough

This PR refactors the Help menu and Settings button components in the desktop renderer, updating their visual appearance, tooltip behavior, and positioning. SettingsButton is relocated to a shared directory and the HelpMenu is moved from TopBar to WorkspaceHeader, requiring corresponding import path adjustments across multiple files.

Changes

Cohort / File(s) Summary
Help & Settings Menu UI Updates
apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx, apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
HelpMenu: Replaces QuestionMarkCircle icon with LifeBuoy icon and adds inline "Help" label; updates tooltip to "Get help & support" and repositions dropdown from bottom-end to top-start. SettingsButton: Replaces native button with Button component (ghost variant), swaps icon from HiOutlineCog6Tooth to CiSettings, updates tooltip text to "Open settings" with bottom placement.
Component Relocation & Import Reorganization
apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx, apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx, apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
Removes HelpMenu import/usage from TopBar; updates SettingsButton import paths to shared location (../SettingsButton); adds HelpMenu import and renders it alongside branch info in WorkspaceHeader left container.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Visual and tooltip styling updates with straightforward icon/label swaps
  • Import path reorganization is mechanical and low-risk
  • Each file contains isolated, focused changes with minimal interdependencies
  • No complex logic modifications or behavioral flow changes

Possibly related PRs

Poem

🐰 A bunny hops through menus old and new,
Help and Settings find their rightful place,
With lifesavers and gears in shiny hue,
The UI dances at a faster pace!

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description follows the required template structure but is largely empty, providing no concrete information about changes, testing, or context despite marking 'Refactor' as the type. Fill in the Description section explaining what was refactored and why; provide Testing steps to verify the UI changes; consider linking related issues if applicable.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: improvements to the help button and settings components with updated visuals, positioning, and styling across multiple files.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch disgusted-lamprey-87c9f0

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae1929a and 023b33e.

📒 Files selected for processing (5)
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx (2 hunks)
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx (2 hunks)
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx (1 hunks)
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx (1 hunks)
  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx (2 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
apps/desktop/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (apps/desktop/AGENTS.md)

apps/desktop/**/*.{ts,tsx,js,jsx}: For Electron interprocess communication, ALWAYS use trpc as defined in src/lib/trpc
Use alias as defined in tsconfig.json when possible
Prefer zustand for state management if it makes sense. Do not use effect unless absolutely necessary.

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Avoid using any type in TypeScript - maintain type safety unless absolutely necessary

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Run Biome for formatting, linting, import organization, and safe fixes at the root level using bun run lint:fix

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/{components,features}/**/[!.]*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Organize project structure with one folder per component: ComponentName/ComponentName.tsx with index.ts barrel export

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/{components,features}/**/*.{ts,tsx,test.ts,test.tsx,stories.tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Co-locate component dependencies (utils, hooks, constants, config, tests, stories) next to the file using them

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
apps/desktop/src/renderer/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Never import Node.js modules in renderer process or shared code - use only in main process (src/main/)

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
apps/desktop/src/{main,renderer,preload}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use type-safe IPC communication - define channel types in apps/desktop/src/shared/ipc-channels.ts before implementing handlers

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/*.{tsx,css}

📄 CodeRabbit inference engine (AGENTS.md)

Use React + TailwindCSS v4 + shadcn/ui for UI development

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
**/{components,features}/**/*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

**/{components,features}/**/*.tsx: Nest components in parent's components/ folder if used only once, promote to highest shared parent's components/ if used 2+ times
Use one component per file - do not combine multiple components in a single file

Files:

  • apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx
  • apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx
  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
  • apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx
  • apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx
🧠 Learnings (3)
📚 Learning: 2025-12-18T17:26:38.664Z
Learnt from: CR
Repo: superset-sh/superset PR: 0
File: apps/desktop/AGENTS.md:0-0
Timestamp: 2025-12-18T17:26:38.664Z
Learning: Applies to apps/desktop/**/*.{ts,tsx,js,jsx} : For Electron interprocess communication, ALWAYS use trpc as defined in `src/lib/trpc`

Applied to files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
📚 Learning: 2025-12-18T23:19:10.405Z
Learnt from: CR
Repo: superset-sh/superset PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-18T23:19:10.405Z
Learning: Applies to apps/desktop/src/renderer/**/*.{ts,tsx} : Never import Node.js modules in renderer process or shared code - use only in main process (src/main/)

Applied to files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
📚 Learning: 2025-12-18T23:19:10.405Z
Learnt from: CR
Repo: superset-sh/superset PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-18T23:19:10.405Z
Learning: Applies to apps/desktop/src/{main,renderer,preload}/**/*.{ts,tsx} : Use type-safe IPC communication - define channel types in apps/desktop/src/shared/ipc-channels.ts before implementing handlers

Applied to files:

  • apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx
🧬 Code graph analysis (3)
apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx (2)
apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx (1)
  • HelpMenu (21-85)
apps/desktop/src/renderer/screens/main/components/HelpMenu/index.ts (1)
  • HelpMenu (1-1)
apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx (2)
packages/ui/src/components/ui/button.tsx (1)
  • Button (60-60)
packages/ui/src/components/ui/tooltip.tsx (2)
  • TooltipTrigger (76-76)
  • TooltipContent (76-76)
apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx (2)
packages/ui/src/components/ui/dropdown-menu.tsx (2)
  • DropdownMenuTrigger (251-251)
  • DropdownMenuContent (252-252)
packages/ui/src/components/ui/tooltip.tsx (3)
  • TooltipTrigger (76-76)
  • TooltipContent (76-76)
  • Tooltip (76-76)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build
🔇 Additional comments (9)
apps/desktop/src/renderer/screens/main/components/TopBar/index.tsx (1)

2-2: LGTM - Import path correctly updated for shared SettingsButton.

The import path change from "./SettingsButton" to "../SettingsButton" correctly reflects the relocation of SettingsButton to a shared location at the sibling level, making it accessible to both TopBar and StartTopBar.

apps/desktop/src/renderer/screens/main/components/StartView/StartTopBar.tsx (1)

2-2: LGTM - Import path update aligns with SettingsButton relocation.

The import path change consistently references the shared SettingsButton component location, matching the pattern used in TopBar.

apps/desktop/src/renderer/screens/main/components/WorkspaceView/WorkspaceHeader/WorkspaceHeader.tsx (1)

23-23: LGTM - HelpMenu successfully relocated to WorkspaceHeader.

The HelpMenu component has been moved from TopBar to WorkspaceHeader's left-side container, positioned alongside branch information. The import path "../../HelpMenu" correctly resolves to the shared HelpMenu component, and the updated comment accurately reflects the new layout.

Also applies to: 101-103

apps/desktop/src/renderer/screens/main/components/SettingsButton/SettingsButton.tsx (3)

14-22: LGTM - Button component refactor follows UI library pattern.

The refactor from a native button to the Button component from @superset/ui/button with variant="ghost" and size="icon" aligns with shadcn/ui patterns and provides consistent styling. The no-drag className on line 19 is appropriately placed to ensure the button remains interactive within the draggable window area of the Electron app.


4-4: Icon change provides visual refresh.

The icon update from HiOutlineCog6Tooth to CiSettings provides a fresh visual appearance. The size class size-5 maintains appropriate icon dimensions for the ghost button variant.

Also applies to: 21-21


24-26: Tooltip improvements enhance UX.

The tooltip changes improve user experience:

  • Positioning to side="bottom" with sideOffset={8} is appropriate for a top bar button
  • Updated label "Open settings" is more descriptive than the previous "Settings"
apps/desktop/src/renderer/screens/main/components/HelpMenu/HelpMenu.tsx (3)

17-17: LGTM - Icon and label improvements enhance discoverability.

The icon change from HiOutlineQuestionMarkCircle to LuLifeBuoy along with the explicit "Help" text label makes the help functionality more recognizable and accessible. The life buoy icon is a universal symbol for support and assistance.

Also applies to: 50-51


47-47: Button styling provides better visual affordance.

The updated button styling with border (border-foreground/15), semi-transparent background (bg-foreground/[0.03]), and responsive hover states (hover:bg-foreground/[0.08]) provides clear visual feedback and integrates well with the WorkspaceHeader design language.


55-59: Positioning adjustments correctly adapt to WorkspaceHeader placement.

The tooltip and dropdown positioning changes are appropriate for the new placement in WorkspaceHeader (bottom area):

  • TooltipContent with side="top" displays above the button
  • DropdownMenuContent with align="start" and side="top" opens upward and left-aligned
  • sideOffset={8} provides consistent spacing

This positioning prevents the dropdown from being cut off at the bottom of the viewport.


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.

@AviPeltz AviPeltz marked this pull request as ready for review December 20, 2025 19:41
@AviPeltz AviPeltz merged commit 8df8b49 into main Dec 20, 2025
5 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

Service Status
Neon Database (Neon)

Thank you for your contribution! 🎉


Preview resources have been processed for cleanup

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