The Background tab becomes Theme — solid colors or patterns, presets only, chevron-paged
Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -5,14 +5,15 @@ import SwiftUI
|
||||
/// widget in the window's titlebar that opens it.
|
||||
///
|
||||
/// **Restructuring in progress (2026-08-07): the popover is going tabbed.** The symbol/name header
|
||||
/// stays at the top; below it sit three tabs — **Info**, **Background**, **Git** — each a settings
|
||||
/// stays at the top; below it sit three tabs — **Info**, **Theme**, **Git** — each a settings
|
||||
/// surface for one aspect of board configuration, each settled in its own dedicated design session.
|
||||
/// **Info and Background are settled** (both 2026-08-07 — `BoardInfoTabView`, the metrics dossier;
|
||||
/// `BoardBackgroundTabView`, the re-homed style editor plus the generated-background picker); Git
|
||||
/// remains deliberately empty until its own session. The former body's mode-aware git section is
|
||||
/// unrendered for the interim but parked in this file (see the "Parked" mark below), because its
|
||||
/// pure seams (`BoardGitSection`, the posture notes, `BoardSettingsAvailability`'s caller) are
|
||||
/// settled design and will rehome into the Git tab once that session rules.
|
||||
/// **Info and Theme are settled** (both 2026-08-07 — `BoardInfoTabView`, the metrics dossier;
|
||||
/// `BoardThemeTabView`, the Solid color / Pattern picker — the Background tab's original name, before
|
||||
/// the same session widened it past the generated-only picker and folded manual styling back out to
|
||||
/// Style… ⌥⌘S); Git remains deliberately empty until its own session. The former body's mode-aware
|
||||
/// git section is unrendered for the interim but parked in this file (see the "Parked" mark below),
|
||||
/// because its pure seams (`BoardGitSection`, the posture notes, `BoardSettingsAvailability`'s
|
||||
/// caller) are settled design and will rehome into the Git tab once that session rules.
|
||||
///
|
||||
/// ### One home, deliberately
|
||||
///
|
||||
@@ -257,13 +258,13 @@ func boardInfoTitlebarAccessory(
|
||||
// MARK: - Tabs
|
||||
|
||||
/// The popover's three aspects, one tab each (03-board-ui.md § Board popover, the 2026-08-07 tab
|
||||
/// restructure): **Info**, **Background**, **Git**. Info and Background are settled
|
||||
/// (`BoardInfoTabView`, `BoardBackgroundTabView`); Git is a placeholder — empty on purpose — until
|
||||
/// restructure): **Info**, **Theme**, **Git**. Info and Theme are settled
|
||||
/// (`BoardInfoTabView`, `BoardThemeTabView`); Git is a placeholder — empty on purpose — until
|
||||
/// its own dedicated design session, which then only has to fill its case in.
|
||||
enum BoardInfoTab: String, CaseIterable, Identifiable {
|
||||
|
||||
case info = "Info"
|
||||
case background = "Background"
|
||||
case theme = "Theme"
|
||||
case git = "Git"
|
||||
|
||||
var id: Self { self }
|
||||
@@ -276,7 +277,7 @@ enum BoardInfoTab: String, CaseIterable, Identifiable {
|
||||
///
|
||||
/// Width is the style editor's — the number that keeps the Style… popover narrow enough to sit
|
||||
/// beside a card — kept through the restructure so the popover's footprint doesn't wander while Git
|
||||
/// is still a placeholder; both tabs settled so far (Info, Background) kept it too, so whether the
|
||||
/// is still a placeholder; both tabs settled so far (Info, Theme) kept it too, so whether the
|
||||
/// tabbed surface ever wants its own width remains open, but nothing has needed one yet.
|
||||
struct BoardInfoView: View {
|
||||
|
||||
@@ -375,16 +376,16 @@ struct BoardInfoView: View {
|
||||
.padding(.horizontal, inset)
|
||||
.padding(.top, inset)
|
||||
|
||||
// The selected tab's surface. Info and Background are settled (2026-08-07 —
|
||||
// `BoardInfoTabView`, `BoardBackgroundTabView`); Git stays a placeholder until its own
|
||||
// The selected tab's surface. Info and Theme are settled (2026-08-07 —
|
||||
// `BoardInfoTabView`, `BoardThemeTabView`); Git stays a placeholder until its own
|
||||
// session, holding a fixed height so an empty tab reads as a surface awaiting content
|
||||
// rather than a collapsed sliver — `Color.clear`, because an `EmptyView` inside a frame
|
||||
// renders nothing at all.
|
||||
switch tab {
|
||||
case .info:
|
||||
BoardInfoTabView(store: store, inset: inset)
|
||||
case .background:
|
||||
BoardBackgroundTabView(store: store, recents: recents, inset: inset)
|
||||
case .theme:
|
||||
BoardThemeTabView(store: store, inset: inset)
|
||||
case .git:
|
||||
Color.clear.frame(height: 120)
|
||||
}
|
||||
@@ -397,11 +398,14 @@ struct BoardInfoView: View {
|
||||
|
||||
// MARK: Parked pending the Git tab session (2026-08-07)
|
||||
//
|
||||
// Nothing below this mark renders today. The style-editor embed that once lived here has
|
||||
// rehomed to `BoardBackgroundTabView`; what is left is the git section — postures, notes, and
|
||||
// the Board Settings… row — waiting for the Git tab's own session. Parked rather than deleted
|
||||
// because every seam it hangs on is settled, test-pinned design (`BoardGitSectionTests`,
|
||||
// `BoardSettingsAvailabilityTests`), and the tab sessions rehome surfaces, not rulings.
|
||||
// Nothing below this mark renders today. The style-editor embed that once lived here briefly
|
||||
// rehomed to `BoardThemeTabView` and has since moved back out of the popover entirely — manual
|
||||
// board styling is reachable through Style… ⌥⌘S, and the Theme tab's Solid color / Pattern picker
|
||||
// covers the same ground its "Board" background grid did. What is left below is the git section —
|
||||
// postures, notes, and the Board Settings… row — waiting for the Git tab's own session. Parked
|
||||
// rather than deleted because every seam it hangs on is settled, test-pinned design
|
||||
// (`BoardGitSectionTests`, `BoardSettingsAvailabilityTests`), and the tab sessions rehome
|
||||
// surfaces, not rulings.
|
||||
|
||||
/// The popover's closing section, whichever of the six postures this board is in — see
|
||||
/// `BoardGitSection`.
|
||||
|
||||
Reference in New Issue
Block a user