=== Bluesky Auto Poster ===
Contributors: gooloode
Donate link: https://gooloo.de
Tags: bluesky, atproto, social, auto post, social share, at protocol, microblogging
Requires at least: 6.0
Tested up to: 7.1.2
Requires PHP: 8.0
Stable tag: 2.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Automatisches Veröffentlichen von WordPress-Beiträgen auf Bluesky mit Rich-Text-Facets, Open-Graph-Vorschaukarten und Bild-Uploads.

== Description ==

**Bluesky Auto Poster** verbindet deine WordPress-Website nahtlos mit dem dezentralen Bluesky-Netzwerk (AT-Protokoll). Sobald ein neuer Beitrag veröffentlicht oder ein geplanter Beitrag freigeschaltet wird, publiziert das Plugin diesen automatisch in deiner Bluesky-Timeline.

Dank des vollständigen Refactorings in Version 2.1 bietet das Plugin höchste Sicherheit, moderne objektorientierte PHP-Architektur (kompatibel mit PHP 8.0 bis 8.4 und WordPress 7.1.2) sowie vollständige Unterstützung für Open-Graph-Tags, Link-Cards und Beitragsbilder.

### Hauptfunktionen
* **Vollautomatische Veröffentlichung:** Erkennt neu veröffentlichte sowie zeitgesteuerte Beiträge zuverlässig über moderne WordPress-Hooks.
* **Open Graph & Thumbnail-Unterstützung:** Erkennt automatisch das WordPress-Beitragsbild (Featured Image) oder Open-Graph-Meta-Tags und lädt das Bild als Blob auf den Bluesky-Server hoch.
* **AT Protocol Rich-Text Facets:** URLs und #Hashtags werden exakt mit UTF-8-Byte-Offsets erkannt und in anklickbare interaktive Links auf Bluesky umgewandelt.
* **Sichere Zugangsdaten:** Volle Unterstützung für Bluesky App-Passwörter – dein Hauptpasswort bleibt geheim.
* **Verbindungstest-Werkzeug:** Überprüfe deine Anmeldedaten und die Erreichbarkeit der Bluesky-XRPC-Server mit einem einzigen Klick im Administrationsbereich.
* **Datenschutz & Saubere Deinstallation:** Optionale Einstellung, um bei einer Deinstallation alle gespeicherten Optionen und Beitrags-Metadaten rückstandslos aus der Datenbank zu entfernen.
* **Entwicklerfreundlich:** Umfangreiches Debug-Logging (wp-content/bluesky-debug.log) bei aktiviertem WP_DEBUG.

== Installation ==

1. Lade den Ordner `bsky-auto-poster` in das Verzeichnis `/wp-content/plugins/` hoch (oder installiere die `.zip`-Datei über *Plugins -> Installieren -> Plugin hochladen*).
2. Aktiviere das Plugin über das Menü **Plugins** in WordPress.
3. Navigiere zu **Einstellungen &rarr; Bluesky Auto Post**.
4. Trage deinen Bluesky-Handle (z. B. `deinname.bsky.social` oder deine eigene Domain) und dein **App-Passwort** ein.
5. Klicke auf **Änderungen speichern** und teste die Verbindung über den Button **Test API Connection**.

== Frequently Asked Questions ==

= Was ist ein App-Passwort und warum sollte ich es verwenden? =
Ein App-Passwort ist ein anwendungsspezifisches Passwort, das du in deinem Bluesky-Konto unter *Einstellungen -> Privatsphäre und Sicherheit -> App-Passwörter* generieren kannst. Es gewährt dem Plugin Zugriff auf das Veröffentlichen von Beiträgen, ohne dass du dein Master-Passwort preisgeben musst.

= Funktionieren eigene Domains als Handle? =
Ja! Wenn du deine eigene Domain als Bluesky-Handle verifiziert hast (z. B. `gooloo.de`), trage einfach diese Domain im Feld "Bluesky Handle" ein.

= Werden geplante Beiträge (Scheduled Posts) ebenfalls veröffentlicht? =
Ja. Durch den Hook `transition_post_status` wird die Veröffentlichung zuverlässig angestoßen, sobald der WordPress Cron-Job den Beitrag von "Zukünftig" (future) auf "Veröffentlicht" (publish) setzt.

= Werden Beiträge mehrfach gepostet, wenn ich sie aktualisiere? =
Nein. Nach dem erfolgreichen Senden speichert das Plugin einen Post-Meta-Schlüssel (`_posted_to_bluesky`) mit der Bluesky-URI und dem Zeitstempel. Bei nachträglichen Bearbeitungen wird der Beitrag nicht erneut geteilt.

= Was passiert bei einer Deinstallation des Plugins? =
Standardmäßig bleiben deine Einstellungen in der Datenbank erhalten, damit bei einem erneuten Aktivieren nichts neu eingegeben werden muss. Wenn du die Option *"Beim Deinstallieren alle Daten löschen"* aktivierst, werden bei der Deinstallation alle Optionen und Metadaten restlos gelöscht.

== Screenshots ==

1. Einstellungen des Bluesky Auto Poster Plugins im WordPress-Adminbereich.
2. Systemdiagnose und Verbindungstest mit den Bluesky-XRPC-Servern.

== Changelog ==

= 2.1 =
* **Fix & Cleanup:** Beseitigung doppelter Formularanzeigen und Menüeinträge bei Upgrades von Legacy-Versionen durch automatische Conflict-Resolution (`cleanup_legacy_duplicate_menu`).
* **Versions-Bump:** Offizielles Release von Version 2.1.

= 2.0.0 =
* **Vollständiges Refactoring:** Umstellung auf moderne OOP-Architektur mit Strict Typing nach PHP 8.0 - 8.4 Standards.
* **Kompatibilität:** Getestet und voll kompatibel mit WordPress 7.1.2.
* **Sicherheit:** Lückenlose Absicherung aller Formulare mit WordPress-Nonces (`wp_verify_nonce` / `check_admin_referer`), strikte Rechteprüfung (`manage_options`) und gründliche Sanitization/Escaping.
* **Neu:** Option "Beim Deinstallieren alle Daten löschen" mit dedizierter `uninstall.php` zur rückstandslosen Datenbankbereinigung.
* **Neu:** Schnelleres und zuverlässigeres Handling von Vorschaubildern (WordPress Featured Images werden bevorzugt vor externem Scraping verarbeitet).
* **Neu:** Optimierte Berechnung von Rich-Text-Facets (UTF-8 Byte-Offsets für Links und Hashtags gemäß AT-Protocol-Spezifikation).
* **Neu:** Session-Caching via WordPress-Transients zur Reduzierung redundanter Authentifizierungsanfragen.
* **Neu:** Vollständige Internationalisierung (i18n) mit Sprachdateien für Deutsch (Du), Deutsch (Sie/formell), Englisch (US) und Englisch (UK).

= 1.0.0 =
* Erste Veröffentlichung des automatischen Bluesky-Posters mit OpenGraph-Unterstützung.

== Upgrade Notice ==

= 2.1 =
Behebt doppelte Einstellungsanzeigen bei Migrationen und bringt verbesserte Hook-Bereinigung. Bestehende Zugangsdaten werden nahtlos übernommen.