Skip to content

Repository files navigation

MacToMacSync

MacToMacSync ist ein nativer macOS-Prototyp für kontrollierten, projektorientierten Dateiabgleich im lokalen Netzwerk. Die App synchronisiert nicht dauerhaft im Hintergrund. Sie scannt erst nach einer bewussten Aktion, zeigt den geplanten Umfang und hält Konflikte sowie destruktive Änderungen sichtbar zurück.

Aktueller Stand

Bereits funktionsfähig:

  • native SwiftUI-App mit Projektprofilen für Flutter, Node.js, Python, Xcode, lokale KI und normale Ordner
  • persistente, sandboxgerechte Ordnerfreigaben über Security-Scoped Bookmarks
  • echte Bonjour-Erkennung anderer MacToMacSync-Instanzen im LAN
  • rekursiver lokaler Scan mit SHA-256, Grössen und Änderungszeiten
  • Standardausschlüsse für .git, node_modules, virtuelle Umgebungen, Build-Artefakte und Caches
  • Drei-Wege-Vergleich aus gemeinsamem Ausgangszustand, lokalem Manifest und Peer-Manifest
  • Vorschau für neue, geänderte, gelöschte und konfliktbehaftete Dateien sowie Übertragungsgrösse
  • die drei Modi Bidirektional, Auf diesen Mac übertragen und Exakte Spiegelung
  • atomare, hashgeprüfte Dateischreibvorgänge und wiederherstellbarer Projektpapierkorb
  • begrenztes, längencodiertes Nachrichtenformat als Grundlage für den Transport

Noch nicht freigeschaltet:

  • kryptografische Kopplung mit Bestätigungscode und dauerhaftem Peer-Pinning
  • Austausch der Remote-Manifeste zwischen zwei Macs
  • eigentliche Dateiübertragung über die Netzwerkverbindung
  • Speicherung des gemeinsamen Sync-Ausgangszustands
  • FSEvents-Index und Block-Deltas für grosse Dateien

Die Oberfläche kennzeichnet diesen Stand als lokale Vorschau. Der Sync-Button bleibt deaktiviert; die App simuliert keinen erfolgreichen Transfer.

Sicherheitsregeln

  • Bonjour-Metadaten gelten nie als vertrauenswürdige Geräteidentität.
  • Absolute Pfade, .., NUL-Zeichen und Symlink-Ausbrüche aus dem gewählten Projektordner werden abgelehnt.
  • Konflikte werden nicht automatisch überschrieben.
  • Unterschiedliche Dateien, die auf beiden Macs neu entstanden sind, werden auch im Spiegelmodus als Konflikt behandelt.
  • Unbekannte Dateien, die nur auf dem Ziel-Mac existieren, werden nicht blind gelöscht.
  • Bekannte Löschungen werden erst nach Bestätigung in .mactomacsync-trash verschoben.
  • Eine empfangene Datei ersetzt ihr Ziel erst nach vollständiger SHA-256-Prüfung und Synchronisierung der temporären Datei.

Entwicklung

Voraussetzungen: macOS 15 oder neuer, Xcode 26 und Swift 6.2.

swift test
swift run MacToMacSync

Ein lokal signiertes .app-Bundle wird so erzeugt:

zsh scripts/build-app.sh
open .build/app/MacToMacSync.app

Weitere Angaben zu Bundle, Entitlements und Verteilung stehen in BUILDING.md.

Struktur

Sources/MacToMacSync/
├── App/       SwiftUI-Lifecycle, Zustände und Profilpersistenz
├── Core/      Profile, Scanner, Vergleich, Pfadschutz und sichere Dateivorgänge
├── Network/   Bonjour, TLS-Listener-Gerüst und Protokollrahmen
└── UI/        Projekt-Wizard, Übersicht, Warnungen und Änderungsliste

Tests/MacToMacSyncTests/
└── Scanner-, Vergleichs-, Pfad-, Codec-, Profil- und Dateisicherheitstests

Nächster Meilenstein

Der nächste Schritt ist ein vollständiger Pairing- und Transportpfad: beide Macs bestätigen denselben kurzen Code, pinnen die Geräteidentität, tauschen ihre Manifeste verschlüsselt aus und übertragen Dateien in begrenzten Chunks. Erst wenn dieser Pfad inklusive Abbruch-, Hash- und Wiederanlauftests steht, sollte der Sync-Button aktiviert werden.

About

Mac to Mac Syncronization Tool

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages