Skip to content

fix(web): add provider wizard no longer shifts sideways while it grows - #17292

Merged
Yash-Singh1 merged 2 commits into
pingdotgg:mainfrom
flamboh:t3/add-provider-wizard-scroll
Oct 10, 2026
Merged

Yash-Singh1 merged 2 commits into
pingdotgg:mainfrom
flamboh:t3/add-provider-wizard-scroll

Conversation

@flamboh

@flamboh flamboh commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Note

🤖 Claude Opus 5.5 on behalf of Oliver

The Add provider wizard shifts sideways as it grows after opening, for example when the ACP registry list loads.

Problem

WizardPopup scrolled with the browser's own scrollbar. On desktops where the scrollbar takes up width (6px on Linux and Windows), it appears once the content outgrows the popup and narrows everything inside it. Every card and button jumps left, and jumps back when filtering makes the list short again.

Fix

WizardPopup now scrolls inside our ScrollArea, the overlay scrollbar DialogPanel already uses. Its width no longer depends on whether the content overflows. This applies to every wizard built on WizardPopup.

Because this scroll area spans the whole popup, the scrollbar is inset 16px at each end to clear the popup's rounded corners, as ComposerCommandMenu does.

The ring clipping during the height animation, which this PR also fixed originally, landed separately in #17534.

Evidence

Captured with classic scrollbars enabled, as on Linux and Windows desktop. Each pair crops the right column of provider cards. The dashed line marks where the cards end when the list is short. Watch whether the cards in the full list reach it.

Before: with the full list, a native scrollbar appears and the cards end 6px short of the dashed line

After: an overlay scrollbar sits over the content, and the cards reach the dashed line in both states

The overlay scrollbar's ends, zoomed 4×, stay clear of the popup's rounded corners:

After: the scrollbar thumb stops short of the rounded top and bottom corners

Validation

  • vp test run for the WelcomeWizard and AddProviderInstanceDialog tests (41 passed)
  • web typecheck

Made with Claude Opus 5.5 in Claude Code (T3 Code).

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Oct 8, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 8, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 76465f6

Macroscope's review found this PR approvable — This is a small, self-contained UI fix that keeps wizard content width stable by reusing the existing overlay ScrollArea and insetting its scrollbar. It changes only dialog presentation and scrolling across existing wizard consumers, with no API, data, configuration, or deployment impact.

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

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Review in Change Stack →Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e212bea3-a1bb-4ef9-8391-5abb407e64f8


📥 Commits

Reviewing files that changed from the base of the PR and between 5af3946 and 76465f6.



📒 Files selected for processing (1)
  • apps/web/src/components/ui/wizard.tsx


🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/web/src/components/ui/wizard.tsx


Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.




📝 Walkthrough
📝 Walkthrough

Walkthrough

WizardPopup now wraps its content in a vertically styled ScrollArea. It retains its size-dependent maximum width and removes the previous explicit overflow classes.

Changes

UI overflow handling

Layer / File(s) Summary
Update overflow behavior
apps/web/src/components/ui/wizard.tsx
WizardPopup uses ScrollArea to contain its content. The dialog retains its size-dependent maximum width and no longer uses explicit overflow classes.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix



Merge Risk: ⚪ Minimal · up to 76465

No concrete issue currently blocks merging. The wizard’s scrolling behavior remains unverified by the available source evidence.

Pre-merge checks | Passed 3 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check Warning The description clearly explains the problem, fix, scope, UI evidence, and validation. It does not include the required Scope and approval information or explain why this focused fix qualifies without… Add the Scope and approval section. Link the related issue or maintainer approval, or explain why this small, obvious bug fix qualifies without prior approval.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly and concisely describes the main fix: preventing the Add provider wizard from shifting sideways as its content grows.

Full details: Description check

Explanation

The description clearly explains the problem, fix, scope, UI evidence, and validation. It does not include the required Scope and approval information or explain why this focused fix qualifies without prior approval.


  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR



  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@flamboh
flamboh force-pushed the t3/add-provider-wizard-scroll branch from cab75bd to 5af3946 Compare October 10, 2026 05:00
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 10, 2026 05:00

Dismissing prior approval to re-evaluate 5af3946

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 10, 2026
@flamboh flamboh changed the title fix(web): add provider wizard no longer shifts or clips while it grows fix(web): add provider wizard no longer shifts sideways while it grows Oct 10, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 10, 2026 05:15

Dismissing prior approval to re-evaluate 76465f6

@Yash-Singh1
Yash-Singh1 merged commit 500cb42 into pingdotgg:main Oct 10, 2026
30 of 31 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* feat(web): draft screen project picker is searchable by @juliusmarminge in pingdotgg/t3code#17664
* fix(server): report incomplete transcript usage scans by @maria-rcks in pingdotgg/t3code#15661
* fix(web): every resize-driven layout commits in the same frame by @maria-rcks in pingdotgg/t3code#17656
* fix(web): right panel and terminal drawer follow the pointer while dragging by @maria-rcks in pingdotgg/t3code#17657
* fix(web): terminal drawer keeps its height after the window shrinks by @maria-rcks in pingdotgg/t3code#17658
* perf(web): sidebar drags restyle only the sidebar by @maria-rcks in pingdotgg/t3code#17659
* fix(web): server browser page resizes while the panel is dragged by @maria-rcks in pingdotgg/t3code#17660
* fix(storage): make worktree cleanup work and show why it skipped by @maria-rcks in pingdotgg/t3code#17563
* test(usage): usage service tests keep their state directory until cache writes land by @tris203 in pingdotgg/t3code#17636
* fix(checkpoint): pulls and rebases no longer flood a turn's changed files by @t3dotgg in pingdotgg/t3code#17161
* fix(web): place notification icons after titles by @voltcrash in pingdotgg/t3code#12209
* fix(web): attachments on an open question are visible again by @tiliakoos in pingdotgg/t3code#15537
* fix(web): scale Files tree with interface font size by @Umais-Adeed in pingdotgg/t3code#8011
* fix(server): probe only owned preview listeners by @maria-rcks in pingdotgg/t3code#16687
* fix(chat): surface pending subagent questions on parents by @maria-rcks in pingdotgg/t3code#16634
* fix(web): section header chevrons point up when collapsed by @ZenderGoD in pingdotgg/t3code#14273
* fix(web): timeline divider pill shows a pointer, visible hover and focus ring by @jonesfionn101-dotcom in pingdotgg/t3code#15188
* fix(git): allow creating prs from dirty worktrees by @maria-rcks in pingdotgg/t3code#15625
* docs(install): polish binary install destination phrasing by @ege-arhan in pingdotgg/t3code#15732
* perf(server): keep passive terminal output flowing by @StiensWout in pingdotgg/t3code#17178
* fix(web): stop button icon no longer shifts on hover by @NK-Works in pingdotgg/t3code#16012
* fix(web): add bottom padding to expanded tool panels by @12ya in pingdotgg/t3code#16525
* fix(web): keep incremental highlighter return type portable by @luke2x in pingdotgg/t3code#17259
* fix(web): sidebar "Code" label no longer clips its letter tops by @akbarakma in pingdotgg/t3code#16134
* fix(tests): use POSIX paths for the simulated macOS device host by @Quicksaver in pingdotgg/t3code#17241
* fix(mobile): Android composer keeps the caret in view on AOSP-based keyboards by @bitmvk in pingdotgg/t3code#17492
* test(web): allow cold timeline imports on CI by @lastobelus in pingdotgg/t3code#16608
* fix(mobile): pinch zooms chat images on Android by @AKolenda in pingdotgg/t3code#15047
* fix(web): selected provider ring no longer clipped during panel resize by @jfortez in pingdotgg/t3code#17534
* docs(usage): OpenCode Go limits need a Go API key by @nexxeln in pingdotgg/t3code#15664
* fix(web): improve usage scanning indicator alignment by @AksharP5 in pingdotgg/t3code#15498
* fix(server): print pairing credential expiry as ISO timestamp by @kvnloo in pingdotgg/t3code#14128
* chore(ci): use GPT 6.1 Sol Max for check agents by @ishaanko in pingdotgg/t3code#14312
* fix(mobile): honor requested terminal native architectures by @bompus in pingdotgg/t3code#10709
* fix(server): keep preview browser connected after operation timeouts by @juliusmarminge in pingdotgg/t3code#17693
* fix(web): timeline divider focus ring stays inside the pill by @t3dotgg in pingdotgg/t3code#17702
* perf(desktop): reuse the prepared shell environment in the local backend by @Yash-Singh1 in pingdotgg/t3code#17384
* fix(web): align settings page widths by @diegoarff in pingdotgg/t3code#12158
* test(server): resolve the temp dir before matching the symlinked entrypoint by @ylcn91 in pingdotgg/t3code#9400
* fix(web): keep inline code pills intact when they wrap by @satyalyadav in pingdotgg/t3code#12038
* Revert "chore(ci): use GPT 6.1 Sol Max for check agents" by @maria-rcks in pingdotgg/t3code#17698
* fix(web): show the correct new thread shortcut in command palette by @vaishnavsm in pingdotgg/t3code#8513
* fix(desktop): declare macOS local network usage by @jsilets in pingdotgg/t3code#11922
* docs: add Scoop as Windows installation method by @Mostafa-Ben-Git in pingdotgg/t3code#10509
* fix(server): agents run in their own systemd scopes so an OOM kill spares the server by @t3dotgg in pingdotgg/t3code#17662
* fix(web): welcome wizard says where imported projects come from by @UzEE in pingdotgg/t3code#14584
* fix(web): cite works on responses that end before a tool call by @maria-rcks in pingdotgg/t3code#17713
* fix(desktop): sign Windows native addons by @Lumbreras2306 in pingdotgg/t3code#8206
* fix(server): track resumed subagent follow-ups as separate tasks by @Yash-Singh1 in pingdotgg/t3code#17696
* fix(web): nested corners follow their container's radius by @maria-rcks in pingdotgg/t3code#17695
* feat(web): pr panel actions confirm in place by @maria-rcks in pingdotgg/t3code#17710
* feat(web): reorder right panel tabs by dragging by @eimexdev in pingdotgg/t3code#17730
* fix(azure-devops): list pull requests with token sign-in and check out into worktrees by @maria-rcks in pingdotgg/t3code#17725
* fix(usage): keep one email in two workspaces as two accounts by @maria-rcks in pingdotgg/t3code#17711
* feat(pull-requests): hosts can report edit and resolve permissions per item by @juliusmarminge in pingdotgg/t3code#17667
* perf(server): run Git for Windows' real git.exe, not its launcher by @SunkenInTime in pingdotgg/t3code#17707
* fix(clients): restart continuations show as a T3 Code notice, not another agent's message by @juliusmarminge in pingdotgg/t3code#17723
* fix(mobile): browser picture in picture opens from the header button by @juliusmarminge in pingdotgg/t3code#17731
* feat(source-control): GitCafe lives in @t3tools/source-control-gitcafe by @juliusmarminge in pingdotgg/t3code#17681
* fix(web): add provider wizard no longer shifts sideways while it grows by @flamboh in pingdotgg/t3code#17292
* fix(web): PR search keeps the caret where you type by @flamboh in pingdotgg/t3code#17675
* fix(server): thread PR badges catch up when another environment reads the PR by @flamboh in pingdotgg/t3code#17729
* fix(server): refuse editor paths with line breaks or quotes when the editor is a Windows command shim by @juliusmarminge in pingdotgg/t3code#17749

## New Contributors
* @tiliakoos made their first contribution in pingdotgg/t3code#15537
* @Umais-Adeed made their first contribution in pingdotgg/t3code#8011
* @ZenderGoD made their first contribution in pingdotgg/t3code#14273
* @jonesfionn101-dotcom made their first contribution in pingdotgg/t3code#15188
* @ege-arhan made their first contribution in pingdotgg/t3code#15732
* @NK-Works made their first contribution in pingdotgg/t3code#16012
* @12ya made their first contribution in pingdotgg/t3code#16525
* @luke2x made their first contribution in pingdotgg/t3code#17259
* @akbarakma made their first contribution in pingdotgg/t3code#16134
* @Quicksaver made their first contribution in pingdotgg/t3code#17241
* @bitmvk made their first contribution in pingdotgg/t3code#17492
* @lastobelus made their first contribution in pingdotgg/t3code#16608
* @jfortez made their first contribution in pingdotgg/t3code#17534
* @diegoarff made their first contribution in pingdotgg/t3code#12158
* @ylcn91 made their first contribution in pingdotgg/t3code#9400
* @satyalyadav made their first contribution in pingdotgg/t3code#12038
* @vaishnavsm made their first contribution in pingdotgg/t3code#8513
* @jsilets made their first contribution in pingdotgg/t3code#11922
* @Mostafa-Ben-Git made their first contribution in pingdotgg/t3code#10509
* @UzEE made their first contribution in pingdotgg/t3code#14584
* @Lumbreras2306 made their first contribution in pingdotgg/t3code#8206

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2908...v0.0.46-nightly.20261010.2922

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2922
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* feat(web): draft screen project picker is searchable by @juliusmarminge in pingdotgg/t3code#17664
* fix(server): report incomplete transcript usage scans by @maria-rcks in pingdotgg/t3code#15661
* fix(web): every resize-driven layout commits in the same frame by @maria-rcks in pingdotgg/t3code#17656
* fix(web): right panel and terminal drawer follow the pointer while dragging by @maria-rcks in pingdotgg/t3code#17657
* fix(web): terminal drawer keeps its height after the window shrinks by @maria-rcks in pingdotgg/t3code#17658
* perf(web): sidebar drags restyle only the sidebar by @maria-rcks in pingdotgg/t3code#17659
* fix(web): server browser page resizes while the panel is dragged by @maria-rcks in pingdotgg/t3code#17660
* fix(storage): make worktree cleanup work and show why it skipped by @maria-rcks in pingdotgg/t3code#17563
* test(usage): usage service tests keep their state directory until cache writes land by @tris203 in pingdotgg/t3code#17636
* fix(checkpoint): pulls and rebases no longer flood a turn's changed files by @t3dotgg in pingdotgg/t3code#17161
* fix(web): place notification icons after titles by @voltcrash in pingdotgg/t3code#12209
* fix(web): attachments on an open question are visible again by @tiliakoos in pingdotgg/t3code#15537
* fix(web): scale Files tree with interface font size by @Umais-Adeed in pingdotgg/t3code#8011
* fix(server): probe only owned preview listeners by @maria-rcks in pingdotgg/t3code#16687
* fix(chat): surface pending subagent questions on parents by @maria-rcks in pingdotgg/t3code#16634
* fix(web): section header chevrons point up when collapsed by @ZenderGoD in pingdotgg/t3code#14273
* fix(web): timeline divider pill shows a pointer, visible hover and focus ring by @jonesfionn101-dotcom in pingdotgg/t3code#15188
* fix(git): allow creating prs from dirty worktrees by @maria-rcks in pingdotgg/t3code#15625
* docs(install): polish binary install destination phrasing by @ege-arhan in pingdotgg/t3code#15732
* perf(server): keep passive terminal output flowing by @StiensWout in pingdotgg/t3code#17178
* fix(web): stop button icon no longer shifts on hover by @NK-Works in pingdotgg/t3code#16012
* fix(web): add bottom padding to expanded tool panels by @12ya in pingdotgg/t3code#16525
* fix(web): keep incremental highlighter return type portable by @luke2x in pingdotgg/t3code#17259
* fix(web): sidebar "Code" label no longer clips its letter tops by @akbarakma in pingdotgg/t3code#16134
* fix(tests): use POSIX paths for the simulated macOS device host by @Quicksaver in pingdotgg/t3code#17241
* fix(mobile): Android composer keeps the caret in view on AOSP-based keyboards by @bitmvk in pingdotgg/t3code#17492
* test(web): allow cold timeline imports on CI by @lastobelus in pingdotgg/t3code#16608
* fix(mobile): pinch zooms chat images on Android by @AKolenda in pingdotgg/t3code#15047
* fix(web): selected provider ring no longer clipped during panel resize by @jfortez in pingdotgg/t3code#17534
* docs(usage): OpenCode Go limits need a Go API key by @nexxeln in pingdotgg/t3code#15664
* fix(web): improve usage scanning indicator alignment by @AksharP5 in pingdotgg/t3code#15498
* fix(server): print pairing credential expiry as ISO timestamp by @kvnloo in pingdotgg/t3code#14128
* chore(ci): use GPT 6.1 Sol Max for check agents by @ishaanko in pingdotgg/t3code#14312
* fix(mobile): honor requested terminal native architectures by @bompus in pingdotgg/t3code#10709
* fix(server): keep preview browser connected after operation timeouts by @juliusmarminge in pingdotgg/t3code#17693
* fix(web): timeline divider focus ring stays inside the pill by @t3dotgg in pingdotgg/t3code#17702
* perf(desktop): reuse the prepared shell environment in the local backend by @Yash-Singh1 in pingdotgg/t3code#17384
* fix(web): align settings page widths by @diegoarff in pingdotgg/t3code#12158
* test(server): resolve the temp dir before matching the symlinked entrypoint by @ylcn91 in pingdotgg/t3code#9400
* fix(web): keep inline code pills intact when they wrap by @satyalyadav in pingdotgg/t3code#12038
* Revert "chore(ci): use GPT 6.1 Sol Max for check agents" by @maria-rcks in pingdotgg/t3code#17698
* fix(web): show the correct new thread shortcut in command palette by @vaishnavsm in pingdotgg/t3code#8513
* fix(desktop): declare macOS local network usage by @jsilets in pingdotgg/t3code#11922
* docs: add Scoop as Windows installation method by @Mostafa-Ben-Git in pingdotgg/t3code#10509
* fix(server): agents run in their own systemd scopes so an OOM kill spares the server by @t3dotgg in pingdotgg/t3code#17662
* fix(web): welcome wizard says where imported projects come from by @UzEE in pingdotgg/t3code#14584
* fix(web): cite works on responses that end before a tool call by @maria-rcks in pingdotgg/t3code#17713
* fix(desktop): sign Windows native addons by @Lumbreras2306 in pingdotgg/t3code#8206
* fix(server): track resumed subagent follow-ups as separate tasks by @Yash-Singh1 in pingdotgg/t3code#17696
* fix(web): nested corners follow their container's radius by @maria-rcks in pingdotgg/t3code#17695
* feat(web): pr panel actions confirm in place by @maria-rcks in pingdotgg/t3code#17710
* feat(web): reorder right panel tabs by dragging by @eimexdev in pingdotgg/t3code#17730
* fix(azure-devops): list pull requests with token sign-in and check out into worktrees by @maria-rcks in pingdotgg/t3code#17725
* fix(usage): keep one email in two workspaces as two accounts by @maria-rcks in pingdotgg/t3code#17711
* feat(pull-requests): hosts can report edit and resolve permissions per item by @juliusmarminge in pingdotgg/t3code#17667
* perf(server): run Git for Windows' real git.exe, not its launcher by @SunkenInTime in pingdotgg/t3code#17707
* fix(clients): restart continuations show as a T3 Code notice, not another agent's message by @juliusmarminge in pingdotgg/t3code#17723
* fix(mobile): browser picture in picture opens from the header button by @juliusmarminge in pingdotgg/t3code#17731
* feat(source-control): GitCafe lives in @t3tools/source-control-gitcafe by @juliusmarminge in pingdotgg/t3code#17681
* fix(web): add provider wizard no longer shifts sideways while it grows by @flamboh in pingdotgg/t3code#17292
* fix(web): PR search keeps the caret where you type by @flamboh in pingdotgg/t3code#17675
* fix(server): thread PR badges catch up when another environment reads the PR by @flamboh in pingdotgg/t3code#17729
* fix(server): refuse editor paths with line breaks or quotes when the editor is a Windows command shim by @juliusmarminge in pingdotgg/t3code#17749

## New Contributors
* @tiliakoos made their first contribution in pingdotgg/t3code#15537
* @Umais-Adeed made their first contribution in pingdotgg/t3code#8011
* @ZenderGoD made their first contribution in pingdotgg/t3code#14273
* @jonesfionn101-dotcom made their first contribution in pingdotgg/t3code#15188
* @ege-arhan made their first contribution in pingdotgg/t3code#15732
* @NK-Works made their first contribution in pingdotgg/t3code#16012
* @12ya made their first contribution in pingdotgg/t3code#16525
* @luke2x made their first contribution in pingdotgg/t3code#17259
* @akbarakma made their first contribution in pingdotgg/t3code#16134
* @Quicksaver made their first contribution in pingdotgg/t3code#17241
* @bitmvk made their first contribution in pingdotgg/t3code#17492
* @lastobelus made their first contribution in pingdotgg/t3code#16608
* @jfortez made their first contribution in pingdotgg/t3code#17534
* @diegoarff made their first contribution in pingdotgg/t3code#12158
* @ylcn91 made their first contribution in pingdotgg/t3code#9400
* @satyalyadav made their first contribution in pingdotgg/t3code#12038
* @vaishnavsm made their first contribution in pingdotgg/t3code#8513
* @jsilets made their first contribution in pingdotgg/t3code#11922
* @Mostafa-Ben-Git made their first contribution in pingdotgg/t3code#10509
* @UzEE made their first contribution in pingdotgg/t3code#14584
* @Lumbreras2306 made their first contribution in pingdotgg/t3code#8206

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2908...v0.0.46-nightly.20261010.2922

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2922
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants