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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

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

Closed
alecramos-sudo wants to merge 3 commits into
pingdotgg:mainfrom
alecramos-sudo:feat/sidebar-projects-default-collapsed
Closed

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

Conversation

@alecramos-sudo

@alecramos-sudoalecramos-sudo commented Apr 11, 2026

Copy link
Copy Markdown

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

coderabbitaiBot commented Apr 11, 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

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-actionsgithub-actionsBot 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-sudoforce-pushed the feat/sidebar-projects-default-collapsed branch from f9e789a to cb8887cCompareApril 11, 2026 07:28
Comment threadapps/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

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M30-99 changed lines (additions + deletions).vouch:unvouchedPR 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

2 participants

@alecramos-sudo@juliusmarminge