v2.1.0
·
22 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- Comments submodule for the Blog module (#151):
Commentmodel withpost_id,parent_idthreading, optionaluser_id, guest author fields (author_name,author_email,author_url),content,status(pending/approved/spam/trash), andapproved_attimestamp; soft-deletablepost_commentsmigration with indexes for post, parent, status, and approved-at lookupsPostmodel gainscomments()(approved-only, newest-first) andcommentsIncludingUnapproved()relations, pluscomments_countandcomments_urlaccessors for visual-editor integration- REST endpoints under
/api/v1/comments— publicGET(index,show) returns the approved set, publicPOSTcreates apendingcomment for guests, andPUT/PATCH/DELETEare auth-gated CommentRequestform request with separatestore/updaterule sets and guest-vs-authenticated branchingCommentResourceAPI resource shaping the response payload — mirrors the shapeCommentResolverreads inartisanpack-ui/visual-editorto stamp_resolved*attributes onartisanpack/comment-*blocksCommentPolicywith hookable abilities and acomments.create.publicfilter that defaults to allowCommentFactorywithpending/approved/spam/trash/guest/forPost/replyTostates
- Public
POST /api/v1/commentsrate limiting —BlogServiceProvider::registerCommentsRateLimiter()registers athrottle:commentsnamed limiter that defaults to 10/min for guests (keyed by IP) and 60/min for authenticated users (keyed by user id). Both buckets are overridable via thecomments.rate-limit.guestandcomments.rate-limit.authenticatedhooks filters.
Security
- Public, unauthenticated
POST /api/v1/commentsis rate-limited by default (see Added) to keep guest commenters from bulk-inserting againstpost_comments.