commit abd818d66267e51ca03cc80c419393c9c53502d9
parent 0b99e0cba36854bb58c08989aceabbb105e3e29c
Author: Michael Camilleri <[email protected]>
Date: Tue, 24 Mar 2026 18:47:33 +0900
Add debugging section to Settings screen
Diffstat:
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/ListlessiOS/Views/SettingsView.swift b/ListlessiOS/Views/SettingsView.swift
@@ -7,6 +7,9 @@ struct SettingsView: View {
@AppStorage("appearanceMode") private var appearanceMode = 0
@AppStorage("colorTheme") private var colorThemeRaw = 0
@AppStorage("hapticsEnabled") private var hapticsEnabled = true
+ @AppStorage("debugMode") private var debugMode = false
+ @AppStorage("showFPSOverlay") private var showFPSOverlay = false
+ @State private var easterEggTaps = 0
var body: some View {
NavigationStack {
@@ -60,6 +63,12 @@ struct SettingsView: View {
.pickerStyle(.segmented)
}
+ if debugMode {
+ Section("Debugging") {
+ Toggle("FPS Overlay", isOn: $showFPSOverlay)
+ }
+ }
+
Section {
NavigationLink("About") {
AboutView()
@@ -69,6 +78,16 @@ struct SettingsView: View {
.frame(maxWidth: .infinity)
.multilineTextAlignment(.center)
.padding(.top, 24)
+ .onTapGesture {
+ easterEggTaps += 1
+ if easterEggTaps >= 4 {
+ debugMode.toggle()
+ if !debugMode {
+ showFPSOverlay = false
+ }
+ easterEggTaps = 0
+ }
+ }
}
}
.navigationTitle("Settings")
diff --git a/ListlessiOS/Views/TaskListView.swift b/ListlessiOS/Views/TaskListView.swift
@@ -31,6 +31,7 @@ struct TaskListView: View, TaskListViewProtocol {
@AppStorage("headingText") var headingText = "Items"
@AppStorage("colorTheme") private var colorThemeRaw = 0
@AppStorage("hapticsEnabled") private var hapticsEnabled = true
+ @AppStorage("showFPSOverlay") private var showFPSOverlay = false
private var colorTheme: ColorTheme { ColorTheme(rawValue: colorThemeRaw) ?? .pilbara }
@Environment(\.undoManager) var undoManager
@Environment(\.managedObjectContext) var managedObjectContext
@@ -407,10 +408,12 @@ struct TaskListView: View, TaskListViewProtocol {
var body: some View {
taskScrollView
.overlay(alignment: .topTrailing) {
- FPSOverlay()
- .padding(.top, 4)
- .padding(.trailing, 8)
- .allowsHitTesting(false)
+ if showFPSOverlay {
+ FPSOverlay()
+ .padding(.top, 4)
+ .padding(.trailing, 8)
+ .allowsHitTesting(false)
+ }
}
.simultaneousGesture(
SpatialTapGesture(coordinateSpace: .global).onEnded { value in