Skip to content

Add direct workspace grouping toggle for quick switching between Projects and Statuses - #4359

Open
panrafal wants to merge 11 commits into
getpaseo:mainfrom
panrafal:sidebar-grouping-toggle
Open

Add direct workspace grouping toggle for quick switching between Projects and Statuses#4359
panrafal wants to merge 11 commits into
getpaseo:mainfrom
panrafal:sidebar-grouping-toggle

Conversation

@panrafal

@panrafal panrafal commented Sep 5, 2026

Copy link
Copy Markdown

Linked issue

None

Type of change

  • Bug fix
  • New feature
  • Enhancement
  • Refactor
  • Docs

Reasoning

Switching workspace grouping currently requires navigating through Display preferences. This adds a direct Workspaces-header control while retaining the descriptive menu choice.

Search remains available. The grouping icon and tooltip represent the currently selected mode, while the control cycles to the other mode when activated.

Goals

  • Add a direct project/status grouping toggle to the Workspaces header.
  • Keep Search and Display preferences available.
  • Display the current grouping through the toggle icon and tooltip.
  • Identify the control as a grouping switcher for screen readers.
  • Retain the descriptive Grouping page in Display preferences.
  • Add a Cmd/Ctrl+; grouping shortcut to Projects & Workspaces.
  • Keep grouping persistence and Command Center behavior unchanged.
  • Support keyboard layouts where ; requires Shift.
  • Ignore the shortcut in editable fields and terminals.

Non-goals

  • Change project or status grouping behavior.
  • Change workspace ordering or filtering.
  • Remove grouping from the Command Center.
  • Add shortcut customization.
  • Change other Display preferences.

QA

Focused unit tests

$ npx vitest run packages/app/src/keyboard/keyboard-shortcuts.test.ts packages/app/src/keyboard/route-shortcut.test.ts packages/app/src/stores/sidebar-view-store.test.ts packages/app/src/command-center/root-contributions.test.ts packages/app/src/i18n/resources.test.ts --bail=1

Test Files  5 passed (5)
Tests       260 passed (260)

Browser tests

$ npm run test:e2e --workspace=@getpaseo/app -- e2e/browser/command-center-grouping.spec.ts --grep "cycles sidebar grouping|keeps grouping"

2 passed
$ npm run test:e2e --workspace=@getpaseo/app -- e2e/browser/sidebar-project-filter.spec.ts --grep "pins the sidebar"

1 passed
$ npm run test:e2e --workspace=@getpaseo/app -- e2e/browser/sidebar-mobile-menu-sheets.spec.ts --grep "sidebar header Search"

1 passed

The browser coverage verifies:

  • The icon and tooltip show the current grouping.
  • Cmd/Ctrl+; cycles both grouping modes.
  • The accessibility label identifies the current mode and switcher behavior.
  • Display preferences retains both grouping choices and stays synchronized with the quick toggle.
  • Project filtering remains correct across grouping modes.
  • Search closes the compact sidebar before opening.

Repository checks

$ npm run format
Finished successfully
$ npm run format:check
All matched files use the correct format
$ npm run lint
Found 0 warnings and 0 errors
$ npm run typecheck --workspace=@getpaseo/app
Exit code 0

The repository-wide typecheck reaches only the existing desktop Electron clipboard errors:

packages/desktop/src/main.ts(17,3): Electron has no exported member ClipboardItem
packages/desktop/src/main.ts(539,29): any[] is incompatible with Data

Automated review

Greptile reviewed commit 82f770b8a with confidence 5/5 and reported no actionable failures.

Visual evidence

Workspaces header grouping control

Platform coverage

Platform Tested Notes
iOS Yes Manual
Android No Not tested
Web Yes Manual and automated browser coverage
Desktop macOS Yes Manual
Desktop Windows No Not tested
Desktop Linux No Not tested

Checklist

  • One focused change
  • App typecheck passes
  • Lint passes
  • Formatting passes
  • Automated tests added
  • Bot reviews addressed
  • Complete affected-platform visual QA

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-05T14:09:36.104798Z 9effa44 PR opened
🔒 Security Review Completed 2026-09-05T14:08:42.068017Z 9effa44 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds direct sidebar grouping controls while retaining synchronization with Display preferences and the Command Center.

  • Adds a Workspaces-header toggle with localized current-state tooltip and accessibility text.
  • Adds a configurable Cmd/Ctrl+; shortcut routed through the keyboard action dispatcher.
  • Moves compact-sidebar Search into the Workspaces header and closes the sidebar before opening Search.
  • Adds unit and browser coverage for grouping transitions, persistence, menu synchronization, keyboard handling, and compact navigation.

Confidence Score: 5/5

The PR appears safe to merge because no new actionable failures remain in the changes since the previous review.

The current code addresses the outstanding icon-semantic concern by consistently presenting the icon and tooltip as the current grouping state. The nine earlier threads were manually resolved without explanatory replies; their underlying concerns are addressed in the current code, including idempotent helpers, localization, approved theme access, focused-surface shortcut exclusions, shifted-layout handling, cleanup structure, named props, and user-level E2E helpers.

Important Files Changed

Filename Overview
packages/app/src/components/left-sidebar.tsx Adds localized Search and current-grouping actions to the Workspaces header, including compact-sidebar behavior.
packages/app/src/keyboard/keyboard-shortcuts.ts Registers the grouping shortcut, excludes editable and terminal focus, and accommodates shifted keyboard layouts.
packages/app/src/command-center/root-registration.tsx Registers the global grouping action and exposes its resolved shortcut in the Command Center.
packages/app/src/stores/sidebar-view-store.ts Centralizes cycling between project and status grouping modes.
packages/app/e2e/browser/command-center-grouping.spec.ts Covers shortcut cycling and synchronization between the quick toggle and Display preferences.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Header[Workspaces header toggle] --> Store[Sidebar view store]
  Shortcut[Cmd/Ctrl + semicolon] --> Dispatcher[Keyboard action dispatcher]
  Dispatcher --> Store
  Command[Command Center action] --> Store
  Preferences[Display preferences] --> Store
  Store --> Project[Project grouping]
  Store --> Status[Status grouping]
Loading

Reviews (11): Last reviewed commit: "docs: restore grouping menu example" | Re-trigger Greptile

Comment thread packages/app/e2e/support/helpers/sidebar.ts Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9effa447e1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/app/src/components/left-sidebar.tsx Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated
Comment thread packages/app/src/keyboard/keyboard-shortcuts.ts
Comment thread packages/app/e2e/browser/command-center-grouping.spec.ts Outdated
Comment thread packages/app/src/keyboard/keyboard-shortcuts.ts
Comment thread packages/app/e2e/browser/command-center-grouping.spec.ts Outdated
Comment thread packages/app/src/components/left-sidebar.tsx Outdated
? "shell.commandCenter.groupByProject"
: "shell.commandCenter.groupByStatus",
);
const Icon = groupMode === "project" ? Folder : CircleDashed;

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 Icon Contradicts Toggle Action

The label and click behavior describe the available action, but the icon now represents the current mode. For example, project grouping shows a Folder while the button says and performs “Group by status,” giving sighted users conflicting cues about what activating it will do.

Suggested change
const Icon = groupMode === "project" ? Folder : CircleDashed;
const Icon = targetMode === "project" ? Folder : CircleDashed;

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!

Comment thread packages/app/e2e/browser/command-center-grouping.spec.ts
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