Repository navigation
refactor: extract Settings UI into src/settings - #691
Merged
Merged
Conversation
Move the Settings view and its supporting pieces out of App.tsx without changing behavior, so the tabbed-sections restructure that follows has a readable diff. Moved verbatim: - SettingsView -> src/settings/SettingsView.tsx - SettingGroup, Toggle, option constants, movementValue -> controls.tsx - UpdateControls, updateProgress, updateDescription, UpdateAction -> UpdatesSection.tsx - changedSettingKeys, applyLocalSettings -> diff.ts UpdateBanner stays in App.tsx as shell-level UI and imports updateProgress. The autosave state machine stays in App.tsx; only the two pure helpers move. The 19 Settings tests move to src/settings/settings.test.tsx with no assertion changes. They still render <App /> so the full save pipeline stays under test. The banner-level updater tests stay with the banner. App.tsx: 838 -> 684 lines. No DOM changes, no AppSettings changes. Refs #683 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
enaboapps
marked this pull request as ready for review
September 8, 2026 12:54
This was referenced Sep 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #683.
Moves the Settings UI out of
App.tsxintosrc/settings/as a pure mechanical refactor, so the tabbed-sections restructure in #685 lands with a readable diff.Moved verbatim
App.tsxSettingsViewsrc/settings/SettingsView.tsxSettingGroup,Toggle, option constants,movementValuesrc/settings/controls.tsxUpdateControls,updateProgress,updateDescription,UpdateActionsrc/settings/UpdatesSection.tsxchangedSettingKeys,applyLocalSettingssrc/settings/diff.tsUpdateBannerstays inApp.tsxas shell-level UI and importsupdateProgressback from the new module. The autosave state machine stays inApp.tsxin full — only the two pure helpers moved.App.tsx: 838 → 684 lines. No DOM changes. NoAppSettingschanges.Tests
The 19 Settings tests move to
src/settings/settings.test.tsxwith no assertion changes. They still render<App />, so the full save pipeline stays under test.The two banner-level updater
it.eachblocks stay inApp.test.tsx—UpdateBannerdid not move, and they assert banner behavior rather than Settings content.Test titles were diffed against
mainas a set: identical, so nothing was dropped in the move.Validation
Run from the repository root:
npm run lintnpm testsettings.test.tsx19,App.test.tsx45, plus api/overlay)npm run buildcargo fmt --checkcargo clippy --all-targets -- -D warningscargo testNo Rust files are touched by this change; the Rust gates are run per
AGENTS.md.Notes for review
App.tsxwould land near 600 lines; the actual is 684.GeneralSection.tsx,PointerSection.tsx, …) are not created here. Those sections do not exist as separate components yet, so creating them would have meant editing behavior rather than moving it. They arrive with Restructure Settings into accessible tabbed sections #685.Refwas dropped from theApp.tsxReact type import andAppSettingsfromApp.test.tsx, both now unused there.🤖 Generated with Claude Code