PostAlerts now takes view: 'expanded' | 'compact' (defaulting to
compact) instead of a raw pill size, mapping to lg/sm internally.
The additional labels pill only renders in expanded views, so feeds
and replies skip the label computation entirely; the thread anchor
is the one expanded surface.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The additional labels pill can surface both post and account labels,
so the content-type dialog now uses post-oriented copy and flags
account-level labels with a per-label admonition. Include the label
uri in the list key so an account and post label sharing val and src
do not collide. Reword the equivalent ModerationDetailsDialog
admonition from "moderation" to "label".
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
PostAlerts and LabelsOnMe carried byte-for-byte copies of the same
filter excluding system labels and the user's own bot self-label.
Consolidate into one helper in lib/moderation so the two surfaces
cannot drift.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The compact "+n" pill text is too terse to serve as the button's
accessibility label. LabelBase now takes an optional cta prop for
the visible text, defaulting to label, and the additional labels
pill announces "n labels applied to your post" regardless of which
visual variant renders.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Move the early return below the additional labels computation so the
pill renders on the author's own post even when no other moderation
is visible - it may be their only entry point to appeal labels on
their content. When no other pills precede it, spell out "n labels
applied" instead of the "+n" continuation syntax.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Apply the same system-label and self bot-label exclusions as
LabelsOnMe when computing the additional labels list, and do it in
the parent so the render gate is reliable. AdditionalLabels becomes
purely presentational.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Dedup now requires val AND src AND uri to all match, so distinct
labels sharing a val (two labelers on one post, account vs post
labels from one labeler) are no longer dropped
- Include modui.blurs in the dedup so blur-routed labels are not
double-surfaced by ContentHider and the pill
- Only compute additional labels when the viewer is the post author,
since the pill opens the labels-on-me appeal flow
- Type the merged label list and hoist loop-invariant work out of
the filter
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Labels on your own posts previously rendered twice: once as normal
label chips and again as an ominous "1 content label" pill whose only
purpose was reaching the appeal dialog. Move the Appeal button into
ModerationDetailsDialog (shown only when the label targets your own
account or content and was not self-applied), extract AppealForm into
its own module, and remove the redundant per-post pill. The
account-level pill on the profile header is unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>