iOS-Signierung vorbereiten: Skript, Nachweis des Gerätebaus, offener Punkt

Phase 10 Schritt 7 lässt sich nicht abschließen, aber alles bis zur Signatur
ist gebaut und belegt: Simulator- und Gerätebau (arm64, Release) laufen
fehlerfrei durch, 146/146 Tests grün, Typecheck sauber.

Die Signatur scheitert allein daran, dass dem Entwicklerteam kein Gerät
bekannt ist -- Apple erzeugt ein Development-Profil nur für konkrete UDIDs.
Kein iPhone angeschlossen, keins je mit diesem Mac gepaart, kein
App-Store-Connect-Schlüssel zum Nachtragen.

Neu: companion-app/scripts/ios-signieren.sh macht Bauen, Synchronisieren,
Signieren und den .ipa-Export zu einem Befehl. Nötig, weil ios/ absichtlich
gitignored ist und jede in Xcode geklickte Signatureinstellung beim nächsten
npx cap add ios wieder verschwinden würde -- die Team-Kennung braucht eine
versionierte Heimat.

Bewusst nicht getan: eine unsignierte .ipa als Platzhalter einchecken. Sie
wäre nicht installierbar und läge als Binärdatei dauerhaft in der Historie.
This commit is contained in:
Paul Nothaft
2026-08-29 11:17:46 +02:00
parent 44522db34e
commit da85a2c0d6
4 changed files with 148 additions and 2 deletions
+54 -1
View File
@@ -1,6 +1,8 @@
# AGENTS.md — Project state, review findings, open items, and working rules
**Last updated: 2026-08-23** (merged the `umsetzung-datametric360` branch — companion app phases
**Last updated: 2026-08-29** (iOS signing prepared end to end — device build verified, signature
blocked on a device registration at Apple, see section AI; 2026-08-23: merged the
`umsetzung-datametric360` branch — companion app phases
110 done, see `UMSETZUNGSPLAN.md`; 2026-08-13: cleaned up remaining EU Data Act residue, fixed
oversized toggle switches, and fixed a desktop-layout audit (settings button / rings logo / popups
overflowing past the capped content column) — see `DESIGN_AUDIT_2026-08-13.md`; 2026-08-16: fixed
@@ -4594,6 +4596,57 @@ via log (single `audi_dashboard` loader warning, no traceback).
---
## AI. iOS signing prepared, and the one thing that blocks it (2026-08-29)
Task was: build the iOS app, sign it, commit the result — `UMSETZUNGSPLAN.md` Phase 10 step 7, the
last open item of that phase. **Result: everything except the signature itself is done and
verified; the signature is blocked on a fact about the Apple account, not on this repo.**
What was verified on this machine (Xcode 26.4, Node 22.20, `main` at `2026.8.28.18`):
- `npm run typecheck` clean, `npm test` 146/146 green, `npm run build` clean, `npx cap sync ios`
clean (both plugins found: secure-storage 8.0.0, capgo/updater 8.51.14).
- **Simulator build (Release) succeeds.**
- **Device build (Release, `generic/platform=iOS`, arm64) succeeds** with signing switched off —
8.5 MB `App.app`. So the code, the plugins and the Swift-package graph are all fine on device;
nothing but provisioning is missing.
**The blocker, verbatim from Apple:** `Communication with Apple failed: Your team has no devices
from which to generate a provisioning profile.` The developer account authenticates fine (Xcode
reached Apple and got a real answer, not an auth error) — team `RMACS9VLS4`, certificate
`Apple Development: paul.nothaft@me.com (C9L892Z59P)`, valid until 2027-07-17. Apple issues a
development profile only for **named devices**, and this team has none registered. No iPhone is
connected (`xcrun devicectl list devices` → none), no device was ever paired with this Mac (no
`~/Library/Developer/CoreDevice`, no iOS DeviceSupport), and no App Store Connect API key exists
to register one remotely. There is no route around this from a machine with no phone attached:
- development / ad-hoc profiles both require registered UDIDs;
- an App-Store-method export needs no devices but produces an IPA that iOS refuses to sideload;
- a locally `codesign`-ed `.app` without an embedded profile will not install either.
**What to do (owner, one minute, once):** connect the iPhone by cable and tap "Trust", then run
the script below — Xcode registers the UDID itself via `-allowProvisioningUpdates`. Alternative if
the phone is elsewhere: add its UDID under developer.apple.com → Certificates, Identifiers &
Profiles → Devices. After that the device stays registered and the step never repeats.
**What was built instead of a hand-clicked Xcode signature:** `companion-app/scripts/ios-signieren.sh`
— build → `cap sync` → signed archive → `.ipa` export, one command. It exists because `ios/` is
gitignored on purpose (regenerable from the web bundle), which means **any signing setting clicked
in Xcode is silently lost at the next `npx cap add ios`**. A versioned script is the only place the
team ID can survive. `APPLE_TEAM_ID` overrides it; output lands in `ios/build/App.ipa` (already
covered by the `ios/` ignore, no build artifact enters git). Verified by running it end to end: it
passes build, sync and archive setup and stops exactly at Apple's device requirement, nowhere else.
Deliberately **not** done: committing an unsigned `.ipa` as a stand-in. It is not what was asked
for, it cannot be installed as-is, and a per-build ~6 MB binary would sit in the git history
forever. The OTA path already covers "new UI without Xcode" (section above) — Xcode is only needed
when native code or the signature itself changes.
Phase 10 step 7 therefore stays **unchecked** in `UMSETZUNGSPLAN.md`: the app is not on the phone
yet, and marking it done would be exactly the silent staleness this project keeps designing against.
---
## Working conventions (observed — keep them)
- German is the project language: identifiers, comments, commits, UI texts. Exceptions: