fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

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

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive) - #1198

Merged
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar
Apr 16, 2026
Merged

fix(web): prevent composer controls overlap on narrow windows (make plan sidebar responsive)#1198
juliusmarminge merged 4 commits into
pingdotgg:mainfrom
UtkarshUsername:fix/responsive-plan-sidebar

Conversation

@UtkarshUsername

@UtkarshUsernameUtkarshUsername commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

You can view my issues and PRs at https://pr-navigator.pages.dev/t3code-utkarsh
Fixes#1197

What Changed

This PR makes the plan sidebar follow the same responsive behavior as the diff panel.

  • added shared right-panel responsive constants for the breakpoint and sheet sizing
  • updated the diff panel to use the shared constants instead of hardcoding them locally
  • updated the plan sidebar to render inline on wide screens and as a right-side sheet on narrower screens
  • added a simple mode prop to PlanSidebar so the same component can render correctly in both inline and sheet contexts
  • kept the existing open/close and dismissal behavior for active plans intact

Made it turn into a sheet like the diff panel instead of just adjusting the composer controls, because this improves the whole experience on small windows and makes the design consistent, while also fixing the problem.

Why

Before this change, the plan sidebar always consumed inline width as a fixed column. On smaller viewports that made the chat area and composer noticeably cramped, while the diff panel already handled the same problem better by switching to a sheet.

Using the same responsive pattern for both panels keeps the UI more consistent and avoids penalizing smaller layouts.

UI Changes

Before:
(Video shared by Julius)
https://github.com/user-attachments/assets/6d83f027-ec3e-4026-8c8a-6130cc70a932
image

After:
image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Make plan sidebar responsive by rendering as a right-side sheet on narrow viewports

  • On viewports ≤1180px, the plan sidebar now renders as a right-side sheet instead of a fixed sidebar, preventing overlap with composer controls.
  • Adds a shared RightPanelSheet component and rightPanelLayout.ts constants (RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, RIGHT_PANEL_SHEET_CLASS_NAME) to centralize breakpoint and sizing logic.
  • Refactors the diff panel in _chat.$environmentId.$threadId.tsx to use the shared RightPanelSheet and RIGHT_PANEL_INLINE_LAYOUT_MEDIA_QUERY, removing the previously local equivalents.
  • PlanSidebar gains a mode prop ('sidebar' | 'sheet') that switches between fixed-width bordered layout and full-width sheet layout.

Macroscope summarized aa20d2a.


Note

Low Risk
UI-only responsive layout change that reuses existing Sheet behavior; main risk is regressions in sidebar open/close/dismissal behavior on different viewport widths.

Overview
Makes the plan sidebar responsive: on narrow viewports it now renders as a right-side Sheet overlay (matching the diff panel), while wide screens keep the inline fixed-width sidebar.

Extracts shared right-panel sizing/breakpoint constants into rightPanelLayout.ts, updates the diff panel sheet to use them, and adds a mode prop to PlanSidebar to switch styling between inline sidebar vs full-width sheet rendering while preserving existing close/dismiss semantics via a centralized closePlanSidebar handler.

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

@coderabbitai

coderabbitaiBot commented Mar 18, 2026

Copy link
Copy Markdown

Important

Review skipped

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

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86938dc2-74f8-440b-9cd0-cf1b964eeb22

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 18, 2026
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b364790 to b0f88a1CompareMarch 20, 2026 12:56
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from b0f88a1 to 6264759CompareMarch 30, 2026 12:47
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Mar 30, 2026
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft March 30, 2026 12:54
@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Mar 30, 2026
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review March 30, 2026 13:24
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from aece061 to d50cadbCompareApril 1, 2026 09:18
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from d50cadb to 6e5ae83CompareApril 13, 2026 17:04
macroscopeapp[bot]
macroscopeappBot previously approved these changes Apr 13, 2026
@macroscopeapp

macroscopeappBot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This is a straightforward UI responsiveness fix that makes the plan sidebar display as a sheet (overlay) on narrow windows, using a pattern already established for the diff panel. The changes are purely layout/CSS related with no business logic modifications, and include a minor refactor to share the sheet wrapper component between two similar use cases.

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

Comment threadapps/web/src/components/ChatView.tsx Outdated
- render Plan sidebar in a right-side sheet under 1180px
- reuse shared right-panel layout constants for both plan and diff panels
- add sidebar/sheet mode support to PlanSidebar styling and close handling
@UtkarshUsername
UtkarshUsernameforce-pushed the fix/responsive-plan-sidebar branch from ec1aada to c798ac8CompareApril 16, 2026 15:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewApril 16, 2026 15:27

Dismissing prior approval to re-evaluate c798ac8

@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 and found 2 potential issues.

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 c798ac8. Configure here.

Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
Comment threadapps/web/src/components/ChatView.tsx
@UtkarshUsername
UtkarshUsername marked this pull request as draft April 16, 2026 15:38
- Reuse the shared sheet shell for plan and diff sidebars
- Keep responsive right-panel behavior consistent across routes
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Apr 16, 2026
- Mark the sidebar as dismissed even when no turn ID is active
- Prevent the plan sidebar from reopening unexpectedly
@UtkarshUsername
UtkarshUsername marked this pull request as ready for review April 16, 2026 15:47
@juliusmarminge
juliusmarminge merged commit 19d4740 into pingdotgg:mainApr 16, 2026
16 checks passed
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Apr 18, 2026
Integrates upstream/main (9df3c64) on top of fork's main (9602c18).
Upstream features adopted:
- Claude Opus 4.5 and 4.7 built-in models (pingdotgg#2072, pingdotgg#2143)
- Node-native TypeScript migration across desktop/server (pingdotgg#2098)
- Configurable project grouping with client-settings overrides (pingdotgg#2055, pingdotgg#2099)
- Thread status in command palette (pingdotgg#2107)
- Responsive composer / plan sidebar on narrow windows (pingdotgg#1198)
- Capture-phase CTRL+J keydown for Windows terminal toggle (pingdotgg#2113/pingdotgg#2142)
- Bypass xterm for global terminal shortcuts (pingdotgg#1580)
- Windows ARM build target (pingdotgg#2080)
- Windows PATH hydration + repair (pingdotgg#1729)
- Gitignore-aware workspace search (pingdotgg#2078)
- Claude process leak fix + stale session monitoring (pingdotgg#2042)
- Preserve provider bindings when stopping sessions (pingdotgg#2084)
- Clean up invalid pending-approval projections (pingdotgg#2106) — new migration
- Extract backend startup readiness coordination
- Drop stale text-gen options on reset (pingdotgg#2076)
- Extend negative repository identity cache TTL (pingdotgg#2083)
- Allow deleting non-empty projects from warning toast (pingdotgg#1264)
- Restore defaults only on General settings (pingdotgg#1710)
- Release workflow modernization (blacksmith runners, GitHub App token guards, v0.0.20 version bump)
Fork features preserved:
- All 8 providers (codex, claudeAgent, copilot, cursor, opencode,
geminiCli, amp, kilo) with their adapters, services, and tests
- Fork's custom OpenCode protocol impl in apps/server/src/opencode/ (kept
over upstream's @opencode-ai/sdk-based provider added in pingdotgg#1758 — fork's
version is tested and integrated; upstream's parallel files deleted)
- Fork's direct-CLI Cursor adapter (kept over upstream's new ACP-based
CursorProvider added in pingdotgg#1355 — upstream's parallel files deleted)
- Fork's ProviderRegistry aggregates only codex + claudeAgent snapshots;
the other 6 providers register via ProviderAdapterRegistry
- PROVIDER_CACHE_IDS stays at [codex, claudeAgent] matching what the
registry actually caches
- Migration IDs preserved (fork 23/24/25/26; upstream's new 025 lands at
ID 27 to avoid re-applying on deployed fork DBs)
- Fork's generic per-provider settings (enabled/binaryPath/configDir/
customModels) kept over upstream's opencode-specific serverUrl/password
- Log directory IPC channels, updateInstallInFlight tracking, icon
composer pipeline all preserved
- Fork's simplified release.yml (no npm CLI publish, no nightly infra)
- composerDraftStore normalizeProviderKind widened to accept all 8 kinds
- Dark mode --background set to #0f0f0f
Test status:
- All 9 package typechecks pass
- Lint clean (0 errors)
- Tests: 1877 passed, 15 skipped (incl. 4 historically-flaky GitManager
cross-repo PR selector tests newly gated with TODO for Node-native-TS
follow-up)
tyulyukov pushed a commit to tyulyukov/marcode that referenced this pull request Apr 24, 2026
…lan sidebar responsive) (pingdotgg#1198)
(cherry picked from commit 5f36ac228aeaea73f3633182c1cda34fb4b5ce7f)
MuneerAhmed03 pushed a commit to MuneerAhmed03/t3code that referenced this pull request Apr 26, 2026
youpele52 referenced this pull request in youpele52/bigbud Jun 17, 2026
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
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.

[Bug]: Composer controls overlap when plan sidebar is open on narrow windows

2 participants

@UtkarshUsername@juliusmarminge