Skip to content

feat(web): let users change project folders - #8147

Open
ulughbeck wants to merge 5 commits into
pingdotgg:mainfrom
ulughbeck:feat/change-project-folders
Open

feat(web): let users change project folders#8147
ulughbeck wants to merge 5 commits into
pingdotgg:mainfrom
ulughbeck:feat/change-project-folders

Conversation

@ulughbeck

@ulughbeck ulughbeck commented Aug 25, 2026

Copy link
Copy Markdown

Renaming a project only changed its display name. Users could not update the folder attached to an existing project, so moving a repository could leave duplicate project entries.

Add an editable path field to Project Settings and reuse the existing directory browser for folder selection. Threads and project settings stay attached when the path changes.


Note

Medium Risk
Changes persisted project paths, grouping override resolution, and sidebar order migration; mistakes could mis-group projects or scramble manual sort, but scope is settings/UI rather than auth or server data.

Overview
Lets users repoint an existing project checkout without creating a duplicate entry. Project Settings adds an editable Path field plus a folder button that opens the command palette in a new select-directory mode; choosing a folder updates workspaceRoot while threads and settings stay on the same project.

The palette bus, reducer, and browse UI now support that intent (including Select submit, directory existence checks, environment validation for WSL/file-manager picks, and case-insensitive browse matching on non-Windows).

Sidebar grouping and manual order no longer key off folder paths: overrides use stable environment + project id keys, with sidebarProjectGroupingInheritance recording explicit “inherit global mode,” legacy path overrides still read as fallback, and migrateProjectOrderKeys rewriting persisted projectOrder when a path changes. Manual sort and ordering also accept legacy physical/CWD keys so existing preferences keep working.

Desktop, mobile, and contracts settings/tests are updated for the new inheritance field; user docs describe changing a project folder.

Reviewed by Cursor Bugbot for commit dad0842. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add directory picker to CommandPalette and project folder editing to settings

  • Adds a select-directory intent to commandPaletteBus and CommandPalette, allowing callers to open the palette to browse and select a folder.
  • ProjectDetail in ProjectSettingsPanel gains inline path editing and a folder chooser button that uses the new directory picker to change a checkout's workspaceRoot.
  • Changes getProjectOrderKey and deriveProjectGroupingOverrideKey to use stable environment-scoped IDs (environmentId + project.id) instead of physical paths. Adds sidebarProjectGroupingInheritance to manage legacy override fallbacks.
  • Adds an optional caseSensitive flag to filterFilesystemBrowseEntries to control exact-match case sensitivity.
  • Risk: Project grouping override keys and order keys change from physical paths to scoped IDs. Existing preferences migrate via migrateProjectOrderKeys, and resolveProjectGroupingOverride falls back to legacy physical-path keys unless inheritance suppresses them.

Macroscope summarized dad0842.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d1ad6508-97af-46fc-91a8-0e5b2e284e69

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 25, 2026
Comment thread apps/web/src/components/CommandPalette.tsx Outdated
Comment thread apps/web/src/components/CommandPalette.tsx
Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx

@macroscopeapp macroscopeapp Bot left a comment

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.

UI consistency review found four issues in the new checkout-path row and the palette directory-picker mode: a control-height mismatch beside the InputGroup, an icon-size override that opts out of the Button primitive's responsive sizing, a keyboard-invisible copy affordance, and two palette details (reserved input padding and the leading icon) that were not updated for the new Select flow.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx Outdated
Comment thread apps/web/src/components/CommandPalette.tsx
Comment thread apps/web/src/components/CommandPalette.tsx
Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx Outdated
@macroscopeapp

macroscopeapp Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a new project-folder editing workflow and changes persistent grouping and sidebar-order key behavior across the web app. Because it introduces cross-cutting user-visible behavior and state migration rather than a small isolated change, human review is warranted.

You can add or adjust custom eligibility rules. Learn more.

Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx
Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx
Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx

@macroscopeapp macroscopeapp Bot left a comment

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.

UI consistency review: the earlier findings in this PR (folder button height/icon contract, keyboard reachability of the hidden copy addon, reserved end padding for the longer Select label) are addressed in the current head. One non-blocking note below about an inert branch left over from the icon fix.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/CommandPalette.tsx Outdated
Comment thread packages/contracts/src/settings.ts Outdated
Comment thread apps/web/src/components/settings/ProjectSettingsPanel.tsx
@github-actions github-actions Bot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 25, 2026
Comment thread packages/client-runtime/src/state/projectGrouping.ts
Comment thread apps/web/src/components/CommandPalette.tsx

@cursor cursor Bot left a comment

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.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit d157199. Configure here.

Comment thread apps/web/src/components/LegacySidebar.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL 500-999 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant