| author | |
| committer | |
| log | ac3a331918b7b25271058ae7e12f1e15772fb3de |
| tree | 3abb9c2a8042692028aae45ae4b76c1a80cdc264 |
| parent | 8fc7f22941969d7a2c06929dc29aa86ae1b02f33 |
| signature | Signed by PGP key B5690EEEBB952194 |
4 files changed, 48 insertions(+), 729 deletions(-)
experiments/messages-glass-lab/MessagesGlassLab.xcodeproj/project.pbxproj deleted-285| ... | @@ -1,285 +0,0 @@ | ||
| 1 | // !$*UTF8*$! | ||
| 2 | { | ||
| 3 | 	archiveVersion = 1; | ||
| 4 | 	classes = { | ||
| 5 | 	}; | ||
| 6 | 	objectVersion = 77; | ||
| 7 | 	objects = { | ||
| 8 | |||
| 9 | /* Begin PBXBuildFile section */ | ||
| 10 | 		8A01A0012D10000100A00001 /* MessagesGlassLabApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */; }; | ||
| 11 | 		8A01A0032D10000100A00001 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A01A0022D10000100A00001 /* ContentView.swift */; }; | ||
| 12 | /* End PBXBuildFile section */ | ||
| 13 | |||
| 14 | /* Begin PBXFileReference section */ | ||
| 15 | 		8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessagesGlassLabApp.swift; sourceTree = "<group>"; }; | ||
| 16 | 		8A01A0022D10000100A00001 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; | ||
| 17 | 		8A01A0102D10000100A00001 /* MessagesGlassLab.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MessagesGlassLab.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
| 18 | /* End PBXFileReference section */ | ||
| 19 | |||
| 20 | 		8A01A0202D10000100A00001 /* MessagesGlassLab */ = { | ||
| 21 | 			isa = PBXGroup; | ||
| 22 | 			children = ( | ||
| 23 | 				8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */, | ||
| 24 | 				8A01A0022D10000100A00001 /* ContentView.swift */, | ||
| 25 | 			); | ||
| 26 | 			path = MessagesGlassLab; | ||
| 27 | 			sourceTree = "<group>"; | ||
| 28 | 		}; | ||
| 29 | |||
| 30 | /* Begin PBXFrameworksBuildPhase section */ | ||
| 31 | 		8A01A0112D10000100A00001 /* Frameworks */ = { | ||
| 32 | 			isa = PBXFrameworksBuildPhase; | ||
| 33 | 			buildActionMask = 2147483647; | ||
| 34 | 			files = ( | ||
| 35 | 			); | ||
| 36 | 			runOnlyForDeploymentPostprocessing = 0; | ||
| 37 | 		}; | ||
| 38 | /* End PBXFrameworksBuildPhase section */ | ||
| 39 | |||
| 40 | /* Begin PBXGroup section */ | ||
| 41 | 		8A01A0302D10000100A00001 = { | ||
| 42 | 			isa = PBXGroup; | ||
| 43 | 			children = ( | ||
| 44 | 				8A01A0202D10000100A00001 /* MessagesGlassLab */, | ||
| 45 | 				8A01A0312D10000100A00001 /* Products */, | ||
| 46 | 			); | ||
| 47 | 			sourceTree = "<group>"; | ||
| 48 | 		}; | ||
| 49 | 		8A01A0312D10000100A00001 /* Products */ = { | ||
| 50 | 			isa = PBXGroup; | ||
| 51 | 			children = ( | ||
| 52 | 				8A01A0102D10000100A00001 /* MessagesGlassLab.app */, | ||
| 53 | 			); | ||
| 54 | 			name = Products; | ||
| 55 | 			sourceTree = "<group>"; | ||
| 56 | 		}; | ||
| 57 | /* End PBXGroup section */ | ||
| 58 | |||
| 59 | /* Begin PBXNativeTarget section */ | ||
| 60 | 		8A01A0402D10000100A00001 /* MessagesGlassLab */ = { | ||
| 61 | 			isa = PBXNativeTarget; | ||
| 62 | 			buildConfigurationList = 8A01A0502D10000100A00001 /* Build configuration list for PBXNativeTarget "MessagesGlassLab" */; | ||
| 63 | 			buildPhases = ( | ||
| 64 | 				8A01A0412D10000100A00001 /* Sources */, | ||
| 65 | 				8A01A0112D10000100A00001 /* Frameworks */, | ||
| 66 | 				8A01A0422D10000100A00001 /* Resources */, | ||
| 67 | 			); | ||
| 68 | 			buildRules = ( | ||
| 69 | 			); | ||
| 70 | 			dependencies = ( | ||
| 71 | 			); | ||
| 72 | 			name = MessagesGlassLab; | ||
| 73 | 			packageProductDependencies = ( | ||
| 74 | 			); | ||
| 75 | 			productName = MessagesGlassLab; | ||
| 76 | 			productReference = 8A01A0102D10000100A00001 /* MessagesGlassLab.app */; | ||
| 77 | 			productType = "com.apple.product-type.application"; | ||
| 78 | 		}; | ||
| 79 | /* End PBXNativeTarget section */ | ||
| 80 | |||
| 81 | /* Begin PBXProject section */ | ||
| 82 | 		8A01A0602D10000100A00001 /* Project object */ = { | ||
| 83 | 			isa = PBXProject; | ||
| 84 | 			attributes = { | ||
| 85 | 				BuildIndependentTargetsInParallel = 1; | ||
| 86 | 				LastSwiftUpdateCheck = 2700; | ||
| 87 | 				LastUpgradeCheck = 2700; | ||
| 88 | 				TargetAttributes = { | ||
| 89 | 					8A01A0402D10000100A00001 = { | ||
| 90 | 						CreatedOnToolsVersion = 27.0; | ||
| 91 | 					}; | ||
| 92 | 				}; | ||
| 93 | 			}; | ||
| 94 | 			buildConfigurationList = 8A01A0612D10000100A00001 /* Build configuration list for PBXProject "MessagesGlassLab" */; | ||
| 95 | 			compatibilityVersion = "Xcode 16.0"; | ||
| 96 | 			developmentRegion = en; | ||
| 97 | 			hasScannedForEncodings = 0; | ||
| 98 | 			knownRegions = ( | ||
| 99 | 				en, | ||
| 100 | 				Base, | ||
| 101 | 			); | ||
| 102 | 			mainGroup = 8A01A0302D10000100A00001; | ||
| 103 | 			minimizedProjectReferenceProxies = 1; | ||
| 104 | 			preferredProjectObjectVersion = 77; | ||
| 105 | 			productRefGroup = 8A01A0312D10000100A00001 /* Products */; | ||
| 106 | 			projectDirPath = ""; | ||
| 107 | 			projectRoot = ""; | ||
| 108 | 			targets = ( | ||
| 109 | 				8A01A0402D10000100A00001 /* MessagesGlassLab */, | ||
| 110 | 			); | ||
| 111 | 		}; | ||
| 112 | /* End PBXProject section */ | ||
| 113 | |||
| 114 | /* Begin PBXResourcesBuildPhase section */ | ||
| 115 | 		8A01A0422D10000100A00001 /* Resources */ = { | ||
| 116 | 			isa = PBXResourcesBuildPhase; | ||
| 117 | 			buildActionMask = 2147483647; | ||
| 118 | 			files = ( | ||
| 119 | 			); | ||
| 120 | 			runOnlyForDeploymentPostprocessing = 0; | ||
| 121 | 		}; | ||
| 122 | /* End PBXResourcesBuildPhase section */ | ||
| 123 | |||
| 124 | /* Begin PBXSourcesBuildPhase section */ | ||
| 125 | 		8A01A0412D10000100A00001 /* Sources */ = { | ||
| 126 | 			isa = PBXSourcesBuildPhase; | ||
| 127 | 			buildActionMask = 2147483647; | ||
| 128 | 			files = ( | ||
| 129 | 				8A01A0012D10000100A00001 /* MessagesGlassLabApp.swift in Sources */, | ||
| 130 | 				8A01A0032D10000100A00001 /* ContentView.swift in Sources */, | ||
| 131 | 			); | ||
| 132 | 			runOnlyForDeploymentPostprocessing = 0; | ||
| 133 | 		}; | ||
| 134 | /* End PBXSourcesBuildPhase section */ | ||
| 135 | |||
| 136 | /* Begin XCBuildConfiguration section */ | ||
| 137 | 		8A01A0622D10000100A00001 /* Debug */ = { | ||
| 138 | 			isa = XCBuildConfiguration; | ||
| 139 | 			buildSettings = { | ||
| 140 | 				ALWAYS_SEARCH_USER_PATHS = NO; | ||
| 141 | 				CLANG_ENABLE_MODULES = YES; | ||
| 142 | 				CLANG_ENABLE_OBJC_ARC = YES; | ||
| 143 | 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
| 144 | 				CLANG_WARN_BOOL_CONVERSION = YES; | ||
| 145 | 				CLANG_WARN_COMMA = YES; | ||
| 146 | 				CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
| 147 | 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
| 148 | 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
| 149 | 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
| 150 | 				CLANG_WARN_EMPTY_BODY = YES; | ||
| 151 | 				CLANG_WARN_ENUM_CONVERSION = YES; | ||
| 152 | 				CLANG_WARN_INFINITE_RECURSION = YES; | ||
| 153 | 				CLANG_WARN_INT_CONVERSION = YES; | ||
| 154 | 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
| 155 | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
| 156 | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
| 157 | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
| 158 | 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||
| 159 | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
| 160 | 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
| 161 | 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
| 162 | 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | ||
| 163 | 				CLANG_WARN_UNREACHABLE_CODE = YES; | ||
| 164 | 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
| 165 | 				COPY_PHASE_STRIP = NO; | ||
| 166 | 				DEBUG_INFORMATION_FORMAT = dwarf; | ||
| 167 | 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
| 168 | 				ENABLE_TESTABILITY = YES; | ||
| 169 | 				GCC_C_LANGUAGE_STANDARD = gnu17; | ||
| 170 | 				GCC_DYNAMIC_NO_PIC = NO; | ||
| 171 | 				GCC_NO_COMMON_BLOCKS = YES; | ||
| 172 | 				GCC_OPTIMIZATION_LEVEL = 0; | ||
| 173 | 				GCC_PREPROCESSOR_DEFINITIONS = ( | ||
| 174 | 					"DEBUG=1", | ||
| 175 | 					"$(inherited)", | ||
| 176 | 				); | ||
| 177 | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
| 178 | 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
| 179 | 				GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
| 180 | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
| 181 | 				GCC_WARN_UNUSED_FUNCTION = YES; | ||
| 182 | 				GCC_WARN_UNUSED_VARIABLE = YES; | ||
| 183 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | ||
| 184 | 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | ||
| 185 | 				MTL_FAST_MATH = YES; | ||
| 186 | 				ONLY_ACTIVE_ARCH = YES; | ||
| 187 | 				SDKROOT = iphoneos; | ||
| 188 | 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||
| 189 | 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
| 190 | 				SWIFT_VERSION = 6.0; | ||
| 191 | 			}; | ||
| 192 | 			name = Debug; | ||
| 193 | 		}; | ||
| 194 | 		8A01A0632D10000100A00001 /* Release */ = { | ||
| 195 | 			isa = XCBuildConfiguration; | ||
| 196 | 			buildSettings = { | ||
| 197 | 				ALWAYS_SEARCH_USER_PATHS = NO; | ||
| 198 | 				CLANG_ENABLE_MODULES = YES; | ||
| 199 | 				CLANG_ENABLE_OBJC_ARC = YES; | ||
| 200 | 				COPY_PHASE_STRIP = NO; | ||
| 201 | 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
| 202 | 				ENABLE_NS_ASSERTIONS = NO; | ||
| 203 | 				GCC_C_LANGUAGE_STANDARD = gnu17; | ||
| 204 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | ||
| 205 | 				MTL_FAST_MATH = YES; | ||
| 206 | 				SDKROOT = iphoneos; | ||
| 207 | 				SWIFT_COMPILATION_MODE = wholemodule; | ||
| 208 | 				SWIFT_VERSION = 6.0; | ||
| 209 | 				VALIDATE_PRODUCT = YES; | ||
| 210 | 			}; | ||
| 211 | 			name = Release; | ||
| 212 | 		}; | ||
| 213 | 		8A01A0512D10000100A00001 /* Debug */ = { | ||
| 214 | 			isa = XCBuildConfiguration; | ||
| 215 | 			buildSettings = { | ||
| 216 | 				ASSETCATALOG_COMPILER_APPICON_NAME = ""; | ||
| 217 | 				CODE_SIGNING_ALLOWED = NO; | ||
| 218 | 				CODE_SIGNING_REQUIRED = NO; | ||
| 219 | 				CODE_SIGN_STYLE = Automatic; | ||
| 220 | 				DEVELOPMENT_TEAM = ""; | ||
| 221 | 				GENERATE_INFOPLIST_FILE = YES; | ||
| 222 | 				INFOPLIST_KEY_CFBundleDisplayName = "Messages Glass Lab"; | ||
| 223 | 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; | ||
| 224 | 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; | ||
| 225 | 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
| 226 | 				INFOPLIST_KEY_UILaunchScreen_Generation = YES; | ||
| 227 | 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
| 228 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | ||
| 229 | 				PRODUCT_BUNDLE_IDENTIFIER = com.t3tools.messagesglasslab; | ||
| 230 | 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||
| 231 | 				SWIFT_EMIT_LOC_STRINGS = YES; | ||
| 232 | 				SWIFT_VERSION = 6.0; | ||
| 233 | 				TARGETED_DEVICE_FAMILY = "1,2"; | ||
| 234 | 			}; | ||
| 235 | 			name = Debug; | ||
| 236 | 		}; | ||
| 237 | 		8A01A0522D10000100A00001 /* Release */ = { | ||
| 238 | 			isa = XCBuildConfiguration; | ||
| 239 | 			buildSettings = { | ||
| 240 | 				ASSETCATALOG_COMPILER_APPICON_NAME = ""; | ||
| 241 | 				CODE_SIGNING_ALLOWED = NO; | ||
| 242 | 				CODE_SIGNING_REQUIRED = NO; | ||
| 243 | 				CODE_SIGN_STYLE = Automatic; | ||
| 244 | 				DEVELOPMENT_TEAM = ""; | ||
| 245 | 				GENERATE_INFOPLIST_FILE = YES; | ||
| 246 | 				INFOPLIST_KEY_CFBundleDisplayName = "Messages Glass Lab"; | ||
| 247 | 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; | ||
| 248 | 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; | ||
| 249 | 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | ||
| 250 | 				INFOPLIST_KEY_UILaunchScreen_Generation = YES; | ||
| 251 | 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | ||
| 252 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | ||
| 253 | 				PRODUCT_BUNDLE_IDENTIFIER = com.t3tools.messagesglasslab; | ||
| 254 | 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||
| 255 | 				SWIFT_EMIT_LOC_STRINGS = YES; | ||
| 256 | 				SWIFT_VERSION = 6.0; | ||
| 257 | 				TARGETED_DEVICE_FAMILY = "1,2"; | ||
| 258 | 			}; | ||
| 259 | 			name = Release; | ||
| 260 | 		}; | ||
| 261 | /* End XCBuildConfiguration section */ | ||
| 262 | |||
| 263 | /* Begin XCConfigurationList section */ | ||
| 264 | 		8A01A0612D10000100A00001 /* Build configuration list for PBXProject "MessagesGlassLab" */ = { | ||
| 265 | 			isa = XCConfigurationList; | ||
| 266 | 			buildConfigurations = ( | ||
| 267 | 				8A01A0622D10000100A00001 /* Debug */, | ||
| 268 | 				8A01A0632D10000100A00001 /* Release */, | ||
| 269 | 			); | ||
| 270 | 			defaultConfigurationIsVisible = 0; | ||
| 271 | 			defaultConfigurationName = Debug; | ||
| 272 | 		}; | ||
| 273 | 		8A01A0502D10000100A00001 /* Build configuration list for PBXNativeTarget "MessagesGlassLab" */ = { | ||
| 274 | 			isa = XCConfigurationList; | ||
| 275 | 			buildConfigurations = ( | ||
| 276 | 				8A01A0512D10000100A00001 /* Debug */, | ||
| 277 | 				8A01A0522D10000100A00001 /* Release */, | ||
| 278 | 			); | ||
| 279 | 			defaultConfigurationIsVisible = 0; | ||
| 280 | 			defaultConfigurationName = Debug; | ||
| 281 | 		}; | ||
| 282 | /* End XCConfigurationList section */ | ||
| 283 | 	}; | ||
| 284 | 	rootObject = 8A01A0602D10000100A00001 /* Project object */; | ||
| 285 | } | ||
experiments/messages-glass-lab/MessagesGlassLab/ContentView.swift deleted-386| ... | @@ -1,386 +0,0 @@ | ||
| 1 | import SwiftUI | ||
| 2 | |||
| 3 | struct LabThread: Identifiable, Hashable { | ||
| 4 | let id = UUID() | ||
| 5 | let title: String | ||
| 6 | let subtitle: String | ||
| 7 | let time: String | ||
| 8 | let initials: String | ||
| 9 | let tint: Color | ||
| 10 | let preview: String | ||
| 11 | } | ||
| 12 | |||
| 13 | private let threads: [LabThread] = [ | ||
| 14 | .init(title: "Markdown rendering test", subtitle: "t3code · Julius’s Mac mini", time: "14h", initials: "MD", tint: .blue, preview: "Renderer stress test, terminal snippets, code blocks, and a very long markdown transcript."), | ||
| 15 | .init(title: "iPad rectly text correction", subtitle: "Julius’s Mac mini · main", time: "16h", initials: "IP", tint: .purple, preview: "Fix iPad layout, search behavior, hardware keyboard, and trackpad scrolling."), | ||
| 16 | .init(title: "Preview Webview Persists Off Panel", subtitle: "codething-mvp · Julius’s MacBook Pro", time: "22m", initials: "PW", tint: .teal, preview: "The browser preview should not leak outside the active panel when switching threads."), | ||
| 17 | .init(title: "Add file preview action buttons", subtitle: "codex/connection-preview", time: "10d", initials: "FP", tint: .orange, preview: "Open files at exact lines and expose copy/open actions in the renderer."), | ||
| 18 | .init(title: "Investigate v2 pipeline slowdown", subtitle: "codex-turn-runner", time: "1d", initials: "V2", tint: .gray, preview: "Compare orchestration traces and find why streamed events are delayed under load."), | ||
| 19 | .init(title: "Fix dark-mode header glass", subtitle: "t3code/ipad-responsive-mobile-layout", time: "2h", initials: "DG", tint: .indigo, preview: "Compare dark scroll-edge material against Messages and Mail, then map the behavior back to React Native Screens."), | ||
| 20 | .init(title: "Magic Keyboard sidebar scroll", subtitle: "mobile/input-polish", time: "3h", initials: "MK", tint: .cyan, preview: "Trackpad scrolling should remain fluid while swipe actions still work for touch gestures."), | ||
| 21 | .init(title: "Terminal tab key routing", subtitle: "terminal/native-pty", time: "5h", initials: "⌘", tint: .green, preview: "Hardware Tab should go to the terminal session instead of escaping to the thread search field."), | ||
| 22 | .init(title: "Diff renderer split inspector", subtitle: "review-diff/native", time: "8h", initials: "Δ", tint: .red, preview: "Keep file navigation, sticky headers, and selected hunk state stable in a three-column iPad layout."), | ||
| 23 | .init(title: "Composer glass affordance", subtitle: "composer/liquid-glass", time: "9h", initials: "CG", tint: .pink, preview: "Prototype a bottom composer that feels native without covering too much content while scrolling."), | ||
| 24 | .init(title: "Search placement audit", subtitle: "navigation/native-search", time: "11h", initials: "SP", tint: .mint, preview: "Validate whether search belongs in the bottom toolbar on iPhone and the sidebar chrome on iPad."), | ||
| 25 | .init(title: "Thread row density pass", subtitle: "home/messages-list", time: "12h", initials: "TR", tint: .brown, preview: "Tune row height, separators, preview text, chevrons, and status glyphs to match native list rhythm."), | ||
| 26 | .init(title: "Files navigator polish", subtitle: "files/inspector", time: "1d", initials: "FN", tint: .yellow, preview: "Make the file explorer feel like an iPad side inspector instead of a cramped web sidebar."), | ||
| 27 | .init(title: "Toolbar grouping experiment", subtitle: "native-toolbar-glass", time: "2d", initials: "TB", tint: .blue.opacity(0.7), preview: "Compare separate glass buttons with merged toolbar groups and spacing behavior."), | ||
| 28 | .init(title: "Scroll-edge fade comparison", subtitle: "swiftui/messages-lab", time: "3d", initials: "SE", tint: .purple.opacity(0.8), preview: "Record scroll positions to see where native headers start becoming visible over content."), | ||
| 29 | .init(title: "iPad sidebar selection state", subtitle: "split-view/sidebar", time: "4d", initials: "SS", tint: .teal.opacity(0.75), preview: "Find the right selected-row treatment for dark and light mode in a persistent sidebar."), | ||
| 30 | .init(title: "Preview webview panel bug", subtitle: "preview/browser", time: "5d", initials: "WB", tint: .orange.opacity(0.8), preview: "Ensure preview browser surfaces stay clipped to the active detail pane during navigation."), | ||
| 31 | .init(title: "Keyboard shortcuts overlay", subtitle: "hardware-keyboard", time: "6d", initials: "KS", tint: .gray.opacity(0.9), preview: "Expose discoverable commands and keep focus behavior aligned with iPadOS keyboard conventions."), | ||
| 32 | .init(title: "Thread loading skeleton", subtitle: "mobile/perceived-performance", time: "1w", initials: "LS", tint: .green.opacity(0.75), preview: "Replace jarring empty states with native-feeling loading rows while snapshots hydrate."), | ||
| 33 | .init(title: "Connection recovery UX", subtitle: "lan-pairing", time: "2w", initials: "CR", tint: .red.opacity(0.75), preview: "Make reconnect banners and retry affordances less intrusive during scroll and composition."), | ||
| 34 | ] | ||
| 35 | |||
| 36 | struct ContentView: View { | ||
| 37 | @Environment(\.horizontalSizeClass) private var horizontalSizeClass | ||
| 38 | @State private var searchText = "" | ||
| 39 | @State private var selectedThread: LabThread? = threads[0] | ||
| 40 | |||
| 41 | var body: some View { | ||
| 42 | if horizontalSizeClass == .regular { | ||
| 43 | NativeSplitLab(searchText: $searchText, selectedThread: $selectedThread) | ||
| 44 | } else { | ||
| 45 | NativePhoneLab(searchText: $searchText, selectedThread: $selectedThread) | ||
| 46 | } | ||
| 47 | } | ||
| 48 | } | ||
| 49 | |||
| 50 | private var filteredThreads: [LabThread] { | ||
| 51 | threads | ||
| 52 | } | ||
| 53 | |||
| 54 | private let glassDebugCodeLines: [String] = [ | ||
| 55 | "# Native RNS glass debug route", | ||
| 56 | "", | ||
| 57 | "This screen intentionally avoids Expo Router headers.", | ||
| 58 | "The native header below is owned by react-native-screens.", | ||
| 59 | "", | ||
| 60 | "Expected iOS 26 behavior:", | ||
| 61 | "- At rest: header should feel like app background", | ||
| 62 | "- While scrolled: content should blur behind the header", | ||
| 63 | "- No gray custom overlay", | ||
| 64 | "- No JS blur view", | ||
| 65 | "", | ||
| 66 | "Scroll edge effect should sample actual content:", | ||
| 67 | "const header = { translucent: true }", | ||
| 68 | "const scrollEdgeEffects = { top: 'soft' }", | ||
| 69 | "", | ||
| 70 | "Bright rows below make sampling failures obvious.", | ||
| 71 | "", | ||
| 72 | "node_modules", | ||
| 73 | "/.pnp", | ||
| 74 | ".pnp.*", | ||
| 75 | ".yarn/*", | ||
| 76 | "!.yarn/patches", | ||
| 77 | "!.yarn/plugins", | ||
| 78 | "!.yarn/releases", | ||
| 79 | "!.yarn/versions", | ||
| 80 | "", | ||
| 81 | "# testing", | ||
| 82 | "/coverage", | ||
| 83 | ".convex", | ||
| 84 | "e2e/.local-dev.json", | ||
| 85 | "e2e/playwright-report", | ||
| 86 | "e2e/test-results", | ||
| 87 | "", | ||
| 88 | "# app surfaces", | ||
| 89 | "threads", | ||
| 90 | "terminal", | ||
| 91 | "diff renderer", | ||
| 92 | "file explorer", | ||
| 93 | "composer", | ||
| 94 | "native header", | ||
| 95 | "scroll edge", | ||
| 96 | "liquid glass", | ||
| 97 | ] | ||
| 98 | |||
| 99 | private let glassDebugSwatches: [Color] = [ | ||
| 100 | .blue, | ||
| 101 | .green, | ||
| 102 | .orange, | ||
| 103 | .purple, | ||
| 104 | .cyan, | ||
| 105 | .pink, | ||
| 106 | ] | ||
| 107 | |||
| 108 | struct NativePhoneLab: View { | ||
| 109 | @Binding var searchText: String | ||
| 110 | @Binding var selectedThread: LabThread? | ||
| 111 | |||
| 112 | var body: some View { | ||
| 113 | NavigationStack { | ||
| 114 | NativeThreadLab(thread: selectedThread ?? threads[0]) | ||
| 115 | } | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | struct NativeSplitLab: View { | ||
| 120 | @Binding var searchText: String | ||
| 121 | @Binding var selectedThread: LabThread? | ||
| 122 | |||
| 123 | var body: some View { | ||
| 124 | NavigationSplitView { | ||
| 125 | List(filteredThreads, selection: $selectedThread) { thread in | ||
| 126 | MessageSidebarRow(thread: thread) | ||
| 127 | .tag(thread) | ||
| 128 | } | ||
| 129 | .listStyle(.sidebar) | ||
| 130 | .navigationTitle("Threads") | ||
| 131 | .searchable(text: $searchText, placement: .sidebar, prompt: "Search") | ||
| 132 | .toolbar { | ||
| 133 | ToolbarItemGroup(placement: .topBarTrailing) { | ||
| 134 | Menu { | ||
| 135 | Button("All Threads", systemImage: "tray.full") {} | ||
| 136 | Button("Ready", systemImage: "checkmark.circle") {} | ||
| 137 | Button("Running", systemImage: "bolt.circle") {} | ||
| 138 | } label: { | ||
| 139 | Image(systemName: "line.3.horizontal.decrease") | ||
| 140 | } | ||
| 141 | .buttonStyle(.glass) | ||
| 142 | |||
| 143 | Button {} label: { | ||
| 144 | Image(systemName: "gearshape") | ||
| 145 | } | ||
| 146 | .buttonStyle(.glass) | ||
| 147 | |||
| 148 | Button {} label: { | ||
| 149 | Image(systemName: "square.and.pencil") | ||
| 150 | } | ||
| 151 | .buttonStyle(.glass) | ||
| 152 | } | ||
| 153 | } | ||
| 154 | } detail: { | ||
| 155 | if let selectedThread { | ||
| 156 | NativeThreadLab(thread: selectedThread) | ||
| 157 | } else { | ||
| 158 | ContentUnavailableView("Select a thread", systemImage: "sidebar.left") | ||
| 159 | } | ||
| 160 | } | ||
| 161 | } | ||
| 162 | } | ||
| 163 | |||
| 164 | struct MessageListRow: View { | ||
| 165 | let thread: LabThread | ||
| 166 | |||
| 167 | var body: some View { | ||
| 168 | HStack(alignment: .top, spacing: 14) { | ||
| 169 | Circle() | ||
| 170 | .fill(thread.tint.gradient) | ||
| 171 | .frame(width: 52, height: 52) | ||
| 172 | .overlay { | ||
| 173 | Text(thread.initials) | ||
| 174 | .font(.headline.weight(.bold)) | ||
| 175 | .foregroundStyle(.white) | ||
| 176 | } | ||
| 177 | |||
| 178 | VStack(alignment: .leading, spacing: 4) { | ||
| 179 | HStack { | ||
| 180 | Text(thread.title) | ||
| 181 | .font(.headline.weight(.semibold)) | ||
| 182 | .lineLimit(1) | ||
| 183 | Spacer(minLength: 8) | ||
| 184 | Text(thread.time) | ||
| 185 | .foregroundStyle(.secondary) | ||
| 186 | Image(systemName: "chevron.right") | ||
| 187 | .font(.caption.weight(.semibold)) | ||
| 188 | .foregroundStyle(.tertiary) | ||
| 189 | } | ||
| 190 | |||
| 191 | Text(thread.preview) | ||
| 192 | .font(.subheadline) | ||
| 193 | .foregroundStyle(.secondary) | ||
| 194 | .lineLimit(2) | ||
| 195 | } | ||
| 196 | .padding(.vertical, 12) | ||
| 197 | } | ||
| 198 | } | ||
| 199 | } | ||
| 200 | |||
| 201 | struct MessageSidebarRow: View { | ||
| 202 | let thread: LabThread | ||
| 203 | |||
| 204 | var body: some View { | ||
| 205 | VStack(alignment: .leading, spacing: 4) { | ||
| 206 | HStack { | ||
| 207 | Text(thread.title) | ||
| 208 | .font(.headline.weight(.semibold)) | ||
| 209 | .lineLimit(1) | ||
| 210 | Spacer() | ||
| 211 | Text(thread.time) | ||
| 212 | .font(.subheadline) | ||
| 213 | .foregroundStyle(.secondary) | ||
| 214 | } | ||
| 215 | Text(thread.subtitle) | ||
| 216 | .font(.subheadline) | ||
| 217 | .foregroundStyle(.secondary) | ||
| 218 | .lineLimit(1) | ||
| 219 | } | ||
| 220 | .padding(.vertical, 6) | ||
| 221 | } | ||
| 222 | } | ||
| 223 | |||
| 224 | struct NativeThreadLab: View { | ||
| 225 | let thread: LabThread | ||
| 226 | @State private var draft = "Ask the repo agent, or run a command..." | ||
| 227 | @State private var scrollStep = 0 | ||
| 228 | |||
| 229 | private let scrollTimer = Timer.publish(every: 2.8, on: .main, in: .common).autoconnect() | ||
| 230 | private let scrollTargets = ["top", "swatches", "top", "code", "card"] | ||
| 231 | |||
| 232 | var body: some View { | ||
| 233 | ScrollViewReader { proxy in | ||
| 234 | ScrollView { | ||
| 235 | LazyVStack(alignment: .leading, spacing: 22) { | ||
| 236 | Color.clear | ||
| 237 | .frame(height: 0) | ||
| 238 | .id("top") | ||
| 239 | |||
| 240 | hero | ||
| 241 | .padding(.top, 8) | ||
| 242 | |||
| 243 | swatches | ||
| 244 | .id("swatches") | ||
| 245 | |||
| 246 | explanationCard | ||
| 247 | .id("card") | ||
| 248 | |||
| 249 | codeCard | ||
| 250 | .id("code") | ||
| 251 | } | ||
| 252 | .padding(.horizontal, 18) | ||
| 253 | .padding(.top, 8) | ||
| 254 | .padding(.bottom, 96) | ||
| 255 | } | ||
| 256 | .background(Color(uiColor: .systemBackground)) | ||
| 257 | .onReceive(scrollTimer) { _ in | ||
| 258 | guard !scrollTargets.isEmpty else { return } | ||
| 259 | |||
| 260 | let target = scrollTargets[scrollStep % scrollTargets.count] | ||
| 261 | scrollStep += 1 | ||
| 262 | |||
| 263 | withAnimation(.smooth(duration: 1.0)) { | ||
| 264 | proxy.scrollTo(target, anchor: .top) | ||
| 265 | } | ||
| 266 | } | ||
| 267 | } | ||
| 268 | .navigationTitle("RNS Glass") | ||
| 269 | .navigationSubtitle("plain react-native-screens") | ||
| 270 | .toolbar { | ||
| 271 | ToolbarItemGroup(placement: .topBarTrailing) { | ||
| 272 | Button {} label: { Image(systemName: "plus") } | ||
| 273 | .buttonStyle(.glass) | ||
| 274 | Button {} label: { Image(systemName: "magnifyingglass") } | ||
| 275 | .buttonStyle(.glass) | ||
| 276 | } | ||
| 277 | } | ||
| 278 | .safeAreaInset(edge: .bottom) { | ||
| 279 | composer | ||
| 280 | } | ||
| 281 | } | ||
| 282 | |||
| 283 | private var hero: some View { | ||
| 284 | VStack(alignment: .leading, spacing: 10) { | ||
| 285 | Text("plain react-native-screens") | ||
| 286 | .font(.subheadline.weight(.bold)) | ||
| 287 | .textCase(.uppercase) | ||
| 288 | .tracking(0.5) | ||
| 289 | .foregroundStyle(.secondary) | ||
| 290 | |||
| 291 | Text("Native scroll-edge glass") | ||
| 292 | .font(.system(size: 48, weight: .heavy, design: .default)) | ||
| 293 | .lineLimit(nil) | ||
| 294 | .minimumScaleFactor(0.72) | ||
| 295 | |||
| 296 | Text("This route uses RNS directly. The script scrolls automatically so the native header is captured both at rest and with bright content behind it.") | ||
| 297 | .font(.title3) | ||
| 298 | .foregroundStyle(.secondary) | ||
| 299 | } | ||
| 300 | } | ||
| 301 | |||
| 302 | private var swatches: some View { | ||
| 303 | LazyVGrid( | ||
| 304 | columns: [GridItem(.adaptive(minimum: 60), spacing: 12)], | ||
| 305 | alignment: .leading, | ||
| 306 | spacing: 12 | ||
| 307 | ) { | ||
| 308 | ForEach(Array(glassDebugSwatches.enumerated()), id: \.offset) { index, color in | ||
| 309 | Circle() | ||
| 310 | .fill(color.gradient) | ||
| 311 | .frame(width: 60, height: 60) | ||
| 312 | .overlay { | ||
| 313 | Text("\(index + 1)") | ||
| 314 | .font(.title2.weight(.heavy)) | ||
| 315 | .foregroundStyle(.white) | ||
| 316 | } | ||
| 317 | } | ||
| 318 | } | ||
| 319 | } | ||
| 320 | |||
| 321 | private var explanationCard: some View { | ||
| 322 | VStack(alignment: .leading, spacing: 10) { | ||
| 323 | Text("What this isolates") | ||
| 324 | .font(.title2.weight(.bold)) | ||
| 325 | |||
| 326 | Text("Native transparent header + iOS 26 scroll edge effect. No Expo Router header config, no custom blur overlay, no large title requirement.") | ||
| 327 | .font(.title3) | ||
| 328 | .foregroundStyle(.secondary) | ||
| 329 | } | ||
| 330 | .padding(22) | ||
| 331 | .frame(maxWidth: .infinity, alignment: .leading) | ||
| 332 | .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 28, style: .continuous)) | ||
| 333 | .overlay { | ||
| 334 | RoundedRectangle(cornerRadius: 28, style: .continuous) | ||
| 335 | .stroke(.separator.opacity(0.35), lineWidth: 0.5) | ||
| 336 | } | ||
| 337 | } | ||
| 338 | |||
| 339 | private var codeCard: some View { | ||
| 340 | VStack(alignment: .leading, spacing: 0) { | ||
| 341 | ForEach(Array((glassDebugCodeLines + glassDebugCodeLines).enumerated()), id: \.offset) { index, line in | ||
| 342 | HStack(alignment: .top, spacing: 16) { | ||
| 343 | Text("\(index + 1)") | ||
| 344 | .foregroundStyle(.secondary) | ||
| 345 | .frame(width: 34, alignment: .trailing) | ||
| 346 | |||
| 347 | Text(line.isEmpty ? " " : line) | ||
| 348 | .frame(maxWidth: .infinity, alignment: .leading) | ||
| 349 | } | ||
| 350 | .font(.system(size: 16, design: .monospaced)) | ||
| 351 | .lineSpacing(4) | ||
| 352 | .padding(.horizontal, 16) | ||
| 353 | .padding(.vertical, 3) | ||
| 354 | } | ||
| 355 | } | ||
| 356 | .padding(.vertical, 14) | ||
| 357 | .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 24, style: .continuous)) | ||
| 358 | .overlay { | ||
| 359 | RoundedRectangle(cornerRadius: 24, style: .continuous) | ||
| 360 | .stroke(.separator.opacity(0.35), lineWidth: 0.5) | ||
| 361 | } | ||
| 362 | } | ||
| 363 | |||
| 364 | private var composer: some View { | ||
| 365 | HStack(spacing: 10) { | ||
| 366 | Text(draft) | ||
| 367 | .foregroundStyle(.secondary) | ||
| 368 | .lineLimit(1) | ||
| 369 | Spacer() | ||
| 370 | Image(systemName: "arrow.up") | ||
| 371 | .font(.headline.weight(.bold)) | ||
| 372 | .frame(width: 44, height: 44) | ||
| 373 | .glassEffect(.regular.interactive(), in: Circle()) | ||
| 374 | } | ||
| 375 | .padding(.leading, 18) | ||
| 376 | .padding(.trailing, 6) | ||
| 377 | .frame(height: 56) | ||
| 378 | .glassEffect(.clear.interactive(), in: Capsule()) | ||
| 379 | .padding(.horizontal) | ||
| 380 | .padding(.vertical, 8) | ||
| 381 | } | ||
| 382 | } | ||
| 383 | |||
| 384 | #Preview { | ||
| 385 | ContentView() | ||
| 386 | } | ||
experiments/messages-glass-lab/MessagesGlassLab/MessagesGlassLabApp.swift deleted-10| ... | @@ -1,10 +0,0 @@ | ||
| 1 | import SwiftUI | ||
| 2 | |||
| 3 | @main | ||
| 4 | struct MessagesGlassLabApp: App { | ||
| 5 | var body: some Scene { | ||
| 6 | WindowGroup { | ||
| 7 | ContentView() | ||
| 8 | } | ||
| 9 | } | ||
| 10 | } | ||
pnpm-lock.yaml+48-48| ... | @@ -248,7 +248,7 @@ importers: | ... | @@ -248,7 +248,7 @@ importers: |
| 248 | version: 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 248 | version: 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 249 | '@react-navigation/native-stack': | 249 | '@react-navigation/native-stack': |
| 250 | specifier: 7.17.6 | 250 | specifier: 7.17.6 |
| 251 | version: 7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(7ffd26361d0ffb9781446d1519df37be) | 251 | version: 7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(e49ba4adb65ddb2cde0c8b8b274b705b) |
| 252 | '@shikijs/core': | 252 | '@shikijs/core': |
| 253 | specifier: 4.2.0 | 253 | specifier: 4.2.0 |
| 254 | version: 4.2.0 | 254 | version: 4.2.0 |
| ... | @@ -12252,7 +12252,7 @@ snapshots: | ... | @@ -12252,7 +12252,7 @@ snapshots: |
| 12252 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) | 12252 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) |
| 12253 | zod: 3.25.76 | 12253 | zod: 3.25.76 |
| 12254 | optionalDependencies: | 12254 | optionalDependencies: |
| 12255 | expo-router: 56.2.11(e1497a99e5bc5be76c1cdb733671f865) | 12255 | expo-router: 56.2.11(b91ff5333bc046aa08fb7484e4e065d6) |
| 12256 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) | 12256 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) |
| 12257 | transitivePeerDependencies: | 12257 | transitivePeerDependencies: |
| 12258 | - '@expo/dom-webview' | 12258 | - '@expo/dom-webview' |
| ... | @@ -12328,7 +12328,7 @@ snapshots: | ... | @@ -12328,7 +12328,7 @@ snapshots: |
| 12328 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) | 12328 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) |
| 12329 | zod: 3.25.76 | 12329 | zod: 3.25.76 |
| 12330 | optionalDependencies: | 12330 | optionalDependencies: |
| 12331 | expo-router: 56.2.11(80beea6a31a5d2003a696c1401258797) | 12331 | expo-router: 56.2.11(f8b3939b2a15129a8b59814542a58c1b) |
| 12332 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) | 12332 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) |
| 12333 | transitivePeerDependencies: | 12333 | transitivePeerDependencies: |
| 12334 | - '@expo/dom-webview' | 12334 | - '@expo/dom-webview' |
| ... | @@ -12668,7 +12668,7 @@ snapshots: | ... | @@ -12668,7 +12668,7 @@ snapshots: |
| 12668 | react: 19.2.3 | 12668 | react: 19.2.3 |
| 12669 | optionalDependencies: | 12669 | optionalDependencies: |
| 12670 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 12670 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 12671 | expo-router: 56.2.11(e1497a99e5bc5be76c1cdb733671f865) | 12671 | expo-router: 56.2.11(b91ff5333bc046aa08fb7484e4e065d6) |
| 12672 | react-dom: 19.2.3(react@19.2.3) | 12672 | react-dom: 19.2.3(react@19.2.3) |
| 12673 | transitivePeerDependencies: | 12673 | transitivePeerDependencies: |
| 12674 | - supports-color | 12674 | - supports-color |
| ... | @@ -12683,7 +12683,7 @@ snapshots: | ... | @@ -12683,7 +12683,7 @@ snapshots: |
| 12683 | react: 19.2.6 | 12683 | react: 19.2.6 |
| 12684 | optionalDependencies: | 12684 | optionalDependencies: |
| 12685 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 12685 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 12686 | expo-router: 56.2.11(80beea6a31a5d2003a696c1401258797) | 12686 | expo-router: 56.2.11(f8b3939b2a15129a8b59814542a58c1b) |
| 12687 | react-dom: 19.2.6(react@19.2.6) | 12687 | react-dom: 19.2.6(react@19.2.6) |
| 12688 | transitivePeerDependencies: | 12688 | transitivePeerDependencies: |
| 12689 | - supports-color | 12689 | - supports-color |
| ... | @@ -14268,7 +14268,7 @@ snapshots: | ... | @@ -14268,7 +14268,7 @@ snapshots: |
| 14268 | optionalDependencies: | 14268 | optionalDependencies: |
| 14269 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 14269 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 14270 | 14270 | ||
| 14271 | '@react-navigation/native-stack@7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(7ffd26361d0ffb9781446d1519df37be)': | 14271 | '@react-navigation/native-stack@7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(e49ba4adb65ddb2cde0c8b8b274b705b)': |
| 14272 | dependencies: | 14272 | dependencies: |
| 14273 | '@react-navigation/elements': 2.9.26(c6a2ad0e2c930f8e3896e77c3ba11bc4) | 14273 | '@react-navigation/elements': 2.9.26(c6a2ad0e2c930f8e3896e77c3ba11bc4) |
| 14274 | '@react-navigation/native': 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 14274 | '@react-navigation/native': 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| ... | @@ -17062,47 +17062,47 @@ snapshots: | ... | @@ -17062,47 +17062,47 @@ snapshots: |
| 17062 | - supports-color | 17062 | - supports-color |
| 17063 | - typescript | 17063 | - typescript |
| 17064 | 17064 | ||
| 17065 | expo-router@56.2.11(80beea6a31a5d2003a696c1401258797): | 17065 | expo-router@56.2.11(b91ff5333bc046aa08fb7484e4e065d6): |
| 17066 | dependencies: | 17066 | dependencies: |
| 17067 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17067 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17068 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17068 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17069 | '@expo/schema-utils': 56.0.1 | 17069 | '@expo/schema-utils': 56.0.1 |
| 17070 | '@expo/ui': 56.0.18(32843e0c0883df8bccfa0b8323659df5) | 17070 | '@expo/ui': 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0) |
| 17071 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.6) | 17071 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.3) |
| 17072 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | 17072 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) |
| 17073 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17073 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17074 | '@testing-library/jest-dom': 6.9.1 | 17074 | '@testing-library/jest-dom': 6.9.1 |
| 17075 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) | 17075 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) |
| 17076 | client-only: 0.0.1 | 17076 | client-only: 0.0.1 |
| 17077 | color: 4.2.3 | 17077 | color: 4.2.3 |
| 17078 | debug: 4.4.3 | 17078 | debug: 4.4.3 |
| 17079 | escape-string-regexp: 4.0.0 | 17079 | escape-string-regexp: 4.0.0 |
| 17080 | expo: 56.0.12(deb8cbf3e0f411b34ba85a995c9982ba) | 17080 | expo: 56.0.12(8895228379997a2a064f9644cda56ed0) |
| 17081 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) | 17081 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)) |
| 17082 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17082 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17083 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17083 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17084 | expo-server: 56.0.5 | 17084 | expo-server: 56.0.5 |
| 17085 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17085 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17086 | fast-deep-equal: 3.1.3 | 17086 | fast-deep-equal: 3.1.3 |
| 17087 | invariant: 2.2.4 | 17087 | invariant: 2.2.4 |
| 17088 | nanoid: 3.3.12 | 17088 | nanoid: 3.3.12 |
| 17089 | query-string: 7.1.3 | 17089 | query-string: 7.1.3 |
| 17090 | react: 19.2.6 | 17090 | react: 19.2.3 |
| 17091 | react-fast-compare: 3.2.2 | 17091 | react-fast-compare: 3.2.2 |
| 17092 | react-is: 19.2.7 | 17092 | react-is: 19.2.7 |
| 17093 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) | 17093 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) |
| 17094 | react-native-drawer-layout: 4.2.4(de9b2f2dc96a3557fdc0df187a8417ee) | 17094 | react-native-drawer-layout: 4.2.4(05364bd849de538917a7364cc7dee3f5) |
| 17095 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17095 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17096 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17096 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17097 | server-only: 0.0.1 | 17097 | server-only: 0.0.1 |
| 17098 | sf-symbols-typescript: 2.2.0 | 17098 | sf-symbols-typescript: 2.2.0 |
| 17099 | shallowequal: 1.1.0 | 17099 | shallowequal: 1.1.0 |
| 17100 | standard-navigation: 0.0.5 | 17100 | standard-navigation: 0.0.5 |
| 17101 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | 17101 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) |
| 17102 | optionalDependencies: | 17102 | optionalDependencies: |
| 17103 | react-dom: 19.2.6(react@19.2.6) | 17103 | react-dom: 19.2.3(react@19.2.3) |
| 17104 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17104 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17105 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | 17105 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 17106 | transitivePeerDependencies: | 17106 | transitivePeerDependencies: |
| 17107 | - '@babel/core' | 17107 | - '@babel/core' |
| 17108 | - '@testing-library/dom' | 17108 | - '@testing-library/dom' |
| ... | @@ -17113,47 +17113,47 @@ snapshots: | ... | @@ -17113,47 +17113,47 @@ snapshots: |
| 17113 | - supports-color | 17113 | - supports-color |
| 17114 | optional: true | 17114 | optional: true |
| 17115 | 17115 | ||
| 17116 | expo-router@56.2.11(e1497a99e5bc5be76c1cdb733671f865): | 17116 | expo-router@56.2.11(f8b3939b2a15129a8b59814542a58c1b): |
| 17117 | dependencies: | 17117 | dependencies: |
| 17118 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17118 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17119 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17119 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17120 | '@expo/schema-utils': 56.0.1 | 17120 | '@expo/schema-utils': 56.0.1 |
| 17121 | '@expo/ui': 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0) | 17121 | '@expo/ui': 56.0.18(32843e0c0883df8bccfa0b8323659df5) |
| 17122 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.3) | 17122 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.6) |
| 17123 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | 17123 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) |
| 17124 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17124 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17125 | '@testing-library/jest-dom': 6.9.1 | 17125 | '@testing-library/jest-dom': 6.9.1 |
| 17126 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) | 17126 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) |
| 17127 | client-only: 0.0.1 | 17127 | client-only: 0.0.1 |
| 17128 | color: 4.2.3 | 17128 | color: 4.2.3 |
| 17129 | debug: 4.4.3 | 17129 | debug: 4.4.3 |
| 17130 | escape-string-regexp: 4.0.0 | 17130 | escape-string-regexp: 4.0.0 |
| 17131 | expo: 56.0.12(8895228379997a2a064f9644cda56ed0) | 17131 | expo: 56.0.12(deb8cbf3e0f411b34ba85a995c9982ba) |
| 17132 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)) | 17132 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) |
| 17133 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17133 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17134 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17134 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17135 | expo-server: 56.0.5 | 17135 | expo-server: 56.0.5 |
| 17136 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17136 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17137 | fast-deep-equal: 3.1.3 | 17137 | fast-deep-equal: 3.1.3 |
| 17138 | invariant: 2.2.4 | 17138 | invariant: 2.2.4 |
| 17139 | nanoid: 3.3.12 | 17139 | nanoid: 3.3.12 |
| 17140 | query-string: 7.1.3 | 17140 | query-string: 7.1.3 |
| 17141 | react: 19.2.3 | 17141 | react: 19.2.6 |
| 17142 | react-fast-compare: 3.2.2 | 17142 | react-fast-compare: 3.2.2 |
| 17143 | react-is: 19.2.7 | 17143 | react-is: 19.2.7 |
| 17144 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) | 17144 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) |
| 17145 | react-native-drawer-layout: 4.2.4(05364bd849de538917a7364cc7dee3f5) | 17145 | react-native-drawer-layout: 4.2.4(de9b2f2dc96a3557fdc0df187a8417ee) |
| 17146 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17146 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17147 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17147 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17148 | server-only: 0.0.1 | 17148 | server-only: 0.0.1 |
| 17149 | sf-symbols-typescript: 2.2.0 | 17149 | sf-symbols-typescript: 2.2.0 |
| 17150 | shallowequal: 1.1.0 | 17150 | shallowequal: 1.1.0 |
| 17151 | standard-navigation: 0.0.5 | 17151 | standard-navigation: 0.0.5 |
| 17152 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | 17152 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) |
| 17153 | optionalDependencies: | 17153 | optionalDependencies: |
| 17154 | react-dom: 19.2.3(react@19.2.3) | 17154 | react-dom: 19.2.6(react@19.2.6) |
| 17155 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17155 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17156 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | 17156 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 17157 | transitivePeerDependencies: | 17157 | transitivePeerDependencies: |
| 17158 | - '@babel/core' | 17158 | - '@babel/core' |
| 17159 | - '@testing-library/dom' | 17159 | - '@testing-library/dom' |