Skip to content

feat(settings): start each category at the top - #813

Merged
vastsa merged 6 commits into
vastsa:mainfrom
yuxino:codex/feat-settings-scroll-reset
Sep 22, 2026
Merged

vastsa merged 6 commits into
vastsa:mainfrom
yuxino:codex/feat-settings-scroll-reset

Conversation

@yuxino

@yuxino yuxino commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Closes #812.

Scrolling halfway down Settings → AI and switching categories currently opens the next category partway down too. This proposes starting each category at the top, including plugin categories. Re-selecting the current category and updating settings in place keep the scroll position; global search still lands on the matching setting.

Native desktop recording (17.7 seconds, 1920×1440): before and after the same AI → Shortcuts navigation. English UI and annotations; navigation is 2× speed and idle time is trimmed. Both builds use isolated empty profiles and the real host, with no mocked UI or model calls.

settings-scroll-before-after.mp4

The runtime change is confined to SettingsPage: reset the shared content pane when its destination changes, before the existing search-anchor effect runs. Includes interaction coverage and matching English/Chinese settings specs and E2E scenarios. No settings data, IPC, or storage changes.

Validated category switches, repeated selection, settings updates, plugin navigation, and search anchors in both light and dark themes. The new check fails on the original AI → Shortcuts behavior and passes with this change.

Validation details
  • Candidate: 0f9db0624384f3d4bdd5020b4bcdae01c40a02e7
  • Base: 0111e306c120ad5820688d7608cb37bad8fbcc1f; upstream and fork main matched before publication.
  • GitHub PR merge candidate and tested head have identical trees (1299bd8c90febb05cc8a0846f278229d9790d3d5).
  • Environment: macOS arm64, Node 24.13.0, pnpm 10.34.5.
  • pnpm test:e2e:settings-scroll passed on the candidate. It mounts the production SettingsPage, store, translations and built CSS in isolated Electron; preload data is stubbed and search uses the same public store entry points as SearchDialog. It does not exercise the full search dialog or host persistence.
  • 93 existing settings/sidebar/plugin-surface tests passed.
  • Workspace JS build, rebuilt Desktop, Desktop typecheck, lint, architecture check, docs checks and PR-base check passed.
  • The native macOS AI → Shortcuts path was recorded and visually checked before and after. Windows/Linux runs were not performed. Rust tests were not run because this changes only renderer scroll behavior.

Avoid carrying a scroll offset between unrelated settings categories.
Reset on destination changes before search anchors run, while retaining
the position on same-category updates and repeated selection.

Closes vastsa#812
Merge the current upstream main so the settings scroll change remains
reviewable alongside recent fixes. Preserve both sets of English and
Chinese E2E scenarios without changing the original implementation.
Keep the settings scroll PR current with the merged queue admission fix.
Retain both acceptance scenarios and their original implementations
without rewriting the shared branch history.
Keep the shared PR current with upstream main while preserving its
settings navigation behavior and the contributor's commit history.
Validate the combined candidate before updating the existing PR.
Keep the shared PR current with configuration sync and runtime updates
without changing its settings navigation behavior or rewriting history.
Include the new WebDAV compatibility work before candidate validation.
Preserve the original PR behavior and both upstream and author history.
@vastsa
vastsa merged commit efb3ba5 into vastsa:main Sep 22, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Start settings categories at the top when switching

2 participants