From 416c376077e03a2903fa8c6769fef28d5529c0b7 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 13 Dec 2025 01:49:04 +0000 Subject: [PATCH] feat(ios): add close button and ready canvas --- .../ios/Sources/Screen/ScreenController.swift | 69 ++++++++++++++++++- apps/ios/Sources/Settings/SettingsTab.swift | 11 +++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/apps/ios/Sources/Screen/ScreenController.swift b/apps/ios/Sources/Screen/ScreenController.swift index 0d8af18a1..c57340c1d 100644 --- a/apps/ios/Sources/Screen/ScreenController.swift +++ b/apps/ios/Sources/Screen/ScreenController.swift @@ -92,21 +92,73 @@ final class ScreenController: ObservableObject { :root { color-scheme: dark; } html,body { height:100%; margin:0; } body { - background:#000; + background: radial-gradient(1200px 900px at 15% 20%, rgba(42, 113, 255, 0.18), rgba(0,0,0,0) 55%), + radial-gradient(900px 700px at 85% 30%, rgba(255, 0, 138, 0.14), rgba(0,0,0,0) 60%), + radial-gradient(1000px 900px at 60% 90%, rgba(0, 209, 255, 0.10), rgba(0,0,0,0) 60%), + #000; + overflow: hidden; + } + body::before { + content:""; + position: fixed; + inset: -20%; + background: + repeating-linear-gradient(0deg, rgba(255,255,255,0.02) 0, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 48px), + repeating-linear-gradient(90deg, rgba(255,255,255,0.02) 0, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 48px); + transform: rotate(-7deg); + opacity: 0.55; + pointer-events: none; } canvas { display:block; width:100vw; height:100vh; + touch-action: none; + } + #clawdis-status { + position: fixed; + inset: 0; + display: grid; + place-items: center; + pointer-events: none; + } + #clawdis-status .card { + text-align: center; + padding: 16px 18px; + border-radius: 14px; + background: rgba(18, 18, 22, 0.42); + border: 1px solid rgba(255,255,255,0.08); + box-shadow: 0 18px 60px rgba(0,0,0,0.55); + backdrop-filter: blur(14px); + } + #clawdis-status .title { + font: 600 20px -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, sans-serif; + letter-spacing: 0.2px; + color: rgba(255,255,255,0.92); + text-shadow: 0 0 22px rgba(42, 113, 255, 0.35); + } + #clawdis-status .subtitle { + margin-top: 6px; + font: 500 12px -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif; + color: rgba(255,255,255,0.58); } +
+
+
Ready
+
Waiting for agent
+
+
diff --git a/apps/ios/Sources/Settings/SettingsTab.swift b/apps/ios/Sources/Settings/SettingsTab.swift index 4c0b486d6..2bdeef99a 100644 --- a/apps/ios/Sources/Settings/SettingsTab.swift +++ b/apps/ios/Sources/Settings/SettingsTab.swift @@ -2,6 +2,7 @@ import SwiftUI struct SettingsTab: View { @EnvironmentObject private var appModel: NodeAppModel + @Environment(\.dismiss) private var dismiss @AppStorage("node.displayName") private var displayName: String = "iOS Node" @AppStorage("node.instanceId") private var instanceId: String = UUID().uuidString @AppStorage("voiceWake.enabled") private var voiceWakeEnabled: Bool = false @@ -65,6 +66,16 @@ struct SettingsTab: View { } } .navigationTitle("Settings") + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button { + self.dismiss() + } label: { + Image(systemName: "xmark") + } + .accessibilityLabel("Close") + } + } .onAppear { self.discovery.start() } .onDisappear { self.discovery.stop() } .onChange(of: self.discovery.bridges) { _, newValue in