Beim Setzen der Versionsnummer in Xcode ist bei den beiden
VanControlWatch-Konfigurationen "0,1" statt "0.1" hereingerutscht,
vermutlich durch die deutsche Locale beim Zahlen-Eingabefeld. App Store
Connect erwartet ein Punkt-Format; mit dem Komma wäre das beim
Archivieren/Hochladen vermutlich angeeckt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Der Einstellungen-Schalter für den Demo-Modus war in #if DEBUG
eingeschlossen und damit in Archiven (Release-Konfiguration, wie sie
Product → Archive und damit jeder TestFlight-Build verwendet) komplett
herauskompiliert. TestFlight-Tester konnten den Demo-Modus dadurch nicht
nutzen.
DemoData.isEnabled und der Schalter in SettingsView sind jetzt
konfigurationsunabhängig; nur die CAMPER_DEMO-Umgebungsvariable bleibt
auf Debug-Builds beschränkt, da sie ohnehin nur über Xcode/simctl
gesetzt werden kann.
Build (Debug + Release) und Tests grün; per strings(1) im
Release-Binary verifiziert, dass der Demo-Modus-Code tatsächlich
mitkompiliert wird.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Drei vom Nutzer im Testbuild gefundene Fehler:
* DeviceStore.save() schrieb auch im Demo-Modus in UserDefaults. Jede
Änderung während aktivem Demo-Modus (z.B. Fahrzeuggrafik oder
Einbaulage ändern) persistierte damit die erfundenen Fahrzeuge/Geräte
dauerhaft – sie blieben nach dem Deaktivieren des Demo-Modus stehen.
save() ist jetzt im Demo-Modus ein no-op.
* Die Kühlbox-Schalter (Ein/Aus, Eco/Max, Solltemperatur, Sperre) liefen
über sendFridgeSettings(), das eine echte Bluetooth-Verbindung
voraussetzt (`managed`-Eintrag) – im Demo-Modus gibt es die nie, die
Schalter taten also nichts. Im Demo-Modus wird der angezeigte
AlpicoolState jetzt direkt geändert, ohne den Umweg über einen
Stellbefehl.
* Der Live-Activity-Schalter liess sich nicht einschalten, weil dem
Haupt-App-Target der Info.plist-Schlüssel NSSupportsLiveActivities
fehlte – Activity.request() wirft ohne ihn, wird aber vom Aufrufer
stillschweigend abgefangen, sodass der Schalter beim Antippen einfach
auf Aus zurückspringt.
Build (App + Watch) und Tests grün.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nach dem Entfernen der Beispiel-Widget/-Control-Dateien enthielt
VanControlWidget(Extension) nur noch die Live Activity – der Name war
damit irreführend. Jetzt VanControlLiveActivity(Extension) durchgängig:
Ordner, Target, Produkt, Bundle-ID-Suffix, Dateien
(VanControlLiveActivity.swift, VanControlLiveActivityBundle.swift) und
Anzeigename ("VanControl Live Activity").
Build (App Debug+Release, Watch) und Protokoll-Tests grün.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CamperMonitor (Haupt-Repo) und VanAligneiOS (aus dem gemergten
solar-integration-Branch) liefen unter zwei verschiedenen internen
Namen, obwohl die App nach aussen längst einheitlich "VanControl Pro"
heisst. Jetzt durchgängig VanControl:
- Ordner: CamperMonitor/, CamperMonitorWatch/, CamperMonitorComplication/,
VanAligneiOSWidget/ → VanControl/, VanControlWatch/,
VanControlComplication/, VanControlWidget/
- Xcode-Projekt: CamperMonitor.xcodeproj → VanControl.xcodeproj, alle
Targets/Schemes/Produktnamen entsprechend umbenannt
- Bundle-Identifier auf Wunsch mitgeändert: de.s0.fototeddy.VanControl*
(App noch nicht veröffentlicht); dabei auch die
WKCompanionAppBundleIdentifier-Werte korrigiert, die noch das alte
de.fritob-Präfix statt des tatsächlichen de.s0.fototeddy-Präfixes
trugen
- Swift-Dateien/Typen: CamperMonitorApp → VanControlApp,
VanAligneiOSWidget* → VanControlWidget*
- Config/*-Info.plist umbenannt, README.md/Tools/README.md/run-tests.sh
auf die neuen Pfade angepasst
Bewusst unverändert: firmware/vanalign und alle Bezüge auf "VanAlign"
als Namen der Neigungsmesser-Hardware (eigenständiges Produkt, kein
App-Name) sowie der komplette Android/-Ordner.
Build (App, Watch, Debug) und Protokoll-Testlauf grün.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>