Skip to content

feat: add setting to control default project expansion on startup#1923

Open
alecramos-sudo wants to merge 3 commits intopingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Open

feat: add setting to control default project expansion on startup#1923
alecramos-sudo wants to merge 3 commits intopingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed

Conversation

@alecramos-sudo
Copy link
Copy Markdown

@alecramos-sudo alecramos-sudo commented Apr 11, 2026

Summary

Closes #1910

  • Projects now default to collapsed in the sidebar on restart, fixing the issue where all projects expand and make the sidebar unreadable
  • Adds a new "Expand projects on startup" toggle in Settings > General so users can choose their preferred default
  • The setting is persisted as a client-side preference via localStorage

Changes

  • packages/contracts/src/settings.ts — new sidebarProjectsDefaultExpanded boolean in ClientSettingsSchema (defaults to false)
  • apps/web/src/uiStateStore.tssyncProjects, toggleProject, setProjectExpanded accept the setting as defaultExpanded parameter
  • apps/web/src/components/Sidebar.tsx — uses the setting as the fallback for expansion state
  • apps/web/src/components/settings/SettingsPanels.tsx — settings UI toggle with reset support
  • apps/web/src/environments/runtime/service.ts — passes the setting to syncProjects calls
  • apps/web/src/hooks/useSettings.ts — exports getClientSettingsSnapshot for non-React contexts

Test plan

  • All existing tests pass (764/764)
  • Typecheck passes across all 8 packages
  • Lint passes with 0 errors
  • Build succeeds (web + desktop)
  • Desktop app launches locally
  • Verify projects default to collapsed on fresh start
  • Verify toggling the setting to "on" restores the old always-expanded behavior
  • Verify manually expanded/collapsed projects persist across restarts regardless of the setting

🤖 Generated with Claude Code


Note

Low Risk
Low risk: adds a new client-side boolean setting and threads it through sidebar/UI state defaults; primary impact is a behavioral change to initial project expansion state.

Overview
Adds a new client-side setting, sidebarProjectsDefaultExpanded (default false), to control the startup/default expansion state of sidebar projects.

Threads this default through the sidebar and UI state layer by replacing hardcoded ?? true fallbacks with the new setting, updating syncProjects/toggleProject to accept a defaultExpanded parameter, and passing the setting into project-sync points in the environment runtime service.

Exposes the toggle in Settings → General with reset/dirty-state support, and updates desktop/web persistence tests to include the new field.

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

Note

Add setting to control default project expansion on sidebar startup

  • Adds a sidebarProjectsDefaultExpanded boolean field to ClientSettingsSchema (default: false), replacing the previously hardcoded true default throughout the sidebar and UI state store.
  • Exposes a toggle in General Settings so users can choose whether projects are expanded or collapsed when the app starts.
  • Updates syncProjects and toggleProject in uiStateStore.ts to accept a defaultExpanded parameter, and threads the client setting value through from runtime/service.ts and Sidebar.tsx.
  • Behavioral Change: Projects that had no persisted expansion state previously defaulted to expanded; they now default to collapsed unless the user enables the new setting.

Macroscope summarized 77a80f6.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 11, 2026

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

Run ID: 3ee0c1f7-54d4-4546-a021-0c2cecd4f235

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

@github-actions github-actions bot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Apr 11, 2026
…ngdotgg#1910)

Projects now default to collapsed in the sidebar on restart. A new
"Expand projects on startup" toggle in Settings > General lets users
restore the previous always-expanded behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@alecramos-sudo alecramos-sudo force-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887c Compare April 11, 2026 07:28
Comment thread apps/web/src/uiStateStore.ts Outdated
The guard used `?? defaultExpanded` (defaulting to false) to compute
current state, but callers without the setting would short-circuit
incorrectly when the user's preference was true. Using strict equality
(===) against the explicit state avoids the mismatch entirely.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@macroscopeapp
Copy link
Copy Markdown
Contributor

macroscopeapp bot commented Apr 11, 2026

Approvability

Verdict: Approved

Adds a new user preference setting for sidebar project expansion with straightforward implementation following existing patterns. Changes are self-contained to UI behavior, include appropriate tests, and don't affect security or critical paths.

You can customize Macroscope's approvability policy. Learn more.

alecramos-sudo added a commit to alecramos-sudo/t3code that referenced this pull request Apr 16, 2026
…ightly v0.0.18

Resolved conflict in Sidebar.tsx — kept new useSettings hooks from PR.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 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.

[Feature]: Default projects to be collapsed or open setting

1 participant