Skip to content

fix(web): settings scope pickers stay in reach while you scroll - #20003

Open
ashx-j wants to merge 5 commits into
pingdotgg:mainfrom
ashx-j:fix/settings-sticky-scope
Open

ashx-j wants to merge 5 commits into
pingdotgg:mainfrom
ashx-j:fix/settings-sticky-scope

Conversation

@ashx-j

@ashx-j ashx-j commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

The project and environment scope pickers scroll out of reach on long Settings pages. They now stay pinned above the rows with an opaque background, while the first section keeps its original spacing. Scroll padding leaves room for focused settings; long picker labels can shrink on narrow layouts.

Rebuilt from @ashx-j’s contribution in #20003, preserving the original commits and merging current main. Removed the decorative gradient and explanatory comments; the resulting diff is three changed lines in two files. Web and desktop share this view. Native mobile has separate settings screens; no contracts, providers, or connection paths changed.

Verification on Linux:

  • 22 existing scope tests passed: settingsScopeAxis.test.ts (6), settingsScopeNavigation.test.ts (16). PR-added tests: 0 → 0; no static-markup tests added for CSS.
  • Targeted lint, format, web typecheck, and whitespace checks passed.
  • Independent full-diff reviews: Claude Opus 5.5 and Codex GPT-6-Sol, one clean round each.
  • Actual isolated web app, 1280×800: first section stays at y=132 before and after. At scrollTop=520, main’s picker top is y=-444; head’s opaque scope header stays at y=52. Both picker menus open at that scroll position with direct pointer input.
  • At 640×800, the scope wraps into two rows (88 px high) without horizontal overflow.
  • Real-data snapshot seeding was unavailable because the live database has a newer incompatible migration history; browser evidence uses the isolated app’s disposable project.
  • Not verified: macOS, Windows, iOS, Android, or the Electron desktop shell. A human desktop smoke test remains.

Recheck after the settings overhaul (#25651): I merged main again with no conflicts. The scope tests and web typecheck pass. On the new Providers page at 1280×800, scrolled to the bottom (463 px), main's picker sits at y=-350 while this branch keeps it pinned at the top of the settings dialog. The project picker menu still opens from that position.

Before, current main, Providers page scrolled to the bottom:

Before: scope pickers scrolled out of view on the Providers page

After, same page, data, and scroll position:

After: scope pickers stay pinned on the Providers page

Implemented and coordinated with Codex GPT-6.1-Sol in the Codex harness through T3 Code. Tests: Codex GPT-6-Astra; reviews: Claude Opus 5.5 and Codex GPT-6-Sol.


Recheck by Claude Opus 5.5 in Claude Code through T3 Code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the vouch:unvouched PR author is not yet trusted in the VOUCHED list. label Oct 15, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a12ebcf

Macroscope's review found this PR approvable — This is a focused settings-page UX fix that keeps existing scope pickers visible and adjusts programmatic scrolling around them. It changes no settings behavior, data contracts, product defaults, or static-analysis configuration.

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

@github-actions github-actions Bot added the size:S 10-29 changed lines (additions + deletions). label Oct 15, 2026
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 68ef689 and 83669a3.

Files selected for processing: 1
  • apps/web/src/components/settings/SettingsScopeSentence.tsx
Files skipped from review as they are similar to previous changes: 1
  • apps/web/src/components/settings/SettingsScopeSentence.tsx

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

Walkthrough

The settings scope sentence now uses sticky positioning, a background, and adjusted spacing. Its menu trigger can shrink. The scrollable settings area adds top scroll padding.

Changes: Settings scope positioning

Layer / File(s) Summary
Sticky scope sentence and scroll offset
apps/web/src/components/settings/SettingsScopeSentence.tsx, apps/web/src/components/settings/settingsLayout.tsx
The scope sentence gains sticky positioning, a background, and adjusted spacing. Its menu trigger can shrink. The scrollable settings area adds top scroll padding.

Priority: Low

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

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: Minimal · up to 83669

No actionable merge-blocking issue is established for the settings scope positioning change. Normal checks and the remaining desktop smoke test can proceed.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: keeping settings scope pickers accessible while scrolling. It also follows the repository's conventional commit format.
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.
Description check Passed The description clearly explains the problem, implementation, scope, verification results, screenshots, limitations, and agent usage. It does not use the template headings, and the scope approval evid…
Full details: Description check

Explanation

The description clearly explains the problem, implementation, scope, verification results, screenshots, limitations, and agent usage. It does not use the template headings, and the scope approval evidence is indirect, but the required information is mostly present.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@juliusmarminge

Copy link
Copy Markdown
Member

Taking over this one as maintainer for batch settings-theme-01. I will merge current main into this branch, preserve the focused scope-picker behavior, and refresh tests, review, and verification. Thanks @ashx-j for the fix. No merge is planned in this batch.

@juliusmarminge juliusmarminge self-assigned this Oct 19, 2026
@github-actions github-actions Bot added size:XS 0-9 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Oct 19, 2026

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

merged current main into the existing branch without rewriting @ashx-j's commits. the final diff is still three styling lines in two files. it keeps the original sticky scope pickers, opaque background, initial spacing, narrow-label shrinking, and scroll padding, while preserving main's current button styling and font size. no actions changed.

passed:

  • blacksmith vp run check:changed 278588a61a3a3c0cd7f18760ebed1bbd75e64acf: format, lint, knip, affected typechecks.
  • 12 existing scope tests; both attachment-preview cases also pass in focused blacksmith execution.
  • actual web app in system chrome: matching 1280×800 before/after at scrollTop 520, unchanged initial section position, both picker menus open after scrolling, 640 px wrapping without overflow, dark theme, appearance excludes scope controls, and a settings search target remains visible below the pinned header.
  • two independent reviews approved 68ef689dd4334d8e0f010e4cadf497358394ae48; coderabbit reported no actionable findings.

waiting on unrelated ci: Test Web timed out rendering expanded Word footnotes on both attempts; its dependent Check failed. current main also has attachment-preview Word-rendering timeouts. the attachment-preview files are unchanged by this pr. all other applicable ci jobs passed. no unrelated test changes or repeated reruns added.

unverified: electron shell, macos/windows, and native mobile. web and desktop share these settings components; native mobile is unchanged.

before, main at scrollTop 520:

before: settings scope pickers scroll out of view

after, same data and scroll position:

after: scope pickers remain above the settings rows

after: scope pickers wrap at 640 pixels

scrolling and opening both scope menus

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

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

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants