Skip to content

Comments

feat: remove old hotkeys and add new View hotkeys#1918

Merged
ahmetskilinc merged 2 commits intostagingfrom
08-05-new_list_hotkeys
Aug 5, 2025
Merged

feat: remove old hotkeys and add new View hotkeys#1918
ahmetskilinc merged 2 commits intostagingfrom
08-05-new_list_hotkeys

Conversation

@ahmetskilinc
Copy link
Contributor

@ahmetskilinc ahmetskilinc commented Aug 5, 2025

Add Numeric Hotkeys for Category Selection in Mail List

Description

This PR adds keyboard shortcuts for quickly toggling mail categories in the inbox view:

  • Numbers 1-9 toggle the corresponding categories (based on their index)
  • Number 0 clears all selected labels

The implementation uses React Hotkeys Hook to register these shortcuts within the mail-list scope, making View switching much faster for keyboard-oriented users.

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🎨 UI/UX improvement

Areas Affected

  • User Interface/Experience

Testing Done

  • Manual testing performed

Checklist

  • I have performed a self-review of my code
  • My changes generate no new warnings

Summary by CodeRabbit

  • New Features

    • Added keyboard shortcuts (number keys 1–9) to quickly toggle category label filters in the mail category dropdown.
    • Added a keyboard shortcut (0 key) to clear all active category label filters.
  • Refactor

    • Disabled previous keyboard shortcuts for switching mail list categories to avoid conflicts and streamline shortcut behavior.

@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Category Hotkey Logic Inconsistency with Category Settings Updates Medium 1. Start the application. 2. Modify the categorySettings (either directly in the code or through some UI that allows category management) by reordering the categories. 3. Press the number keys corresponding to the original category order. 4. Observe that the hotkeys select categories based on their original order, not their current order. The category hotkey logic iterates through the categorySettings only once when the component mounts. It assigns hotkeys (1-9) based on the initial order of categories. However, if the categorySettings are subsequently updated (e.g., categories are reordered), the hotkey assignments become inconsistent. The hotkeys will still refer to the categories in their original positions, not their new positions.

To fix this, the useHotkeys calls need to be re-evaluated whenever categorySettings changes. This can be achieved by including categorySettings in the dependency array of the useEffect hook that contains the forEach loop.

Comments? Email us.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 5, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Keyboard shortcut support for toggling category label filters has been added to the CategoryDropdown component using react-hotkeys-hook. Simultaneously, all previous hotkey logic related to mail list category switching in the dedicated hotkeys module has been commented out, effectively shifting category shortcut handling to the dropdown component.

Changes

Cohort / File(s) Change Summary
CategoryDropdown Hotkey Integration
apps/mail/components/mail/mail.tsx
Integrated hotkeys (1-9, 0) for toggling and clearing category label filters directly within the dropdown component using react-hotkeys-hook.
Mail List Hotkey Removal
apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
Commented out all code related to category switching via hotkeys, including imports, callbacks, and handlers. No changes to other hotkey logic.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CategoryDropdown
    participant LabelState

    User->>CategoryDropdown: Presses number key (1-9)
    CategoryDropdown->>LabelState: Toggle corresponding category label
    User->>CategoryDropdown: Presses '0'
    CategoryDropdown->>LabelState: Clear all labels
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested labels

design

Suggested reviewers

  • MrgSub

Poem

🚀 Hotkeys now dance in the dropdown's domain,
Categories toggled with minimal strain.
The old code's asleep, its job now complete,
As shortcuts and labels elegantly meet.
Press one, press zero, let filters ignite—
The future of mail feels speedy and light!

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 10eae48 and 6b447f1.

📒 Files selected for processing (2)
  • apps/mail/components/mail/mail.tsx (2 hunks)
  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx (4 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit Inference Engine (AGENT.md)

**/*.{js,jsx,ts,tsx}: Use 2-space indentation
Use single quotes for strings
Limit lines to 100 characters in length
Semicolons are required at the end of statements

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{js,jsx,ts,tsx,css,scss}

📄 CodeRabbit Inference Engine (AGENT.md)

Use Prettier with sort-imports and Tailwind plugins for code formatting

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (AGENT.md)

Enable TypeScript strict mode

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{css,js,ts,jsx,tsx,mdx}

📄 CodeRabbit Inference Engine (.cursor/rules/tailwind-css-v4.mdc)

**/*.{css,js,ts,jsx,tsx,mdx}: Chain variants together for composable variants (e.g., group-has-data-potato:opacity-100).
Use new variants such as starting, not-*, inert, nth-*, in-*, open (for :popover-open), and ** for all descendants.
Do not use deprecated utilities like bg-opacity-*, text-opacity-*, border-opacity-*, and divide-opacity-*; use the new syntax (e.g., bg-black/50).
Use renamed utilities: shadow-sm is now shadow-xs, shadow is now shadow-sm, drop-shadow-sm is now drop-shadow-xs, drop-shadow is now drop-shadow-sm, blur-sm is now blur-xs, blur is now blur-sm, rounded-sm is now rounded-xs, rounded is now rounded-sm, outline-none is now outline-hidden.
Use bg-(--brand-color) syntax for CSS variables in arbitrary values instead of bg-[--brand-color].
Stacked variants now apply left-to-right instead of right-to-left.

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
🧠 Learnings (9)
📓 Common learnings
Learnt from: retrogtx
PR: Mail-0/Zero#1328
File: apps/mail/lib/hotkeys/mail-list-hotkeys.tsx:202-209
Timestamp: 2025-06-18T17:26:50.918Z
Learning: In apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchCategoryByIndex function using hardcoded indices for category hotkeys does not break when users reorder categories, contrary to the theoretical index-shifting issue. The actual implementation has constraints or mechanisms that prevent hotkey targeting issues.
📚 Learning: in apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchcategorybyindex function using hardcoded i...
Learnt from: retrogtx
PR: Mail-0/Zero#1328
File: apps/mail/lib/hotkeys/mail-list-hotkeys.tsx:202-209
Timestamp: 2025-06-18T17:26:50.918Z
Learning: In apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchCategoryByIndex function using hardcoded indices for category hotkeys does not break when users reorder categories, contrary to the theoretical index-shifting issue. The actual implementation has constraints or mechanisms that prevent hotkey targeting issues.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
📚 Learning: applies to **/*.{js,jsx,ts,tsx,css,scss} : use prettier with sort-imports and tailwind plugins for c...
Learnt from: CR
PR: Mail-0/Zero#0
File: AGENT.md:0-0
Timestamp: 2025-08-03T20:41:43.899Z
Learning: Applies to **/*.{js,jsx,ts,tsx,css,scss} : Use Prettier with sort-imports and Tailwind plugins for code formatting

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: applies to **/postcss.config.{js,cjs,mjs,ts} : do not use `postcss-import` or `autoprefixer` with ta...
Learnt from: CR
PR: Mail-0/Zero#0
File: .cursor/rules/tailwind-css-v4.mdc:0-0
Timestamp: 2025-08-03T20:42:04.207Z
Learning: Applies to **/postcss.config.{js,cjs,mjs,ts} : Do not use `postcss-import` or `autoprefixer` with Tailwind v4.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: applies to **/*.{css,js,ts,jsx,tsx,mdx} : do not use deprecated utilities like `bg-opacity-*`, `text...
Learnt from: CR
PR: Mail-0/Zero#0
File: .cursor/rules/tailwind-css-v4.mdc:0-0
Timestamp: 2025-08-03T20:42:04.207Z
Learning: Applies to **/*.{css,js,ts,jsx,tsx,mdx} : Do not use deprecated utilities like `bg-opacity-*`, `text-opacity-*`, `border-opacity-*`, and `divide-opacity-*`; use the new syntax (e.g., `bg-black/50`).

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: applies to **/*.{css,js,ts,jsx,tsx,mdx} : use renamed utilities: `shadow-sm` is now `shadow-xs`, `sh...
Learnt from: CR
PR: Mail-0/Zero#0
File: .cursor/rules/tailwind-css-v4.mdc:0-0
Timestamp: 2025-08-03T20:42:04.207Z
Learning: Applies to **/*.{css,js,ts,jsx,tsx,mdx} : Use renamed utilities: `shadow-sm` is now `shadow-xs`, `shadow` is now `shadow-sm`, `drop-shadow-sm` is now `drop-shadow-xs`, `drop-shadow` is now `drop-shadow-sm`, `blur-sm` is now `blur-xs`, `blur` is now `blur-sm`, `rounded-sm` is now `rounded-xs`, `rounded` is now `rounded-sm`, `outline-none` is now `outline-hidden`.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: applies to **/*.{css,js,ts,jsx,tsx,mdx} : use new variants such as `starting`, `not-*`, `inert`, `nt...
Learnt from: CR
PR: Mail-0/Zero#0
File: .cursor/rules/tailwind-css-v4.mdc:0-0
Timestamp: 2025-08-03T20:42:04.207Z
Learning: Applies to **/*.{css,js,ts,jsx,tsx,mdx} : Use new variants such as `starting`, `not-*`, `inert`, `nth-*`, `in-*`, `open` (for `:popover-open`), and `**` for all descendants.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: in react hook form, avoid using useeffect for form state synchronization when the values prop can ha...
Learnt from: retrogtx
PR: Mail-0/Zero#1354
File: apps/mail/components/ui/prompts-dialog.tsx:85-88
Timestamp: 2025-06-20T05:03:16.944Z
Learning: In React Hook Form, avoid using useEffect for form state synchronization when the values prop can handle reactive updates automatically. The values prop is specifically designed for this purpose and is more optimal than manual useEffect-based synchronization.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
📚 Learning: during testing phases, debug logging should be kept active in apps/server/src/lib/email-verification...
Learnt from: retrogtx
PR: Mail-0/Zero#1622
File: apps/server/src/lib/email-verification.ts:189-189
Timestamp: 2025-07-05T05:27:24.623Z
Learning: During testing phases, debug logging should be kept active in apps/server/src/lib/email-verification.ts for BIMI validation and email verification debugging, even if it's verbose.

Applied to files:

  • apps/mail/components/mail/mail.tsx
🔇 Additional comments (2)
apps/mail/components/mail/mail.tsx (2)

12-12: Solid import for our Mars-level hotkey system!

Perfect addition of the react-hotkeys-hook imports - exactly what we need for our keyboard navigation upgrade.


705-716: Perfect implementation for the reset functionality!

This '0' key handler is engineered beautifully - clean, simple, and follows all the React rules like a perfectly executed SpaceX landing. The clear-all functionality will be super useful for rapid navigation.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 08-05-new_list_hotkeys

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ahmetskilinc ahmetskilinc changed the title new list hotkeys feat: remove old hotkeys and add new View hotkeys Aug 5, 2025
@ahmetskilinc ahmetskilinc marked this pull request as ready for review August 5, 2025 02:21
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@coderabbitai coderabbitai bot requested a review from MrgSub August 5, 2025 02:21
@coderabbitai coderabbitai bot added the design Improvements & changes to design & UX label Aug 5, 2025
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

cubic analysis

1 issue found across 2 files • Review in cubic

React with 👍 or 👎 to teach cubic. You can also tag @cubic-dev-ai to give feedback, ask questions, or re-run the review.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b128491 and 10eae48.

📒 Files selected for processing (2)
  • apps/mail/components/mail/mail.tsx (2 hunks)
  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx (4 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit Inference Engine (AGENT.md)

**/*.{js,jsx,ts,tsx}: Use 2-space indentation
Use single quotes for strings
Limit lines to 100 characters in length
Semicolons are required at the end of statements

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{js,jsx,ts,tsx,css,scss}

📄 CodeRabbit Inference Engine (AGENT.md)

Use Prettier with sort-imports and Tailwind plugins for code formatting

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (AGENT.md)

Enable TypeScript strict mode

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
**/*.{css,js,ts,jsx,tsx,mdx}

📄 CodeRabbit Inference Engine (.cursor/rules/tailwind-css-v4.mdc)

**/*.{css,js,ts,jsx,tsx,mdx}: Chain variants together for composable variants (e.g., group-has-data-potato:opacity-100).
Use new variants such as starting, not-*, inert, nth-*, in-*, open (for :popover-open), and ** for all descendants.
Do not use deprecated utilities like bg-opacity-*, text-opacity-*, border-opacity-*, and divide-opacity-*; use the new syntax (e.g., bg-black/50).
Use renamed utilities: shadow-sm is now shadow-xs, shadow is now shadow-sm, drop-shadow-sm is now drop-shadow-xs, drop-shadow is now drop-shadow-sm, blur-sm is now blur-xs, blur is now blur-sm, rounded-sm is now rounded-xs, rounded is now rounded-sm, outline-none is now outline-hidden.
Use bg-(--brand-color) syntax for CSS variables in arbitrary values instead of bg-[--brand-color].
Stacked variants now apply left-to-right instead of right-to-left.

Files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
🧠 Learnings (4)
📓 Common learnings
Learnt from: retrogtx
PR: Mail-0/Zero#1328
File: apps/mail/lib/hotkeys/mail-list-hotkeys.tsx:202-209
Timestamp: 2025-06-18T17:26:50.918Z
Learning: In apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchCategoryByIndex function using hardcoded indices for category hotkeys does not break when users reorder categories, contrary to the theoretical index-shifting issue. The actual implementation has constraints or mechanisms that prevent hotkey targeting issues.
📚 Learning: in apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchcategorybyindex function using hardcoded i...
Learnt from: retrogtx
PR: Mail-0/Zero#1328
File: apps/mail/lib/hotkeys/mail-list-hotkeys.tsx:202-209
Timestamp: 2025-06-18T17:26:50.918Z
Learning: In apps/mail/lib/hotkeys/mail-list-hotkeys.tsx, the switchCategoryByIndex function using hardcoded indices for category hotkeys does not break when users reorder categories, contrary to the theoretical index-shifting issue. The actual implementation has constraints or mechanisms that prevent hotkey targeting issues.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
  • apps/mail/components/mail/mail.tsx
📚 Learning: applies to **/*.{css,js,ts,jsx,tsx,mdx} : use renamed utilities: `shadow-sm` is now `shadow-xs`, `sh...
Learnt from: CR
PR: Mail-0/Zero#0
File: .cursor/rules/tailwind-css-v4.mdc:0-0
Timestamp: 2025-08-03T20:42:04.207Z
Learning: Applies to **/*.{css,js,ts,jsx,tsx,mdx} : Use renamed utilities: `shadow-sm` is now `shadow-xs`, `shadow` is now `shadow-sm`, `drop-shadow-sm` is now `drop-shadow-xs`, `drop-shadow` is now `drop-shadow-sm`, `blur-sm` is now `blur-xs`, `blur` is now `blur-sm`, `rounded-sm` is now `rounded-xs`, `rounded` is now `rounded-sm`, `outline-none` is now `outline-hidden`.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
📚 Learning: in react hook form, avoid using useeffect for form state synchronization when the values prop can ha...
Learnt from: retrogtx
PR: Mail-0/Zero#1354
File: apps/mail/components/ui/prompts-dialog.tsx:85-88
Timestamp: 2025-06-20T05:03:16.944Z
Learning: In React Hook Form, avoid using useEffect for form state synchronization when the values prop can handle reactive updates automatically. The values prop is specifically designed for this purpose and is more optimal than manual useEffect-based synchronization.

Applied to files:

  • apps/mail/lib/hotkeys/mail-list-hotkeys.tsx
⏰ 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: cubic · AI code reviewer
🔇 Additional comments (1)
apps/mail/components/mail/mail.tsx (1)

718-728: Perfect implementation for the clear-all hotkey!

This is exactly how you build reliable systems - clean, focused, and does exactly what it says on the tin. The '0' key to clear all labels is intuitive and the implementation is rock-solid.

@ahmetskilinc ahmetskilinc force-pushed the 08-05-new_list_hotkeys branch from 10eae48 to 51bb718 Compare August 5, 2025 18:54
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

An error occured.

This error may be due to rate limits. If this error persists, please email us.

Copy link
Contributor Author

ahmetskilinc commented Aug 5, 2025

Merge activity

  • Aug 5, 6:54 PM UTC: Graphite rebased this pull request as part of a merge.
  • Aug 5, 6:56 PM UTC: Graphite rebased this pull request as part of a merge.
  • Aug 5, 6:58 PM UTC: @ahmetskilinc merged this pull request with Graphite.

@ahmetskilinc ahmetskilinc force-pushed the 08-05-new_list_hotkeys branch from 51bb718 to 25d4d94 Compare August 5, 2025 18:54
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Inconsistent Category Selection Logic Medium Select a category using the hotkey and compare the resulting labels with the expected labels based on the previous search value logic. The original code used switchMailListCategory and switchCategoryByIndex which interacted with the search value. The new code directly manipulates the labels state. This difference in logic might lead to inconsistent behavior.
Hardcoded Category Limit Low Create more than 10 categories and try to select the 11th category using the hotkey. The hotkey assignment only supports the first 10 categories (0-9). If a user has more than 10 categories, they won't be able to select them using the hotkeys.
Potential Performance Issue with useHotkeys Low Create a large number of categories and observe the performance of the mail list view. The useHotkeys hook is called within a categorySettings.forEach loop. This could potentially lead to performance issues if the number of categories is very large.
Missing Dependency Low Navigate to a route other than inbox and try to select labels using hotkeys Hotkeys should be disabled when not in the inbox, but are still active.

Comments? Email us.

@ahmetskilinc ahmetskilinc force-pushed the 08-05-new_list_hotkeys branch from 25d4d94 to 6b447f1 Compare August 5, 2025 18:55
@jazzberry-ai
Copy link

jazzberry-ai bot commented Aug 5, 2025

Bug Report

Name Severity Example test case Description
Inconsistent Search State Medium 1. Enter a search query in the search bar (e.g., "test").\n2. Press a number key (1-9) to toggle a category label.\n3. Observe that the displayed emails are filtered by both the search query and the toggled label. The search bar query, however, does not update to reflect the label change.\n4. Clear the search bar.\n5. Observe that the selected labels are not active Using hotkeys to toggle category labels does not update the search query in the search bar. This causes the search state (search query and selected labels) to become inconsistent, potentially leading to unexpected filtering behavior. The search bar should reflect the currently active labels when hotkeys are used to change the label selection.

Comments? Email us.

@ahmetskilinc ahmetskilinc merged commit 428e75f into staging Aug 5, 2025
5 checks passed
@ahmetskilinc ahmetskilinc deleted the 08-05-new_list_hotkeys branch August 5, 2025 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design Improvements & changes to design & UX

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant