10 Commits

Author SHA1 Message Date
Gustavo Medori 32bbec3c73 iOS: Revise EnrollDeviceView (#68225)
* Rename LandingViewModel's deviceEnrollment destination to enrollDevice

This naming matches the destination view's name

* Add EnrollDeviceView preview

* Add Icon.swift

* Add a PrimaryButtonStyle that looks correct in both light and dark mode

* Update LandingView to use the new Icon type

* Restructure EnrollDeviceView to support large dynamic type sizes

* Refactor EnrollDeviceView for overall structure/readability

* Rename EnrollDeviceViewModel.attempt -> loadingState

* Commit Verify.xcscheme (which for some reason wasn't already present)

* Incorporate Dependencies into EnrollDeviceViewModel
2026-07-02 20:24:35 +00:00
Gustavo Medori f08b36fbac iOS: QR Code Scanner (#68181)
* Add initial implementation of QRScannerView

* Wire up QRScannerView to navigate to device enrollment

* Consolidate validateScan and onScan API calls

* Add handling for various camera permission states
2026-07-02 15:43:12 +00:00
Gustavo Medori 2cf918b555 iOS: Landing View (#68067)
* Add Icon.swift file as a resuable icon in a rounded rect

* Spruce up the UI for the landing page

* Improve code organization and indentation in LandingView.swift

* Remove stray space in LandingView copy

* Remove Icon.swift since we didn't end up using it

* Address comment/copy PR comments
2026-07-01 17:13:57 +00:00
Gustavo Medori 15c29cf57f iOS: Add Test Target (#68062)
* Add VerifyTests target with an initial deep link test

* Add more comprehensive tests for the DeepLink initializer
2026-06-30 17:30:30 +00:00
Gustavo Medori 827a04ffcd iOS: Implement RFD Architecture (#68026)
* Move VerifyApp to App Lifecycle folder and add some architecture documentation to it

* Add VerifyAppModel.swift

* Tuck existing files into their own subfolders

* Add SwiftUINavigation as a dependency to support Destination-style navigation

(More on Destination-style navigation in a future commit)

* Add convenient logger initializers

* Move openDeepLink up to VerifyApp

* Move LandingView into the App Lifecycle folder

* Wire up parsing failures to new alert destination

* Swift-ify DeepLink parsing

* Rename Atempt -> LoadingState

* Update LandingView to navigate correctly to EnrollMobileDeviceView

* Rename EnrollMobileDeviceView -> EnrollDeviceView to make it more concise

* Improve names of LandingViewModel.Destination

* Add delegate relationship between LandingViewModel and EnrollDeviceViewModel to support the cancellation button

Since this view is now in a navigation stack, we might actually do away
with the cancel button entirely because you can just tap the back button
to do the same thing.

* Remove ContentView since it's no longer used

* Further break apart DeepLink.swift

* Remove stray reference to ContentView

* Add URL to debug log in VerifyAppModel
2026-06-26 20:54:34 +00:00
Gustavo Medori 7553f927f7 iOS: Core Framework (#67939)
* Add Core framework with initial EnrollClient implementation

* Adopt EnrollClient in EnrollMobileDeviceViewModel

* Update Package.resolved

* Format EnrollClient.swift
2026-06-25 22:09:54 +00:00
Gustavo Medori 90299cb6a5 iOS: Add linting and formatting utilities (#67897)
* Add initial .swiftformat file with sensible defaults

* Apply swiftformat formatting to all code

* Remove file creation header from VerifyApp.swift

* Move .swiftformat to be near the Xcode project, closer to other iOS-specific configs

* Add .swiftlint configuration with a couple common sense rules and some funky TODO regular expressions

* Apply swiftlint rules and add it as a build plugin

* Remove swiftformat as a package dependency, using the CLI instead

* Remove custom TODO lint rules

* Update .swiftformat rules
2026-06-18 20:53:44 +00:00
Gustavo Medori 83e07c510a iOS: Build Enroll.xcframework using gomobile as part of the Xcode build (#67635)
* Embedded Enroll.xcframework building into the main Xcode build

* Remove xcframework generation from Makefile

Now that Enroll.xcframework is built as part of the Xcode build, we no
longer need to maintain a separate step to build it manually.

* Add a README file with basic instructions on how to integrate Swift with Go packages

* Disable user script sandboxing

This ensures that our build scripts can read/write whatever files
necessary. In particular, this avoids issues when building xcframeworks
with `gomobile` that may touch files not declared in your file inputs.

* Fix typo in build-enroll-framework.sh

* Update build-enroll-framework.sh to call `gomobile` via `go tool`

* Resolve shellcheck lint failure SC2155
2026-06-17 17:30:13 +00:00
Gustavo Medori 9691b677d4 iOS: Update Xcode settings and add OSS file header (#67632)
* Add OSS preamble to file header template

* Apply automatic project file changes from using Xcode 26.5

* Update Verify project files to generate symbols for string catalog entries

* Improve formatting of template file header to reduce extra whitespace

* Update file header to automatically use the current year
2026-06-16 19:52:17 +00:00
Maja Cieślak 813776fd7a Add Xcode project for Teleport Verify; add gomobile as tool dep (#67750)
* Generate Xcode project for Verify

* Set Swift version to 6; remove macOS and Vision as destinations

* Handle `teleport://` links and add enrollment screen

* Avoid building macOS-specific stuff on iOS

This is needed for gomobile to build our stuff from lib/mobile from the
next commit.

* Add `lib/mobile/verify/enroll` compiled with gomobile

* `lib/mobile`: Temporarily use private Device Trust service

The public gRPC service exists on the demo branch but not on this
branch. In order to make it possible to compile
`lib/mobile/verify/enroll`, temporarily use the private service which
has similar RPCs.

* Run `make go-mod-tidy-all`

* Make Swift app connect to public DT service on "Request Now" tap

* mobile: Add sheet for enroll request status

* Revert go.mod changes

This reverts commit b9af7a7614 and
2c00ecd7fa.

* Add `build.assets/tools/gomobile`

* Move gomobile back to main go.mod

This reverts commits 9b2a6c4ea3 and
a83c2959fa.
2026-06-16 17:29:26 +00:00