feat(web): category→subpage settings IA for global and repo settings #200
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!200
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/198"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #198
Dissolves the
Settings.tsx(759-line) andRepoSettings.tsx(1215-line) monoliths into the category-list → detail-subpage IA from the issue spec, at/settings/:section?and/repos/:id/settings/:section?.Shared foundation (
components/settings/,lib/)SettingsLayout— mobile category index (lucide icon + title + one-line description + chevron rows, danger pinned last in--danger) / mobile back-header (chevron to the index, not browser-back) / desktop (≥1024px, the shell breakpoint) master-detail with a slim plain-text category nav, visually lighter than the SideNav rail. The bare index redirects to the first category on desktop — reactively, so growing the viewport on the index redirects live.useSettingsForm— one shared primitive owning dirty tracking, dirty-fields-only PATCH submit (unchanged endpoints/payloads), and the unsaved-changes guard:useBeforeLeave+beforeunload, both via nativeconfirm('Discard unsaved changes?'). Dirty is derived frombuildPatch— no parallel bookkeeping.createSeededDrafts— the repo monolith's SSE seed/resync mechanism extracted generically; untouched drafts followrepo.changedrefetches, dirty drafts survive, the seed advances.createMediaQuery— reactive matchMedia primitive (jsdom-safe).Areas
routes/settings/): general (Git author) · agents (Spawn defaults, AFK defaults, Capacity) · notifications (Install app + Web Push, device-local, guard-free). Form sections remount keyed on the refetched settings after a save, so the guard reads clean. Breadcrumb-free per spec.routes/repo-settings/): general · integrations · branches · agents · autoland · secrets · danger. Breadcrumbs gain the section segment with "Settings" linking to the index. Secrets and Danger moved verbatim (guard-free). Two deliberate resolution changes in Autoland, both commented in-code:autolandBlockedand the lander's repo-provider fallback now read the SAVEDtracker_binding/provider— those drafts live in other sections and cross-section drafts no longer exist.Notes for review
lucide-solidadded (this issue introduces the dependency; app-wide icon migration is #199). Per-icon deep imports; icons inheritcurrentColorin both themes./settings→/settings/notificationsdeep link (a desktop viewport now redirects the bare path to General).🤖 Generated with Claude Code
[autoland] verdict: pass
PASS — ci/native run 223 green (lint, format:check, test 924, build, go build/test, golangci-lint). Conventional title, Closes #198, diff scoped to settings IA per issue spec. Lander fixed the sole failure (prettier formatting on 5 files) inline.