Skip to content

fix(web): stop the settings sidebar shifting when switching pages - #10705

Merged
t3dotgg merged 1 commit into
mainfrom
fix/settings-sidebar-remove-submenu
Sep 8, 2026
Merged

fix(web): stop the settings sidebar shifting when switching pages#10705
t3dotgg merged 1 commit into
mainfrom
fix/settings-sidebar-remove-submenu

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Sep 8, 2026

Copy link
Copy Markdown
Member

Every settings page with sub-sections expanded a submenu under its nav item. Clicking through pages pushed the rest of the list down and back up on each click, so items moved out from under the cursor.

This removes the submenu and the scroll-spy that highlighted it. The nav is a flat list again. Settings search still jumps to individual sections.

The behavior came from three commits: #9354 added the submenu, #9811 animated it, and #9812 added the highlighting. #9354 was mostly the page reorganization, which stays. A clean revert of any of them would not apply, so this removes the submenu code by hand and deletes the visibility helper and its test, which nothing else used.

Created with Claude Fable 5.1 in Claude Code.

🤖 Generated with Claude Code

Note

Remove nested subsection links from settings sidebar to stop shifting

  • Removes scroll-visibility tracking (intersection/mutation observers) and nested subsection links from SettingsSidebarNav, leaving only top-level navigation items active by route match.
  • Deletes the entire settingsSectionVisibility.ts module and its test suite, which handled target lookup, observer setup, and ordered visible-section emission.
  • Removes the data-settings-page-layout DOM marker from the outer SidebarInset in settings.tsx.
  • Behavioral Change: the sidebar no longer highlights subsections based on scroll position; an item is active only for its exact route or descendant routes.

Macroscope summarized b557dfa.

Summary by CodeRabbit

  • Changes
    • Simplified the Settings sidebar by removing per-page section submenu navigation.
    • Settings navigation now highlights items based on the current page path.
    • Removed automatic section visibility tracking within the Settings page.
    • Removed related automated coverage for section visibility behavior.
    • Simplified the Settings page layout markup without changing its visible styling.

Remove the per-page sub-section list that expanded under the active nav
item. It pushed every item below it down on each page change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@cursor

cursor Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 8, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at b557dfa

Macroscope's review found this PR approvable — This is a narrowly scoped settings-sidebar fix that removes the subsection observer and submenu responsible for layout shifting while preserving top-level navigation, search, and settings content. The associated helper, tests, and now-unused DOM marker are removed without affecting schemas, deployment, or sensitive functionality.

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

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ The exact PR base did not have a successful artifact. Baseline uses the latest successful main measurement shown below.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.3 KiB 13.5 KiB +213 B (+1.6%) 15.1 KiB
Codex Thread snapshot wire 6.9 KiB 7.0 KiB +154 B (+2.2%) 7.3 KiB
Codex Live turn WebSocket wire 6.4 KiB 6.5 KiB +59 B (+0.9%) 7.8 KiB
Codex Live turn WebSocket decoded 55.6 KiB 57.0 KiB +1.4 KiB (+2.4%) 66.4 KiB
Codex Live turn messages 11 8 −3 (−27.3%) 21
Claude Total thread wire 13.4 KiB 13.6 KiB +215 B (+1.6%) 15.1 KiB
Claude Thread snapshot wire 6.9 KiB 7.0 KiB +151 B (+2.1%) 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 6.5 KiB +64 B (+1.0%) 7.8 KiB
Claude Live turn WebSocket decoded 56.4 KiB 57.8 KiB +1.4 KiB (+2.5%) 66.4 KiB
Claude Live turn messages 11 9 −2 (−18.2%) 21

Baseline: 42a8fd5 · PR result: b557dfa · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeapp macroscopeapp Bot 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.

All clear

Posted via Macroscope — Effect Service Conventions

@macroscopeapp

This comment has been minimized.

@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: aab3eae1-1a38-49e3-9b7e-b57d519c169d

📥 Commits

Reviewing files that changed from the base of the PR and between 134b719 and b557dfa.

📒 Files selected for processing (4)
  • apps/web/src/components/settings/SettingsSidebarNav.tsx
  • apps/web/src/components/settings/settingsSectionVisibility.test.ts
  • apps/web/src/components/settings/settingsSectionVisibility.ts
  • apps/web/src/routes/settings.tsx
💤 Files with no reviewable changes (2)
  • apps/web/src/components/settings/settingsSectionVisibility.test.ts
  • apps/web/src/components/settings/settingsSectionVisibility.ts

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


📝 Walkthrough

Walkthrough

The settings sidebar no longer renders per-page section submenus or observes section visibility. Active navigation uses pathname prefixes. The settings layout no longer includes the section visibility marker.

Changes

Settings navigation simplification

Layer / File(s) Summary
Remove section navigation machinery
apps/web/src/components/settings/SettingsSidebarNav.tsx
The sidebar removes section definitions, visibility observers, section scrolling, submenu rendering, and related imports. Active state now uses pathname matching.
Remove settings layout marker
apps/web/src/routes/settings.tsx
The settings layout removes the data-settings-page-layout attribute.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to b557d

Settings navigation now remains a flat, pathname-highlighted list, avoiding layout shifts caused by expandable section submenus. No concrete current-head merge risk remains.

Suggested reviewers: juliusmarminge, maria-rcks, maxktz

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the settings sidebar shifting issue and matches the primary change: removing expandable submenu behavior.
Description check ✅ Passed The description explains what changed and why. It is mostly complete, but it omits the required UI Changes section with before/after screenshots and does not include the checklist from the repository …
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.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/settings-sidebar-remove-submenu

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

@t3dotgg
t3dotgg merged commit d6dbe8d into main Sep 8, 2026
23 checks passed
@t3dotgg
t3dotgg deleted the fix/settings-sidebar-remove-submenu branch September 8, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

1 participant