Juergen Kunz 8057216006
Some checks are pending
CI / test (push) Waiting to run
give the welcome screen glass chrome and shadcn polish
- Wrap the pairing action dock in a rounded glassEffect container with linear-gradient edge fades at the top and bottom of the scroll, producing the native iOS 26 Liquid Glass chrome without masking blur hacks.
- Realign the welcome layout to match the shadcn cards used by the home tab: tighter 40pt hero glyph, ShadcnBadge callout, AppSectionCard step/note rows, and PrimaryActionStyle/SecondaryActionStyle buttons instead of a tint-colored glassProminent pill.
- Add a VariableBlurView utility in GlassChrome.swift (adapted from nikstar/VariableBlur, MIT) for cases where a real progressive Gaussian blur is needed, and capture the chrome/blur playbook plus tsswift screenshot workflow notes in readme.knowledge.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 20:45:47 +00:00
2026-04-19 01:21:43 +02:00

idp.global Swift App

Multiplatform SwiftUI passport companion for idp.global on iPhone, iPad, Mac, and Apple Watch.

Current App Behavior

  • iPhone pairing starts on a welcome screen and then opens QR scanning explicitly.
  • QR pairing supports a manual paste fallback when camera scanning is unavailable.
  • NFC pairing and NFC identity proof attach a signed GPS position on supported iPhones.
  • The app uses the live idp.global backend by default for pairing, dashboard loading, approvals, and alerts.
  • The Apple Watch companion and widgets live in the same Xcode project and build with the main app scheme.
  • MockIDPService still exists for previews and test scaffolding, but normal runtime uses LiveIDPService.

Repo Layout

  • root package.json
  • root .smartconfig.json
  • Swift project at swift/IDPGlobal.xcodeproj

tsswift Setup

This repo is configured for tsswift from the repo root and expects a named global remote builder.

Install tooling:

corepack pnpm install

Configure a global remote macOS builder once:

corepack pnpm exec tsswift config -g add-builder \
  --name <builder-name> \
  --host <ssh-host> \
  --root-dir <remote-project-root> \
  --platforms macos,ios,ipad

The global builder registry lives at:

~/.git.zone/tsswift/config.json

Verify it with:

corepack pnpm exec tsswift config list-builders
corepack pnpm exec tsswift config show

Remote Builder Behavior

This project does not keep per-repo SSH details inside .smartconfig.json. Instead, it references a named builder, and tsswift resolves that builder from the global registry in ~/.git.zone/tsswift/config.json.

How it works:

  • tsswift syncs the repo to the configured remote project root via rsync
  • xcodebuild, simctl, and simulator boot or launch commands execute on the remote macOS builder over SSH
  • the local machine only orchestrates the workflow; Apple platform builds happen on the builder
  • the selected simulator is opened by the requested device identifier instead of reviving a previously used simulator
  • simulator builds are pinned to the builder machine's native architecture

Prerequisites:

  • working SSH access to the remote builder host
  • a configured global tsswift builder entry
  • local permission to run ssh and rsync

Quick verification:

corepack pnpm exec tsswift config -g list-builders
corepack pnpm swift:doctor

swift:doctor should report the resolved remote builder and remote project root.

This repo's .smartconfig.json already points at that builder by name:

"remoteBuilder": {
  "name": "<builder-name>"
}

Current project defaults:

  • default scheme: IDPGlobal
  • default configuration: Debug
  • default run platform: macos
  • build platforms: macos, ios, ipad
  • test platform: macos
  • preferred iPhone and iPad simulators are configured in .smartconfig.json
  • derived data path: swift/.build/xcode-derived-data

tsswift pins simulator builds to the builder machine's native architecture and opens the selected simulator device directly instead of reviving a previously used iPhone.

Common Commands

From the repo root:

corepack pnpm swift:doctor
corepack pnpm swift:emulators
corepack pnpm swift:build
corepack pnpm swift:build:macos
corepack pnpm run swift:build -- --platform ios
corepack pnpm run swift:build -- --platform ipad
corepack pnpm swift:test
corepack pnpm run swift:run -- --platform ios
corepack pnpm run swift:run -- --platform ipad
corepack pnpm swift:watch

Notes:

  • swift:build builds the configured macOS, iPhone, and iPad matrix.
  • swift:test runs the macOS test target.
  • swift:run without extra flags follows the configured default platform, which is currently macos.
  • swift:run -- --platform ios boots the configured remote iPhone simulator, installs the app, and launches it.
  • swift:run -- --platform ipad does the same for the configured remote iPad simulator.

Direct Xcode Use

If you are working directly on a Mac instead of through tsswift, open:

swift/IDPGlobal.xcodeproj

Useful targets and schemes:

  • IDPGlobal for the main app
  • IDPGlobalWatch for the watch app
  • IDPGlobalWidgets for widgets

Pairing Notes

  • Start a fresh pairing flow from the idp.global web session you want to trust.
  • Scan the QR shown by that web flow, or paste the pairing link manually if camera access is unavailable.
  • NFC flows are for supported iPhone hardware and include signed location evidence.
Description
No description provided
Readme 822 KiB
Languages
Swift 100%