diff --git a/CURRENT_STATUS.md b/CURRENT_STATUS.md index 09be451..733193c 100644 --- a/CURRENT_STATUS.md +++ b/CURRENT_STATUS.md @@ -1,122 +1,121 @@ # Aktueller Entwicklungsstand -Stand: 17.08.2026 +Stand: 18.08.2026 ## Plugin -- Aktuelle Plugin-Version: **0.9.3.17** -- Aktueller Entwicklungsblock: **NC Connector – Verbindungsverwaltung / laufende Optimierung** -- NC Connector ist Feature 10 und noch nicht vollständig abgeschlossen. -- Solange dieser Optimierungsblock läuft, bleibt die Version im Bereich `0.9.3.x`. +- Aktuelle Plugin-Version: **0.9.4.2** +- Aktueller Entwicklungsblock: **NC Connector – Endnutzer-Assistent und Konsolidierung** +- `0.9.3.43` markiert den abgeschlossenen vorherigen Meilenstein. +- `0.9.4.x` ist der neue Entwicklungsblock. -## Aktueller GitHub-Stand +## Produktiver Stand -Der lokale NC Connector ist für den aktuellen Bratonien-Einsatz im bisherigen Login-Weg End-to-End funktionsfähig. Mit `0.9.3.17` beginnt der Umbau auf API-first für die Piwigo-Synchronisierung. +Der lokale NC Connector ist im aktuellen Bratonien-Einsatz End-to-End funktionsfähig: -Bereits erfolgreich umgesetzt und getestet: +- Nextcloud-Freigaben `folder` und `file` werden verarbeitet. +- Ordnerfreigaben werden als physische Piwigo-Alben synchronisiert. +- Einzeldateifreigaben werden als echte Piwigo-Orphans ohne Albumzuordnung registriert. +- Entfernte Freigaben werden aus Piwigo entfernt, Originaldateien bleiben erhalten. +- Neue physische Connector-Alben werden privat angelegt. +- API-first-Synchronisierung ist produktiv für Piwigo **16.4.0** freigegeben. +- Piwigo-Album- und Fotoinformationen werden nach dem direkten Sync aktualisiert. +- Der gemeinsame systemd-Timer verarbeitet aktive Verbindungen regelmäßig. -- Nextcloud-Freigaben vom Typ `folder` und `file` werden aus der Source-View gelesen. -- Ordnerfreigaben werden als Verzeichnisbaum im Shadow Tree gespiegelt. -- Einzeldateifreigaben werden als Symlink direkt im Galerie-Root angelegt und als echte Piwigo-Orphans ohne Albumzuordnung registriert. -- Entfernte Einzeldateifreigaben werden beim normalen Connector-Lauf aus Shadow Tree und Piwigo entfernt. -- Das Nextcloud-Original bleibt bei Löschvorgängen unangetastet. -- Connector-getriggerte neue physische Alben werden standardmäßig privat angelegt. -- Der gemeinsame systemd-Timer `bratonien-nc-connector.timer` läuft produktiv. +## 0.9.4.1 -Neu in `0.9.3.17`: +Die Statusaktualisierung im Admin-UI wurde von Seiten-Reload auf gezielte DOM-Aktualisierung umgestellt. Der Poller aktualisiert nur noch **Letzter Lauf** und **Nächster Lauf**. Offene Dialoge, Details und der Assistent bleiben dadurch erhalten. -- die Piwigo-API ist als bevorzugter Synchronisierungsweg vorgesehen; -- ein erfolgreich geprüfter API-Key wird verschlüsselt in der Piwigo-Konfiguration gespeichert; -- produktive API-Synchronisierung ist ausdrücklich an die freigegebene Piwigo-Version **16.4.0** gebunden; -- neuer Webservice `bratonien.nc.syncProductive` delegiert den freigegebenen produktiven Dateisync an Piwigos Core-Synchronisierung; -- `runtime/lib/piwigo-sync.php` versucht zuerst die API und fällt nur bei nicht nutzbarer API auf Benutzername/Passwort zurück; -- der bisherige Benutzername/Passwort-Zugang kann als verschlüsselter Fallback gespeichert oder gelöscht werden; -- ein Benutzername/Passwort-Fallback kann außerdem einmalig manuell ausgeführt werden, ohne die Zugangsdaten zu speichern; -- neue lokale Verbindungen werden intern als `api-first` angelegt; ein dauerhaft gespeicherter Login-Fallback ist technisch nicht mehr zwingend, sofern ein API-Zugang vorhanden ist. +## 0.9.4.2 + +### Verbindungsassistent + +Der Assistent wurde erneut aus Endnutzersicht konsolidiert: + +1. Nextcloud-Adresse + Benutzer + Passwort. +2. Automatischer Web-Scan über HTTP/HTTPS und OCS. +3. Der Nutzer sieht zunächst keine komplette Datenbank-Technikmaske. +4. Für den Datenzugriff werden zuerst nur Lese-Benutzer und Passwort abgefragt. +5. Host = Nextcloud-Host, Port 5432 und Datenbank `nextcloud` werden nur als automatischer Prüfversuch verwendet und nicht als sicher erkannt dargestellt. +6. Scheitert dieser Versuch, fragt der Assistent gezielt die abweichende Datenbank-Adresse, Port und Datenbank ab. +7. Storage-Mounts werden nur abgefragt, wenn sie nicht sicher aus vorhandenen Zuordnungen übernommen werden können. +8. Danach folgen Showcase-Benutzer, Piwigo-API-Test/Skip und Fallback. +9. Erst der letzte Schritt legt die Verbindung dauerhaft an. + +Fehler leeren die Wizard-Eingaben nicht. Geheimnisse bleiben während des Wizards serverseitig in der PHP-Sitzung und werden nicht im Browser-Web-Storage persistiert. + +### Storage-Mappings + +Das Storage-Format erlaubt jetzt einen leeren `source_prefix`. Damit kann ein kompletter Storage direkt auf einen lokalen Mount zeigen. Die frühere Fehlermeldung + +`Storage-Zeilen muessen das Format storage_id | source_prefix | local_mount verwenden.` + +tritt bei einem legitimen Root-Mapping nicht mehr auf. + +### Native Aktivierung + +`nc-connector-install.php` unterstützt jetzt auch API-only-Verbindungen ohne dauerhaft gespeicherten Login-Fallback. Ein Fallback ist nur nötig, wenn keine nutzbare API gespeichert ist. + +### Dokumentation + +README und CURRENT_STATUS wurden auf den aktuellen `0.9.4.x`-Stand gebracht und beschreiben jetzt den realen API-first-Sync, den Wizard, die Statusaktualisierung ohne Reload und die aktuelle Runtime-Architektur. ## Architektur NC Connector -- Nextcloud bleibt die einzige dauerhafte Quelle der Originalbilder. -- Piwigo erhält nur die benötigte Verzeichnis-/Symlink-Struktur und erzeugt daraus seine Derivate und Cache-Dateien. -- Der Connector arbeitet mit einem PostgreSQL-Leser und den Views `piwigo_showcase_sources` und `piwigo_showcase_activity`. -- Laufzeitdaten liegen unter `/var/lib/bratonien-tools/nc-connector/...`. -- Verbindungs-Konfigurationen liegen unter `/etc/bratonien-tools/nc-connector/connection-*.conf`. -- Der Shadow Tree enthält Verzeichnisse und Symlinks, keine Kopien der Originaldateien. -- Alle aktivierten Verbindungen werden über `runtime/run-all.sh` gemeinsam verarbeitet. +- Nextcloud ist Quelle der Originalbilder. +- Piwigo erhält einen Shadow Tree aus Verzeichnissen und Symlinks. +- PostgreSQL-Reader und die Views `piwigo_showcase_sources` / `piwigo_showcase_activity` liefern Quellen und Aktivität. +- Runtime-Konfigurationen: `/etc/bratonien-tools/nc-connector/connection-*.conf` +- State: `/var/lib/bratonien-tools/nc-connector/connection-ID` +- Öffentlicher Admin-Status: Piwigo `_data/bratonien-tools/nc-connector-status/` +- Runner: `runtime/run-all.sh` +- Einzelverbindung: `runtime/sync.sh` -## Nextcloud-Freigabemodell +## Piwigo-Synchronisierung -Der Connector unterstützt komplette Ordner und einzelne Bilder. - -- `folder` -> Verzeichnisstruktur spiegeln und über Piwigos Dateisynchronisierung als physische Albumstruktur einlesen; -- `file` -> Symlink direkt im Galerie-Root und anschließende Registrierung als Piwigo-Orphan. - -Für einzelne Dateien wird kein künstlicher Unterordner erzeugt. - -## Activity-Gate - -Das Activity-Gate berücksichtigt neben dem Nextcloud-Aktivitätsstand auch die Signatur der aktuell sichtbaren Freigaben. Weiterhin vorhanden sind Quiet-Time, maximale Wartezeit, periodischer Full-Sync und verbindungsspezifischer State. - -## Piwigo-Synchronisation - -### API-first - -Der normale Runtime-Lauf verwendet ab `0.9.3.17` folgende Priorität: +Priorität: 1. gespeicherter Piwigo-API-Key; -2. bei API-Fehler, fehlender Freigabe für die installierte Piwigo-Version oder nicht vorhandener API: gespeicherter Benutzername/Passwort-Fallback; -3. ohne nutzbaren API- und Fallback-Zugang wird der Piwigo-Sync mit einer klaren Fehlermeldung abgebrochen. +2. bei nicht nutzbarer API gespeicherter Benutzername/Passwort-Fallback; +3. ohne beide Wege Abbruch mit Fehlerstatus. -Nach einem Piwigo-Update wird die produktive API nicht automatisch für die neue Version freigeschaltet. Erst nach einem Kompatibilitätstest wird die Versionsfreigabe im Plugin angehoben. Bis dahin bleibt nur der Login-Fallback zulässig. +Produktive API-Methoden: -### Physische Alben +- `bratonien.nc.syncProductive` +- `bratonien.nc.syncOrphans` -`bratonien.nc.syncProductive` ist aktuell nur für Piwigo **16.4.0** freigegeben. Der Endpoint läuft als Administrator-Webservice und verwendet für den eigentlichen Dateisync Piwigos Core-Synchronisierung. Neue Connector-Alben werden dabei privat angelegt. +`bratonien.nc.syncProductive` ist auf Piwigo 16.4.0 versionsgebunden. Der direkte Sync verwendet Bratonien-eigene Logik auf Basis der Piwigo-Core-Funktionen, nicht das Rendern oder Fernsteuern einer Admin-Seite. -### Root-Dateien / Orphans +## Activity Gate und Shadow Tree -`bratonien.nc.syncOrphans` verarbeitet direkte Dateien im Galerie-Root separat. Neue Root-Dateien werden als Piwigo-Orphans ohne Albumzuordnung registriert. Entfernte Root-Dateien werden nur aus Piwigo entfernt; das Nextcloud-Original bleibt unberührt. +Das Activity Gate berücksichtigt: -## Erfolgreiche Live-Tests bis 0.9.3.16 +- Aktivitätsstand; +- Share-Fingerprint; +- Quiet-Time; +- Max-Wartezeit; +- periodischen Full-Sync; +- Reparaturbedarf bei beschädigter lokaler Struktur. -Bestätigt wurden: +Der Shadow-Tree-Wechsel besitzt einen Rollback auf den vorherigen Baum, falls das Umschalten fehlschlägt. -- Ordnerfreigaben werden korrekt eingelesen; -- Einzeldateifreigaben werden als `file` erkannt und im Galerie-Root verlinkt; -- Orphan-Anlage und Orphan-Löschung funktionieren; -- physische neue Connector-Alben werden privat angelegt; -- der automatische Timer kann regulär laufen. +## Sicherheit -## Offener Test für 0.9.3.17 +- Nextcloud-Originale werden nicht gelöscht. +- Connector-Zugangsdaten werden verschlüsselt gespeichert. +- Wizard-Secrets bleiben serverseitig. +- Storage-Pfade werden validiert. +- SQL-View-Namen werden validiert. +- Piwigo-API ist versionsgebunden. +- Mutierende Admin-Aktionen verwenden Post/Redirect/Get, sodass Browser-Reloads sie nicht erneut ausführen. +- Self-Updates sind an einen konkreten Commit und SHA-256 gebunden. -Vor Abschluss des API-first-Blocks muss noch live geprüft werden: +## Noch offen -1. Plugin-Update auf `0.9.3.17`; -2. API-Key im NC Connector prüfen und speichern; -3. produktiver Lauf verwendet `bratonien.nc.syncProductive` erfolgreich; -4. Ordner- und Orphan-Sync bleiben unverändert korrekt; -5. gespeicherter Login-Fallback übernimmt bei absichtlich nicht nutzbarer API; -6. einmaliger Fallback funktioniert ohne Speicherung; -7. gelöschter Fallback wird vom Runtime-Lauf nicht mehr verwendet. - -## Sicherheit / Betriebsmodell - -- Nextcloud bleibt Eigentümer der Originaldateien. -- Der Connector löscht keine Originaldateien aus den Storage-Mounts. -- API- und Login-Zugangsdaten werden verschlüsselt gespeichert und nicht in das Repository geschrieben. -- Die API hat Vorrang, ist aber streng versionsgebunden. -- Benutzername/Passwort ist nur Fallback und kann dauerhaft, einmalig oder gar nicht verwendet werden. -- Neue Connector-Alben werden privat angelegt. - -## Bekannte offene Punkte - -Der NC Connector bleibt im Entwicklungsblock `0.9.3.x`. Nach erfolgreichem API-first-Livetest folgen insbesondere: - -- Bereinigung und Vereinfachung der Verbindungsverwaltung im Admin-UI; -- Remote-Nextcloud-Adapter; -- Entscheidung über verbleibende Legacy-/Migrationshilfen; -- weitere Komfortfunktionen für Status, Diagnose und Administration. +- vollständiger Remote-Nextcloud-Adapter ohne direkten PostgreSQL-/Storage-Zugriff; +- weitere Bereinigung alter Legacy-Migrationshelfer, sobald sie nicht mehr benötigt werden; +- weitere Endnutzer-Optimierung des Assistenten auf Basis realer Fehler- und Installationspfade. ## Repository-Fallback -Während der Entwicklung bleibt GitHub das führende Repository. Zusätzlich existiert auf dem privaten Gitea-System ein Pull-Mirror als Ausfall-/Fallback-Ebene. +GitHub bleibt das führende Repository. Das private Gitea-System dient weiterhin als Mirror/Fallback.