The tab bar retires — boards are the app, settings behind the gear, recency the default order
The boards stack becomes the root screen: Settings moves from its own tab to a sheet behind a leading gearshape button, the sort pickers trade their text segments for symbols (hand.draw, textformat.abc, clock) with the words kept for accessibility, and every list now opens sorted by most recent change. UI tests re-aimed at the gear button and Done-button scoping fixed for the sheet-over-sheet nav bars — 4/4 green in the simulator. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
import SwiftUI
|
||||
import IndieAbout
|
||||
|
||||
/// The About section (indie-about skill).
|
||||
struct SettingsTabView: View {
|
||||
/// The About section (indie-about skill). Presented as a sheet from `BoardsTabView`'s gear
|
||||
/// button, so it carries its own navigation stack and a Done button to dismiss itself.
|
||||
struct SettingsScreen: View {
|
||||
@Environment(BoardIndexStore.self) private var index
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
@@ -19,9 +21,14 @@ struct SettingsTabView: View {
|
||||
}
|
||||
}
|
||||
.navigationTitle("Settings")
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .topBarTrailing) {
|
||||
Button("Done") { dismiss() }
|
||||
}
|
||||
}
|
||||
}
|
||||
// Idempotent (BoardIndexStore.start()), and harmless if BoardsTabView already called it —
|
||||
// this tab can be the first one the user opens.
|
||||
// defensive only, since the boards screen is always what starts the index now.
|
||||
.task { index.start() }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user