Skip to content

feat: Spotlight command palette, sidebar settings gear, and UI improvements#57

Merged
vuon9 merged 22 commits intomainfrom
feature/spotlight-command-palette
Mar 6, 2026
Merged

feat: Spotlight command palette, sidebar settings gear, and UI improvements#57
vuon9 merged 22 commits intomainfrom
feature/spotlight-command-palette

Conversation

@vuon9
Copy link
Owner

@vuon9 vuon9 commented Mar 3, 2026

Summary

This PR introduces several UI and UX improvements to DevToolbox:

🎯 Major Features

1. Spotlight Command Palette (Global Hotkey)

  • New spotlight window accessible via Cmd+Shift+Space (macOS) or Ctrl+Shift+Space (Windows/Linux)
  • Frameless floating window that appears above all apps and Spaces
  • Hidden by default, toggles on/off with hotkey
  • Provides quick tool access without switching to main window

2. Settings Icon in Sidebar

  • Gear icon added to bottom-right of sidebar
  • Clicking opens the Settings modal
  • Sidebar now has a mini mode (48px width) when collapsed
  • Settings icon remains visible even when sidebar is collapsed
  • Moved Settings modal management from TitleBar to App component

3. System Tray Improvements

  • Added tray icons for macOS (template) and Windows/Linux (light/dark mode)
  • Tray menu now includes:
    • "Show DevToolbox" - shows/focuses main window
    • "Open Spotlight" - toggles spotlight window
    • "Quit" - exits application

4. Window Title Bar Fix

  • Fixed main window title bar being hidden
  • Changed from MacTitleBarHiddenInset to visible title bar with AppearsTransparent: false
  • Window now properly displays "DevToolbox" title

🔧 Technical Changes

Backend (main.go):

  • Added github.com/wailsapp/wails/v3/pkg/icons import for tray icons
  • Registered spotlight-related events (spotlight:closed, spotlight:close, spotlight:command-selected)
  • Created spotlight window with Frameless: true, Hidden: true, and macOS collection behaviors
  • Fixed main window title bar configuration

Frontend:

  • Sidebar.jsx: Added settings gear icon with click handler
  • App.jsx: Moved SettingsModal from TitleBar to App level, added isSettingsOpen state
  • App.css: Updated sidebar styles for mini mode and footer positioning
  • TitleBar.jsx: Removed SettingsModal (now in App)

🎨 UI/UX Changes

Component Before After
Sidebar Collapsed completely off-screen Collapses to 48px mini width with settings icon visible
Settings Only in TitleBar Also accessible from sidebar bottom
Title Bar Hidden Visible with app title
Spotlight N/A New floating command palette window
Tray Icon Generic Platform-specific icons

📁 Files Modified

  • main.go - Tray icons, spotlight window, title bar fix
  • frontend/src/App.jsx - Settings modal management
  • frontend/src/App.css - Sidebar mini mode styles
  • frontend/src/components/Sidebar.jsx - Settings gear icon
  • frontend/src/components/TitleBar.jsx - Removed SettingsModal
  • Plus 12 other files for spotlight implementation and UI polish

🧪 Testing

  • Spotlight toggles correctly with global hotkey
  • Settings opens from both sidebar and TitleBar
  • Sidebar collapse/expand preserves settings icon visibility
  • Tray menu items work correctly on macOS

vuon9 added 20 commits March 3, 2026 16:15
- Fix compilation error in css_selector_test.go (html package shadowing)
- Fix test expectations: change literal \n to actual newlines
- Fix CSS descendant selector to respect ancestor relationships
- Fix XML attribute matching to handle any attribute order
- Fix nested XML extraction test to properly count elements
- Add support for element.class selectors (e.g., div.header)
- Add support for double quotes in XPath expressions

All tests now passing.
- Add golang-design/hotkey library for true system-wide shortcuts
- Change hotkey to Cmd+Shift+Space (macOS) / Ctrl+Shift+Space (Win/Linux)
- Update window height to 480px (80px search + 400px results)
- Redesign results panel as unified glassmorphism component
- Add smooth transitions for panel appearance
- Update tray menu label to reflect new hotkey
- Use Carbon TextInput component instead of raw input
- Apply Carbon Design System CSS tokens and variables
- Match CommandPalette layout with header/body sections
- Add keyboard shortcut hints (kbd elements)
- Use consistent border-radius, padding, and spacing
- Update selected/hover states to match Carbon patterns
…ibility

- Add settings gear icon to bottom-right of sidebar with click handler
- Sidebar now collapses to mini-width (48px) instead of hiding completely
- Settings icon remains visible in collapsed mode for easy access
- Fix main window title bar to be visible (was hidden with MacTitleBarHiddenInset)
- Main window now shows proper title bar with DevToolbox title
@vuon9 vuon9 changed the title feat: Spotlight-like command palette feat: Spotlight command palette, sidebar settings gear, and UI improvements Mar 6, 2026
Resolved conflicts:
- .entire/.gitignore: deleted (matches main)
- frontend/bindings/.../eventdata.d.ts: kept spotlight events
- frontend/bun.lock: accepted main version
- frontend/package.json: merged devDependencies (kept both esbuild and vitest packages)

Incorporated changes from main:
- CI workflow improvements
- New test files and vitest config
- Prettier ignore updates
- Wails bindings updates
@vuon9 vuon9 enabled auto-merge (squash) March 6, 2026 15:10
- Fix spotlight.html: add proper DOCTYPE, head/body structure
- Run Prettier on all modified files
- Fix CI formatting check failures
@github-actions
Copy link

github-actions bot commented Mar 6, 2026

Code Coverage

Package Line Rate Health
devtoolbox/internal/barcode 90%
devtoolbox/internal/codeformatter 78%
devtoolbox/internal/converter 60%
devtoolbox/internal/datagenerator 91%
devtoolbox/internal/datetimeconverter 73%
devtoolbox/internal/jwt 42%
devtoolbox/internal/settings 0%
Summary 68% (3504 / 5175)

Minimum allowed line rate is 60%

@vuon9 vuon9 merged commit 8094887 into main Mar 6, 2026
2 checks passed
@vuon9 vuon9 deleted the feature/spotlight-command-palette branch March 6, 2026 15:15
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