Skip to content

Releases: Revisor01/VacuPilot

VacuPilot 1.0.0 (Build 99)

Choose a tag to compare

@Revisor01 Revisor01 released this 02 Aug 07:40

Erstveröffentlichung im App Store (Build 99, Stand 2026-06-10).

Native iOS-App zur Steuerung von Saugrobotern im lokalen Netzwerk über die
REST-API v2 — ohne Cloud, ohne Tracking, ohne Konto.

Hinzugefügt

  • Roboter-Verwaltung: Hinzufügen, Bearbeiten und Entfernen von Robotern per
    LAN; Credentials sicher im iOS-Keychain.
  • Automatische Erkennung: mDNS/Bonjour-Discovery (_valetudo._tcp) mit
    parallelem IP-Scan als Fallback.
  • Live-Karte: Interaktive Kartenansicht mit Zoom/Pan, Raumdarstellung, Zonen
    und Echtzeit-Updates via Server-Sent Events (Polling als Fallback).
  • Reinigung: Raumauswahl mit frei wählbarer Reihenfolge, Wiederholungen
    (1×/2×/3×), Zonenreinigung, GoTo-Presets sowie Start/Stop/Pause/Home.
  • Kartenbearbeitung: Räume teilen, zusammenführen und benennen; virtuelle
    Wände und Sperrzonen.
  • Timer: Reinigungszeitpläne erstellen, bearbeiten und löschen.
  • Manuelle Steuerung: Touchpad-Steuerung mit High-Resolution-Velocity.
  • Verbrauchsmaterial: Reststandsanzeige inklusive Benachrichtigung bei
    niedrigem Stand.
  • OTA-Updates: Geführter Update-Prozess mit Fortschrittsanzeige,
    Vollbild-Sperre während Apply/Reboot und automatischer Neustart-Erkennung.
  • Siri & Kurzbefehle: Sprachsteuerung über App Intents.
  • Benachrichtigungen: Lokale Hinweise zu fertiger Reinigung, Fehlern und
    Verbrauchsmaterial; Hintergrund-Überwachung via BGAppRefreshTask.
  • Weiteres: Onboarding, Demo-Modus, Dark Mode, Karten-Cache für den
    Offline-Fall, Unterstützer-Funktion via StoreKit 2.
  • Lokalisierung: Deutsch, Englisch und Französisch (FR aus der Community).

Interne Entwicklungszyklen bis zu diesem Release

  • v2.0.0 — Update Process Hardening (2026-04-01): UpdatePhase-State-Machine
    als Single Source of Truth, Re-Entrancy-Guards, Fehler-States, Idle-Timer und
    Background-Task-Schutz während des Apply-Vorgangs.
  • v2.1.0 — Architecture & Background (2026-04-02): Migration auf
    @Observable, BackgroundMonitorService, MapCacheService.
  • v2.2.0 — Room Interaction & Cleaning Order (2026-04-04): Raumauswahl von
    Set auf geordnetes Array umgestellt, damit die Auswahlreihenfolge der
    Reinigungsreihenfolge entspricht.
  • v3.0.0 — Quality, Performance & Hardening (2026-04-05): Zentraler
    ErrorRouter, durchgängiges os.Logger-Logging statt print(), vereinheitlichte
    Kartengeometrie (MapGeometry.swift), O(1)-Hit-Testing für Raum-Taps,
    vorgerenderte Karten-Ebenen auf Hintergrund-Thread, Aufspaltung großer Views
    (u. a. RobotDetailView 1210 → 143 Zeilen), XCTest-Target mit Unit-Tests.
  • v4.0.0 — App Store Release (2026-04-29): Store-Listing in DE/EN/FR,
    Screenshot-Generator, Bonjour-Hostname-Korrektur.
  • v4.0.1 — OTA Hotfix (2026-05-27): Install-Button, Auto-Refresh nach Reboot,
    Warnung beim Verlassen während eines Updates.

Behoben (Auswahl, bis Build 99)

  • Karte fror beim Öffnen ein — RLE-Dekompression und segmentInfos-Berechnung
    vollständig vom Main-Thread verlagert.
  • Endlose Re-Render-Schleife in MapContentView.
  • SSE-Reconnects mit exponentiellem Backoff und Wiederholungslimit, um
    Actor-Starvation zu verhindern.
  • Roboter wurden fälschlich als „nicht erreichbar“ angezeigt.
  • Rundungsfehler bei der Pixel-Koordinaten-Umrechnung (Zonen, GoTo, Raum-Teilung).
  • Links/Rechts-Steuerung in der manuellen Steuerung war vertauscht.
  • 401-Leak beim Navigieren zwischen Robotern; stille Update-Prüfung.
  • Verlorene SSL-Einstellungen beim Speichern eines Roboters.

Sicherheit

  • Zugangsdaten ausschließlich im iOS-Keychain, nie in UserDefaults.
  • Warnbanner und Lock-Icon bei unverschlüsselten HTTP-Verbindungen und
    aktiviertem SSL-Bypass.

App-Review-Anpassungen

  • Umbenennung von „ValetudiOS“ zu VacuPilot (App-Store-Guidelines 5.2.5 und
    5.2.1: „iOS“ im Namen unzulässig, fremder Projektname nicht autorisiert).
  • Nennungen der fremden Marke in App und Store-Texten auf beschreibende
    Kompatibilitätshinweise reduziert (Guideline 5.2.1).
  • App auf iPhone-only umgestellt; ITSAppUsesNonExemptEncryption in
    project.yml verankert.