Skip to content

feat: Implement Command Palette with Keyboard Navigation#2204

Merged
MuhammadKhalilzadeh merged 4 commits intodevelopfrom
feat/command-palette
Sep 30, 2025
Merged

feat: Implement Command Palette with Keyboard Navigation#2204
MuhammadKhalilzadeh merged 4 commits intodevelopfrom
feat/command-palette

Conversation

@gorkem-bwl
Copy link
Copy Markdown
Contributor

Summary

  • Implement comprehensive command palette using cmdk library with Cmd+K/Ctrl+K keyboard shortcuts
  • Add command registry system with permission-based filtering for role-based access control
  • Create action handler supporting navigation, modal triggers, custom functions, filters, and exports
  • Integrate "What's New" section with dismissible functionality and gradient styling
  • Add navigation hints footer with keyboard shortcuts (↑↓ Navigate, ↵ Select, esc Close)
  • Implement Vercel-style minimalist design with Material-UI integration and dark mode support

Test plan

  • Verify command palette opens with Cmd+K (Mac) or Ctrl+K (Windows/Linux)
  • Test command search functionality with real-time filtering
  • Verify keyboard navigation (arrow keys, enter, escape) works correctly
  • Test all navigation commands redirect to correct pages
  • Verify permission-based command filtering works for different user roles
  • Test "What's New" section dismissal and close functionality
  • Verify footer navigation hints display correctly
  • Test dark mode styling and transitions
  • Verify fade-out effect on scrollable content
  • Test responsive design on mobile devices
  • Verify team management function opens correct settings tab

- Add comprehensive command palette using cmdk library
- Implement command registry system with permission-based filtering
- Create action handler for navigation, modals, functions, filters, and exports
- Add keyboard shortcuts (Cmd+K/Ctrl+K) for quick access
- Integrate with existing VerifyWise navigation and permissions
- Add "What's New" section with dismissible functionality
- Include navigation hints footer with keyboard shortcuts
- Support Vercel-style minimalist design with Material-UI integration
- Add fade-out effect for scrollable content
- Implement dark mode support throughout
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Sep 23, 2025

Warning

Rate limit exceeded

@gorkem-bwl has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 13 minutes and 58 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between c3be15a and 88e00a6.

⛔ Files ignored due to path filters (1)
  • Clients/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • Clients/package.json (1 hunks)
  • Clients/src/App.tsx (3 hunks)
  • Clients/src/application/commands/actionHandler.ts (1 hunks)
  • Clients/src/application/commands/index.ts (1 hunks)
  • Clients/src/application/commands/registry.ts (1 hunks)
  • Clients/src/application/commands/types.ts (1 hunks)
  • Clients/src/application/hooks/useCommandPalette.ts (1 hunks)
  • Clients/src/application/tools/log.engine.ts (1 hunks)
  • Clients/src/presentation/components/CommandPalette/ErrorBoundary.tsx (1 hunks)
  • Clients/src/presentation/components/CommandPalette/index.tsx (1 hunks)
  • Clients/src/presentation/components/CommandPalette/styles.css (1 hunks)
  • Clients/src/presentation/pages/SettingsPage/index.tsx (2 hunks)
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/command-palette

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
🧪 Early access (Sonnet 4.5): enabled

We are currently testing the Sonnet 4.5 model, which is expected to improve code review quality. However, this model may lead to increased noise levels in the review comments. Please disable the early access features if the noise level causes any inconvenience.

Note:

  • Public repositories are always opted into early access features.
  • You can enable or disable early access features from the CodeRabbit UI or by updating the CodeRabbit configuration file.

Comment @coderabbitai help to get the list of available commands and usage tips.

gorkem-bwl and others added 3 commits September 23, 2025 21:08
- Remove unused action and filter commands (modals/filters to be implemented later)
- Remove Export System Data command as feature not implemented
- Make group name fonts smaller (12px → 11px) for cleaner appearance
- Add spacing before release date in What's New section
- Fix fade-out effect positioning to stay fixed at bottom of palette
- Clean up unused Material-UI imports
CRITICAL FIXES:
- Remove all 'any' types, add proper TypeScript interfaces for command payloads
- Secure permission system with validation and error handling
- Add CommandPaletteErrorBoundary to prevent app crashes
- Fix memory leak in useCommandPalette hook with proper cleanup

PERFORMANCE OPTIMIZATIONS:
- Memoize action handlers to prevent unnecessary re-renders
- Replace useCallback with useMemo for action handlers object

ERROR HANDLING:
- Add comprehensive validation in action handler execute method
- Improve error logging with detailed context and stack traces
- Add input validation to registerCommand method

ACCESSIBILITY ENHANCEMENTS:
- Add ARIA labels, roles, and descriptions throughout
- Implement screen reader support with sr-only class
- Add high contrast mode support
- Improve focus management and keyboard navigation
- Add semantic HTML structure with proper roles

MAINTAINABILITY:
- Better error messages with actionable information
- Comprehensive logging for debugging
- Type safety improvements across all components

All issues from senior code review have been addressed.
- Add details property to LogProps interface in log.engine.ts
- Revert icon type to React.ComponentType<any> for compatibility
- Change function payload params type to unknown
- Wrap command icons in Box component to fix sx prop type issue

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@gorkem-bwl gorkem-bwl marked this pull request as ready for review September 30, 2025 02:09
@gorkem-bwl
Copy link
Copy Markdown
Contributor Author

Let's merge this @MuhammadKhalilzadeh without mentioning anything on the UI about cmd-k/ctrl-k search.

I'll then add a method to add new risks, models, project names to the search list. We can test and then announce on the UI.

@MuhammadKhalilzadeh
Copy link
Copy Markdown
Collaborator

Let's merge this @MuhammadKhalilzadeh without mentioning anything on the UI about cmd-k/ctrl-k search.

I'll then add a method to add new risks, models, project names to the search list. We can test and then announce on the UI.

Of course 😃🤠

@MuhammadKhalilzadeh MuhammadKhalilzadeh added enhancement New feature or request frontend Frontend related tasks/issues labels Sep 30, 2025
@MuhammadKhalilzadeh MuhammadKhalilzadeh added this to the 1.5 milestone Sep 30, 2025
@MuhammadKhalilzadeh MuhammadKhalilzadeh merged commit c895ad1 into develop Sep 30, 2025
2 checks passed
@MuhammadKhalilzadeh MuhammadKhalilzadeh deleted the feat/command-palette branch September 30, 2025 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request frontend Frontend related tasks/issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants