Replies a post's author approves (FEP-5624), checked live with PeerTube

PeerTube puts canReply on a video whose comments wait for approval, and answers each comment with ApproveReply. A
persona's reply to such a post now waits (privapub.approval: pending), its Create going to the author alone; the
author's ApproveReply, signed by the author and naming the post answered, lets it out to its audience with
replyApproval, and RejectReply leaves it ours. A null canReply (PeerTube's open comments) says nothing; an empty one
refuses. The PeerTube scenario holds a comment for review and approves it through PeerTube's API (28 checks).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-06 16:16:34 +02:00
1 parent 5d5f1d6909
commit a3a66b6db2
17 files changed
+256 -25

No files matched your search

+9 -1
View File
@@ -82,9 +82,17 @@ namespace PrivaPub.Models.Post
public InteractionRule LikePolicy { get; set; }
[BsonIgnoreIfNull]
public InteractionRule AnnouncePolicy { get; set; }
// our reply or boost of a remote post whose policy asks its author first, and the author's authorization once given
// a remote post's FEP-5624 canReply (PeerTube): who may reply (Manual), each reply then approved by its author with an
// ApproveReply or refused with a RejectReply; null when it states none
[BsonIgnoreIfNull]
public InteractionRule ReplyApprovals { get; set; }
// our reply or boost of a remote post whose policy asks its author first, and the author's authorization once given:
// GoToSocial's (ApprovalURI, sent as replyAuthorization), or FEP-5624's ApproveReply (ReplyApprovalURI, sent as
// replyApproval)
public ApprovalState Approval { get; set; }
public string ApprovalURI { get; set; }
[BsonIgnoreIfNull]
public string ReplyApprovalURI { get; set; }
public List<string> To { get; set; } = new();
public List<string> Cc { get; set; } = new();