# Phanpy Gepatchter Phanpy-Client (siehe `package.nix`, `0ff-space.patch`, `local-only.patch`) für `phanpy.0ff.space`, statisch ausgeliefert über `static-web-server` (siehe `../phanpy.nix`). Backend ist GoToSocial auf `social.0ff.space` (`../gotosocial.nix`). `package.nix` kopiert außerdem den gemeinsamen gepunkteten Light-/Dark- Hintergrund aus `hosts/globalServices/branding/0ff-space-background.css` in den Build und bindet ihn über `index.html` ein. Dadurch wird die Datei auch vom generierten Service Worker versioniert und gecacht. ## Community-interne Posts (nicht föderiert) `local-only.patch` fügt im Compose-Fenster eine „Local only"-Checkbox hinzu, die GoToSocials `local_only`-Parameter setzt. Damit ein Post innerhalb der Community sichtbar wird (also in der Local Timeline aller Instanz-Mitglieder auftaucht), aber nicht in den Fediverse föderiert wird, braucht es **beide** Einstellungen zusammen: - **Sichtbarkeit: Public** (nicht Followers-only/Private!) - **„Local only"-Checkbox: an** Grund: GoToSocial nimmt Posts nur dann überhaupt in die Public-/Local-Timeline-Caches auf, wenn `visibility == public` ist (`internal/surfacing/surfacetimeline.go`, `timelineStatusForPublic` — bei jeder anderen Sichtbarkeit wird sofort zurückgekehrt, unabhängig vom `local_only`-Flag). Ein Post mit „Followers-only" + „Local only" verhält sich also einfach wie ein normaler Followers-only-Post (sichtbar nur für die eigenen Follower) und taucht **nicht** in der gemeinsamen Local Timeline auf — das erfüllt nicht das Ziel „für die ganze Community sichtbar, aber nicht federated". Verifiziert über GoToSocials `flags`-Bitmaske in der `statuses`-Tabelle (`internal/gtsmodel/statusflags.go`): Bit 8 = `Local` (Autor ist lokaler Account), Bit 16 = `Federated` (wird über die Instanz hinaus verteilt). Ein normaler öffentlicher Post hat `flags = 24` (Local + Federated), ein korrekt verfasster „Local only"-Post hat `flags = 8` (nur Local, nicht Federated) — das per SQL auf pinix nachvollziehbar: `sudo -u postgres psql -d gotosocial -c "SELECT id, flags, visibility FROM statuses ORDER BY id DESC LIMIT 20;"`. ## Bekannter Fallstrick: Local-Timeline-Ansicht nach GoToSocial-Neustart Phanpys eingebaute Local-Timeline-Ansicht (`/p/l`, Menü oben rechts → „Switch to Local") kann nach einem `gotosocial`-Neustart leer bzw. auf einen einzelnen, sehr alten Post eingefroren wirken — auch wenn die Datenbank aktuelle, passende Posts enthält. Ursache vermutlich GoToSocials serverseitiger In-Memory-Cache für die Local-/Public-Timeline (`internal/cache/timeline`), der nach einem Neustart nicht sofort korrekt mit dem vollen Verlauf preloaded. Am 29.07.2026 beobachtet und durch erneuten `sudo systemctl restart gotosocial` auf pinix behoben. Falls das wieder auftritt: erst prüfen, ob die Datenbank tatsächlich aktuelle, lokale Public-Posts enthält (SQL oben), dann `gotosocial` neu starten.