Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg
, '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

Fix sidebar resize limit after window growth - #4482

Closed
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth
Closed

Fix sidebar resize limit after window growth#4482
colonelpanic8 wants to merge 3 commits into
pingdotgg:mainfrom
colonelpanic8:fix/sidebar-resize-after-window-growth

Conversation

@colonelpanic8

@colonelpanic8colonelpanic8 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What Changed

  • Recompute the thread sidebar maximum width when the browser or Electron window resizes.
  • Add focused coverage showing that the allowed sidebar width grows with the viewport.

Why

The sidebar maximum was calculated only during render from the initial window width. If a restored or resized window became wider without another relevant render, the resize rail retained the old cap and could not use the newly available space.

UI Changes

Behavioral only; there are no visual styling changes. In a controlled browser, a stored 900px sidebar correctly clamped to 360px at a 1000px viewport, then returned to 900px when the viewport grew to 1600px, leaving 700px for main content. The collaborative preview screenshot and recording endpoints timed out, so no media is attached.

Validation

  • vp test run --project unit src/components/threadSidebarWidth.test.ts (from apps/web)
  • vp fmt --check apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • vp lint apps/web/src/components/AppSidebarLayout.tsx apps/web/src/components/threadSidebarWidth.test.ts
  • git diff --check
  • Web package typecheck attempted; it is currently blocked by unrelated existing errors in BranchToolbarBranchSelector, ModelPickerContent, PreviewAutomationHosts, and state atom hooks.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes (preview capture timed out)
  • I included a video for animation/interaction changes (preview recording failed)

Note

Low Risk
Layout and resize behavior only in the web app sidebar; no auth, data, or API changes. Risk is localized UI edge cases around persistence vs viewport clamping.

Overview
Fixes the thread sidebar staying capped at the initial window width after the viewport grows, so drag-resize can use newly available space.

AppSidebarLayout drops useSyncExternalStore viewport tracking and passes a resizable config with a livemaxWidth (window.innerWidth), getCssWidth via resolveThreadSidebarCssWidth, and hydrateStoredWidth: false so initial width stays parent-owned. --sidebar-width is set to a CSS min() / max() / calc(100vw - …) expression instead of a fixed pixel value.

Shared Sidebar / SidebarRail now accept maxWidth as a number or getter, optional getCssWidth, and hydrateStoredWidth. On resize end, width is clamped with the live max, --sidebar-width is written through getCssWidth, and persistence runs after clamping. Stored-width hydration calls onResize with the unclamped stored value so a narrow viewport does not overwrite the user’s preference. A window resize listener briefly disables width transitions (skipped during active drags) to avoid glitches when the CSS clamp updates.

Unit tests cover live max clamping, CSS width helpers, and rail commit behavior.

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

Note

Fix sidebar resize limit to respect viewport width after window growth

  • The sidebar resize limit was not updating when the browser window grew larger, leaving the maximum width stale. This PR fixes that by making maxWidth a live function evaluated at commit time (window.innerWidth) rather than a fixed value.
  • SidebarRail now clamps and persists the correct width on stop-resize, and sets --sidebar-width using a dynamic CSS min() expression via the new resolveThreadSidebarCssWidth util.
  • A new viewport resize listener in SidebarRail suppresses CSS transitions during viewport-driven width adjustments to avoid visual glitches.
  • hydrateStoredWidth=false is set for the thread sidebar so the rail doesn't auto-apply stored width; the parent component handles initial width independently.
  • Behavioral Change: stored width hydration now passes the original (unclamped) value to onResize so user preference is preserved even when the viewport temporarily reduces the allowed maximum.

Macroscope summarized 81bd69e.

@coderabbitai

coderabbitaiBot commented Jul 24, 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: 49ba1912-507d-4731-92eb-087ce924b72a

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.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Jul 24, 2026
Comment threadapps/web/src/components/AppSidebarLayout.tsx
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
Comment threadapps/web/src/components/AppSidebarLayout.tsx Outdated
@macroscopeapp

macroscopeappBot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

Bug fix for sidebar resize behavior with limited scope. Changes use standard CSS clamp patterns for responsive width constraints, include unit tests, and are isolated to sidebar width handling. Author has recent commits to these files.

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

@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 233e5db to 8e3f616CompareJuly 25, 2026 00:08
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Jul 25, 2026
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
Comment threadapps/web/src/components/ui/sidebar.tsx Outdated
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 8e3f616 to 15fe789CompareJuly 25, 2026 00:31

@cursorcursorBot 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 15fe789. Configure here.

Comment threadapps/web/src/components/ui/sidebar.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 081e832 to ea0cea1CompareJuly 25, 2026 03:23
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 25, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 26, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from ea0cea1 to 007f6c9CompareJuly 27, 2026 11:14
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 27, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
…window grows)
# Conflicts:
#	apps/web/src/components/AppSidebarLayout.tsx
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 007f6c9 to 620bbedCompareJuly 28, 2026 02:08
@colonelpanic8
colonelpanic8force-pushed the fix/sidebar-resize-after-window-growth branch from 620bbed to 81bd69eCompareJuly 28, 2026 02:51
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Jul 28, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 10, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 11, 2026
colonelpanic8 added a commit to colonelpanic8/t3code that referenced this pull request Aug 18, 2026
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Live sidebar resize limits already shipped in #4655.

@t3dotggt3dotgg closed this Aug 23, 2026
@colonelpanic8

Copy link
Copy Markdown
ContributorAuthor

This is not introducing the feature... its fixing the resize limit.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 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.

2 participants

@colonelpanic8@t3dotgg