Skip to content

Community Plugin — Breaking Changes

This project is pre-production. There are no external consumers and no deprecation cycles. This page is a bullet-point list of breaking changes aimed at internal consumers updating against main.

  • Notification entity no longer exists in slingshot-community.
  • Routes previously at /community/notifications/* are gone.
  • Notification delivery is now handled entirely by @lastshotlabs/slingshot-notifications.
  • createNotificationSseConfig() helper is deleted — use slingshot-notifications SSE route.
  • Import ContentFormat from @lastshotlabs/slingshot-core instead.
  • Values: 'plain' | 'markdown'. The 'rich' option was removed.

scoringFn / rankingFn superseded by scoring

Section titled “scoringFn / rankingFn superseded by scoring”
  • The declarative scoring config block replaces scoringFn for most use cases.
  • scoringFn and rankingFn are no longer supported as inline callbacks on community config.
  • The listByContainerSorted operation’s sort presets (new, active, hot, top, controversial) replace custom rankingFn usage in list routes.
  • tenantResolver is removed from CommunityPluginConfig; tenant scoping now comes from the standard Slingshot request context.
  • autoModerationHook is removed from CommunityPluginConfig; use declarative AutoModRule records instead.
  • adminGate is removed from CommunityPluginConfig; moderator/admin access is handled through the standard permission model.
  • Thread and Reply now include: mentions, broadcastMentions, mentionedRoleIds, attachments, embeds.
  • Thread adds: pollId, solutionReplyId, solutionMarkedAt.
  • Reply adds: quotedReplyId, quotePreview.

The following entities were added. If you are syncing a running database, add the corresponding tables / collections:

  • Tag, ThreadTag
  • ContainerSubscription, ThreadSubscription
  • UserMute, Bookmark
  • AutoModRule, Warning, AuditLogEntry
  • ContainerInvite

threads list route — dataScope auth required

Section titled “threads list route — dataScope auth required”

GET /community/threads and GET /community/threads/:id use dataScope: { field: 'authorId', from: 'ctx:actor.id' }. The canonical binding is ctx:actor.id. Ensure your auth middleware (or test harness) sets the actor before the route handler runs, even on auth: 'none' routes.