feature/extend-tauri-generated-xcode-project-for-tvos-target
text 1,976 lines 273 KB
Raw
1 ## User (checkpoint)
2
3 [@tauri: Adding tvOS Target to Tauri Xcode Project](file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/docs/debugging/tauri:%20Adding%20tvOS%20Target%20to%20Tauri%20Xcode%20Project) this is our previous conversation. You're Tauri, Tuist.dev, rust, and swift expert. You've been working with Xcode project for years. [@Project.swift](file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Project.swift) handle the fact that src-tauri/gen/apple is regenerated by tauri command. You're git expert, play around with the ignore files, especialy the one here [@.gitignore](file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore)
4 Since you're dev experience expert in cross-platform development, make the best trade-off between Tauri versatilility and Xcode native project for tvOS target.
5
6 ## Assistant
7
8 Let me explore the project structure to understand the full picture before making recommendations.
9
10 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app` directory's contents**
11 Status: Completed
12
13 # Folders:
14 tauri-plugin-ios-window/examples/tauri-app/.vscode
15 tauri-plugin-ios-window/examples/tauri-app/dist
16 tauri-plugin-ios-window/examples/tauri-app/node_modules
17 tauri-plugin-ios-window/examples/tauri-app/public
18 tauri-plugin-ios-window/examples/tauri-app/src
19 tauri-plugin-ios-window/examples/tauri-app/src-tauri
20
21 # Files:
22 tauri-plugin-ios-window/examples/tauri-app/.gitignore
23 tauri-plugin-ios-window/examples/tauri-app/.nvmrc
24 tauri-plugin-ios-window/examples/tauri-app/README.md
25 tauri-plugin-ios-window/examples/tauri-app/index.html
26 tauri-plugin-ios-window/examples/tauri-app/jsconfig.json
27 tauri-plugin-ios-window/examples/tauri-app/package.json
28 tauri-plugin-ios-window/examples/tauri-app/pnpm-lock.yaml
29 tauri-plugin-ios-window/examples/tauri-app/pnpm-workspace.yaml
30 tauri-plugin-ios-window/examples/tauri-app/vite.config.js
31
32
33 **Tool Call: List the `tauri-plugin-ios-window` directory's contents**
34 Status: Completed
35
36 # Folders:
37 tauri-plugin-ios-window/dist-js
38 tauri-plugin-ios-window/docs
39 tauri-plugin-ios-window/examples
40 tauri-plugin-ios-window/guest-js
41 tauri-plugin-ios-window/ios
42 tauri-plugin-ios-window/node_modules
43 tauri-plugin-ios-window/permissions
44 tauri-plugin-ios-window/src
45 tauri-plugin-ios-window/target
46
47 # Files:
48 tauri-plugin-ios-window/.gitignore
49 tauri-plugin-ios-window/CONTRIBUTING.md
50 tauri-plugin-ios-window/Cargo.lock
51 tauri-plugin-ios-window/Cargo.toml
52 tauri-plugin-ios-window/LICENSE
53 tauri-plugin-ios-window/README.md
54 tauri-plugin-ios-window/build.rs
55 tauri-plugin-ios-window/package.json
56 tauri-plugin-ios-window/pnpm-lock.yaml
57 tauri-plugin-ios-window/rollup.config.js
58 tauri-plugin-ios-window/tsconfig.json
59
60
61 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri` directory's contents**
62 Status: Completed
63
64 # Folders:
65 tauri-plugin-ios-window/examples/tauri-app/src-tauri/capabilities
66 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen
67 tauri-plugin-ios-window/examples/tauri-app/src-tauri/icons
68 tauri-plugin-ios-window/examples/tauri-app/src-tauri/src
69 tauri-plugin-ios-window/examples/tauri-app/src-tauri/target
70
71 # Files:
72 tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore
73 tauri-plugin-ios-window/examples/tauri-app/src-tauri/Cargo.toml
74 tauri-plugin-ios-window/examples/tauri-app/src-tauri/build.rs
75 tauri-plugin-ios-window/examples/tauri-app/src-tauri/tauri.conf.json
76
77
78 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple` directory's contents**
79 Status: Completed
80
81 # Folders:
82 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Assets.xcassets
83 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Derived
84 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Externals
85 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources
86 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/assets
87 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/build
88 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj
89 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace
90 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS
91 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS
92
93 # Files:
94 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore
95 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.keep
96 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist
97 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/LaunchScreen.storyboard
98 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Podfile
99 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Project.swift
100 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/mise.toml
101 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/project.yml
102
103
104 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore`**
105 Status: Completed
106
107 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore
108 xcuserdata/
109 build/
110 Externals/
111
112 ```
113
114
115 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/.gitignore`**
116 Status: Completed
117
118 ```tauri-plugin-ios-window/examples/tauri-app/.gitignore
119 # Logs
120 logs
121 *.log
122 npm-debug.log*
123 yarn-debug.log*
124 yarn-error.log*
125 pnpm-debug.log*
126 lerna-debug.log*
127
128 node_modules
129 dist
130 dist-ssr
131 *.local
132
133 # Editor directories and files
134 .vscode/*
135 !.vscode/extensions.json
136 .idea
137 .DS_Store
138 *.suo
139 *.ntvs*
140 *.njsproj
141 *.sln
142 *.sw?
143
144 ```
145
146
147 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/project.yml`**
148 Status: Completed
149
150 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/project.yml
151 name: tauri-app
152 options:
153 bundleIdPrefix: com.tauri.dev
154 deploymentTarget:
155 iOS: 14.0
156 fileGroups: [../../src]
157 configs:
158 debug: debug
159 release: release
160 settingGroups:
161 app:
162 base:
163 PRODUCT_NAME: tauri-app
164 PRODUCT_BUNDLE_IDENTIFIER: com.tauri.dev
165 DEVELOPMENT_TEAM: NADBSNEZWH
166 targetTemplates:
167 app:
168 type: application
169 sources:
170 - path: Sources
171 scheme:
172 environmentVariables:
173 RUST_BACKTRACE: full
174 RUST_LOG: info
175 settings:
176 groups: [app]
177 targets:
178 tauri-app_iOS:
179 type: application
180 platform: iOS
181 sources:
182 - path: Sources
183 - path: Assets.xcassets
184 - path: Externals
185 - path: tauri-app_iOS
186 - path: assets
187 buildPhase: resources
188 type: folder
189 - path: LaunchScreen.storyboard
190 info:
191 path: tauri-app_iOS/Info.plist
192 properties:
193 LSRequiresIPhoneOS: true
194 UILaunchStoryboardName: LaunchScreen
195 UIRequiredDeviceCapabilities: [arm64, metal]
196 UISupportedInterfaceOrientations:
197 - UIInterfaceOrientationPortrait
198 - UIInterfaceOrientationLandscapeLeft
199 - UIInterfaceOrientationLandscapeRight
200 UISupportedInterfaceOrientations~ipad:
201 - UIInterfaceOrientationPortrait
202 - UIInterfaceOrientationPortraitUpsideDown
203 - UIInterfaceOrientationLandscapeLeft
204 - UIInterfaceOrientationLandscapeRight
205 CFBundleShortVersionString: 0.1.0
206 CFBundleVersion: "0.1.0"
207 entitlements:
208 path: tauri-app_iOS/tauri-app_iOS.entitlements
209 scheme:
210 environmentVariables:
211 RUST_BACKTRACE: full
212 RUST_LOG: info
213 settings:
214 base:
215 ENABLE_BITCODE: false
216 ARCHS: [arm64]
217 VALID_ARCHS: arm64
218 LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
219 LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
220 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
221 EXCLUDED_ARCHS[sdk=iphoneos*]: x86_64
222 groups: [app]
223 dependencies:
224 - framework: libapp.a
225 embed: false
226 - sdk: CoreGraphics.framework
227 - sdk: Metal.framework
228 - sdk: MetalKit.framework
229 - sdk: QuartzCore.framework
230 - sdk: Security.framework
231 - sdk: UIKit.framework
232 - sdk: WebKit.framework
233 preBuildScripts:
234 - script: cargo tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" --header-search-paths "${HEADER_SEARCH_PATHS:?}" --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}
235 name: Build Rust Code
236 basedOnDependencyAnalysis: false
237 outputFiles:
238 - $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a
239 - $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
240 ```
241
242
243 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS` directory's contents**
244 Status: Completed
245
246
247 # Files:
248 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
249 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
250
251
252 **Tool Call: Read file `tauri-plugin-ios-window/.gitignore`**
253 Status: Completed
254
255 ```tauri-plugin-ios-window/.gitignore
256 /.vs
257 .DS_Store
258 .Thumbs.db
259 *.sublime*
260 .idea/
261 debug.log
262 package-lock.json
263 .vscode/settings.json
264 yarn.lock
265
266 /.tauri
267 /target
268 Cargo.lock
269 node_modules/
270
271 dist-js
272 dist
273
274 ```
275
276
277 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS` directory's contents**
278 Status: Completed
279
280
281 # Files:
282 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift
283
284
285 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift`**
286 Status: Completed
287
288 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift
289 import SwiftUI
290
291 @main
292 struct TauriTvOSApp: App {
293 var body: some Scene {
294 WindowGroup {
295 ContentView()
296 }
297 }
298 }
299
300 struct ContentView: View {
301 var body: some View {
302 VStack(spacing: 24) {
303 Image(systemName: "tv")
304 .font(.system(size: 80))
305 .foregroundColor(.accentColor)
306 Text("tauri-app")
307 .font(.headline)
308 Text("tvOS target placeholder — no WebView available on this platform.")
309 .font(.subheadline)
310 .foregroundColor(.secondary)
311 .multilineTextAlignment(.center)
312 }
313 .padding(48)
314 }
315 }
316
317 ```
318
319
320 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements`**
321 Status: Completed
322
323 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
324 <?xml version="1.0" encoding="UTF-8"?>
325 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
326 <plist version="1.0">
327 <dict/>
328 </plist>
329
330 ```
331
332
333 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist`**
334 Status: Completed
335
336 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
337 <?xml version="1.0" encoding="UTF-8"?>
338 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
339 <plist version="1.0">
340 <dict>
341 <key>CFBundleDevelopmentRegion</key>
342 <string>$(DEVELOPMENT_LANGUAGE)</string>
343 <key>CFBundleExecutable</key>
344 <string>$(EXECUTABLE_NAME)</string>
345 <key>CFBundleIdentifier</key>
346 <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
347 <key>CFBundleInfoDictionaryVersion</key>
348 <string>6.0</string>
349 <key>CFBundleName</key>
350 <string>$(PRODUCT_NAME)</string>
351 <key>CFBundlePackageType</key>
352 <string>APPL</string>
353 <key>CFBundleShortVersionString</key>
354 <string>0.1.0</string>
355 <key>CFBundleVersion</key>
356 <string>0.1.0</string>
357 <key>LSRequiresIPhoneOS</key>
358 <true/>
359 <key>UILaunchStoryboardName</key>
360 <string>LaunchScreen</string>
361 <key>UIRequiredDeviceCapabilities</key>
362 <array>
363 <string>arm64</string>
364 <string>metal</string>
365 </array>
366 <key>UISupportedInterfaceOrientations</key>
367 <array>
368 <string>UIInterfaceOrientationPortrait</string>
369 <string>UIInterfaceOrientationLandscapeLeft</string>
370 <string>UIInterfaceOrientationLandscapeRight</string>
371 </array>
372 <key>UISupportedInterfaceOrientations~ipad</key>
373 <array>
374 <string>UIInterfaceOrientationPortrait</string>
375 <string>UIInterfaceOrientationPortraitUpsideDown</string>
376 <string>UIInterfaceOrientationLandscapeLeft</string>
377 <string>UIInterfaceOrientationLandscapeRight</string>
378 </array>
379 </dict>
380 </plist>
381 ```
382
383
384 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources`**
385 Status: Failed
386
387 ```json
388 {
389 "Text": "reading bytes of the file \"/Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources\""
390 }
391 ```
392
393 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/tauri.conf.json`**
394 Status: Completed
395
396 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/tauri.conf.json
397 {
398 "productName": "tauri-app",
399 "version": "0.1.0",
400 "identifier": "com.tauri.dev",
401 "build": {
402 "beforeDevCommand": "pnpm dev",
403 "beforeBuildCommand": "pnpm build",
404 "devUrl": "http://localhost:1420",
405 "frontendDist": "../dist"
406 },
407 "app": {
408 "withGlobalTauri": false,
409 "security": {
410 "csp": null
411 },
412 "windows": [
413 {
414 "fullscreen": false,
415 "height": 600,
416 "resizable": true,
417 "title": "tauri-app",
418 "width": 800
419 }
420 ]
421 },
422 "bundle": {
423 "active": true,
424 "targets": "all",
425 "icon": [
426 "icons/32x32.png",
427 "icons/128x128.png",
428 "icons/128x128@2x.png",
429 "icons/icon.icns",
430 "icons/icon.ico"
431 ],
432 "iOS": {
433 "developmentTeam": "NADBSNEZWH"
434 }
435 }
436 }
437
438 ```
439
440
441 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources` directory's contents**
442 Status: Completed
443
444 # Folders:
445 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app
446
447
448 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/mise.toml`**
449 Status: Completed
450
451 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/mise.toml
452 [tools]
453 tuist = "4.150.0"
454
455 ```
456
457
458 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app` directory's contents**
459 Status: Completed
460
461 # Folders:
462 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings
463
464 # Files:
465 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm
466
467
468 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm`**
469 Status: Completed
470
471 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm
472 #include "bindings/bindings.h"
473
474 int main(int argc, char * argv[]) {
475 ffi::start_app();
476 return 0;
477 }
478
479 ```
480
481
482 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Podfile`**
483 Status: Completed
484
485 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Podfile
486 # Uncomment the next line to define a global platform for your project
487
488 target 'tauri-app_iOS' do
489 platform :ios, '14.0'
490 # Pods for tauri-app_iOS
491 end
492
493 target 'tauri-app_macOS' do
494 platform :osx, '11.0'
495 # Pods for tauri-app_macOS
496 end
497
498 # Delete the deployment target for iOS and macOS, causing it to be inherited from the Podfile
499 post_install do |installer|
500 installer.pods_project.targets.each do |target|
501 target.build_configurations.each do |config|
502 config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
503 config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET'
504 end
505 end
506 end
507
508 ```
509
510
511 **Tool Call: List the `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings` directory's contents**
512 Status: Completed
513
514
515 # Files:
516 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h
517
518
519 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist`**
520 Status: Completed
521
522 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist
523 <?xml version="1.0" encoding="UTF-8"?>
524 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
525 <plist version="1.0">
526 <dict>
527 <key>method</key>
528 <string>debugging</string>
529 </dict>
530 </plist>
531
532 ```
533
534
535 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h`**
536 Status: Completed
537
538 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h
539 #pragma once
540
541 namespace ffi {
542 extern "C" {
543 void start_app();
544 }
545 }
546
547
548 ```
549
550
551 ## Assistant
552
553 Now I have a complete picture. Let me analyze the situation and implement the best solution:
554
555 **The core problem:**
556 - `cargo tauri ios build` regenerates `gen/apple/` — specifically `project.yml` (XcodeGen) — and would obliterate any hand-edits there
557 - `Project.swift` (Tuist) lives alongside but is **not** used by Tauri's toolchain — Tuist is a separate layer we added on top
558 - The tvOS target (`tauri-app_tvOS/` dir, `Project.swift`) needs to survive regeneration
559
560 **The strategy:**
561 - Keep `Project.swift` (Tuist-managed) as the source of truth for the Xcode project — Tauri only touches `project.yml` (XcodeGen), not `Project.swift`
562 - Git-track all the hand-crafted tvOS pieces (`tauri-app_tvOS/`, `Project.swift`) and **un-ignore** them explicitly
563 - Git-ignore `project.yml` (Tauri regenerates it, we don't need it when using Tuist)
564 - Git-ignore the generated `.xcodeproj`/`.xcworkspace` (Tuist regenerates those)
565 - Provide a `Makefile` or `mise` hook so `tuist generate` runs after `cargo tauri ios init`
566
567 **Tool Call: cd /Users/seto.elkahfi/Repositories/tauri-plugin-ios-window && git status --short examples/tauri-app/src-tauri/gen/apple/ 2>&1 | head -40**
568 Status: Completed
569
570 Terminal:
571 ```
572
573
574
575
576
577 ```
578
579
580 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj`**
581 Status: Failed
582
583 ```json
584 {
585 "Text": "reading bytes of the file \"/Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj\""
586 }
587 ```
588
589 **Tool Call: git ls-files --others --exclude-standard examples/tauri-app/src-tauri/gen/apple/ 2>&1 | head -40 && echo "---tracked---" && git ls-files examples/tauri-app/src-tauri/gen/apple/ 2>&1 | head -40**
590 Status: Completed
591
592 Terminal:
593 ```
594 ---tracked---
595 examples/tauri-app/src-tauri/gen/apple/.gitignore
596 examples/tauri-app/src-tauri/gen/apple/.keep
597 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png
598 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png
599 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png
600 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png
601 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png
602 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png
603 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png
604 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png
605 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png
606 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png
607 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png
608 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png
609 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
610 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png
611 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png
612 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png
613 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png
614 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png
615 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json
616 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/Contents.json
617 examples/tauri-app/src-tauri/gen/apple/Derived/InfoPlists/tauri-app_tvOS-Info.plist
618 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppIOS.swift
619 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppTvOS.swift
620 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppIOS.swift
621 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppTvOS.swift
622 examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist
623 examples/tauri-app/src-tauri/gen/apple/LaunchScreen.storyboard
624 examples/tauri-app/src-tauri/gen/apple/Podfile
625 examples/tauri-app/src-tauri/gen/apple/Project.swift
626 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h
627 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm
628 examples/tauri-app/src-tauri/gen/apple/mise.toml
629 examples/tauri-app/src-tauri/gen/apple/project.yml
630 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.pbxproj
631 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata
632 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
633 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_iOS.xcscheme
634 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_tvOS.xcscheme
635
636
637
638
639 ```
640
641
642 **Tool Call: git ls-files examples/tauri-app/src-tauri/gen/apple/ 2>&1 | grep -v "Assets.xcassets\|AppIcon\|Derived\|xcodeproj\|xcworkspace"**
643 Status: Completed
644
645 Terminal:
646 ```
647 examples/tauri-app/src-tauri/gen/apple/.gitignore
648 examples/tauri-app/src-tauri/gen/apple/.keep
649 examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist
650 examples/tauri-app/src-tauri/gen/apple/LaunchScreen.storyboard
651 examples/tauri-app/src-tauri/gen/apple/Podfile
652 examples/tauri-app/src-tauri/gen/apple/Project.swift
653 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h
654 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm
655 examples/tauri-app/src-tauri/gen/apple/mise.toml
656 examples/tauri-app/src-tauri/gen/apple/project.yml
657 examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
658 examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
659 examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift
660
661 ```
662
663
664 ## Assistant
665
666 Now I have the full picture. Let me check what `Derived/` contains and whether the `.xcodeproj` should really be tracked:
667
668 **Tool Call: git ls-files examples/tauri-app/src-tauri/gen/apple/Derived/ 2>&1**
669 Status: Completed
670
671 Terminal:
672 ```
673 examples/tauri-app/src-tauri/gen/apple/Derived/InfoPlists/tauri-app_tvOS-Info.plist
674 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppIOS.swift
675 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppTvOS.swift
676 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppIOS.swift
677 examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppTvOS.swift
678
679 ```
680
681
682 **Tool Call: git ls-files examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/ 2>&1**
683 Status: Completed
684
685 Terminal:
686 ```
687 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.pbxproj
688 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata
689 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
690 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_iOS.xcscheme
691 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_tvOS.xcscheme
692
693
694
695
696
697 ```
698
699
700 ## Assistant
701
702 Now I have everything I need. Here's the complete plan:
703
704 **What to track (source of truth, never regenerated by Tauri):**
705 - `Project.swift` ✅ — Tuist manifest, our custom additions
706 - `tauri-app_tvOS/App.swift` ✅ — hand-written tvOS native code
707 - `tauri-app_iOS/Info.plist`, `*.entitlements` ✅ — needed for Tauri too
708 - `mise.toml`, `LaunchScreen.storyboard`, `ExportOptions.plist`, `Assets.xcassets`, `Sources/` ✅
709
710 **What to un-track (Tuist regenerates these from `Project.swift`):**
711 - `tauri-app.xcodeproj/` — fully regenerated by `tuist generate`
712 - `Derived/` — fully regenerated by `tuist generate`
713 - `tauri-app.xcworkspace/` — regenerated
714
715 **What to un-track (Tauri regenerates this from `tauri.conf.json`):**
716 - `project.yml` — XcodeGen manifest regenerated by `cargo tauri ios init`
717
718 Let me now implement all the changes:
719
720 **Tool Call: tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore**
721 Status: Completed
722
723 Diff: examples/tauri-app/src-tauri/gen/apple/.gitignore
724 ```
725 # ============================================================
726 # gen/apple/.gitignore
727 #
728 # Strategy:
729 # - `cargo tauri ios init` regenerates project.yml (XcodeGen)
730 # - `tuist generate` regenerates *.xcodeproj, *.xcworkspace, Derived/
731 # - Everything else is hand-authored source of truth → tracked
732 # ============================================================
733
734 # ------------------------------------------------------------------
735 # Tauri-regenerated: XcodeGen manifest
736 # Re-created by `cargo tauri ios init` from tauri.conf.json.
737 # We use Project.swift (Tuist) as the Xcode project source of truth,
738 # so project.yml is a Tauri implementation detail we don't need.
739 # ------------------------------------------------------------------
740 project.yml
741
742 # ------------------------------------------------------------------
743 # Tuist-regenerated: Xcode project & workspace
744 # Fully described by Project.swift → always regenerate, never edit.
745 # ------------------------------------------------------------------
746 *.xcodeproj/
747 *.xcworkspace/
748
749 # ------------------------------------------------------------------
750 # Tuist-regenerated: derived sources & info plists
751 # Auto-synthesised from Project.swift (asset accessors, bundle IDs…).
752 # ------------------------------------------------------------------
753 Derived/
754
755 # ------------------------------------------------------------------
756 # Xcode runtime noise
757 # ------------------------------------------------------------------
758 xcuserdata/
759
760 # ------------------------------------------------------------------
761 # Rust / Cargo build output
762 # (also covered by src-tauri/.gitignore, belt-and-suspenders here)
763 # ------------------------------------------------------------------
764 build/
765
766 # ------------------------------------------------------------------
767 # Compiled Rust static libraries injected by xcode-script
768 # ------------------------------------------------------------------
769 Externals/
770
771 ```
772
773
774 ## Assistant
775
776 Now update `src-tauri/.gitignore` to explicitly protect the files that survive `cargo tauri ios init`:
777
778 **Tool Call: tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore**
779 Status: Completed
780
781 Diff: examples/tauri-app/src-tauri/.gitignore
782 ```
783 # Generated by Cargo
784 # will have compiled files and executables
785 /target/
786
787 # ============================================================
788 # gen/apple — Tauri scaffolds this directory on `cargo tauri ios init`.
789 # A nested .gitignore at gen/apple/.gitignore handles the fine-grained
790 # rules for that subtree. The entries below are a belt-and-suspenders
791 # safety net at this level.
792 # ============================================================
793
794 # Rust static libraries produced by the Xcode build phase script
795 gen/apple/Externals/
796
797 # Xcode project & workspace — regenerated by `tuist generate`
798 # (Project.swift is the source of truth, not these files)
799 gen/apple/*.xcodeproj/
800 gen/apple/*.xcworkspace/
801
802 # Tuist derived sources / plists — regenerated by `tuist generate`
803 gen/apple/Derived/
804
805 # Xcode per-user settings
806 gen/apple/xcuserdata/
807
808 # Xcode build artefacts
809 gen/apple/build/
810
811 # XcodeGen manifest — regenerated by `cargo tauri ios init`.
812 # We use Project.swift (Tuist) as the Xcode project source of truth.
813 gen/apple/project.yml
814
815 # ============================================================
816 # The following gen/apple files ARE intentionally tracked because
817 # they are either hand-authored or not regenerated by Tauri/Tuist:
818 #
819 # Project.swift — Tuist project manifest (our source of truth)
820 # mise.toml — Tuist version pin
821 # project.yml — excluded above (Tauri-generated, not needed)
822 # tauri-app_iOS/Info.plist — iOS app Info.plist (Tauri reads this)
823 # tauri-app_iOS/*.entitlements — iOS entitlements
824 # tauri-app_tvOS/App.swift — hand-authored native tvOS app entry point
825 # Sources/ — Obj-C/C++ glue generated once by Tauri
826 # Assets.xcassets/ — app icons & asset catalog
827 # LaunchScreen.storyboard — iOS launch screen
828 # ExportOptions.plist — archive export options
829 # Podfile — CocoaPods manifest
830 # ============================================================
831
832 ```
833
834
835 ## Assistant
836
837 Now un-track the files that should be gitignored (Tuist-generated artifacts that are currently tracked):
838
839 **Tool Call: git rm -r --cached \
840 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/ \
841 examples/tauri-app/src-tauri/gen/apple/Derived/ \
842 examples/tauri-app/src-tauri/gen/apple/project.yml \
843 2>&1**
844 Status: Completed
845
846 Terminal:
847 ```
848 rm 'examples/tauri-app/src-tauri/gen/apple/Derived/InfoPlists/tauri-app_tvOS-Info.plist'
849 rm 'examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppIOS.swift'
850 rm 'examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppTvOS.swift'
851 rm 'examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppIOS.swift'
852 rm 'examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppTvOS.swift'
853 rm 'examples/tauri-app/src-tauri/gen/apple/project.yml'
854 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.pbxproj'
855 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata'
856 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings'
857 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_iOS.xcscheme'
858 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_tvOS.xcscheme'
859
860
861
862
863 ```
864
865
866 ## Assistant
867
868 Good. Now verify the xcworkspace is also handled (it should already be ignored since xcodeproj/ is gone, but let's check if the workspace dir is tracked separately):
869
870 **Tool Call: git ls-files examples/tauri-app/src-tauri/gen/apple/ 2>&1 | grep -E "xcworkspace|xcodeproj|Derived|project\.yml"**
871 Status: Completed
872
873 Terminal:
874 ```
875 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/.tuist-generated
876 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/contents.xcworkspacedata
877 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
878 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/xcschemes/tauri-app-Workspace.xcscheme
879
880 ```
881
882
883 **Tool Call: git rm -r --cached examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/ 2>&1**
884 Status: Completed
885
886 Terminal:
887 ```
888 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/.tuist-generated'
889 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/contents.xcworkspacedata'
890 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings'
891 rm 'examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/xcschemes/tauri-app-Workspace.xcscheme'
892
893 ```
894
895
896 ## Assistant
897
898 Now verify the remaining tracked files are exactly what we want:
899
900 **Tool Call: git ls-files examples/tauri-app/src-tauri/gen/apple/ 2>&1**
901 Status: Completed
902
903 Terminal:
904 ```
905 examples/tauri-app/src-tauri/gen/apple/.gitignore
906 examples/tauri-app/src-tauri/gen/apple/.keep
907 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png
908 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png
909 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png
910 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png
911 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png
912 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png
913 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png
914 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png
915 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png
916 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png
917 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png
918 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png
919 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png
920 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png
921 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png
922 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png
923 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png
924 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png
925 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/Contents.json
926 examples/tauri-app/src-tauri/gen/apple/Assets.xcassets/Contents.json
927 examples/tauri-app/src-tauri/gen/apple/ExportOptions.plist
928 examples/tauri-app/src-tauri/gen/apple/LaunchScreen.storyboard
929 examples/tauri-app/src-tauri/gen/apple/Podfile
930 examples/tauri-app/src-tauri/gen/apple/Project.swift
931 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/bindings/bindings.h
932 examples/tauri-app/src-tauri/gen/apple/Sources/tauri-app/main.mm
933 examples/tauri-app/src-tauri/gen/apple/mise.toml
934 examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
935 examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
936 examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift
937
938 ```
939
940
941 ## Assistant
942
943 That's exactly the right set. Now add a `Makefile` that documents the two-step workflow so any developer (or CI) knows exactly what to run after a Tauri regeneration:
944
945 **Tool Call: No matches**
946 Status: Completed
947
948 ```json
949 {
950 "offset": 0,
951 "current_matches_page": [],
952 "all_matches_len": 0
953 }
954 ```
955
956 **Tool Call: tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Makefile**
957 Status: Completed
958
959 Diff: examples/tauri-app/src-tauri/gen/apple/Makefile
960 ```
961 # =============================================================================
962 # gen/apple/Makefile
963 #
964 # Bridges the Tauri code-generation lifecycle with Tuist project generation.
965 #
966 # WHY THIS FILE EXISTS
967 # --------------------
968 # `cargo tauri ios init` regenerates project.yml (XcodeGen format) but does
969 # NOT touch Project.swift (our Tuist manifest). We use Tuist as the single
970 # source of truth for the Xcode project, so every time Tauri regenerates the
971 # scaffold we must follow up with `tuist generate`.
972 #
973 # WORKFLOW
974 # --------
975 # First-time setup or after pulling fresh:
976 # make setup
977 #
978 # After `cargo tauri ios init` (Tauri regenerated the scaffold):
979 # make generate
980 #
981 # Open Xcode to work on iOS or tvOS:
982 # make open
983 #
984 # Full reset (nuclear option — re-scaffolds Tauri then regenerates Tuist):
985 # make reset
986 # =============================================================================
987
988 # Resolve the src-tauri root regardless of where make is invoked from.
989 # This file lives at src-tauri/gen/apple/Makefile.
990 SRC_TAURI := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))../..)
991
992 # Workspace root (two levels above src-tauri)
993 APP_ROOT := $(abspath $(SRC_TAURI)/../..)
994
995 .DEFAULT_GOAL := help
996
997 # -----------------------------------------------------------------------------
998 # help — print usage
999 # -----------------------------------------------------------------------------
1000 .PHONY: help
1001 help:
1002 @echo ""
1003 @echo " Tauri + Tuist iOS/tvOS project targets"
1004 @echo " ======================================="
1005 @echo ""
1006 @echo " make setup — first-time: install tuist (via mise) then generate"
1007 @echo " make generate — run 'tuist generate' to rebuild the Xcode project"
1008 @echo " make open — generate then open the workspace in Xcode"
1009 @echo " make ios — generate then build the iOS target (simulator)"
1010 @echo " make tvos — generate then build the tvOS target (simulator)"
1011 @echo " make clean — remove Xcode-derived data for this project"
1012 @echo " make reset — re-scaffold via Tauri then re-generate via Tuist"
1013 @echo " make lint — run tuist lint on Project.swift"
1014 @echo ""
1015 @echo " Advanced:"
1016 @echo " make tauri-init — run 'cargo tauri ios init' (re-generates project.yml)"
1017 @echo " NOTE: follow up with 'make generate'"
1018 @echo ""
1019
1020 # -----------------------------------------------------------------------------
1021 # setup — install tooling (mise activates tuist) then generate the project
1022 # -----------------------------------------------------------------------------
1023 .PHONY: setup
1024 setup: _require_mise _tuist_install generate
1025 @echo "✅ Setup complete. Run 'make open' to launch Xcode."
1026
1027 # -----------------------------------------------------------------------------
1028 # generate — the core step: (re)build *.xcodeproj from Project.swift
1029 #
1030 # Called after:
1031 # • first checkout
1032 # • `cargo tauri ios init` (which only regenerates project.yml, not Project.swift)
1033 # • any edit to Project.swift
1034 # -----------------------------------------------------------------------------
1035 .PHONY: generate
1036 generate: _require_tuist
1037 @echo "▶ tuist generate …"
1038 cd "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))" && tuist generate --no-open
1039 @echo "✅ Xcode project regenerated from Project.swift"
1040
1041 # -----------------------------------------------------------------------------
1042 # open — generate the project then open the workspace in Xcode
1043 # -----------------------------------------------------------------------------
1044 .PHONY: open
1045 open: _require_tuist
1046 @echo "▶ tuist generate + open …"
1047 cd "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))" && tuist generate
1048
1049 # -----------------------------------------------------------------------------
1050 # ios — build the iOS target against the default simulator
1051 # -----------------------------------------------------------------------------
1052 .PHONY: ios
1053 ios: generate
1054 @echo "▶ Building tauri-app_iOS (simulator) …"
1055 xcodebuild \
1056 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1057 -scheme tauri-app_iOS \
1058 -destination "generic/platform=iOS Simulator" \
1059 -configuration Debug \
1060 build \
1061 | xcbeautify || xcodebuild \
1062 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1063 -scheme tauri-app_iOS \
1064 -destination "generic/platform=iOS Simulator" \
1065 -configuration Debug \
1066 build
1067
1068 # -----------------------------------------------------------------------------
1069 # tvos — build the tvOS target against the default simulator
1070 # -----------------------------------------------------------------------------
1071 .PHONY: tvos
1072 tvos: generate
1073 @echo "▶ Building tauri-app_tvOS (simulator) …"
1074 xcodebuild \
1075 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1076 -scheme tauri-app_tvOS \
1077 -destination "generic/platform=tvOS Simulator" \
1078 -configuration Debug \
1079 build \
1080 | xcbeautify || xcodebuild \
1081 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1082 -scheme tauri-app_tvOS \
1083 -destination "generic/platform=tvOS Simulator" \
1084 -configuration Debug \
1085 build
1086
1087 # -----------------------------------------------------------------------------
1088 # clean — wipe derived data for this workspace
1089 # -----------------------------------------------------------------------------
1090 .PHONY: clean
1091 clean:
1092 @echo "▶ Cleaning Xcode derived data …"
1093 xcodebuild \
1094 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1095 -scheme tauri-app_iOS \
1096 clean 2>/dev/null || true
1097 xcodebuild \
1098 -workspace "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))tauri-app.xcworkspace" \
1099 -scheme tauri-app_tvOS \
1100 clean 2>/dev/null || true
1101 @echo "✅ Clean complete."
1102
1103 # -----------------------------------------------------------------------------
1104 # lint — validate Project.swift with tuist
1105 # -----------------------------------------------------------------------------
1106 .PHONY: lint
1107 lint: _require_tuist
1108 @echo "▶ tuist lint …"
1109 cd "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))" && tuist lint project
1110
1111 # -----------------------------------------------------------------------------
1112 # tauri-init — re-run Tauri's iOS scaffold (regenerates project.yml only)
1113 #
1114 # This intentionally does NOT call `make generate` automatically because
1115 # you may want to inspect what Tauri changed in project.yml before letting
1116 # Tuist regenerate the Xcode project. Run `make generate` when ready.
1117 # -----------------------------------------------------------------------------
1118 .PHONY: tauri-init
1119 tauri-init:
1120 @echo "▶ cargo tauri ios init …"
1121 cd "$(SRC_TAURI)" && cargo tauri ios init
1122 @echo ""
1123 @echo "⚠️ project.yml has been regenerated by Tauri."
1124 @echo " project.yml is intentionally git-ignored — Project.swift is the"
1125 @echo " Xcode project source of truth. Run 'make generate' to rebuild"
1126 @echo " the Xcode project from Project.swift."
1127 @echo ""
1128
1129 # -----------------------------------------------------------------------------
1130 # reset — full nuclear reset: re-scaffold via Tauri, then regenerate via Tuist
1131 # -----------------------------------------------------------------------------
1132 .PHONY: reset
1133 reset: tauri-init generate
1134 @echo "✅ Full reset complete."
1135
1136 # =============================================================================
1137 # Private helpers
1138 # =============================================================================
1139
1140 # Check mise is available (used to activate the pinned tuist version)
1141 .PHONY: _require_mise
1142 _require_mise:
1143 @command -v mise >/dev/null 2>&1 || { \
1144 echo "❌ mise not found. Install it from https://mise.jdx.dev/"; \
1145 exit 1; \
1146 }
1147
1148 # Install the pinned tuist version via mise (reads mise.toml)
1149 .PHONY: _tuist_install
1150 _tuist_install: _require_mise
1151 @echo "▶ Installing tuist (via mise) …"
1152 cd "$(dir $(abspath $(lastword $(MAKEFILE_LIST))))" && mise install
1153
1154 # Check tuist is available after mise activation
1155 .PHONY: _require_tuist
1156 _require_tuist:
1157 @command -v tuist >/dev/null 2>&1 || { \
1158 echo "❌ tuist not found."; \
1159 echo " Run 'make setup' to install it, or activate mise in your shell:"; \
1160 echo " eval \"\$$(mise activate \$$SHELL)\""; \
1161 echo " then re-run this target."; \
1162 exit 1; \
1163 }
1164
1165 ```
1166
1167
1168 ## Assistant
1169
1170 Now also add a `tvOS` Info.plist file — Tuist uses `.default` currently but a hand-authored one gives us proper tvOS keys and survives regeneration. Let me also add a tvOS entitlements file for completeness:
1171
1172 **Tool Call: tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/Info.plist**
1173 Status: Completed
1174
1175 Diff: examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/Info.plist
1176 ```
1177 <?xml version="1.0" encoding="UTF-8"?>
1178 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
1179 <plist version="1.0">
1180 <dict>
1181 <key>CFBundleDevelopmentRegion</key>
1182 <string>$(DEVELOPMENT_LANGUAGE)</string>
1183 <key>CFBundleExecutable</key>
1184 <string>$(EXECUTABLE_NAME)</string>
1185 <key>CFBundleIdentifier</key>
1186 <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
1187 <key>CFBundleInfoDictionaryVersion</key>
1188 <string>6.0</string>
1189 <key>CFBundleName</key>
1190 <string>$(PRODUCT_NAME)</string>
1191 <key>CFBundlePackageType</key>
1192 <string>APPL</string>
1193 <key>CFBundleShortVersionString</key>
1194 <string>0.1.0</string>
1195 <key>CFBundleVersion</key>
1196 <string>0.1.0</string>
1197 <key>UIRequiredDeviceCapabilities</key>
1198 <array>
1199 <string>arm64</string>
1200 </array>
1201 <key>UIUserInterfaceStyle</key>
1202 <string>Automatic</string>
1203 <key>UIApplicationSupportsIndirectInputEvents</key>
1204 <true/>
1205 </dict>
1206 </plist>
1207
1208 ```
1209
1210
1211 ## Assistant
1212
1213 Now update `Project.swift` to reference the proper `Info.plist` instead of `.default`:
1214
1215 **Tool Call: tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Project.swift**
1216 Status: Completed
1217
1218 Diff: examples/tauri-app/src-tauri/gen/apple/Project.swift
1219 ```
1220 import ProjectDescription
1221
1222 let project = Project(
1223 name: "tauri-app",
1224 settings: .settings(
1225 base: [
1226 "DEVELOPMENT_TEAM": "NADBSNEZWH",
1227 "PRODUCT_NAME": "tauri-app",
1228 "PRODUCT_BUNDLE_IDENTIFIER": "com.tauri.dev",
1229 ]
1230 ),
1231 targets: [
1232 // MARK: - iOS target (mirrors Tauri-generated project.yml)
1233 .target(
1234 name: "tauri-app_iOS",
1235 destinations: .iOS,
1236 product: .app,
1237 bundleId: "com.tauri.dev",
1238 deploymentTargets: .iOS("14.0"),
1239 infoPlist: .file(path: "tauri-app_iOS/Info.plist"),
1240 sources: [
1241 "Sources/**",
1242 "tauri-app_iOS/**",
1243 ],
1244 resources: [
1245 "Assets.xcassets",
1246 "LaunchScreen.storyboard",
1247 .folderReference(path: "assets"),
1248 ],
1249 entitlements: .file(path: "tauri-app_iOS/tauri-app_iOS.entitlements"),
1250 scripts: [
1251 .pre(
1252 script: """
1253 cargo tauri ios xcode-script -v \
1254 --platform ${PLATFORM_DISPLAY_NAME:?} \
1255 --sdk-root ${SDKROOT:?} \
1256 --framework-search-paths "${FRAMEWORK_SEARCH_PATHS:?}" \
1257 --header-search-paths "${HEADER_SEARCH_PATHS:?}" \
1258 --gcc-preprocessor-definitions "${GCC_PREPROCESSOR_DEFINITIONS:-}" \
1259 --configuration ${CONFIGURATION:?} \
1260 ${FORCE_COLOR} ${ARCHS:?}
1261 """,
1262 name: "Build Rust Code",
1263 outputPaths: [
1264 "$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
1265 "$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
1266 ],
1267 basedOnDependencyAnalysis: false
1268 )
1269 ],
1270 dependencies: [
1271 .sdk(name: "CoreGraphics", type: .framework),
1272 .sdk(name: "Metal", type: .framework),
1273 .sdk(name: "MetalKit", type: .framework),
1274 .sdk(name: "QuartzCore", type: .framework),
1275 .sdk(name: "Security", type: .framework),
1276 .sdk(name: "UIKit", type: .framework),
1277 .sdk(name: "WebKit", type: .framework),
1278 ],
1279 settings: .settings(
1280 base: [
1281 "ENABLE_BITCODE": "NO",
1282 "ARCHS": "arm64",
1283 "VALID_ARCHS": "arm64",
1284 "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "YES",
1285 "LIBRARY_SEARCH_PATHS[arch=arm64]": [
1286 "$(inherited)",
1287 "$(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION)",
1288 "$(SDKROOT)/usr/lib/swift",
1289 "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
1290 "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
1291 ],
1292 "LIBRARY_SEARCH_PATHS[arch=x86_64]": [
1293 "$(inherited)",
1294 "$(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION)",
1295 "$(SDKROOT)/usr/lib/swift",
1296 "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)",
1297 "$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)",
1298 ],
1299 "EXCLUDED_ARCHS[sdk=iphoneos*]": "x86_64",
1300 "OTHER_LDFLAGS": [
1301 "$(inherited)",
1302 "-lapp",
1303 ],
1304 ]
1305 )
1306 ),
1307
1308 // MARK: - tvOS placeholder target (no WebView on tvOS — native UI only)
1309 .target(
1310 name: "tauri-app_tvOS",
1311 destinations: [.appleTv],
1312 product: .app,
1313 bundleId: "com.tauri.dev.tvos",
1314 deploymentTargets: .tvOS("14.0"),
1315 infoPlist: .file(path: "tauri-app_tvOS/Info.plist"),
1316 sources: [
1317 "tauri-app_tvOS/**"
1318 ],
1319 resources: [
1320 "Assets.xcassets"
1321 ],
1322 dependencies: [
1323 .sdk(name: "UIKit", type: .framework)
1324 ],
1325 settings: .settings(
1326 base: [
1327 "ENABLE_BITCODE": "NO",
1328 "ARCHS": "arm64",
1329 ]
1330 )
1331 ),
1332 ],
1333 schemes: [
1334 .scheme(
1335 name: "tauri-app_iOS",
1336 buildAction: .buildAction(targets: ["tauri-app_iOS"]),
1337 runAction: .runAction(configuration: .debug),
1338 archiveAction: .archiveAction(configuration: .release),
1339 profileAction: .profileAction(configuration: .release),
1340 analyzeAction: .analyzeAction(configuration: .debug)
1341 ),
1342 .scheme(
1343 name: "tauri-app_tvOS",
1344 buildAction: .buildAction(targets: ["tauri-app_tvOS"]),
1345 runAction: .runAction(configuration: .debug),
1346 archiveAction: .archiveAction(configuration: .release),
1347 profileAction: .profileAction(configuration: .release),
1348 analyzeAction: .analyzeAction(configuration: .debug)
1349 ),
1350 ]
1351 )
1352
1353 ```
1354
1355
1356 ## Assistant
1357
1358 Now verify the final state of everything:
1359
1360 **Tool Call: git status --short examples/tauri-app/src-tauri/ 2>&1**
1361 Status: Completed
1362
1363 Terminal:
1364 ```
1365 M examples/tauri-app/src-tauri/.gitignore
1366 M examples/tauri-app/src-tauri/gen/apple/.gitignore
1367 D examples/tauri-app/src-tauri/gen/apple/Derived/InfoPlists/tauri-app_tvOS-Info.plist
1368 D examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppIOS.swift
1369 D examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistAssets+TauriAppTvOS.swift
1370 D examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppIOS.swift
1371 D examples/tauri-app/src-tauri/gen/apple/Derived/Sources/TuistBundle+TauriAppTvOS.swift
1372 M examples/tauri-app/src-tauri/gen/apple/Project.swift
1373 D examples/tauri-app/src-tauri/gen/apple/project.yml
1374 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.pbxproj
1375 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata
1376 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
1377 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_iOS.xcscheme
1378 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/xcshareddata/xcschemes/tauri-app_tvOS.xcscheme
1379 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/.tuist-generated
1380 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/contents.xcworkspacedata
1381 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
1382 D examples/tauri-app/src-tauri/gen/apple/tauri-app.xcworkspace/xcshareddata/xcschemes/tauri-app-Workspace.xcscheme
1383 ?? examples/tauri-app/src-tauri/gen/apple/Makefile
1384 ?? examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/Info.plist
1385
1386
1387
1388
1389
1390 ```
1391
1392
1393 ## Assistant
1394
1395 Everything looks exactly right. Let me do a final sanity check — verify the new files are not accidentally ignored:
1396
1397 **Tool Call: git check-ignore -v \
1398 examples/tauri-app/src-tauri/gen/apple/Makefile \
1399 examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/Info.plist \
1400 examples/tauri-app/src-tauri/gen/apple/Project.swift \
1401 examples/tauri-app/src-tauri/gen/apple/tauri-app_tvOS/App.swift \
1402 examples/tauri-app/src-tauri/gen/apple/project.yml \
1403 examples/tauri-app/src-tauri/gen/apple/Derived/ \
1404 examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/ \
1405 2>&1**
1406 Status: Completed
1407
1408 Terminal:
1409 ```
1410 examples/tauri-app/src-tauri/gen/apple/.gitignore:16:project.yml examples/tauri-app/src-tauri/gen/apple/project.yml
1411 examples/tauri-app/src-tauri/gen/apple/.gitignore:29:Derived/ examples/tauri-app/src-tauri/gen/apple/Derived/
1412 examples/tauri-app/src-tauri/gen/apple/.gitignore:22:*.xcodeproj/ examples/tauri-app/src-tauri/gen/apple/tauri-app.xcodeproj/
1413
1414
1415
1416
1417 ```
1418
1419
1420 ## Assistant
1421
1422 `Makefile`, `tauri-app_tvOS/Info.plist`, `Project.swift`, and `App.swift` produce no output — meaning they are **not** ignored and will be tracked. The three generated files (`project.yml`, `Derived/`, `*.xcodeproj/`) are correctly ignored. Let's read the final state of each changed file:
1423
1424 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore`**
1425 Status: Completed
1426
1427 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore
1428 # Generated by Cargo
1429 # will have compiled files and executables
1430 /target/
1431
1432 # ============================================================
1433 # gen/apple — Tauri scaffolds this directory on `cargo tauri ios init`.
1434 # A nested .gitignore at gen/apple/.gitignore handles the fine-grained
1435 # rules for that subtree. The entries below are a belt-and-suspenders
1436 # safety net at this level.
1437 # ============================================================
1438
1439 # Rust static libraries produced by the Xcode build phase script
1440 gen/apple/Externals/
1441
1442 # Xcode project & workspace — regenerated by `tuist generate`
1443 # (Project.swift is the source of truth, not these files)
1444 gen/apple/*.xcodeproj/
1445 gen/apple/*.xcworkspace/
1446
1447 # Tuist derived sources / plists — regenerated by `tuist generate`
1448 gen/apple/Derived/
1449
1450 # Xcode per-user settings
1451 gen/apple/xcuserdata/
1452
1453 # Xcode build artefacts
1454 gen/apple/build/
1455
1456 # XcodeGen manifest — regenerated by `cargo tauri ios init`.
1457 # We use Project.swift (Tuist) as the Xcode project source of truth.
1458 gen/apple/project.yml
1459
1460 # ============================================================
1461 # The following gen/apple files ARE intentionally tracked because
1462 # they are either hand-authored or not regenerated by Tauri/Tuist:
1463 #
1464 # Project.swift — Tuist project manifest (our source of truth)
1465 # mise.toml — Tuist version pin
1466 # project.yml — excluded above (Tauri-generated, not needed)
1467 # tauri-app_iOS/Info.plist — iOS app Info.plist (Tauri reads this)
1468 # tauri-app_iOS/*.entitlements — iOS entitlements
1469 # tauri-app_tvOS/App.swift — hand-authored native tvOS app entry point
1470 # Sources/ — Obj-C/C++ glue generated once by Tauri
1471 # Assets.xcassets/ — app icons & asset catalog
1472 # LaunchScreen.storyboard — iOS launch screen
1473 # ExportOptions.plist — archive export options
1474 # Podfile — CocoaPods manifest
1475 # ============================================================
1476
1477 ```
1478
1479
1480 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore`**
1481 Status: Completed
1482
1483 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore
1484 # ============================================================
1485 # gen/apple/.gitignore
1486 #
1487 # Strategy:
1488 # - `cargo tauri ios init` regenerates project.yml (XcodeGen)
1489 # - `tuist generate` regenerates *.xcodeproj, *.xcworkspace, Derived/
1490 # - Everything else is hand-authored source of truth → tracked
1491 # ============================================================
1492
1493 # ------------------------------------------------------------------
1494 # Tauri-regenerated: XcodeGen manifest
1495 # Re-created by `cargo tauri ios init` from tauri.conf.json.
1496 # We use Project.swift (Tuist) as the Xcode project source of truth,
1497 # so project.yml is a Tauri implementation detail we don't need.
1498 # ------------------------------------------------------------------
1499 project.yml
1500
1501 # ------------------------------------------------------------------
1502 # Tuist-regenerated: Xcode project & workspace
1503 # Fully described by Project.swift → always regenerate, never edit.
1504 # ------------------------------------------------------------------
1505 *.xcodeproj/
1506 *.xcworkspace/
1507
1508 # ------------------------------------------------------------------
1509 # Tuist-regenerated: derived sources & info plists
1510 # Auto-synthesised from Project.swift (asset accessors, bundle IDs…).
1511 # ------------------------------------------------------------------
1512 Derived/
1513
1514 # ------------------------------------------------------------------
1515 # Xcode runtime noise
1516 # ------------------------------------------------------------------
1517 xcuserdata/
1518
1519 # ------------------------------------------------------------------
1520 # Rust / Cargo build output
1521 # (also covered by src-tauri/.gitignore, belt-and-suspenders here)
1522 # ------------------------------------------------------------------
1523 build/
1524
1525 # ------------------------------------------------------------------
1526 # Compiled Rust static libraries injected by xcode-script
1527 # ------------------------------------------------------------------
1528 Externals/
1529
1530 ```
1531
1532
1533 ## Assistant
1534
1535 Everything is clean. Here's a summary of what was done and why each decision was made:
1536
1537 ---
1538
1539 ## What was changed and why
1540
1541 ### The core tension
1542
1543 `cargo tauri ios init` owns `project.yml` (XcodeGen format) and will overwrite it on every re-run. We want a **tvOS target that survives regeneration** without forking Tauri's toolchain. The solution: use **Tuist as a separate layer above Tauri** — Tauri never touches `Project.swift`.
1544
1545 ---
1546
1547 ### `gen/apple/.gitignore` — rewritten
1548
1549 Three categories of generated output are now ignored:
1550
1551 | Ignored | Regenerated by | Why ignore |
1552 |---|---|---|
1553 | `project.yml` | `cargo tauri ios init` | We use `Project.swift` instead |
1554 | `*.xcodeproj/`, `*.xcworkspace/` | `tuist generate` | Derived from `Project.swift` |
1555 | `Derived/` | `tuist generate` | Auto-synthesised asset/bundle accessors |
1556 | `Externals/`, `build/`, `xcuserdata/` | Xcode/Cargo | Runtime noise |
1557
1558 ### `src-tauri/.gitignore` — expanded
1559
1560 Added belt-and-suspenders entries at the `src-tauri` level so the rules hold even if someone deletes or edits the nested `gen/apple/.gitignore`.
1561
1562 ### `git rm --cached` — un-tracked generated files
1563
1564 Removed from Git's index (but not disk): `tauri-app.xcodeproj/`, `tauri-app.xcworkspace/`, `Derived/`, `project.yml`. These are now truly ignored going forward.
1565
1566 ### `tauri-app_tvOS/Info.plist` — new file
1567
1568 Replaced the `infoPlist: .default` in `Project.swift` with a hand-authored plist that has the correct tvOS-specific keys (`UIApplicationSupportsIndirectInputEvents`, no `LSRequiresIPhoneOS`, etc.).
1569
1570 ### `Project.swift` — updated
1571
1572 Changed `infoPlist: .default` → `infoPlist: .file(path: "tauri-app_tvOS/Info.plist")` so the plist is explicit and tracked.
1573
1574 ### `Makefile` — new file
1575
1576 Documents the two-step workflow clearly:
1577
1578 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Makefile#L1-30
1579 # WORKFLOW
1580 # --------
1581 # First-time setup or after pulling fresh:
1582 # make setup
1583 #
1584 # After `cargo tauri ios init` (Tauri regenerated the scaffold):
1585 # make generate
1586 #
1587 # Open Xcode to work on iOS or tvOS:
1588 # make open
1589 #
1590 # Full reset (nuclear option — re-scaffolds Tauri then regenerates Tuist):
1591 # make reset
1592 ```
1593
1594 The key insight baked into `make tauri-init` is that it does **not** automatically call `make generate` — you can inspect what Tauri changed before letting Tuist regenerate, making the boundary explicit and safe.
1595
1596 ---
1597
1598 ### Mental model going forward
1599
1600 ```/dev/null/workflow.txt#L1-8
1601 Developer workflow:
1602 1. cargo tauri ios init → regenerates project.yml (ignored by git)
1603 2. make generate → tuist reads Project.swift, writes .xcodeproj
1604 3. open tauri-app.xcworkspace in Xcode
1605
1606 To add tvOS features: edit tauri-app_tvOS/App.swift and/or Project.swift
1607 To change iOS build settings: edit Project.swift
1608 Never edit .xcodeproj directly — it's regenerated on every `make generate`
1609 ```
1610
1611 ## User
1612
1613 tauri-app_iOS/Info.plist`, `*.entitlements` ✅ — needed for Tauri too do you really need this?
1614
1615 ## Assistant
1616
1617 Good question. Let me check what Tauri actually does with those files.
1618
1619 **Tool Call: Search files for regex `Info\.plist|entitlements`**
1620 Status: Completed
1621
1622 No matches found
1623
1624 **Tool Call: Search files for regex `Info\.plist|entitlements`**
1625 Status: Completed
1626
1627 No matches found
1628
1629 **Tool Call: Search files for regex `Info\.plist|entitlements", `**
1630 Status: Completed
1631
1632 Found 8 matches:
1633
1634 ## Matches in tauri-plugin-ios-window/docs/debugging/tauri: Adding tvOS Target to Tauri Xcode Project
1635
1636 ### # Files: › L101-102
1637 ```
1638 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
1639 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
1640 ```
1641
1642 ### # `Project` ​ › L160-164
1643 ```
1644 product: .app,
1645 bundleId: "dev.tuist.App",
1646 infoPlist: "Config/App-Info.plist",
1647 sources: ["Sources/**"],
1648 resources: [
1649 ```
1650
1651 ### # `Target` ​ › ## Properties ​ › ### `infoPlist` ​ › L493-494
1652 ```
1653 The Info.plist representation.
1654
1655 ```
1656
1657 ### # `Target` ​ › ## Properties ​ › ### `entitlements` ​ › L567-572
1658 ```
1659 targets: [target],
1660 additionalFiles: [
1661 "Debug.entitlements",
1662 "Release.entitlements"
1663 ]
1664 )
1665 ```
1666
1667 ### # `Target` ​ › ## Methods ​ › ### `target(name:destinations:product:productName:bundleId:deploymentTargets:infoPlist:sources:resources:buildableFolders:copyFiles:headers:entitlements:scripts:dependencies:settings:coreDataModels:environmentVariables:launchArguments:additionalFiles:buildRules:mergedBinaryType:mergeable:onDemandResourcesTags:metadata:)` ​ › L816-817
1668 ```
1669 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist`**
1670 Status: Completed
1671 ```
1672
1673 ## Matches in tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore
1674
1675 ### L38-42
1676 ```
1677 # mise.toml — Tuist version pin
1678 # project.yml — excluded above (Tauri-generated, not needed)
1679 # tauri-app_iOS/Info.plist — iOS app Info.plist (Tauri reads this)
1680 # tauri-app_iOS/*.entitlements — iOS entitlements
1681 # tauri-app_tvOS/App.swift — hand-authored native tvOS app entry point
1682 ```
1683
1684 ## Matches in tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Project.swift
1685
1686 ### L14-24
1687 ```
1688 .target(
1689 name: "tauri-app_iOS",
1690 destinations: .iOS,
1691 product: .app,
1692 bundleId: "com.tauri.dev",
1693 deploymentTargets: .iOS("14.0"),
1694 infoPlist: .file(path: "tauri-app_iOS/Info.plist"),
1695 sources: [
1696 "Sources/**",
1697 "tauri-app_iOS/**",
1698 ],
1699 ```
1700
1701 63 lines remaining in ancestor node. Read the file to see all.
1702
1703 ### L90-100
1704 ```
1705 .target(
1706 name: "tauri-app_tvOS",
1707 destinations: [.appleTv],
1708 product: .app,
1709 bundleId: "com.tauri.dev.tvos",
1710 deploymentTargets: .tvOS("14.0"),
1711 infoPlist: .file(path: "tauri-app_tvOS/Info.plist"),
1712 sources: [
1713 "tauri-app_tvOS/**"
1714 ],
1715 resources: [
1716 ```
1717
1718 12 lines remaining in ancestor node. Read the file to see all.
1719
1720
1721 **Tool Call: Search files for regex `tauri-app_iOS/Info|tauri-app_iOS.*entitlements`**
1722 Status: Completed
1723
1724 Found 6 matches:
1725
1726 ## Matches in tauri-plugin-ios-window/docs/debugging/tauri: Adding tvOS Target to Tauri Xcode Project
1727
1728 ### # Files: › L101-102
1729 ```
1730 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist
1731 tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements
1732 ```
1733
1734 ### # `Target` ​ › ## Methods ​ › ### `target(name:destinations:product:productName:bundleId:deploymentTargets:infoPlist:sources:resources:buildableFolders:copyFiles:headers:entitlements:scripts:dependencies:settings:coreDataModels:environmentVariables:launchArguments:additionalFiles:buildRules:mergedBinaryType:mergeable:onDemandResourcesTags:metadata:)` ​ › L816-817
1735 ```
1736 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/Info.plist`**
1737 Status: Completed
1738 ```
1739
1740 ### # `Target` ​ › ## Methods ​ › ### `target(name:destinations:product:productName:bundleId:deploymentTargets:infoPlist:sources:resources:buildableFolders:copyFiles:headers:entitlements:scripts:dependencies:settings:coreDataModels:environmentVariables:launchArguments:additionalFiles:buildRules:mergedBinaryType:mergeable:onDemandResourcesTags:metadata:)` ​ › L825-826
1741 ```
1742 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/tauri-app_iOS.entitlements`**
1743 Status: Completed
1744 ```
1745
1746 ## Matches in tauri-plugin-ios-window/examples/tauri-app/src-tauri/.gitignore
1747
1748 ### L38-43
1749 ```
1750 # mise.toml — Tuist version pin
1751 # project.yml — excluded above (Tauri-generated, not needed)
1752 # tauri-app_iOS/Info.plist — iOS app Info.plist (Tauri reads this)
1753 # tauri-app_iOS/*.entitlements — iOS entitlements
1754 # tauri-app_tvOS/App.swift — hand-authored native tvOS app entry point
1755 # Sources/ — Obj-C/C++ glue generated once by Tauri
1756 ```
1757
1758 ## Matches in tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/Project.swift
1759
1760 ### L14-24
1761 ```
1762 .target(
1763 name: "tauri-app_iOS",
1764 destinations: .iOS,
1765 product: .app,
1766 bundleId: "com.tauri.dev",
1767 deploymentTargets: .iOS("14.0"),
1768 infoPlist: .file(path: "tauri-app_iOS/Info.plist"),
1769 sources: [
1770 "Sources/**",
1771 "tauri-app_iOS/**",
1772 ],
1773 ```
1774
1775 63 lines remaining in ancestor node. Read the file to see all.
1776
1777 ### L28-32
1778 ```
1779 .folderReference(path: "assets"),
1780 ],
1781 entitlements: .file(path: "tauri-app_iOS/tauri-app_iOS.entitlements"),
1782 scripts: [
1783 .pre(
1784 ```
1785
1786
1787 ## Assistant
1788
1789 That confirms these files are only referenced from `Project.swift` (our Tuist manifest) — not from Tauri. Now let me check whether `cargo tauri ios init` regenerates them:
1790
1791 **Tool Call: Fetch https://github.com/tauri\-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs**
1792 Status: Failed
1793
1794 status error 404, response: "\n\n\n\n\n\n<!DOCTYPE html>\n<html\n lang=\"en\"\n \n data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark\"\n data-a11y-animated-images=\"system\" data-a11y-link-underlines=\"true\"\n \n >\n\n\n\n\n <head>\n <meta charset=\"utf-8\">\n <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\">\n <link rel=\"dns-prefetch\" href=\"https://avatars.githubusercontent.com\">\n <link rel=\"dns-prefetch\" href=\"https://github-cloud.s3.amazonaws.com\">\n <link rel=\"dns-prefetch\" href=\"https://user-images.githubusercontent.com/\">\n <link rel=\"preconnect\" href=\"https://github.githubassets.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://avatars.githubusercontent.com\">\n\n \n\n\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light-8f714f203754d3e3.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/light_high_contrast-852c22d357937740.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark-b5a0f9dbeed37e9c.css\" /><link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/dark_high_contrast-b1b5000c4cba6bc9.css\" /><link data-color-theme=\"light\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light-8f714f203754d3e3.css\" /><link data-color-theme=\"light_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_high_contrast-852c22d357937740.css\" /><link data-color-theme=\"light_colorblind\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_colorblind-cd9e31fed96ffe09.css\" /><link data-color-theme=\"light_colorblind_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_colorblind_high_contrast-d8387aac10e96d7c.css\" /><link data-color-theme=\"light_tritanopia\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_tritanopia-de5a42a9379cb835.css\" /><link data-color-theme=\"light_tritanopia_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/light_tritanopia_high_contrast-b80844282a9e6620.css\" /><link data-color-theme=\"dark\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark-b5a0f9dbeed37e9c.css\" /><link data-color-theme=\"dark_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_high_contrast-b1b5000c4cba6bc9.css\" /><link data-color-theme=\"dark_colorblind\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_colorblind-85d7bc4072a238f0.css\" /><link data-color-theme=\"dark_colorblind_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_colorblind_high_contrast-f4838f9524519a33.css\" /><link data-color-theme=\"dark_tritanopia\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_tritanopia-23bce8ff4d024f04.css\" /><link data-color-theme=\"dark_tritanopia_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_tritanopia_high_contrast-e088d4bc2d56f7d6.css\" /><link data-color-theme=\"dark_dimmed\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_dimmed-6b102382a27a656f.css\" /><link data-color-theme=\"dark_dimmed_high_contrast\" crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" data-href=\"https://github.githubassets.com/assets/dark_dimmed_high_contrast-1d3e6d98532ab032.css\" />\n\n <style type=\"text/css\">\n :root {\n --tab-size-preference: 4;\n }\n\n pre, code {\n tab-size: var(--tab-size-preference);\n }\n </style>\n\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-primitives-26e89bb5a0c37ae9.css\" />\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-bcf0a93b19072a86.css\" />\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/global-95af332f763e4560.css\" />\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/github-8ecc5798f0584cac.css\" />\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/repository-dd7b55261c401703.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/code-bedb41adf21fe337.css\" />\n\n \n\n <script type=\"application/json\" id=\"client-env\">{\"locale\":\"en\",\"featureFlags\":[\"a11y_status_checks_ruleset\",\"actions_custom_images_public_preview_visibility\",\"actions_custom_images_storage_billing_ui_visibility\",\"actions_image_version_event\",\"alternate_user_config_repo\",\"arianotify_comprehensive_migration\",\"batch_suggested_changes\",\"codespaces_prebuild_region_target_update\",\"coding_agent_model_selection\",\"coding_agent_model_selection_all_skus\",\"copilot_3p_agent_hovercards\",\"copilot_agent_sessions_alive_updates\",\"copilot_agent_snippy\",\"copilot_agent_task_list_v2\",\"copilot_agent_task_submit_with_modifier\",\"copilot_agent_tasks_btn_code_nav\",\"copilot_agent_tasks_btn_code_view\",\"copilot_agent_tasks_btn_code_view_lines\",\"copilot_agent_tasks_btn_repo\",\"copilot_api_agentic_issue_marshal_yaml\",\"copilot_ask_mode_dropdown\",\"copilot_chat_attach_multiple_images\",\"copilot_chat_clear_model_selection_for_default_change\",\"copilot_chat_deprecate_relay\",\"copilot_chat_enable_tool_call_logs\",\"copilot_chat_file_redirect\",\"copilot_chat_input_commands\",\"copilot_chat_opening_thread_switch\",\"copilot_chat_reduce_quota_checks\",\"copilot_chat_repository_picker\",\"copilot_chat_search_bar_redirect\",\"copilot_chat_selection_attachments\",\"copilot_chat_vision_in_claude\",\"copilot_chat_vision_preview_gate\",\"copilot_cli_install_cta\",\"copilot_coding_agent_task_response\",\"copilot_custom_copilots\",\"copilot_custom_copilots_feature_preview\",\"copilot_duplicate_thread\",\"copilot_extensions_hide_in_dotcom_chat\",\"copilot_extensions_removal_on_marketplace\",\"copilot_features_sql_server_logo\",\"copilot_features_zed_logo\",\"copilot_file_block_ref_matching\",\"copilot_ftp_hyperspace_upgrade_prompt\",\"copilot_icebreakers_experiment_dashboard\",\"copilot_icebreakers_experiment_hyperspace\",\"copilot_immersive_embedded\",\"copilot_immersive_job_result_preview\",\"copilot_immersive_layout_routes\",\"copilot_immersive_structured_model_picker\",\"copilot_immersive_task_hyperlinking\",\"copilot_immersive_task_within_chat_thread\",\"copilot_mc_cli_resume_any_users_task\",\"copilot_mission_control_always_send_integration_id\",\"copilot_mission_control_use_task_name\",\"copilot_org_policy_page_focus_mode\",\"copilot_redirect_header_button_to_agents\",\"copilot_share_active_subthread\",\"copilot_spaces_ga\",\"copilot_spaces_individual_policies_ga\",\"copilot_spaces_pagination\",\"copilot_spark_empty_state\",\"copilot_spark_handle_nil_friendly_name\",\"copilot_stable_conversation_view\",\"copilot_swe_agent_hide_model_picker_if_only_auto\",\"copilot_swe_agent_pr_comment_model_picker\",\"copilot_swe_agent_use_subagents\",\"copilot_unconfigured_is_inherited\",\"copilot_usage_metrics_ga\",\"custom_instructions_file_references\",\"custom_properties_consolidate_default_value_input\",\"dashboard_lists_max_age_filter\",\"dashboard_universe_2025_feedback_dialog\",\"flex_cta_groups_mvp\",\"global_nav_menu_lazy_load\",\"global_nav_react\",\"global_user_menu_lazy_load\",\"hyperspace_2025_logged_out_batch_1\",\"hyperspace_2025_logged_out_batch_2\",\"initial_per_page_pagination_updates\",\"issue_fields_global_search\",\"issue_fields_report_usage\",\"issue_fields_timeline_events\",\"issues_cca_assign_actor_with_agent\",\"issues_dashboard_inp_optimization\",\"issues_diff_based_label_updates\",\"issues_expanded_file_types\",\"issues_index_semantic_search\",\"issues_lazy_load_comment_box_suggestions\",\"issues_react_auto_retry_on_error\",\"issues_react_bots_timeline_pagination\",\"issues_react_chrome_container_query_fix\",\"issues_react_hot_cache\",\"issues_react_low_quality_comment_warning\",\"issues_react_prohibit_title_fallback\",\"issues_react_safari_scroll_preservation\",\"issues_react_use_turbo_for_cross_repo_navigation\",\"landing_pages_ninetailed\",\"landing_pages_web_vitals_tracking\",\"lifecycle_label_name_updates\",\"marketing_pages_search_explore_provider\",\"memex_default_issue_create_repository\",\"memex_grouped_by_edit_route\",\"memex_live_update_hovercard\",\"memex_mwl_filter_field_delimiter\",\"mission_control_retry_on_401\",\"mission_control_use_body_html\",\"oauth_authorize_clickjacking_protection\",\"open_agent_session_in_vscode_insiders\",\"open_agent_session_in_vscode_stable\",\"primer_react_css_has_selector_perf\",\"prs_conversations_react\",\"react_quality_profiling\",\"ruleset_deletion_confirmation\",\"sample_network_conn_type\",\"session_logs_ungroup_reasoning_text\",\"site_calculator_actions_2025\",\"site_features_copilot_universe\",\"site_homepage_collaborate_video\",\"spark_prompt_secret_scanning\",\"spark_server_connection_status\",\"suppress_automated_browser_vitals\",\"suppress_non_representative_vitals\",\"viewscreen_sandbox\",\"webp_support\",\"workbench_store_readonly\"],\"copilotApiOverrideUrl\":\"https://api.githubcopilot.com\"}</script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/high-contrast-cookie-9c894bc29dbadce2.js\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/wp-runtime-571f504d8e30c577.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/28839-632d00a964e8dbd5.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/49863-8861e351482cb073.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/64220-1215bd360f02816c.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/environment-39e5b412c63ea4f0.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/runtime-helpers-3cd71e27e349021d.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/2966-25cb8e34b31306a4.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/96232-fb82336d69225835.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/41013-ac21ea90ed8590af.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/51210-185739338ae8119b.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/24387-6b7f5e596897eded.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/81683-740d112caee5baa9.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/46740-84bdd4782a486b80.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/81751-d3fe9e061a21f8d3.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/github-elements-837d26c249ef0f1d.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/element-registry-bb2cd0bc4c3bad67.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/react-core-dcd512f43fdba85e.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/react-lib-e74a1db7c21f7e74.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/7053-20b4a6914bbde21f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/79039-9ce5da88e09eef89.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/61110-212553c409076913.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/2887-0e9a84f5dc250853.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/26533-6b8040883d16f6ae.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/62249-2895213a788d973c.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/2694-372ce035e93800e0.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/56093-886facf7a5ba3dc9.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/28360-f4444f13a0dc6af9.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/12142-b56dc06030d9574f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/22960-12a7c572a55f9c87.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/51683-f6844a8acd415e3b.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/76545-cf3621a1f2f36d8d.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/behaviors-e43afe894d57debc.js\" defer=\"defer\"></script>\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/react-core.35e5d09cdbc69350.module.css\" />\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/38302-277be92deeed3c63.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/notifications-global-fc52e59df1c89647.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/92351-7bc542feb2bc5250.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/code-menu-ac8ef1c9f2457929.js\" defer=\"defer\"></script>\n \n <script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/primer-react-9537ac79f0a3d832.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/octicons-react-39f7eb9c9327cc85.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/78168-dda25026ab7e88b8.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/68751-4d3d1aac1f81a213.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/7463-2a94d884e276b7f9.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/15272-ef674e7caa43f3d4.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/32769-e856688499efb8d1.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/437-ed451d0ef5202580.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/80067-9b43df2889de2a8f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/34194-b013fe1892f07b5a.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/19837-256515faabc7a3fd.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/16111-f5f338f82c51d302.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/51597-90368bb51b82ae4f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/38728-25f5b37432a37d4a.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/99602-8110a1eaf4307aae.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/71365-79e23887316d43a4.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/11152-ab31b20bfdc6794f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/61300-8c4d65d4e2701585.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/41954-50d9d252ed7dfcc6.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/65439-ccf550e14b1f971b.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/11149-d4f1c5f26d21cb10.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/78563-887dd48b0f36941b.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/16073-85e63ca50f563465.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/57956-01355ed498c4a6c4.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/95776-881e9d9cdf0494fc.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/43142-e0ed058b12703a92.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/19101-8b0d1239b989a6da.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/46358-62b54d6e8db9b8bf.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/80352-a10d46d0c8bcfa2f.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/11268-90882e367263e0b0.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/73494-006cc0da9ef70376.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/2653-13297e64d4facff5.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/react-code-view-2c0e1a426dd2429e.js\" defer=\"defer\"></script>\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/46358.8df8e7e0846b009c.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/2653.5249e6d6586be4c4.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/react-code-view.c51f7f43c1dcf251.module.css\" />\n\n <script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/82729-9c66512dd277d027.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/22843-872789a8d1cec837.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/69174-fa0d2eb122c8f00a.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/5149-cca1dd424bd07134.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/62723-f44d20fee4470b78.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/notifications-subscriptions-menu-b3a143a6dd038e99.js\" defer=\"defer\"></script>\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/notifications-subscriptions-menu.f368d8d5c72615dd.module.css\" />\n\n\n <title>File not found · GitHub</title>\n\n\n\n <meta name=\"route-pattern\" content=\"/:user_id/:repository/blob/*name(/*path)\" data-turbo-transient>\n <meta name=\"route-controller\" content=\"blob\" data-turbo-transient>\n <meta name=\"route-action\" content=\"show\" data-turbo-transient>\n <meta name=\"fetch-nonce\" content=\"v2:bec0c7a3-3733-a357-774a-f5609869df85\">\n\n \n <meta name=\"current-catalog-service-hash\" content=\"f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb\">\n\n\n <meta name=\"request-id\" content=\"C3A9:82D58:11FAC37:12588EA:69A41AB3\" data-pjax-transient=\"true\"/><meta name=\"html-safe-nonce\" content=\"a443cdfaf63b44546809e5fe97f53b758859f7eb0578fda82aafbdd7852ccef4\" data-pjax-transient=\"true\"/><meta name=\"visitor-payload\" content=\"eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDM0E5OjgyRDU4OjExRkFDMzc6MTI1ODhFQTo2OUE0MUFCMyIsInZpc2l0b3JfaWQiOiI0MzA5MTUwODczMjE2NjIxMjM1IiwicmVnaW9uX2VkZ2UiOiJzd2VkZW5jZW50cmFsIiwicmVnaW9uX3JlbmRlciI6InN3ZWRlbmNlbnRyYWwifQ==\" data-pjax-transient=\"true\"/><meta name=\"visitor-hmac\" content=\"2b9c54a41c6b7e1c52f00ed64376d879e9cc8ab996cb41cf38a44292cf18d5f8\" data-pjax-transient=\"true\"/>\n\n\n <meta name=\"hovercard-subject-tag\" content=\"repository:196701619\" data-turbo-transient>\n\n\n <meta name=\"github-keyboard-shortcuts\" content=\"repository,source-code,file-tree,copilot\" data-turbo-transient=\"true\" />\n \n\n <meta name=\"selected-link\" value=\"repo_source\" data-turbo-transient>\n <link rel=\"assets\" href=\"https://github.githubassets.com/\">\n\n <meta name=\"google-site-verification\" content=\"Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I\">\n\n<meta name=\"octolytics-url\" content=\"https://collector.github.com/github/collect\" />\n\n\n\n\n\n <meta name=\"analytics-location\" content=\"/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show\" data-turbo-transient=\"true\" />\n\n \n\n\n\n\n <meta name=\"user-login\" content=\"\">\n\n \n\n <meta name=\"viewport\" content=\"width=device-width\">\n\n \n\n <meta name=\"description\" content=\"Build smaller, faster, and more secure desktop and mobile applications with a web frontend. - File not found · tauri-apps/tauri\">\n\n <link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"/opensearch.xml\" title=\"GitHub\">\n\n <link rel=\"fluid-icon\" href=\"https://github.com/fluidicon.png\" title=\"GitHub\">\n <meta property=\"fb:app_id\" content=\"1401488693436528\">\n <meta name=\"apple-itunes-app\" content=\"app-id=1477376905, app-argument=https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs\" />\n\n <meta name=\"twitter:image\" content=\"https://repository-images.githubusercontent.com/196701619/97dffd87-95e5-4b11-873c-ff3fa8c50875\" /><meta name=\"twitter:site\" content=\"@github\" /><meta name=\"twitter:card\" content=\"summary_large_image\" /><meta name=\"twitter:title\" content=\"File not found · tauri-apps/tauri\" /><meta name=\"twitter:description\" content=\"Build smaller, faster, and more secure desktop and mobile applications with a web frontend. - File not found · tauri-apps/tauri\" />\n <meta property=\"og:image\" content=\"https://repository-images.githubusercontent.com/196701619/97dffd87-95e5-4b11-873c-ff3fa8c50875\" /><meta property=\"og:image:alt\" content=\"Build smaller, faster, and more secure desktop and mobile applications with a web frontend. - File not found · tauri-apps/tauri\" /><meta property=\"og:site_name\" content=\"GitHub\" /><meta property=\"og:type\" content=\"object\" /><meta property=\"og:title\" content=\"File not found · tauri-apps/tauri\" /><meta property=\"og:url\" content=\"https://github.com/tauri-apps/tauri\" /><meta property=\"og:description\" content=\"Build smaller, faster, and more secure desktop and mobile applications with a web frontend. - File not found · tauri-apps/tauri\" />\n \n\n\n\n\n <meta name=\"hostname\" content=\"github.com\">\n\n\n\n <meta name=\"expected-hostname\" content=\"github.com\">\n\n\n <meta http-equiv=\"x-pjax-version\" content=\"56cd73939759ef16bc4aa7d7b10917dc358002675d418f8b39f922014fc1678c\" data-turbo-track=\"reload\">\n <meta http-equiv=\"x-pjax-csp-version\" content=\"568c098497d98702bac1642a2a853732a047a6ced28eabd3e15d50041a890235\" data-turbo-track=\"reload\">\n <meta http-equiv=\"x-pjax-css-version\" content=\"3a421c5f1445b7e5ad5460dd263b7954b153fa40b048a6fde2f9e012764d6d50\" data-turbo-track=\"reload\">\n <meta http-equiv=\"x-pjax-js-version\" content=\"9e74777050a8cf6d2f3e44e4b857d82f981be9c4421e6a7dc6ccda4feb5ce086\" data-turbo-track=\"reload\">\n\n <meta name=\"turbo-cache-control\" content=\"no-preview\" data-turbo-transient=\"\">\n\n <meta name=\"turbo-cache-control\" content=\"no-cache\" data-turbo-transient>\n\n <meta data-hydrostats=\"publish\">\n\n <meta name=\"go-import\" content=\"github.com/tauri-apps/tauri git https://github.com/tauri-apps/tauri.git\">\n\n <meta name=\"octolytics-dimension-user_id\" content=\"54536011\" /><meta name=\"octolytics-dimension-user_login\" content=\"tauri-apps\" /><meta name=\"octolytics-dimension-repository_id\" content=\"196701619\" /><meta name=\"octolytics-dimension-repository_nwo\" content=\"tauri-apps/tauri\" /><meta name=\"octolytics-dimension-repository_public\" content=\"true\" /><meta name=\"octolytics-dimension-repository_is_fork\" content=\"false\" /><meta name=\"octolytics-dimension-repository_network_root_id\" content=\"196701619\" /><meta name=\"octolytics-dimension-repository_network_root_nwo\" content=\"tauri-apps/tauri\" />\n\n\n\n \n\n <meta name=\"turbo-body-classes\" content=\"logged-out env-production page-responsive\">\n <meta name=\"disable-turbo\" content=\"false\">\n\n\n <meta name=\"browser-stats-url\" content=\"https://api.github.com/_private/browser/stats\">\n\n <meta name=\"browser-errors-url\" content=\"https://api.github.com/_private/browser/errors\">\n\n <meta name=\"release\" content=\"3b808a02058ef227fa5d29650f4e4fd2ff151519\">\n <meta name=\"ui-target\" content=\"full\">\n\n <link rel=\"mask-icon\" href=\"https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg\" color=\"#000000\">\n <link rel=\"alternate icon\" class=\"js-site-favicon\" type=\"image/png\" href=\"https://github.githubassets.com/favicons/favicon.png\">\n <link rel=\"icon\" class=\"js-site-favicon\" type=\"image/svg+xml\" href=\"https://github.githubassets.com/favicons/favicon.svg\" data-base-href=\"https://github.githubassets.com/favicons/favicon\">\n\n<meta name=\"theme-color\" content=\"#1e2327\">\n<meta name=\"color-scheme\" content=\"light dark\" />\n\n\n <link rel=\"manifest\" href=\"/manifest.json\" crossOrigin=\"use-credentials\">\n\n </head>\n\n <body class=\"logged-out env-production page-responsive\" style=\"word-wrap: break-word;\" >\n <div data-turbo-body class=\"logged-out env-production page-responsive\" style=\"word-wrap: break-word;\" >\n <div id=\"__primerPortalRoot__\" role=\"region\" style=\"z-index: 1000; position: absolute; width: 100%;\" data-turbo-permanent></div>\n \n\n <div class=\"position-relative header-wrapper js-header-wrapper \">\n <a href=\"#start-of-content\" data-skip-target-assigned=\"false\" class=\"px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content\">Skip to content</a>\n\n <span data-view-component=\"true\" class=\"progress-pjax-loader Progress position-fixed width-full\">\n <span style=\"width: 0%;\" data-view-component=\"true\" class=\"Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis\"></span>\n</span> \n \n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n\n<react-partial\n partial-name=\"keyboard-shortcuts-dialog\"\n data-ssr=\"false\"\n data-attempted-ssr=\"false\"\n data-react-profiling=\"true\"\n>\n \n <script type=\"application/json\" data-target=\"react-partial.embeddedData\">{\"props\":{\"docsUrl\":\"https://docs.github.com/get-started/accessibility/keyboard-shortcuts\"}}</script>\n <div data-target=\"react-partial.reactRoot\"></div>\n</react-partial>\n\n\n\n\n\n \n\n \n\n \n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/46752-4c55523fe83d3457.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/93308-bf887482583069d7.js\" defer=\"defer\"></script>\n<script crossorigin=\"anonymous\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/sessions-ef46f0030f2d06d6.js\" defer=\"defer\"></script>\n\n<style>\n /* Override primer focus outline color for marketing header dropdown links for better contrast */\n [data-color-mode=\"light\"] .HeaderMenu-dropdown-link:focus-visible,\n [data-color-mode=\"light\"] .HeaderMenu-trailing-link a:focus-visible {\n outline-color: var(--color-accent-fg);\n }\n</style>\n\n<header class=\"HeaderMktg header-logged-out js-details-container js-header Details f4 tmp-py-3\" role=\"banner\" data-is-top=\"true\" data-color-mode=auto data-light-theme=light data-dark-theme=dark>\n <h2 class=\"sr-only\">Navigation Menu</h2>\n\n <button type=\"button\" class=\"HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target\" aria-label=\"Toggle navigation\">\n <span class=\"d-none\">Toggle navigation</span>\n </button>\n\n <div class=\"d-flex flex-column flex-lg-row flex-items-center tmp-px-3 tmp-px-md-4 tmp-px-lg-5 height-full position-relative z-1\">\n <div class=\"d-flex flex-justify-between flex-items-center width-full width-lg-auto\">\n <div class=\"flex-1\">\n <button aria-label=\"Toggle navigation\" aria-expanded=\"false\" type=\"button\" data-view-component=\"true\" class=\"js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1\"> <span class=\"Button-content\">\n <span class=\"Button-label\"><div class=\"HeaderMenu-toggle-bar rounded my-1\"></div>\n <div class=\"HeaderMenu-toggle-bar rounded my-1\"></div>\n <div class=\"HeaderMenu-toggle-bar rounded my-1\"></div></span>\n </span>\n</button>\n </div>\n\n <a class=\"tmp-mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav\"\n href=\"/\"\n aria-label=\"Homepage\"\n data-analytics-event=\"{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}\">\n <svg height=\"32\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" version=\"1.1\" width=\"32\" data-view-component=\"true\" class=\"octicon octicon-mark-github\">\n <path d=\"M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z\"></path>\n</svg>\n </a>\n\n <div class=\"d-flex flex-1 flex-order-2 text-right d-lg-none gap-2 flex-justify-end\">\n <a\n href=\"/login?return_to=https%3A%2F%2Fgithub.com%2Ftauri-apps%2Ftauri%2Fblob%2Fdev%2Ftooling%2Fcli%2Fsrc%2Fmobile%2Fios%2Fproject.rs\"\n class=\"HeaderMenu-link HeaderMenu-button d-inline-flex f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav\"\n data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"ddf07a1e41b574cc8ef57b9d6fa8697d4c92c6391dce20227bf7e5b794599843\"\n data-analytics-event=\"{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}\"\n >\n Sign in\n </a>\n <div class=\"AppHeader-appearanceSettings\">\n <react-partial-anchor>\n <button data-target=\"react-partial-anchor.anchor\" id=\"icon-button-a558bf54-4bd7-44b9-aaf8-e3da137ada12\" aria-labelledby=\"tooltip-96dcbfcd-a7df-49e9-9fb3-2cf5893ce3e8\" type=\"button\" disabled=\"disabled\" data-view-component=\"true\" class=\"Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-sliders Button-visual\">\n <path d=\"M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z\"></path>\n</svg>\n</button><tool-tip id=\"tooltip-96dcbfcd-a7df-49e9-9fb3-2cf5893ce3e8\" for=\"icon-button-a558bf54-4bd7-44b9-aaf8-e3da137ada12\" popover=\"manual\" data-direction=\"s\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">Appearance settings</tool-tip>\n\n <template data-target=\"react-partial-anchor.template\">\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/appearance-settings.2fbde1012bed47de.module.css\" />\n\n<react-partial\n partial-name=\"appearance-settings\"\n data-ssr=\"false\"\n data-attempted-ssr=\"false\"\n data-react-profiling=\"true\"\n>\n \n <script type=\"application/json\" data-target=\"react-partial.embeddedData\">{\"props\":{}}</script>\n <div data-target=\"react-partial.reactRoot\"></div>\n</react-partial>\n\n\n </template>\n </react-partial-anchor>\n </div>\n\n </div>\n </div>\n\n\n <div class=\"HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0\">\n <div class=\"HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0\">\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/marketing-navigation.14cc8c51c839d6ba.module.css\" />\n\n<react-partial\n partial-name=\"marketing-navigation\"\n data-ssr=\"true\"\n data-attempted-ssr=\"true\"\n data-react-profiling=\"true\"\n>\n \n <script type=\"application/json\" data-target=\"react-partial.embeddedData\">{\"props\":{\"should_use_dotcom_links\":true}}</script>\n <div data-target=\"react-partial.reactRoot\"><nav class=\"MarketingNavigation-module__nav__W0KYY\" aria-label=\"Global\"><ul class=\"MarketingNavigation-module__list__tFbMb\"><li><div class=\"NavDropdown-module__container__l2YeI js-details-container js-header-menu-item\"><button type=\"button\" class=\"NavDropdown-module__button__PEHWX js-details-target\" aria-expanded=\"false\">Platform<svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavDropdown-module__buttonIcon__Tkl8_\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></button><div class=\"NavDropdown-module__dropdown__xm1jd\"><ul class=\"NavDropdown-module__list__zuCgG\"><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">AI CODE CREATION</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/features/copilot\" data-analytics-event=\"{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-copilot NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z\"></path><path d=\"M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Copilot</span><span class=\"NavLink-module__subtitle__X4gkW\">Write better code with AI</span></div></a></li><li><a href=\"https://github.com/features/spark\" data-analytics-event=\"{&quot;action&quot;:&quot;github_spark&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_spark_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-sparkle-fill NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M11.296 1.924c.24-.656 1.168-.656 1.408 0l.717 1.958a11.25 11.25 0 0 0 6.697 6.697l1.958.717c.657.24.657 1.168 0 1.408l-1.958.717a11.25 11.25 0 0 0-6.697 6.697l-.717 1.958c-.24.657-1.168.657-1.408 0l-.717-1.958a11.25 11.25 0 0 0-6.697-6.697l-1.958-.717c-.656-.24-.656-1.168 0-1.408l1.958-.717a11.25 11.25 0 0 0 6.697-6.697l.717-1.958Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Spark</span><span class=\"NavLink-module__subtitle__X4gkW\">Build and deploy intelligent apps</span></div></a></li><li><a href=\"https://github.com/features/models\" data-analytics-event=\"{&quot;action&quot;:&quot;github_models&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_models_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-ai-model NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M19.375 8.5a3.25 3.25 0 1 1-3.163 4h-3a3.252 3.252 0 0 1-4.443 2.509L7.214 17.76a3.25 3.25 0 1 1-1.342-.674l1.672-2.957A3.238 3.238 0 0 1 6.75 12c0-.907.371-1.727.97-2.316L6.117 6.846A3.253 3.253 0 0 1 1.875 3.75a3.25 3.25 0 1 1 5.526 2.32l1.603 2.836A3.25 3.25 0 0 1 13.093 11h3.119a3.252 3.252 0 0 1 3.163-2.5ZM10 10.25a1.75 1.75 0 1 0-.001 3.499A1.75 1.75 0 0 0 10 10.25ZM5.125 2a1.75 1.75 0 1 0 0 3.5 1.75 1.75 0 0 0 0-3.5Zm12.5 9.75a1.75 1.75 0 1 0 3.5 0 1.75 1.75 0 0 0-3.5 0Zm-14.25 8.5a1.75 1.75 0 1 0 3.501-.001 1.75 1.75 0 0 0-3.501.001Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Models</span><span class=\"NavLink-module__subtitle__X4gkW\">Manage and compare prompts</span></div></a></li><li><a href=\"https://github.com/mcp\" data-analytics-event=\"{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-mcp NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M9.795 1.694a4.287 4.287 0 0 1 6.061 0 4.28 4.28 0 0 1 1.181 3.819 4.282 4.282 0 0 1 3.819 1.181 4.287 4.287 0 0 1 0 6.061l-6.793 6.793a.249.249 0 0 0 0 .353l2.617 2.618a.75.75 0 1 1-1.061 1.061l-2.617-2.618a1.75 1.75 0 0 1 0-2.475l6.793-6.793a2.785 2.785 0 1 0-3.939-3.939l-5.9 5.9a.734.734 0 0 1-.249.165.749.749 0 0 1-.812-1.225l5.9-5.901a2.785 2.785 0 1 0-3.939-3.939L2.931 10.68A.75.75 0 1 1 1.87 9.619l7.925-7.925Z\"></path><path d=\"M12.42 4.069a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061L7.33 11.28a2.788 2.788 0 0 0 0 3.94 2.788 2.788 0 0 0 3.94 0l6.15-6.151a.752.752 0 0 1 1.061 0 .752.752 0 0 1 0 1.061l-6.151 6.15a4.285 4.285 0 1 1-6.06-6.06l6.15-6.151Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">MCP Registry<sup class=\"NavLink-module__label__bil7n\">New</sup></span><span class=\"NavLink-module__subtitle__X4gkW\">Integrate external tools</span></div></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">DEVELOPER WORKFLOWS</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/features/actions\" data-analytics-event=\"{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-workflow NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Actions</span><span class=\"NavLink-module__subtitle__X4gkW\">Automate any workflow</span></div></a></li><li><a href=\"https://github.com/features/codespaces\" data-analytics-event=\"{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-codespaces NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z\"></path><path d=\"M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Codespaces</span><span class=\"NavLink-module__subtitle__X4gkW\">Instant dev environments</span></div></a></li><li><a href=\"https://github.com/features/issues\" data-analytics-event=\"{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-issue-opened NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Issues</span><span class=\"NavLink-module__subtitle__X4gkW\">Plan and track work</span></div></a></li><li><a href=\"https://github.com/features/code-review\" data-analytics-event=\"{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-code NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06Zm-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Code Review</span><span class=\"NavLink-module__subtitle__X4gkW\">Manage code changes</span></div></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">APPLICATION SECURITY</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/security/advanced-security\" data-analytics-event=\"{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-shield-check NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z\"></path><path d=\"m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Advanced Security</span><span class=\"NavLink-module__subtitle__X4gkW\">Find and fix vulnerabilities</span></div></a></li><li><a href=\"https://github.com/security/advanced-security/code-security\" data-analytics-event=\"{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-code-square NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z\"></path><path d=\"M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Code security</span><span class=\"NavLink-module__subtitle__X4gkW\">Secure your code as you build</span></div></a></li><li><a href=\"https://github.com/security/advanced-security/secret-protection\" data-analytics-event=\"{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-lock NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6 9V7.25C6 3.845 8.503 1 12 1s6 2.845 6 6.25V9h.5a2.5 2.5 0 0 1 2.5 2.5v8a2.5 2.5 0 0 1-2.5 2.5h-13A2.5 2.5 0 0 1 3 19.5v-8A2.5 2.5 0 0 1 5.5 9Zm-1.5 2.5v8a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1Zm3-4.25V9h9V7.25c0-2.67-1.922-4.75-4.5-4.75-2.578 0-4.5 2.08-4.5 4.75Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Secret protection</span><span class=\"NavLink-module__subtitle__X4gkW\">Stop leaks before they start</span></div></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN\"><span class=\"NavGroup-module__title__Wzxz2\">EXPLORE</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/why-github\" data-analytics-event=\"{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Why GitHub</span></a></li><li><a href=\"https://docs.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Documentation</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://github.blog\" data-analytics-event=\"{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Blog</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://github.blog/changelog\" data-analytics-event=\"{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Changelog</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://github.com/marketplace\" data-analytics-event=\"{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Marketplace</span></a></li></ul></div></li></ul><div class=\"NavDropdown-module__trailingLinkContainer__VgJGL\"><a href=\"https://github.com/features\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all features</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></div></div></div></li><li><div class=\"NavDropdown-module__container__l2YeI js-details-container js-header-menu-item\"><button type=\"button\" class=\"NavDropdown-module__button__PEHWX js-details-target\" aria-expanded=\"false\">Solutions<svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavDropdown-module__buttonIcon__Tkl8_\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></button><div class=\"NavDropdown-module__dropdown__xm1jd\"><ul class=\"NavDropdown-module__list__zuCgG\"><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">BY COMPANY SIZE</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/enterprise\" data-analytics-event=\"{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Enterprises</span></a></li><li><a href=\"https://github.com/team\" data-analytics-event=\"{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Small and medium teams</span></a></li><li><a href=\"https://github.com/enterprise/startups\" data-analytics-event=\"{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Startups</span></a></li><li><a href=\"https://github.com/solutions/industry/nonprofits\" data-analytics-event=\"{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Nonprofits</span></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">BY USE CASE</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/solutions/use-case/app-modernization\" data-analytics-event=\"{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">App Modernization</span></a></li><li><a href=\"https://github.com/solutions/use-case/devsecops\" data-analytics-event=\"{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">DevSecOps</span></a></li><li><a href=\"https://github.com/solutions/use-case/devops\" data-analytics-event=\"{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">DevOps</span></a></li><li><a href=\"https://github.com/solutions/use-case/ci-cd\" data-analytics-event=\"{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">CI/CD</span></a></li><li><a href=\"https://github.com/solutions/use-case\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all use cases</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">BY INDUSTRY</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/solutions/industry/healthcare\" data-analytics-event=\"{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Healthcare</span></a></li><li><a href=\"https://github.com/solutions/industry/financial-services\" data-analytics-event=\"{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Financial services</span></a></li><li><a href=\"https://github.com/solutions/industry/manufacturing\" data-analytics-event=\"{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Manufacturing</span></a></li><li><a href=\"https://github.com/solutions/industry/government\" data-analytics-event=\"{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Government</span></a></li><li><a href=\"https://github.com/solutions/industry\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all industries</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></li></ul></div></li></ul><div class=\"NavDropdown-module__trailingLinkContainer__VgJGL\"><a href=\"https://github.com/solutions\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all solutions</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></div></div></div></li><li><div class=\"NavDropdown-module__container__l2YeI js-details-container js-header-menu-item\"><button type=\"button\" class=\"NavDropdown-module__button__PEHWX js-details-target\" aria-expanded=\"false\">Resources<svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavDropdown-module__buttonIcon__Tkl8_\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></button><div class=\"NavDropdown-module__dropdown__xm1jd\"><ul class=\"NavDropdown-module__list__zuCgG\"><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">EXPLORE BY TOPIC</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/resources/articles?topic=ai\" data-analytics-event=\"{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">AI</span></a></li><li><a href=\"https://github.com/resources/articles?topic=software-development\" data-analytics-event=\"{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Software Development</span></a></li><li><a href=\"https://github.com/resources/articles?topic=devops\" data-analytics-event=\"{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">DevOps</span></a></li><li><a href=\"https://github.com/resources/articles?topic=security\" data-analytics-event=\"{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Security</span></a></li><li><a href=\"https://github.com/resources/articles\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all topics</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">EXPLORE BY TYPE</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/customer-stories\" data-analytics-event=\"{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Customer stories</span></a></li><li><a href=\"https://github.com/resources/events\" data-analytics-event=\"{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Events &amp; webinars</span></a></li><li><a href=\"https://github.com/resources/whitepapers\" data-analytics-event=\"{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Ebooks &amp; reports</span></a></li><li><a href=\"https://github.com/solutions/executive-insights\" data-analytics-event=\"{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Business insights</span></a></li><li><a href=\"https://skills.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">GitHub Skills</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">SUPPORT &amp; SERVICES</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://docs.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Documentation</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://support.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Customer support</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://github.com/orgs/community/discussions\" data-analytics-event=\"{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Community forum</span></a></li><li><a href=\"https://github.com/trust-center\" data-analytics-event=\"{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Trust center</span></a></li><li><a href=\"https://github.com/partners\" data-analytics-event=\"{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Partners</span></a></li></ul></div></li></ul><div class=\"NavDropdown-module__trailingLinkContainer__VgJGL\"><a href=\"https://github.com/resources\" data-analytics-event=\"{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">View all resources</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavLink-module__arrowIcon__amekg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></a></div></div></div></li><li><div class=\"NavDropdown-module__container__l2YeI js-details-container js-header-menu-item\"><button type=\"button\" class=\"NavDropdown-module__button__PEHWX js-details-target\" aria-expanded=\"false\">Open Source<svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavDropdown-module__buttonIcon__Tkl8_\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></button><div class=\"NavDropdown-module__dropdown__xm1jd\"><ul class=\"NavDropdown-module__list__zuCgG\"><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">COMMUNITY</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/sponsors\" data-analytics-event=\"{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M16.004 1.25C18.311 1.25 20 3.128 20 5.75c0 2.292-1.23 4.464-3.295 6.485-.481.47-.98.909-1.482 1.31l.265 1.32 1.375 7.5a.75.75 0 0 1-.982.844l-3.512-1.207a.75.75 0 0 0-.488 0L8.37 23.209a.75.75 0 0 1-.982-.844l1.378-7.512.261-1.309c-.5-.4-1-.838-1.481-1.31C5.479 10.215 4.25 8.043 4.25 5.75c0-2.622 1.689-4.5 3.996-4.5 1.55 0 2.947.752 3.832 1.967l.047.067.047-.067a4.726 4.726 0 0 1 3.612-1.962l.22-.005ZM13.89 14.531c-.418.285-.828.542-1.218.77l-.18.103a.75.75 0 0 1-.734 0l-.071-.04-.46-.272c-.282-.173-.573-.36-.868-.562l-.121.605-1.145 6.239 2.3-.79a2.248 2.248 0 0 1 1.284-.054l.18.053 2.299.79-1.141-6.226-.125-.616ZM16.004 2.75c-1.464 0-2.731.983-3.159 2.459-.209.721-1.231.721-1.44 0-.428-1.476-1.695-2.459-3.16-2.459-1.44 0-2.495 1.173-2.495 3 0 1.811 1.039 3.647 2.844 5.412a19.624 19.624 0 0 0 3.734 2.84l-.019-.011-.184-.111.147-.088a19.81 19.81 0 0 0 3.015-2.278l.37-.352C17.46 9.397 18.5 7.561 18.5 5.75c0-1.827-1.055-3-2.496-3Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Sponsors</span><span class=\"NavLink-module__subtitle__X4gkW\">Fund open source developers</span></div></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">PROGRAMS</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://securitylab.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Security Lab</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://maintainers.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Maintainer Community</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li><li><a href=\"https://github.com/accelerator\" data-analytics-event=\"{&quot;action&quot;:&quot;accelerator&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;accelerator_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Accelerator</span></a></li><li><a href=\"https://archiveprogram.github.com\" data-analytics-event=\"{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\" target=\"_blank\" rel=\"noreferrer\"><span class=\"NavLink-module__title__Q7t0p\">Archive Program</span><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-link-external NavLink-module__externalIcon__eWIry\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z\"></path></svg></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">REPOSITORIES</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/topics\" data-analytics-event=\"{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Topics</span></a></li><li><a href=\"https://github.com/trending\" data-analytics-event=\"{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Trending</span></a></li><li><a href=\"https://github.com/collections\" data-analytics-event=\"{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><span class=\"NavLink-module__title__Q7t0p\">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class=\"NavDropdown-module__container__l2YeI js-details-container js-header-menu-item\"><button type=\"button\" class=\"NavDropdown-module__button__PEHWX js-details-target\" aria-expanded=\"false\">Enterprise<svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-chevron-right NavDropdown-module__buttonIcon__Tkl8_\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z\"></path></svg></button><div class=\"NavDropdown-module__dropdown__xm1jd\"><ul class=\"NavDropdown-module__list__zuCgG\"><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">ENTERPRISE SOLUTIONS</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/enterprise\" data-analytics-event=\"{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-stack NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z\"></path><path d=\"M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z\"></path><path d=\"M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Enterprise platform</span><span class=\"NavLink-module__subtitle__X4gkW\">AI-powered developer platform</span></div></a></li></ul></div></li><li><div class=\"NavGroup-module__group__W8SqJ\"><span class=\"NavGroup-module__title__Wzxz2\">AVAILABLE ADD-ONS</span><ul class=\"NavGroup-module__list__UCOFy\"><li><a href=\"https://github.com/security/advanced-security\" data-analytics-event=\"{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-shield-check NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z\"></path><path d=\"m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">GitHub Advanced Security</span><span class=\"NavLink-module__subtitle__X4gkW\">Enterprise-grade security features</span></div></a></li><li><a href=\"https://github.com/features/copilot/copilot-business\" data-analytics-event=\"{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-copilot NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z\"></path><path d=\"M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Copilot for Business</span><span class=\"NavLink-module__subtitle__X4gkW\">Enterprise-grade AI features</span></div></a></li><li><a href=\"https://github.com/premium-support\" data-analytics-event=\"{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}\" class=\"NavLink-module__link__EG3d4\"><div class=\"NavLink-module__text__XvpLQ\"><svg aria-hidden=\"true\" focusable=\"false\" class=\"octicon octicon-comment-discussion NavLink-module__icon__ltGNM\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" display=\"inline-block\" overflow=\"visible\" style=\"vertical-align:text-bottom\"><path d=\"M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z\"></path><path d=\"M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z\"></path></svg><span class=\"NavLink-module__title__Q7t0p\">Premium Support</span><span class=\"NavLink-module__subtitle__X4gkW\">Enterprise-grade 24/7 support</span></div></a></li></ul></div></li></ul></div></div></li><li><a href=\"https://github.com/pricing\" data-analytics-event=\"{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}\" class=\"NavLink-module__link__EG3d4 MarketingNavigation-module__navLink__hUomM\"><span class=\"NavLink-module__title__Q7t0p\">Pricing</span></a></li></ul></nav><script type=\"application/json\" id=\"__PRIMER_DATA__R_0___\">{\"resolvedServerColorMode\":\"day\"}</script></div>\n</react-partial>\n\n\n\n <div class=\"d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center tmp-mt-3 tmp-mt-lg-0 text-lg-left tmp-ml-lg-3\">\n \n\n\n<qbsearch-input class=\"search-input\" data-scope=\"repo:tauri-apps/tauri\" data-custom-scopes-path=\"/search/custom_scopes\" data-delete-custom-scopes-csrf=\"Fbaupaa86GIBH1pEt2sj512ZmpR0dpTiyj4O7HvJDxQ4wsf6oK6Uts8DSQawyc0MCnymmxXjoMAR3xx2NIBMFA\" data-max-custom-scopes=\"10\" data-header-redesign-enabled=\"false\" data-initial-value=\"\" data-blackbird-suggestions-path=\"/search/suggestions\" data-jump-to-suggestions-path=\"/_graphql/GetSuggestedNavigationDestinations\" data-current-repository=\"tauri-apps/tauri\" data-current-org=\"tauri-apps\" data-current-owner=\"\" data-logged-in=\"false\" data-copilot-chat-enabled=\"false\" data-nl-search-enabled=\"false\" data-retain-scroll-position=\"true\">\n <div\n class=\"search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center tmp-mr-4 rounded\"\n data-action=\"click:qbsearch-input#searchInputContainerClicked\"\n >\n <button\n type=\"button\"\n class=\"header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none\"\n data-target=\"qbsearch-input.inputButton\"\n aria-label=\"Search or jump to…\"\n aria-haspopup=\"dialog\"\n placeholder=\"Search or jump to...\"\n data-hotkey=s,/\n autocapitalize=\"off\"\n data-analytics-event=\"{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}\"\n data-action=\"click:qbsearch-input#handleExpand\"\n >\n <div class=\"mr-2 color-fg-muted\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-search\">\n <path d=\"M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z\"></path>\n</svg>\n </div>\n <span class=\"flex-1\" data-target=\"qbsearch-input.inputButtonText\">Search or jump to...</span>\n <div class=\"d-flex\" data-target=\"qbsearch-input.hotkeyIndicator\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"20\" aria-hidden=\"true\" class=\"mr-1\"><path fill=\"none\" stroke=\"#979A9C\" opacity=\".4\" d=\"M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z\"></path><path fill=\"#979A9C\" d=\"M11.8 6L8 15.1h-.9L10.8 6h1z\"></path></svg>\n </div>\n </button>\n\n <input type=\"hidden\" name=\"type\" class=\"js-site-search-type-field\">\n\n \n<div class=\"Overlay--hidden \" data-modal-dialog-overlay>\n <modal-dialog data-action=\"close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose\" data-target=\"qbsearch-input.searchSuggestionsDialog\" role=\"dialog\" id=\"search-suggestions-dialog\" aria-modal=\"true\" aria-labelledby=\"search-suggestions-dialog-header\" data-view-component=\"true\" class=\"Overlay Overlay--width-large Overlay--height-auto\">\n <h1 id=\"search-suggestions-dialog-header\" class=\"sr-only\">Search code, repositories, users, issues, pull requests...</h1>\n <div class=\"Overlay-body Overlay-body--paddingNone\">\n \n <div data-view-component=\"true\"> <div class=\"search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container\"\n style=\"border-radius: 12px;\"\n data-target=\"qbsearch-input.queryBuilderContainer\"\n hidden\n >\n <!-- '\"` --><!-- </textarea></xmp> --></option></form><form id=\"query-builder-test-form\" action=\"\" accept-charset=\"UTF-8\" method=\"get\">\n <query-builder data-target=\"qbsearch-input.queryBuilder\" id=\"query-builder-query-builder-test\" data-filter-key=\":\" data-view-component=\"true\" class=\"QueryBuilder search-query-builder\">\n <div class=\"FormControl FormControl--fullWidth\">\n <label id=\"query-builder-test-label\" for=\"query-builder-test\" class=\"FormControl-label sr-only\">\n Search\n </label>\n <div\n class=\"QueryBuilder-StyledInput width-fit \"\n data-target=\"query-builder.styledInput\"\n >\n <span id=\"query-builder-test-leadingvisual-wrap\" class=\"FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-search FormControl-input-leadingVisual\">\n <path d=\"M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z\"></path>\n</svg>\n </span>\n <div data-target=\"query-builder.styledInputContainer\" class=\"QueryBuilder-StyledInputContainer\">\n <div\n aria-hidden=\"true\"\n class=\"QueryBuilder-StyledInputContent\"\n data-target=\"query-builder.styledInputContent\"\n ></div>\n <div class=\"QueryBuilder-InputWrapper\">\n <div aria-hidden=\"true\" class=\"QueryBuilder-Sizer\" data-target=\"query-builder.sizer\"></div>\n <input id=\"query-builder-test\" name=\"query-builder-test\" value=\"\" autocomplete=\"off\" type=\"text\" role=\"combobox\" spellcheck=\"false\" aria-expanded=\"false\" aria-describedby=\"validation-8efabf83-7012-4df5-9fac-7c1c88a75d03\" data-target=\"query-builder.input\" data-action=\"\n input:query-builder#inputChange\n blur:query-builder#inputBlur\n keydown:query-builder#inputKeydown\n focus:query-builder#inputFocus\n \" data-view-component=\"true\" class=\"FormControl-input QueryBuilder-Input FormControl-medium\" />\n </div>\n </div>\n <span data-target=\"query-builder.clearButton\" hidden>\n <span class=\"sr-only\" id=\"query-builder-test-clear\">Clear</span>\n <button role=\"button\" id=\"query-builder-test-clear-button\" aria-labelledby=\"query-builder-test-clear query-builder-test-label\" data-action=\"\n click:query-builder#clear\n focus:query-builder#clearButtonFocus\n blur:query-builder#clearButtonBlur\n \" variant=\"small\" type=\"button\" data-view-component=\"true\" class=\"Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x-circle-fill Button-visual\">\n <path d=\"M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z\"></path>\n</svg>\n</button>\n\n </span>\n </div>\n <template id=\"search-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-search\">\n <path d=\"M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z\"></path>\n</svg>\n</template>\n\n<template id=\"code-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-code\">\n <path d=\"m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n</template>\n\n<template id=\"file-code-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-file-code\">\n <path d=\"M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z\"></path>\n</svg>\n</template>\n\n<template id=\"history-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-history\">\n <path d=\"m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z\"></path>\n</svg>\n</template>\n\n<template id=\"repo-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n</template>\n\n<template id=\"bookmark-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-bookmark\">\n <path d=\"M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"plus-circle-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-plus-circle\">\n <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z\"></path>\n</svg>\n</template>\n\n<template id=\"circle-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-dot-fill\">\n <path d=\"M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z\"></path>\n</svg>\n</template>\n\n<template id=\"trash-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-trash\">\n <path d=\"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"team-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-people\">\n <path d=\"M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z\"></path>\n</svg>\n</template>\n\n<template id=\"project-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-project\">\n <path d=\"M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z\"></path>\n</svg>\n</template>\n\n<template id=\"pencil-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-pencil\">\n <path d=\"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z\"></path>\n</svg>\n</template>\n\n<template id=\"copilot-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-copilot\">\n <path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"></path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"></path>\n</svg>\n</template>\n\n<template id=\"copilot-error-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-copilot-error\">\n <path d=\"M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z\"></path>\n</svg>\n</template>\n\n<template id=\"workflow-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-workflow\">\n <path d=\"M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"book-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-book\">\n <path d=\"M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"code-review-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-code-review\">\n <path d=\"M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n</template>\n\n<template id=\"codespaces-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-codespaces\">\n <path d=\"M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z\"></path><path d=\"M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z\"></path>\n</svg>\n</template>\n\n<template id=\"comment-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-comment\">\n <path d=\"M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"comment-discussion-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-comment-discussion\">\n <path d=\"M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z\"></path>\n</svg>\n</template>\n\n<template id=\"organization-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-organization\">\n <path d=\"M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z\"></path>\n</svg>\n</template>\n\n<template id=\"rocket-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-rocket\">\n <path d=\"M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path>\n</svg>\n</template>\n\n<template id=\"shield-check-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-shield-check\">\n <path d=\"m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path>\n</svg>\n</template>\n\n<template id=\"heart-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-heart\">\n <path d=\"m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z\"></path>\n</svg>\n</template>\n\n<template id=\"server-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-server\">\n <path d=\"M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z\"></path>\n</svg>\n</template>\n\n<template id=\"globe-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-globe\">\n <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z\"></path>\n</svg>\n</template>\n\n<template id=\"issue-opened-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-issue-opened\">\n <path d=\"M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z\"></path>\n</svg>\n</template>\n\n<template id=\"device-mobile-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-device-mobile\">\n <path d=\"M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z\"></path>\n</svg>\n</template>\n\n<template id=\"package-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-package\">\n <path d=\"m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z\"></path>\n</svg>\n</template>\n\n<template id=\"credit-card-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-credit-card\">\n <path d=\"M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z\"></path><path d=\"M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z\"></path>\n</svg>\n</template>\n\n<template id=\"play-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-play\">\n <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path>\n</svg>\n</template>\n\n<template id=\"gift-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-gift\">\n <path d=\"M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z\"></path>\n</svg>\n</template>\n\n<template id=\"code-square-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-code-square\">\n <path d=\"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path>\n</svg>\n</template>\n\n<template id=\"device-desktop-icon\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-device-desktop\">\n <path d=\"M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z\"></path>\n</svg>\n</template>\n\n <div class=\"position-relative\">\n <ul\n role=\"listbox\"\n class=\"ActionListWrap QueryBuilder-ListWrap\"\n aria-label=\"Suggestions\"\n data-action=\"\n combobox-commit:query-builder#comboboxCommit\n mousedown:query-builder#resultsMousedown\n \"\n data-target=\"query-builder.resultsList\"\n data-persist-list=false\n id=\"query-builder-test-results\"\n tabindex=\"-1\"\n ></ul>\n\n </div>\n <div class=\"FormControl-inlineValidation\" id=\"validation-8efabf83-7012-4df5-9fac-7c1c88a75d03\" hidden=\"hidden\">\n <span class=\"FormControl-inlineValidation--visual\">\n <svg aria-hidden=\"true\" height=\"12\" viewBox=\"0 0 12 12\" version=\"1.1\" width=\"12\" data-view-component=\"true\" class=\"octicon octicon-alert-fill\">\n <path d=\"M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\"></path>\n</svg>\n </span>\n <span></span>\n</div> </div>\n <div data-target=\"query-builder.screenReaderFeedback\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\"></div>\n</query-builder></form>\n <div class=\"d-flex flex-row color-fg-muted tmp-px-3 text-small color-bg-default search-feedback-prompt\">\n <a target=\"_blank\" href=\"https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax\" data-view-component=\"true\" class=\"Link color-fg-accent text-normal ml-2\">Search syntax tips</a> <div class=\"d-flex flex-1\"></div>\n </div>\n </div>\n</div>\n\n </div>\n</modal-dialog></div>\n </div>\n <div data-action=\"click:qbsearch-input#retract\" class=\"dark-backdrop position-fixed\" hidden data-target=\"qbsearch-input.darkBackdrop\"></div>\n <div class=\"color-fg-default\">\n \n<dialog-helper>\n <dialog data-target=\"qbsearch-input.feedbackDialog\" data-action=\"close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose\" id=\"feedback-dialog\" aria-modal=\"true\" aria-labelledby=\"feedback-dialog-title\" aria-describedby=\"feedback-dialog-description\" data-view-component=\"true\" class=\"Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll\">\n <div data-view-component=\"true\" class=\"Overlay-header\">\n <div class=\"Overlay-headerContentWrap\">\n <div class=\"Overlay-titleWrap\">\n <h1 class=\"Overlay-title \" id=\"feedback-dialog-title\">\n Provide feedback\n </h1>\n \n </div>\n <div class=\"Overlay-actionWrap\">\n <button data-close-dialog-id=\"feedback-dialog\" aria-label=\"Close\" aria-label=\"Close\" type=\"button\" data-view-component=\"true\" class=\"close-button Overlay-closeButton\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg></button>\n </div>\n </div>\n \n</div>\n <scrollable-region data-labelled-by=\"feedback-dialog-title\">\n <div data-view-component=\"true\" class=\"Overlay-body\"> <!-- '\"` --><!-- </textarea></xmp> --></option></form><form id=\"code-search-feedback-form\" data-turbo=\"false\" action=\"/search/feedback\" accept-charset=\"UTF-8\" method=\"post\"><input type=\"hidden\" data-csrf=\"true\" name=\"authenticity_token\" value=\"Ik1s+Ak7Ozw+7ra5niH/Lgu60J1QsUnE80AT8UAGJRKUaW8uSpDW6V2qawsgi0f1ns9rVKnoUZGPnvyUtFmwLw==\" />\n <p>We read every piece of feedback, and take your input very seriously.</p>\n <textarea name=\"feedback\" class=\"form-control width-full mb-2\" style=\"height: 120px\" id=\"feedback\"></textarea>\n <input name=\"include_email\" id=\"include_email\" aria-label=\"Include my email address so I can be contacted\" class=\"form-control mr-2\" type=\"checkbox\">\n <label for=\"include_email\" style=\"font-weight: normal\">Include my email address so I can be contacted</label>\n</form></div>\n </scrollable-region>\n <div data-view-component=\"true\" class=\"Overlay-footer Overlay-footer--alignEnd\"> <button data-close-dialog-id=\"feedback-dialog\" type=\"button\" data-view-component=\"true\" class=\"btn\"> Cancel\n</button>\n <button form=\"code-search-feedback-form\" data-action=\"click:qbsearch-input#submitFeedback\" type=\"submit\" data-view-component=\"true\" class=\"btn-primary btn\"> Submit feedback\n</button>\n</div>\n</dialog></dialog-helper>\n\n <custom-scopes data-target=\"qbsearch-input.customScopesManager\">\n \n<dialog-helper>\n <dialog data-target=\"custom-scopes.customScopesModalDialog\" data-action=\"close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose\" id=\"custom-scopes-dialog\" aria-modal=\"true\" aria-labelledby=\"custom-scopes-dialog-title\" aria-describedby=\"custom-scopes-dialog-description\" data-view-component=\"true\" class=\"Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll\">\n <div data-view-component=\"true\" class=\"Overlay-header Overlay-header--divided\">\n <div class=\"Overlay-headerContentWrap\">\n <div class=\"Overlay-titleWrap\">\n <h1 class=\"Overlay-title \" id=\"custom-scopes-dialog-title\">\n Saved searches\n </h1>\n <h2 id=\"custom-scopes-dialog-description\" class=\"Overlay-description\">Use saved searches to filter your results more quickly</h2>\n </div>\n <div class=\"Overlay-actionWrap\">\n <button data-close-dialog-id=\"custom-scopes-dialog\" aria-label=\"Close\" aria-label=\"Close\" type=\"button\" data-view-component=\"true\" class=\"close-button Overlay-closeButton\"><svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg></button>\n </div>\n </div>\n \n</div>\n <scrollable-region data-labelled-by=\"custom-scopes-dialog-title\">\n <div data-view-component=\"true\" class=\"Overlay-body\"> <div data-target=\"custom-scopes.customScopesModalDialogFlash\"></div>\n\n <div hidden class=\"create-custom-scope-form\" data-target=\"custom-scopes.createCustomScopeForm\">\n <!-- '\"` --><!-- </textarea></xmp> --></option></form><form id=\"custom-scopes-dialog-form\" data-turbo=\"false\" action=\"/search/custom_scopes\" accept-charset=\"UTF-8\" method=\"post\"><input type=\"hidden\" data-csrf=\"true\" name=\"authenticity_token\" value=\"CmBPbkhlSYJYm9PfXakaG+yfPdzUKGlyBV08S8HIQsrnfrBw9U+2dJRVuN7QM3xX2AINSh0i6sD2ZMbGzssPOg==\" />\n <div data-target=\"custom-scopes.customScopesModalDialogFlash\"></div>\n\n <input type=\"hidden\" id=\"custom_scope_id\" name=\"custom_scope_id\" data-target=\"custom-scopes.customScopesIdField\">\n\n <div class=\"form-group\">\n <label for=\"custom_scope_name\">Name</label>\n <auto-check src=\"/search/custom_scopes/check_name\" required>\n <input\n type=\"text\"\n name=\"custom_scope_name\"\n id=\"custom_scope_name\"\n data-target=\"custom-scopes.customScopesNameField\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"github-ruby\"\n required\n maxlength=\"50\">\n <input type=\"hidden\" data-csrf=\"true\" value=\"uqMn5ujr25IxrMa6Q0BovyoKk0ViyS7OwEOfttaEL4celUydw8l9zFg0LjLmycs7m9Z4IUv4Y/bcTLcBcCTlNw==\" />\n </auto-check>\n </div>\n\n <div class=\"form-group\">\n <label for=\"custom_scope_query\">Query</label>\n <input\n type=\"text\"\n name=\"custom_scope_query\"\n id=\"custom_scope_query\"\n data-target=\"custom-scopes.customScopesQueryField\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"(repo:mona/a OR repo:mona/b) AND lang:python\"\n required\n maxlength=\"500\">\n </div>\n\n <p class=\"text-small color-fg-muted\">\n To see all available qualifiers, see our <a class=\"Link--inTextBlock\" href=\"https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax\">documentation</a>.\n </p>\n</form> </div>\n\n <div data-target=\"custom-scopes.manageCustomScopesForm\">\n <div data-target=\"custom-scopes.list\"></div>\n </div>\n\n</div>\n </scrollable-region>\n <div data-view-component=\"true\" class=\"Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided\"> <button data-action=\"click:custom-scopes#customScopesCancel\" type=\"button\" data-view-component=\"true\" class=\"btn\"> Cancel\n</button>\n <button form=\"custom-scopes-dialog-form\" data-action=\"click:custom-scopes#customScopesSubmit\" data-target=\"custom-scopes.customScopesSubmitButton\" type=\"submit\" data-view-component=\"true\" class=\"btn-primary btn\"> Create saved search\n</button>\n</div>\n</dialog></dialog-helper>\n </custom-scopes>\n </div>\n</qbsearch-input>\n\n\n <div class=\"position-relative HeaderMenu-link-wrap d-lg-inline-block\">\n <a\n href=\"/login?return_to=https%3A%2F%2Fgithub.com%2Ftauri-apps%2Ftauri%2Fblob%2Fdev%2Ftooling%2Fcli%2Fsrc%2Fmobile%2Fios%2Fproject.rs\"\n class=\"HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded px-2 py-1\"\n style=\"margin-left: 12px;\"\n data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"ddf07a1e41b574cc8ef57b9d6fa8697d4c92c6391dce20227bf7e5b794599843\"\n data-analytics-event=\"{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}\"\n >\n Sign in\n </a>\n <div style=\"right: -30%; background-color: transparent; border: none\" data-view-component=\"true\" class=\"auth-form-body Popover position-absolute d-none d-sm-none d-md-none d-lg-block\">\n <div style=\"width: 300px\" data-view-component=\"true\" class=\"Popover-message Box Popover-message--top-right color-fg-default p-4 mt-2 mx-auto text-left\">\n <h4 data-view-component=\"true\" class=\"color-fg-default mb-2\"> Sign in to GitHub\n</h4>\n \n<!-- '\"` --><!-- </textarea></xmp> --></option></form><form data-turbo=\"false\" action=\"/session\" accept-charset=\"UTF-8\" method=\"post\"><input type=\"hidden\" data-csrf=\"true\" name=\"authenticity_token\" value=\"r7v7tyUAajEtOzQfQJu6sc9gzM2E0GzmN836Z5KTdC3xTWjTfAm/OzW4pzEUXE3Oi0aFhOE1t79OUZngoMUqMA==\" /> <input type=\"hidden\" name=\"add_account\" id=\"add_account\" autocomplete=\"off\" class=\"form-control\" />\n\n <label for=\"login_field\">\n Username or email address\n </label>\n <input type=\"text\" name=\"login\" id=\"login_field\" class=\"form-control input-block js-login-field\" autocapitalize=\"off\" autocorrect=\"off\" autocomplete=\"username\" autofocus=\"autofocus\" required=\"required\" />\n\n <div class=\"position-relative\">\n <label for=\"password\">\n Password\n </label>\n <input type=\"password\" name=\"password\" id=\"password\" class=\"form-control form-control input-block js-password-field\" autocomplete=\"current-password\" required=\"required\" />\n <a class=\"label-link position-absolute top-0 right-0\" id=\"forgot-password\" href=\"/password_reset\">Forgot password?</a>\n \n<input type=\"hidden\" name=\"webauthn-conditional\" value=\"undefined\">\n<input type=\"hidden\" class=\"js-support\" name=\"javascript-support\" value=\"unknown\">\n<input type=\"hidden\" class=\"js-webauthn-support\" name=\"webauthn-support\" value=\"unknown\">\n<input type=\"hidden\" class=\"js-webauthn-iuvpaa-support\" name=\"webauthn-iuvpaa-support\" value=\"unknown\">\n<input type=\"hidden\" name=\"return_to\" id=\"return_to\" value=\"https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs\" autocomplete=\"off\" class=\"form-control\" />\n<input type=\"hidden\" name=\"allow_signup\" id=\"allow_signup\" autocomplete=\"off\" class=\"form-control\" />\n<input type=\"hidden\" name=\"client_id\" id=\"client_id\" autocomplete=\"off\" class=\"form-control\" />\n<input type=\"hidden\" name=\"integration\" id=\"integration\" autocomplete=\"off\" class=\"form-control\" />\n<input class=\"form-control\" type=\"text\" name=\"required_field_1f96\" hidden=\"hidden\" />\n<input class=\"form-control\" type=\"hidden\" name=\"timestamp\" value=\"1772362419938\" />\n<input class=\"form-control\" type=\"hidden\" name=\"timestamp_secret\" value=\"c3ff785808f0113598724f89e2d5408ff171cf32147caa7095fb1f2ae17792f3\" />\n\n\n <input type=\"submit\" name=\"commit\" value=\"Sign in\" class=\"btn btn-primary btn-block js-sign-in-button\" data-disable-with=\"Signing in…\" data-signin-label=\"Sign in\" data-sso-label=\"Sign in with your identity provider\" development=\"false\" disable-emu-sso=\"false\" />\n </div>\n</form> <webauthn-status class=\"js-webauthn-login-emu-control\">\n <div data-target=\"webauthn-status.partial\" class=\"d-flex flex-justify-between flex-column tmp-mt-3 mb-0\" hidden>\n <a href=\"/login?return_to=https%3A%2F%2Fgithub.com%2Ftauri-apps%2Ftauri%2Fblob%2Fdev%2Ftooling%2Fcli%2Fsrc%2Fmobile%2Fios%2Fproject.rs\" data-analytics-event=\"{&quot;category&quot;:&quot;passkey_404_login&quot;,&quot;action&quot;:&quot;clicked&quot;,&quot;label&quot;:null}\" data-view-component=\"true\" class=\"Button--link Button--medium Button\"> <span class=\"Button-content\">\n <span class=\"Button-label\">or continue with other methods</span>\n </span>\n</a>\n </div>\n </webauthn-status>\n\n\n</div></div> </div>\n\n <a href=\"/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=tauri-apps%2Ftauri\"\n class=\"HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1\"\n data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"ddf07a1e41b574cc8ef57b9d6fa8697d4c92c6391dce20227bf7e5b794599843\"\n data-analytics-event=\"{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show;ref_cta:Sign up;ref_loc:header logged out&quot;}\"\n >\n Sign up\n </a>\n\n <div class=\"AppHeader-appearanceSettings\">\n <react-partial-anchor>\n <button data-target=\"react-partial-anchor.anchor\" id=\"icon-button-f9865121-0ea1-44d7-9567-439df1216dbd\" aria-labelledby=\"tooltip-b20ff87b-b836-422d-bc3e-b677db0c9e9d\" type=\"button\" disabled=\"disabled\" data-view-component=\"true\" class=\"Button Button--iconOnly Button--invisible Button--medium AppHeader-button HeaderMenu-link border cursor-wait\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-sliders Button-visual\">\n <path d=\"M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z\"></path>\n</svg>\n</button><tool-tip id=\"tooltip-b20ff87b-b836-422d-bc3e-b677db0c9e9d\" for=\"icon-button-f9865121-0ea1-44d7-9567-439df1216dbd\" popover=\"manual\" data-direction=\"s\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">Appearance settings</tool-tip>\n\n <template data-target=\"react-partial-anchor.template\">\n <link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/primer-react-css.472b5991857bf128.module.css\" />\n<link crossorigin=\"anonymous\" media=\"all\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/appearance-settings.2fbde1012bed47de.module.css\" />\n\n<react-partial\n partial-name=\"appearance-settings\"\n data-ssr=\"false\"\n data-attempted-ssr=\"false\"\n data-react-profiling=\"true\"\n>\n \n <script type=\"application/json\" data-target=\"react-partial.embeddedData\">{\"props\":{}}</script>\n <div data-target=\"react-partial.reactRoot\"></div>\n</react-partial>\n\n\n </template>\n </react-partial-anchor>\n </div>\n\n <button type=\"button\" class=\"sr-only js-header-menu-focus-trap d-block d-lg-none\">Resetting focus</button>\n </div>\n </div>\n </div>\n </div>\n</header>\n\n <div hidden=\"hidden\" data-view-component=\"true\" class=\"js-stale-session-flash stale-session-flash flash flash-warn flash-full\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path>\n</svg>\n <span class=\"js-stale-session-flash-signed-in\" hidden>You signed in with another tab or window. <a class=\"Link--inTextBlock\" href=\"\">Reload</a> to refresh your session.</span>\n <span class=\"js-stale-session-flash-signed-out\" hidden>You signed out in another tab or window. <a class=\"Link--inTextBlock\" href=\"\">Reload</a> to refresh your session.</span>\n <span class=\"js-stale-session-flash-switched\" hidden>You switched accounts on another tab or window. <a class=\"Link--inTextBlock\" href=\"\">Reload</a> to refresh your session.</span>\n\n <button id=\"icon-button-80e09675-3491-47c1-a7d1-0506576cec21\" aria-labelledby=\"tooltip-deae4dd6-65fd-46ef-9714-13d64d54b883\" type=\"button\" data-view-component=\"true\" class=\"Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x Button-visual\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n</button><tool-tip id=\"tooltip-deae4dd6-65fd-46ef-9714-13d64d54b883\" for=\"icon-button-80e09675-3491-47c1-a7d1-0506576cec21\" popover=\"manual\" data-direction=\"s\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">Dismiss alert</tool-tip>\n\n\n \n</div>\n </div>\n\n <div id=\"start-of-content\" class=\"show-on-focus\"></div>\n\n\n\n\n\n\n\n\n <div id=\"js-flash-container\" class=\"flash-container\" data-turbo-replace>\n\n\n\n\n <template class=\"js-flash-template\">\n \n<div class=\"flash flash-full {{ className }}\">\n <div >\n <button autofocus class=\"flash-close js-flash-close\" type=\"button\" aria-label=\"Dismiss this message\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n </button>\n <div aria-atomic=\"true\" role=\"alert\" class=\"js-flash-alert\">\n \n <div>{{ message }}</div>\n\n </div>\n </div>\n</div>\n </template>\n</div>\n\n\n \n\n\n\n\n\n\n <div\n class=\"application-main \"\n data-commit-hovercards-enabled\n data-discussion-hovercards-enabled\n data-issue-and-pr-hovercards-enabled\n data-project-hovercards-enabled\n >\n <div itemscope itemtype=\"http://schema.org/SoftwareSourceCode\" class=\"\">\n <main id=\"js-repo-pjax-container\" >\n \n \n \n\n \n\n\n\n\n\n\n \n\n <div id=\"repository-container-header\" class=\"tmp-pt-3 hide-full-screen\" style=\"background-color: var(--page-header-bgColor, var(--color-page-header-bg));\" data-turbo-replace>\n\n <div class=\"d-flex flex-nowrap flex-justify-end tmp-mb-3 tmp-px-3 tmp-px-lg-5\" style=\"gap: 1rem;\">\n\n <div class=\"flex-auto min-width-0 width-fit\">\n \n <div class=\" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo color-fg-muted mr-2\">\n <path d=\"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z\"></path>\n</svg>\n \n <span class=\"author flex-self-stretch\" itemprop=\"author\">\n <a class=\"url fn\" rel=\"author\" data-hovercard-type=\"organization\" data-hovercard-url=\"/orgs/tauri-apps/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"/tauri-apps\">\n tauri-apps\n</a> </span>\n <span class=\"mx-1 flex-self-stretch color-fg-muted\">/</span>\n <strong itemprop=\"name\" class=\"mr-2 flex-self-stretch\">\n <a data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" href=\"/tauri-apps/tauri\">tauri</a>\n </strong>\n\n <span></span><span class=\"Label Label--secondary v-align-middle mr-1\">Public</span>\n </div>\n\n\n </div>\n\n <div id=\"repository-details-container\" class=\"flex-shrink-0\" data-turbo-replace style=\"max-width: 70%;\">\n <ul class=\"pagehead-actions flex-shrink-0 d-none d-md-inline\" style=\"padding: 2px 0;\">\n \n <li>\n <include-fragment src=\"/tauri-apps/tauri/sponsor_button\" data-nonce=\"v2:bec0c7a3-3733-a357-774a-f5609869df85\" data-view-component=\"true\">\n \n <div data-show-on-forbidden-error hidden>\n <div class=\"Box\">\n <div class=\"blankslate-container\">\n <div data-view-component=\"true\" class=\"blankslate blankslate-spacious color-bg-default rounded-2\">\n \n\n <h3 data-view-component=\"true\" class=\"blankslate-heading\"> Uh oh!\n</h3>\n <p data-view-component=\"true\" class=\"blankslate-description\"> <p class=\"color-fg-muted my-2 mb-2 ws-normal\">There was an error while loading. <a class=\"Link--inTextBlock\" data-turbo=\"false\" href=\"\" aria-label=\"Please reload this page\">Please reload this page</a>.</p>\n</p>\n\n</div> </div>\n</div> </div>\n</include-fragment>\n </li>\n\n \n\n <li>\n <a href=\"/login?return_to=%2Ftauri-apps%2Ftauri\" rel=\"nofollow\" id=\"repository-details-watch-button\" data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"a67104f174d5c4560a31b9c786b52e8b41b7660491e622d67207404525174739\" aria-label=\"You must be signed in to change notification settings\" data-view-component=\"true\" class=\"btn-sm btn\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-bell mr-2\">\n <path d=\"M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z\"></path>\n</svg>Notifications\n</a> <tool-tip id=\"tooltip-b3d60dfd-cfdd-438c-979e-0bc7f4dbf44a\" for=\"repository-details-watch-button\" popover=\"manual\" data-direction=\"s\" data-type=\"description\" data-view-component=\"true\" class=\"sr-only position-absolute\">You must be signed in to change notification settings</tool-tip>\n\n </li>\n\n <li>\n <a icon=\"repo-forked\" id=\"fork-button\" href=\"/login?return_to=%2Ftauri-apps%2Ftauri\" rel=\"nofollow\" data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:196701619,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"9ffa88ebf0501e316e738c02c26ecd8171de37663ff16401c3373e4d39c9f31d\" data-view-component=\"true\" class=\"btn-sm btn\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-repo-forked mr-2\">\n <path d=\"M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z\"></path>\n</svg>Fork\n <span id=\"repo-network-counter\" data-pjax-replace=\"true\" data-turbo-replace=\"true\" title=\"3,413\" data-view-component=\"true\" class=\"Counter\">3.4k</span>\n</a>\n </li>\n\n <li>\n <div data-view-component=\"true\" class=\"BtnGroup d-flex\">\n <a href=\"/login?return_to=%2Ftauri-apps%2Ftauri\" rel=\"nofollow\" data-hydro-click=\"{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:196701619,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs&quot;,&quot;user_id&quot;:null}}\" data-hydro-click-hmac=\"51041d5ff02c24f11bde20bbca86fc2591448dcf3d37ab44adc9c1a320a5728a\" aria-label=\"You must be signed in to star a repository\" data-view-component=\"true\" class=\"tooltipped tooltipped-sw btn-sm btn\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-star v-align-text-bottom d-inline-block mr-2\">\n <path d=\"M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z\"></path>\n</svg><span data-view-component=\"true\" class=\"d-inline\">\n Star\n</span> <span id=\"repo-stars-counter-star\" aria-label=\"103448 users starred this repository\" data-singular-suffix=\"user starred this repository\" data-plural-suffix=\"users starred this repository\" data-turbo-replace=\"true\" title=\"103,448\" data-view-component=\"true\" class=\"Counter js-social-count\">103k</span>\n</a></div>\n </li>\n\n</ul>\n\n </div>\n </div>\n\n <div id=\"responsive-meta-container\" data-turbo-replace>\n</div>\n\n\n <nav data-pjax=\"#js-repo-pjax-container\" aria-label=\"Repository\" data-view-component=\"true\" class=\"js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5\">\n\n <ul data-view-component=\"true\" class=\"UnderlineNav-body list-style-none\">\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"code-tab\" href=\"/tauri-apps/tauri\" data-tab-item=\"i0code-tab\" data-selected-links=\"repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /tauri-apps/tauri\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g c\" data-react-nav=\"code-view\" data-react-nav-anchor=\"code-view-repo-link\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" aria-current=\"page\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-code UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n <span data-content=\"Code\">Code</span>\n <span id=\"code-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"Not available\" data-view-component=\"true\" class=\"Counter\"></span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"issues-tab\" href=\"/tauri-apps/tauri/issues\" data-tab-item=\"i1issues-tab\" data-selected-links=\"repo_issues repo_labels repo_milestones /tauri-apps/tauri/issues\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g i\" data-react-nav=\"issues-react\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z\"></path>\n</svg>\n <span data-content=\"Issues\">Issues</span>\n <span id=\"issues-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"1,254\" data-view-component=\"true\" class=\"Counter\">1.3k</span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"pull-requests-tab\" href=\"/tauri-apps/tauri/pulls\" data-tab-item=\"i2pull-requests-tab\" data-selected-links=\"repo_pulls checks /tauri-apps/tauri/pulls\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g p\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z\"></path>\n</svg>\n <span data-content=\"Pull requests\">Pull requests</span>\n <span id=\"pull-requests-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"122\" data-view-component=\"true\" class=\"Counter\">122</span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"discussions-tab\" href=\"/tauri-apps/tauri/discussions\" data-tab-item=\"i3discussions-tab\" data-selected-links=\"repo_discussions /tauri-apps/tauri/discussions\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g g\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Discussions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-comment-discussion UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z\"></path>\n</svg>\n <span data-content=\"Discussions\">Discussions</span>\n <span id=\"discussions-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"Not available\" data-view-component=\"true\" class=\"Counter\"></span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"actions-tab\" href=\"/tauri-apps/tauri/actions\" data-tab-item=\"i4actions-tab\" data-selected-links=\"repo_actions /tauri-apps/tauri/actions\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g a\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-play UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path>\n</svg>\n <span data-content=\"Actions\">Actions</span>\n <span id=\"actions-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"Not available\" data-view-component=\"true\" class=\"Counter\"></span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"projects-tab\" href=\"/tauri-apps/tauri/projects\" data-tab-item=\"i5projects-tab\" data-selected-links=\"repo_projects new_repo_project repo_project /tauri-apps/tauri/projects\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g b\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-table UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z\"></path>\n</svg>\n <span data-content=\"Projects\">Projects</span>\n <span id=\"projects-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"Not available\" data-view-component=\"true\" class=\"Counter\"></span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"security-tab\" href=\"/tauri-apps/tauri/security\" data-tab-item=\"i6security-tab\" data-selected-links=\"security overview alerts policy token_scanning code_scanning /tauri-apps/tauri/security\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-hotkey=\"g s\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path>\n</svg>\n <span data-content=\"Security\">Security</span>\n <span id=\"security-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"7\" data-view-component=\"true\" class=\"Counter\">7</span>\n\n\n \n</a></li>\n <li data-view-component=\"true\" class=\"d-inline-flex\">\n <a id=\"insights-tab\" href=\"/tauri-apps/tauri/pulse\" data-tab-item=\"i7insights-tab\" data-selected-links=\"repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /tauri-apps/tauri/pulse\" data-pjax=\"#repo-content-pjax-container\" data-turbo-frame=\"repo-content-turbo-frame\" data-analytics-event=\"{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}\" data-view-component=\"true\" class=\"UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item\">\n \n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline\">\n <path d=\"M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path>\n</svg>\n <span data-content=\"Insights\">Insights</span>\n <span id=\"insights-repo-tab-count\" data-pjax-replace=\"\" data-turbo-replace=\"\" title=\"Not available\" data-view-component=\"true\" class=\"Counter\"></span>\n\n\n \n</a></li>\n</ul>\n <div style=\"visibility:hidden;\" data-view-component=\"true\" class=\"UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0\"> <action-menu data-select-variant=\"none\" data-view-component=\"true\">\n <focus-group direction=\"vertical\" mnemonics retain>\n <button id=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-button\" popovertarget=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-overlay\" aria-controls=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-list\" aria-haspopup=\"true\" aria-labelledby=\"tooltip-8a0ae90d-3dc7-4505-8ac3-33ce84519a83\" type=\"button\" data-view-component=\"true\" class=\"Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item\"> <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-kebab-horizontal Button-visual\">\n <path d=\"M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path>\n</svg>\n</button><tool-tip id=\"tooltip-8a0ae90d-3dc7-4505-8ac3-33ce84519a83\" for=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-button\" popover=\"manual\" data-direction=\"s\" data-type=\"label\" data-view-component=\"true\" class=\"sr-only position-absolute\">Additional navigation options</tool-tip>\n\n\n<anchored-position data-target=\"action-menu.overlay\" id=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-overlay\" anchor=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-button\" align=\"start\" side=\"outside-bottom\" anchor-offset=\"normal\" popover=\"auto\" data-view-component=\"true\">\n <div data-view-component=\"true\" class=\"Overlay Overlay--size-auto\">\n \n <div data-view-component=\"true\" class=\"Overlay-body Overlay-body--paddingNone\"> <action-list>\n <div data-view-component=\"true\">\n <ul aria-labelledby=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-button\" id=\"action-menu-6e7f52b4-1790-4ebf-acf9-f0019d1ee2b3-list\" role=\"menu\" data-view-component=\"true\" class=\"ActionListWrap--inset ActionListWrap\">\n <li hidden=\"hidden\" data-menu-item=\"i0code-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-721eae88-25e0-457b-b7a0-fef4a7e7a9f8\" href=\"/tauri-apps/tauri\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-code\">\n <path d=\"m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Code\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i1issues-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-6c62c9eb-75ec-47cd-be55-c46f3b81855a\" href=\"/tauri-apps/tauri/issues\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-issue-opened\">\n <path d=\"M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Issues\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i2pull-requests-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-7ea6118b-402c-4ff6-a180-aa8625bff5a3\" href=\"/tauri-apps/tauri/pulls\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-git-pull-request\">\n <path d=\"M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Pull requests\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i3discussions-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-f15a2db8-5609-49ce-9653-9760c342b077\" href=\"/tauri-apps/tauri/discussions\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-comment-discussion\">\n <path d=\"M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Discussions\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i4actions-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-6cb30bb4-61b4-4ce3-a026-cbc980281ef4\" href=\"/tauri-apps/tauri/actions\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-play\">\n <path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Actions\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i5projects-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-43a1950e-6c07-46d8-85fa-408464bf6b39\" href=\"/tauri-apps/tauri/projects\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-table\">\n <path d=\"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Projects\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i6security-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-309dc37d-a47a-4f90-9221-8ffc242dfed7\" href=\"/tauri-apps/tauri/security\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-shield\">\n <path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Security\n</span> \n</a>\n \n</li>\n <li hidden=\"hidden\" data-menu-item=\"i7insights-tab\" data-targets=\"action-list.items\" role=\"none\" data-view-component=\"true\" class=\"ActionListItem\">\n \n \n <a tabindex=\"-1\" id=\"item-13ee380b-047f-47ff-b53b-3327cd64ccf0\" href=\"/tauri-apps/tauri/pulse\" role=\"menuitem\" data-view-component=\"true\" class=\"ActionListContent ActionListContent--visual16\">\n <span class=\"ActionListItem-visual ActionListItem-visual--leading\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-graph\">\n <path d=\"M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path>\n</svg>\n </span>\n \n <span data-view-component=\"true\" class=\"ActionListItem-label\">\n Insights\n</span> \n</a>\n \n</li>\n</ul> \n</div></action-list>\n\n\n</div>\n \n</div></anchored-position> </focus-group>\n</action-menu></div>\n</nav>\n\n </div>\n \n\n\n\n<turbo-frame id=\"repo-content-turbo-frame\" target=\"_top\" data-turbo-action=\"advance\" class=\"\">\n <div id=\"repo-content-pjax-container\" class=\"repository-content \" >\n \n\n\n\n \n \n \n\n\n\n\n\n\n\n\n<react-app\n app-name=\"react-code-view\"\n initial-path=\"/tauri-apps/tauri/blob/dev/tooling/cli/src/mobile/ios/project.rs\"\n style=\"display: block; min-height: calc(100vh - 64px);\"\n data-attempted-ssr=\"false\"\n data-ssr=\"false\"\n data-lazy=\"false\"\n data-alternate=\"false\"\n data-data-router-enabled=\"false\"\n data-react-profiling=\"true\"\n>\n \n <script type=\"application/json\" data-target=\"react-app.embeddedData\">{\"payload\":{\"path\":\"tooling/cli/src/mobile/ios/project.rs\",\"repo\":{\"id\":196701619,\"defaultBranch\":\"dev\",\"name\":\"tauri\",\"ownerLogin\":\"tauri-apps\",\"currentUserCanPush\":false,\"isFork\":false,\"isEmpty\":false,\"createdAt\":\"2019-07-13T09:09:37.000Z\",\"ownerAvatar\":\"https://avatars.githubusercontent.com/u/54536011?v=4\",\"public\":true,\"private\":false,\"isOrgOwned\":true},\"refInfo\":{\"name\":\"dev\",\"listCacheKey\":\"v0:1772335651.0\",\"canEdit\":false,\"refType\":\"branch\",\"currentOid\":\"33932a72b27c970dde242da5241f7a340277507d\"},\"currentUser\":null,\"fileTree\":{\"\":{\"items\":[{\"name\":\".cargo\",\"path\":\".cargo\",\"contentType\":\"directory\"},{\"name\":\".changes\",\"path\":\".changes\",\"contentType\":\"directory\"},{\"name\":\".devcontainer\",\"path\":\".devcontainer\",\"contentType\":\"directory\"},{\"name\":\".docker\",\"path\":\".docker\",\"contentType\":\"directory\"},{\"name\":\".github\",\"path\":\".github\",\"contentType\":\"directory\"},{\"name\":\".scripts\",\"path\":\".scripts\",\"contentType\":\"directory\"},{\"name\":\".vscode\",\"path\":\".vscode\",\"contentType\":\"directory\"},{\"name\":\"audits\",\"path\":\"audits\",\"contentType\":\"directory\"},{\"name\":\"bench\",\"path\":\"bench\",\"contentType\":\"directory\"},{\"name\":\"crates\",\"path\":\"crates\",\"contentType\":\"directory\"},{\"name\":\"examples\",\"path\":\"examples\",\"contentType\":\"directory\"},{\"name\":\"packages\",\"path\":\"packages\",\"contentType\":\"directory\"},{\"name\":\"supply-chain\",\"path\":\"supply-chain\",\"contentType\":\"directory\"},{\"name\":\".editorconfig\",\"path\":\".editorconfig\",\"contentType\":\"file\"},{\"name\":\".gitignore\",\"path\":\".gitignore\",\"contentType\":\"file\"},{\"name\":\".prettierignore\",\"path\":\".prettierignore\",\"contentType\":\"file\"},{\"name\":\".prettierrc\",\"path\":\".prettierrc\",\"contentType\":\"file\"},{\"name\":\"ARCHITECTURE.md\",\"path\":\"ARCHITECTURE.md\",\"contentType\":\"file\"},{\"name\":\"Cargo.lock\",\"path\":\"Cargo.lock\",\"contentType\":\"file\"},{\"name\":\"Cargo.toml\",\"path\":\"Cargo.toml\",\"contentType\":\"file\"},{\"name\":\"LICENSE.spdx\",\"path\":\"LICENSE.spdx\",\"contentType\":\"file\"},{\"name\":\"LICENSE_APACHE-2.0\",\"path\":\"LICENSE_APACHE-2.0\",\"contentType\":\"file\"},{\"name\":\"LICENSE_MIT\",\"path\":\"LICENSE_MIT\",\"contentType\":\"file\"},{\"name\":\"README.md\",\"path\":\"README.md\",\"contentType\":\"file\"},{\"name\":\"SECURITY.md\",\"path\":\"SECURITY.md\",\"contentType\":\"file\"},{\"name\":\"dependabot.yml\",\"path\":\"dependabot.yml\",\"contentType\":\"file\"},{\"name\":\"package.json\",\"path\":\"package.json\",\"contentType\":\"file\"},{\"name\":\"pnpm-lock.yaml\",\"path\":\"pnpm-lock.yaml\",\"contentType\":\"file\"},{\"name\":\"pnpm-workspace.yaml\",\"path\":\"pnpm-workspace.yaml\",\"contentType\":\"file\"},{\"name\":\"renovate.json\",\"path\":\"renovate.json\",\"contentType\":\"file\"},{\"name\":\"rustfmt.toml\",\"path\":\"rustfmt.toml\",\"contentType\":\"file\"}],\"totalCount\":31}},\"fileTreeProcessingTime\":6.298452,\"foldersToFetch\":[],\"allShortcutsEnabled\":false,\"error\":{\"httpStatus\":404,\"type\":\"httpError\"}},\"title\":\"File not found\",\"appPayload\":{\"helpUrl\":\"https://docs.github.com\",\"findFileWorkerPath\":\"/assets-cdn/worker/find-file-worker-59333858d672c62a.js\",\"findInFileWorkerPath\":\"/assets-cdn/worker/find-in-file-worker-e662bb2d9aaa5afc.js\",\"githubDevUrl\":null}}</script>\n <div data-target=\"react-app.reactRoot\"></div>\n</react-app>\n\n\n\n\n </div>\n\n</turbo-frame>\n\n </main>\n </div>\n\n </div>\n\n <footer class=\"footer tmp-pt-7 tmp-pb-6 f6 color-fg-muted color-border-subtle p-responsive\" role=\"contentinfo\" >\n <h2 class='sr-only'>Footer</h2>\n\n \n\n\n <div class=\"d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap\">\n <div class=\"d-flex flex-items-center flex-shrink-0 mx-2\">\n <a aria-label=\"GitHub Homepage\" class=\"footer-octicon mr-2\" href=\"https://github.com\">\n <svg aria-hidden=\"true\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" width=\"24\" data-view-component=\"true\" class=\"octicon octicon-mark-github\">\n <path d=\"M12 1C5.923 1 1 5.923 1 12c0 4.867 3.149 8.979 7.521 10.436.55.096.756-.233.756-.522 0-.262-.013-1.128-.013-2.049-2.764.509-3.479-.674-3.699-1.292-.124-.317-.66-1.293-1.127-1.554-.385-.207-.936-.715-.014-.729.866-.014 1.485.797 1.691 1.128.99 1.663 2.571 1.196 3.204.907.096-.715.385-1.196.701-1.471-2.448-.275-5.005-1.224-5.005-5.432 0-1.196.426-2.186 1.128-2.956-.111-.275-.496-1.402.11-2.915 0 0 .921-.288 3.024 1.128a10.193 10.193 0 0 1 2.75-.371c.936 0 1.871.123 2.75.371 2.104-1.43 3.025-1.128 3.025-1.128.605 1.513.221 2.64.111 2.915.701.77 1.127 1.747 1.127 2.956 0 4.222-2.571 5.157-5.019 5.432.399.344.743 1.004.743 2.035 0 1.471-.014 2.654-.014 3.025 0 .289.206.632.756.522C19.851 20.979 23 16.854 23 12c0-6.077-4.922-11-11-11Z\"></path>\n</svg>\n</a>\n <span>\n &copy; 2026 GitHub,&nbsp;Inc.\n </span>\n </div>\n\n <nav aria-label=\"Footer\">\n <h3 class=\"sr-only\" id=\"sr-footer-heading\">Footer navigation</h3>\n\n <ul class=\"list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0\" aria-labelledby=\"sr-footer-heading\">\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}\" href=\"https://docs.github.com/site-policy/github-terms/github-terms-of-service\" data-view-component=\"true\" class=\"Link--secondary Link\">Terms</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}\" href=\"https://docs.github.com/site-policy/privacy-policies/github-privacy-statement\" data-view-component=\"true\" class=\"Link--secondary Link\">Privacy</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}\" href=\"https://github.com/security\" data-view-component=\"true\" class=\"Link--secondary Link\">Security</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}\" href=\"https://www.githubstatus.com/\" data-view-component=\"true\" class=\"Link--secondary Link\">Status</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}\" href=\"https://github.community/\" data-view-component=\"true\" class=\"Link--secondary Link\">Community</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}\" href=\"https://docs.github.com/\" data-view-component=\"true\" class=\"Link--secondary Link\">Docs</a>\n </li>\n\n <li class=\"mx-2\">\n <a data-analytics-event=\"{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}\" href=\"https://support.github.com?tags=dotcom-footer\" data-view-component=\"true\" class=\"Link--secondary Link\">Contact</a>\n </li>\n\n <li class=\"mx-2\" >\n <cookie-consent-link>\n <button\n type=\"button\"\n class=\"Link--secondary underline-on-hover border-0 p-0 color-bg-transparent\"\n data-action=\"click:cookie-consent-link#showConsentManagement\"\n data-analytics-event=\"{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}\"\n >\n Manage cookies\n </button>\n </cookie-consent-link>\n</li>\n\n<li class=\"mx-2\">\n <cookie-consent-link>\n <button\n type=\"button\"\n class=\"Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left\"\n data-action=\"click:cookie-consent-link#showConsentManagement\"\n data-analytics-event=\"{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}\"\n >\n Do not share my personal information\n </button>\n </cookie-consent-link>\n</li>\n\n </ul>\n </nav>\n </div>\n</footer>\n\n\n\n <ghcc-consent id=\"ghcc\" class=\"position-fixed bottom-0 left-0\" style=\"z-index: 999999\"\n data-locale=\"en\"\n data-initial-cookie-consent-allowed=\"\"\n data-cookie-consent-required=\"true\"\n ></ghcc-consent>\n\n\n\n\n <div id=\"ajax-error-message\" class=\"ajax-error-message flash flash-error\" hidden>\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path>\n</svg>\n <button type=\"button\" class=\"flash-close js-ajax-error-dismiss\" aria-label=\"Dismiss error\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n </button>\n You can’t perform that action at this time.\n </div>\n\n <template id=\"site-details-dialog\">\n <details class=\"details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm\" open>\n <summary role=\"button\" aria-label=\"Close dialog\"></summary>\n <details-dialog class=\"Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal\">\n <button class=\"Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0\" type=\"button\" aria-label=\"Close dialog\" data-close-dialog>\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-x\">\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\"></path>\n</svg>\n </button>\n <div class=\"octocat-spinner tmp-my-6 js-details-dialog-spinner\"></div>\n </details-dialog>\n </details>\n</template>\n\n <div class=\"Popover js-hovercard-content position-absolute\" style=\"display: none; outline: none;\">\n <div class=\"Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large\" style=\"width:360px;\">\n </div>\n</div>\n\n <template id=\"snippet-clipboard-copy-button\">\n <div class=\"zeroclipboard-container position-absolute right-0 top-0\">\n <clipboard-copy aria-label=\"Copy\" class=\"ClipboardButton btn js-clipboard-copy m-2 p-0\" data-copy-feedback=\"Copied!\" data-tooltip-direction=\"w\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-copy js-clipboard-copy-icon m-2\">\n <path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"></path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"></path>\n</svg>\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2\">\n <path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"></path>\n</svg>\n </clipboard-copy>\n </div>\n</template>\n<template id=\"snippet-clipboard-copy-button-unpositioned\">\n <div class=\"zeroclipboard-container\">\n <clipboard-copy aria-label=\"Copy\" class=\"ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center\" data-copy-feedback=\"Copied!\" data-tooltip-direction=\"w\">\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-copy js-clipboard-copy-icon\">\n <path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"></path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"></path>\n</svg>\n <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-check js-clipboard-check-icon color-fg-success d-none\">\n <path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"></path>\n</svg>\n </clipboard-copy>\n </div>\n</template>\n\n\n\n\n </div>\n <div id=\"js-global-screen-reader-notice\" class=\"sr-only mt-n1\" aria-live=\"polite\" aria-atomic=\"true\" ></div>\n <div id=\"js-global-screen-reader-notice-assertive\" class=\"sr-only mt-n1\" aria-live=\"assertive\" aria-atomic=\"true\"></div>\n </body>\n</html>\n\n"
1795
1796 ## Assistant
1797
1798 The GitHub path has changed. Let me search the actual Tauri source in the repo:
1799
1800 **Tool Call: 10 matches**
1801 Status: Completed
1802
1803 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/build.rs
1804
1805 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/build.rs
1806
1807 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/src/lib.rs
1808
1809 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/src/main.rs
1810
1811 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/commands.rs
1812
1813 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/desktop.rs
1814
1815 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/error.rs
1816
1817 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/lib.rs
1818
1819 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/mobile.rs
1820
1821 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/src/models.rs
1822
1823 ## Assistant
1824
1825 There's no local copy of Tauri's source. The evidence is conclusive from what we already have. Here's the complete answer:
1826
1827 ---
1828
1829 **No, you don't need to track them.**
1830
1831 Here's the precise reasoning for each file:
1832
1833 ### `tauri-app_iOS/Info.plist`
1834
1835 Tauri **generates** this file during `cargo tauri ios init` from the metadata in `project.yml` (specifically the `info:` block). Look at the `project.yml` we had tracked:
1836
1837 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/project.yml#L26-40
1838 info:
1839 path: tauri-app_iOS/Info.plist
1840 properties:
1841 LSRequiresIPhoneOS: true
1842 UILaunchStoryboardName: LaunchScreen
1843 ...
1844 ```
1845
1846 That `info:` block is what *produces* `Info.plist`. The plist itself is a derived artifact — it will be **regenerated** every time Tauri re-scaffolds. Tracking it in git creates a conflict risk: Tauri overwrites it, your tracked version diverges.
1847
1848 The correct place to own those plist values is `tauri.conf.json` (the `bundle.iOS` section), which Tauri then bakes into `project.yml`, which then generates `Info.plist`. That's the actual source of truth.
1849
1850 ### `tauri-app_iOS/tauri-app_iOS.entitlements`
1851
1852 Same story — Tauri generates this from `project.yml`'s `entitlements.path` key. It was empty (`<dict/>`) because you haven't added any capabilities yet. If you do add capabilities (e.g. Push Notifications, iCloud), those belong in `tauri.conf.json` or a dedicated capabilities file, not tracked here.
1853
1854 ### What to do
1855
1856 Both files should be **git-ignored** alongside `project.yml`. Let me fix the gitignores to reflect this accurately:
1857
1858 **Tool Call: edit_file**
1859 Status: Failed
1860
1861 **Tool Call: Read file `tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore`**
1862 Status: Completed
1863
1864 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore
1865 # ============================================================
1866 # gen/apple/.gitignore
1867 #
1868 # Strategy:
1869 # - `cargo tauri ios init` regenerates project.yml (XcodeGen)
1870 # - `tuist generate` regenerates *.xcodeproj, *.xcworkspace, Derived/
1871 # - Everything else is hand-authored source of truth → tracked
1872 # ============================================================
1873
1874 # ------------------------------------------------------------------
1875 # Tauri-regenerated: XcodeGen manifest
1876 # Re-created by `cargo tauri ios init` from tauri.conf.json.
1877 # We use Project.swift (Tuist) as the Xcode project source of truth,
1878 # so project.yml is a Tauri implementation detail we don't need.
1879 # ------------------------------------------------------------------
1880 project.yml
1881
1882 # ------------------------------------------------------------------
1883 # Tuist-regenerated: Xcode project & workspace
1884 # Fully described by Project.swift → always regenerate, never edit.
1885 # ------------------------------------------------------------------
1886 *.xcodeproj/
1887 *.xcworkspace/
1888
1889 # ------------------------------------------------------------------
1890 # Tuist-regenerated: derived sources & info plists
1891 # Auto-synthesised from Project.swift (asset accessors, bundle IDs…).
1892 # ------------------------------------------------------------------
1893 Derived/
1894
1895 # ------------------------------------------------------------------
1896 # Xcode runtime noise
1897 # ------------------------------------------------------------------
1898 xcuserdata/
1899
1900 # ------------------------------------------------------------------
1901 # Rust / Cargo build output
1902 # (also covered by src-tauri/.gitignore, belt-and-suspenders here)
1903 # ------------------------------------------------------------------
1904 build/
1905
1906 # ------------------------------------------------------------------
1907 # Compiled Rust static libraries injected by xcode-script
1908 # ------------------------------------------------------------------
1909 Externals/
1910
1911 ```
1912
1913
1914 **Tool Call: write_file**
1915 Status: Failed
1916
1917 **Tool Call: terminal**
1918 Status: Failed
1919
1920 **Tool Call: 1 match**
1921 Status: Completed
1922
1923 file:///Users/seto.elkahfi/Repositories/tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore
1924
1925 ## Assistant
1926
1927 I don't have a terminal or write_file tool available right now. Let me use the diagnostics tool or just give you the exact edits to make manually — but actually I do have an `edit_file` equivalent via the tool I used earlier. Let me check:
1928
1929 **Tool Call: Check project diagnostics**
1930 Status: Completed
1931
1932 No errors or warnings found in the project.
1933
1934 ## Assistant
1935
1936 The `edit_file` tool seems to not be available in this session. Here are the two precise changes you need to make manually:
1937
1938 ---
1939
1940 **1. Update `gen/apple/.gitignore`** — add `tauri-app_iOS/` to the Tauri-regenerated section and update the comment:
1941
1942 Replace the current `project.yml` block with:
1943
1944 ```tauri-plugin-ios-window/examples/tauri-app/src-tauri/gen/apple/.gitignore#L15-18
1945 # ------------------------------------------------------------------
1946 # Tauri-regenerated: XcodeGen manifest + iOS scaffold
1947 # project.yml, Info.plist, and *.entitlements are all generated by
1948 # `cargo tauri ios init` from tauri.conf.json. Do not track them.
1949 # ------------------------------------------------------------------
1950 project.yml
1951 tauri-app_iOS/
1952 ```
1953
1954 **2. Then un-track the iOS scaffold from git:**
1955
1956 ```sh
1957 git rm -r --cached examples/tauri-app/src-tauri/gen/apple/tauri-app_iOS/
1958 ```
1959
1960 **3. Fix the comment in `src-tauri/.gitignore`** — remove the two incorrect lines that say `tauri-app_iOS/Info.plist` and `*.entitlements` are intentionally tracked, and add `gen/apple/tauri-app_iOS/` to the ignored list instead.
1961
1962 ---
1963
1964 **To summarise the corrected mental model:**
1965
1966 | File | Owner | Tracked? |
1967 |---|---|---|
1968 | `tauri.conf.json` | You | ✅ source of truth for iOS bundle metadata |
1969 | `project.yml` | Tauri generates from `tauri.conf.json` | ❌ ignore |
1970 | `tauri-app_iOS/Info.plist` | Tauri generates from `project.yml` `info:` block | ❌ ignore |
1971 | `tauri-app_iOS/*.entitlements` | Tauri generates from `project.yml` `entitlements:` block | ❌ ignore |
1972 | `Project.swift` | You | ✅ Tuist manifest, references the above paths |
1973 | `tauri-app_tvOS/` | You | ✅ hand-written, never touched by Tauri |
1974
1975 The key insight: `Project.swift` can safely **reference** `tauri-app_iOS/Info.plist` and `tauri-app_iOS/*.entitlements` via `.file(path:)` even though those files are git-ignored — Tauri will have regenerated them on disk before you ever run `tuist generate`.
1976