Personas have walls their followers write on
Owner decision of 2026-10-06 (G-0009, FEP-400e). A persona's actor names its wall (…/graffiti, sm:wall) and, in
Smithereen's privacySettings, that its followers may write on it. A public post that is not a reply, sent with the wall
as its target by an account following the persona, is hosted: the persona is notified, it reaches the persona's and its
followers' homes, and the followers' servers and the author's are told with Add{Note}. The persona deletes it with
DELETE /api/v1/statuses/:id, which sends Remove{Note}; Smithereen deletes the post then. The wall lists the persona's
public posts that start a thread and what was written on it.
Elsewhere: an account's Add{Note} on its own wall shows the post to its followers here as on that wall (privapub.wall on
the status), and its Remove takes it away. An Add or Remove naming a collection of the account's own server PrivaPub
does not know has its document read again first, at most hourly: accounts kept before walls were read had none.
Checked live: Smithereen 40 checks (G-0009 closed); GoToSocial and Mastodon unchanged (121).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
e0682fa868
commit
c47b6e5533
26 files changed
+582
-36
No files matched your search
@@ -72,7 +72,14 @@ namespace PrivaPub.Federation.Rendering
|
||||
["value"] = "schema:value",
|
||||
["webfinger"] = "https://purl.archive.org/socialweb/webfinger#webfinger",
|
||||
["lemmy"] = "https://join-lemmy.org/ns#",
|
||||
["postingRestrictedToMods"] = "lemmy:postingRestrictedToMods"
|
||||
["postingRestrictedToMods"] = "lemmy:postingRestrictedToMods",
|
||||
// Smithereen's, which it compacts what it reads by: an allowedTo stays a plain string, as it reads them
|
||||
["sm"] = "http://smithereen.software/ns#",
|
||||
["wall"] = new JsonObject { ["@id"] = "sm:wall", ["@type"] = "@id" },
|
||||
["privacySettings"] = "sm:privacySettings",
|
||||
["wallPosting"] = "sm:wallPosting",
|
||||
["wallPostVisibility"] = "sm:wallPostVisibility",
|
||||
["allowedTo"] = "sm:allowedTo"
|
||||
});
|
||||
|
||||
public static string Html(string markdown) =>
|
||||
@@ -128,6 +135,16 @@ namespace PrivaPub.Federation.Rendering
|
||||
["value"] = FieldValue(field.Value)
|
||||
}).ToArray())
|
||||
};
|
||||
// a persona's wall (FEP-400e, owner decision 2026-10-06): its followers write on it, everyone reads it
|
||||
if (actor.HasWall)
|
||||
{
|
||||
document["wall"] = actor.Wall;
|
||||
document["privacySettings"] = new JsonObject
|
||||
{
|
||||
["wallPosting"] = new JsonObject { ["allowedTo"] = new JsonArray(actor.Followers) },
|
||||
["wallPostVisibility"] = new JsonObject { ["allowedTo"] = new JsonArray(Public) }
|
||||
};
|
||||
}
|
||||
if (actor is { Kind: LocalActorKind.Group, IsCircle: false })
|
||||
{
|
||||
document["attributedTo"] = actor.Wardens;
|
||||
|
||||
Reference in new issue
Block a user