Skip to content

Feat: Comments Plugin#92

Open
olliethedev wants to merge 100 commits intomainfrom
feat/comments-plugin
Open

Feat: Comments Plugin#92
olliethedev wants to merge 100 commits intomainfrom
feat/comments-plugin

Conversation

@olliethedev
Copy link
Collaborator

@olliethedev olliethedev commented Mar 14, 2026

Summary

Type of change

  • Bug fix
  • New plugin
  • Feature / enhancement to an existing plugin
  • Documentation
  • Chore / refactor / tooling

Checklist

  • pnpm build passes
  • pnpm typecheck passes
  • pnpm lint passes
  • Tests added or updated (unit and/or E2E)
  • Docs updated (docs/content/docs/) if consumer-facing types or behavior changed
  • All three example apps updated if a plugin was added or changed
  • New plugin: submission checklist in CONTRIBUTING.md completed

Screenshots

Screenshot 2026-03-14 at 4 07 33 PM

Note

Medium Risk
Adds a new first-party comments plugin (new API endpoints, client routes, and example wiring) which affects moderation/access-control surfaces and requires careful review of default security hooks. CI/e2e changes are low risk but may impact test runtime and artifact naming.

Overview
Introduces a new Comments plugin with threaded replies, likes, editing, moderation UI routes, and a “My comments” page, plus public exports/CSS and version bump to @btst/stack@2.8.0.

Updates all three example apps to register the comments backend/client plugins, import plugin CSS, embed CommentThread via new blog/kanban slot overrides, and adds PATCH support to the framework API handlers.

Expands Playwright coverage with smoke.comments.spec.ts, adds per-framework e2e:smoke:* scripts, and changes the GitHub Actions E2E workflow to run a framework matrix in parallel with per-framework concurrency groups and artifacts; docs are updated to describe the new plugin and the per-framework E2E workflow, plus minor CLI/install doc tweaks.

Written by Cursor Bugbot for commit 97b2b01. This will update automatically on new commits. Configure here.

olliethedev and others added 30 commits March 12, 2026 16:09
…rePost hook, enhancing security and preventing client-side ID manipulation
…ormalizing parentId, ensuring accurate cache targeting
…rify access control for comment list and count requests
…ST response includes resolvedAuthorName and handling undefined values in getInitials function
…ies after page refresh, ensuring correct server-side handling of currentUserId
status: "approved",
currentUserId: params.currentUserId,
}).queryKey;
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reply optimistic update targets wrong cache key

Medium Severity

The getListKey helper in usePostComment constructs a reply-list cache key without passing offset, so commentsListDiscriminator defaults to offset: 0. Meanwhile, RepliesSection uses useComments with offset: replyOffset, which can be 20, 40, etc. after clicking "Load more replies." When a user posts a reply while viewing a non-first page of replies, the optimistic update and onSuccess replacement both target the offset: 0 cache entry — not the one the component is subscribed to. Since onSuccess deliberately skips invalidateQueries for replies, the new reply is silently invisible until the user collapses and re-expands the section.

Additional Locations (1)
Fix in Cursor Fix in Web

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Comments Plugin

1 participant