- Race Condition behoben: Pre-Sync wird vollstaendig abgewartet bevor Darktable startet
- Post-Sync nach Schliessen von Darktable eingefuehrt (bisher fehlend)
- .env aus festem Pfad ~/.config/darktable-sync/.env geladen (nicht mehr relativ)
- Server-Erreichbarkeit per SSH statt ping (Firewall-sicher)
- Darktable-Versionscheck (Major.Minor) vor Download mit Abbruch bei Konflikt
- DB-Backup vor jedem Download (library.db.bak, data.db.bak)
- sync_pending-Marker bei Offline/Fehler, Hinweis beim naechsten Start
- darktable.active-Marker auf Server fuer Concurrent-Erkennung
- Lock-Dateien vom Sync ausgeschlossen
- systemd-Timer entfernt, Service bleibt als manueller Trigger
- Gemeinsame Hilfsfunktionen in darktable_common.sh extrahiert
- 20 BATS-Tests mit vollstaendigem Stub-System ohne GUI-Dialoge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
darktable.active-Marker auf Serversync_pending-Marker, Hinweis beim nächsten Startdarktable_common.sh(DRY)mkdir(TOCTOU-sicher, Symlink-resistent).env-Injection-Schutz: Shell-Operatoren werden geblocktvalidate_path(): SSH-Injection über Pfad-Variablen verhindertAkzeptanzkriterien
darktable_wrapper.sh: blockierender"$SYNC_BIN"-Aufruf)darktable.activeauf Server)sync_pending-Marker (Test 19)sync_pendingund zeigt Hinweis.envaus festem Pfad geladen (~/.config/darktable-sync/.env) (Test 3)*.lock) vom Sync ausgeschlossen (--exclude '*.lock')library.db.bak,data.db.bak) (Test 13).env-Injection geblockt (Tests 21–22)DARKTABLE_BIN-basename validiert (Test 27)Geänderte Dateien
scripts/darktable_common.shscripts/darktable_sync.shscripts/darktable_wrapper.shscripts/install.shscripts/uninstall.sh.env.exampletests/helpers/setup.bashtests/stubs/tests/darktable_common.batstests/darktable_sync.batstests/darktable_wrapper.batstests/security.bats🤖 Generated with Claude Code