Commit Graph
1 Commits
Author SHA1 Message Date
ZacharyZhang-NY 16e45b6a8d refactor(settings): split 73-line god file into 5 sections + auto-save preferences + guard Restore
The previous SettingsPane.tsx hid 8 unrelated concerns behind 73 "lines"
of JSX where each line ran 400-2000 chars. Reading the file was
infeasible; editing it meant scrolling horizontally through a single
statement spanning every button, modal, and table row.

Split by concern into `settings-sections/`:

  SettingsPane.tsx           62 LOC  orchestrator
  GeneralSection.tsx         94 LOC  theme / language / auto-update
  ExecutionModeSection.tsx  105 LOC  AI CEO ↔ AI Co-Founder toggle
  ShortcutsSection.tsx       40 LOC  keyboard reference (read-only)
  DataSection.tsx           123 LOC  update check / backup / restore /
                                     secret backend
  SecretsSection.tsx        102 LOC  per-company secret bindings

Every file now reads top-to-bottom with normal indentation.

Behavioral changes bundled (they belong with the restructure, not a
separate pass):

- Preferences save model unified: theme already auto-saved on change;
  language and auto-update checkbox now do the same. The global
  "Save settings" button is gone — there is no longer a state where
  a toggled language sits unpersisted waiting for a second click.
- Execution mode card gained a subheader line that names the current
  company ("Applies to current company: X"). Multi-company users can
  no longer confuse which company they just flipped.
- Auto-updater checkbox gained an inline hint: "Check for application
  updates at launch" — the previous naked checkbox never explained
  what happens when it is off.
- Restore profile moved into DataSection's backup/restore group,
  given `tone="danger"`, and gated behind a `window.confirm` with
  copy warning about running work being lost. Backup stays neutral.
  The previous layout put Restore in the same 2-col grid as Save +
  Check Updates + Backup, making a profile-replacing operation look
  as routine as saving a theme preference.
- Secret backend display promoted from a naked text line to a
  bordered card so it matches the surrounding section rhythm.

Added i18n keys (zh + en):
  settings.updaterHint / settings.modeScope / settings.backupRestore /
  settings.restoreConfirm / settings.restoreHint.

Covers J-S1 / J-S6 / S-S1 / S-S2 / S-S3 / S-S4 from the settings audit.
Remaining work (tab sidebar, Providers IA reordering, copy sweep)
lands in follow-up commits.
2026-04-17 21:06:07 -04:00