Die Fediverse-Adresse einer Seite steht auf der Seite (v7.269.0) - #1413
Merged
Conversation
Eine Organisationsseite ist seit v7.254 ein ActivityPub-Actor: WebFinger löst
ihren Handle auf, sie hat ein Actor-Dokument, einen Posteingang und Follower auf
anderen Servern. Nur stand die Adresse auf keiner Seite, die ein Mensch liest —
gemeldet als "auf vutuv.de/vutuv finde ich nicht, wie der Fediverse-Account
dieses Profils ist". Ein Konto, dessen Adresse man nirgends sieht, kann niemand
abonnieren.
Die Seite trägt jetzt dieselbe Fediverse-Karte wie ein Mitgliedsprofil, am Fuss
der Hauptspalte, plus eine einzeilige Abkürzung dorthin in der Kopfkarte. Die
Abkürzung ist kein Beiwerk: beim Profil war genau sie der Unterschied zwischen
"steht da" und "wird gefunden".
DRY heisst hier zwei Dinge. Erstens rendert beides **eine** Komponente
(`FediverseComponents.follow_us_from_elsewhere/1`) mit denselben msgids — die
deutschen Sätze waren damit schon übersetzt und können zwischen den beiden
Seitenarten nicht auseinanderlaufen. Zweitens beantwortet **ein** Controller das
Formular: `RemoteFollowController` nimmt ein `%User{}` oder eine
`%Organization{}` und verzweigt nur dort, wo die beiden sich wirklich
unterscheiden — eine Seite kann nicht umgezogen sein, ihre Absage sagt "Seite"
statt "Profil", und eine Adresse, die auf diesem vutuv liegt, folgt der Seite
gleich hier.
Zwei Dinge fahren mit. Die Seiten-URL beantwortet jetzt ein ActivityPub-`Accept`
mit dem Actor-Dokument. Das ist, was Mastodon holt, wenn jemand die URL statt des
Handles einfügt — ohne das ist die Adresse auf der Karte auffindbar und die URL
daneben löst nicht auf. Und `detail_icon/1` ist von `VutuvWeb.UserHTML` in den
Baukasten gewandert: eine Seite, die kein Profil ist, soll für einen Globus nicht
das Profil-View importieren müssen.
Die Karte erscheint erst, wenn eine Seite Föderation eingeschaltet hat (weiter
aus voreingestellt). Sonst würde sie eine Adresse anpreisen, auf die WebFinger
mit 404 antwortet.
`mix gettext.extract --merge` hat beide neuen Sätze wieder fuzzy aus den
Mitglieds-Varianten befüllt ("Dieses Profil ist nicht im Fediverse", "diesem
Mitglied direkt hier folgen"). Beide sind von Hand ersetzt, und ein Test liest
die Karte mit deutschem Accept-Language.
Diesen Text hat ein KI-Agent in meinem Namen geschrieben, ungeprüft von mir. Die
Arbeit dahinter ist meine, nur das Aufschreiben habe ich delegiert.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR Eine Organisationsseite ist ein ActivityPub-Actor, zeigte ihre Adresse aber auf keiner Seite, die ein Mensch liest. Sie trägt jetzt dieselbe Fediverse-Karte wie ein Mitgliedsprofil — aus einer Komponente und über einen Controller.
Wo:
VutuvWeb.OrganizationLive.Show,VutuvWeb.FediverseComponents,VutuvWeb.RemoteFollowController,VutuvWeb.AgentDocs.OrganizationDoc.Jetzt: WebFinger löst
acct:<handle>@<host>auf, das Actor-Dokument steht, der Posteingang nimmt Follows an — und wer auf die Seite schaut, findet die Adresse nirgends. Gemeldet als "auf vutuv.de/vutuv finde ich nicht, wie der Fediverse-Account dieses Profils ist".Danach:
.md/.txt/.json/.xml) nennen die Adresse ebenfalls.Acceptmit dem Actor-Dokument (404/410, wenn sie nicht föderiert). Das ist, was Mastodon holt, wenn jemand die URL statt des Handles einfügt.DRY: eine Komponente (
follow_us_from_elsewhere/1) für beide Seitenarten, mit denselben msgids — die deutschen Sätze waren dadurch schon übersetzt. Ein Controller für beide Formulare:RemoteFollowControllernimmt%User{}oder%Organization{}und verzweigt nur, wo die beiden sich unterscheiden (eine Seite kann nicht umgezogen sein; die Absage sagt "Seite"; eine lokale Adresse folgt der Seite gleich hier).detail_icon/1ist dafür vonVutuvWeb.UserHTMLin den Baukasten gewandert.Zum Ausprobieren nach dem Deploy: die Karte erscheint erst, wenn eine Seite Föderation eingeschaltet hat — sonst würde sie eine Adresse anpreisen, auf die WebFinger 404 antwortet. Für vutuv.de/vutuv ist der Schalter unter
/organizations/vutuv/fediversenoch aus.Übersetzung:
mix gettext.extract --mergehat beide neuen Sätze wieder fuzzy aus den Mitglieds-Varianten befüllt ("Dieses Profil ist nicht im Fediverse", "diesem Mitglied direkt hier folgen"). Beide sind von Hand ersetzt; ein Test liest die Karte mit deutschemAccept-Language.20 neue Tests in
organization_fediverse_card_test.exs. Hot deploy, keine Migration. Version 7.269.0.Diesen Text hat ein KI-Agent in meinem Namen geschrieben, ungeprüft von mir. Die Arbeit dahinter ist meine, nur das Aufschreiben habe ich delegiert.