Part of the BBCode parity work (#398). Unblocks the real [mature] content gate.
Context
The BBCode spec's [mature] tag should display content only when the viewer has enabled mature content in settings. No such setting exists on User today (only showEmail, showLastSeen, show*Stats). In #398 Phase 1, [mature] renders as a plain collapsed <details> disclosure with no gate — the content still reaches the DOM, just hidden.
Ask
- Add
showMatureContent Boolean @default(false) to User (matches the existing show* convention).
- Settings UI toggle (stellar-ui).
- Wire the BBCode renderer's
ctx.viewer.showMature so [mature] omits the content server-side when off (renders a "mature content hidden — enable in settings" notice), and shows the disclosure when on.
Note for the renderer
This makes BBCode render viewer-dependent, so the render cache key must gain a :mature{0|1} variant dimension. #398 leaves a marked seam for exactly this.
Part of the BBCode parity work (#398). Unblocks the real
[mature]content gate.Context
The BBCode spec's
[mature]tag should display content only when the viewer has enabled mature content in settings. No such setting exists onUsertoday (onlyshowEmail,showLastSeen,show*Stats). In #398 Phase 1,[mature]renders as a plain collapsed<details>disclosure with no gate — the content still reaches the DOM, just hidden.Ask
showMatureContent Boolean @default(false)toUser(matches the existingshow*convention).ctx.viewer.showMatureso[mature]omits the content server-side when off (renders a "mature content hidden — enable in settings" notice), and shows the disclosure when on.Note for the renderer
This makes BBCode render viewer-dependent, so the render cache key must gain a
:mature{0|1}variant dimension. #398 leaves a marked seam for exactly this.