Files
eranos/src/components
mkfain 9fd585ebdd Moderator-curated featured organizations
Replace the hardcoded FEATURED_ORGANIZATION_AUTHORS allowlist with the
same NIP-32 label flow that curates featured campaigns: Team Soapbox
pack members publish kind 1985 labels in the agora.moderation namespace
tagging an organization's 34550:<pubkey>:<d> coordinate as featured,
hidden, or approved, and useFeaturedOrganizations folds those labels
into the /communities Featured shelf.

The campaign and organization label streams share a single namespace
and a single moderator pack — they're separated purely by which kind
prefix the 'a' tag carries. To keep that contract enforced in one
place, the constants, types, and folding logic are now in
src/lib/agoraModeration.ts; useCampaignModeration and the new
useOrganizationModeration both call foldModerationLabels with their
respective kind. The campaign hook's external surface
(AGORA_MODERATION_NAMESPACE, ModerationLabel, CampaignModerationData)
is preserved via re-exports so existing call sites don't move.

Moderators see a CommunityModerationMenu kebab overlaid on every
CommunityMiniCard exposing approve/unapprove, hide/unhide, and
feature/unfeature. Mounting reads moderation state once per page from
the shared TanStack cache, mirroring CampaignCard. Non-moderators see
no overlay (the menu returns null) and no card affordances change.

The 'My organizations' shelf intentionally ignores moderation — a
user's own founded, moderated, or followed organizations always render
regardless of label state. Only the Featured shelf consumes the
curation rollup.

The Featured grid is uncapped: moderators control how many orgs
surface by labeling, and ordering follows the recency of each
'featured' label so re-publishing bumps an org to the top.

NIP.md's 'Campaign Moderation Labels' section is renamed to 'Agora
Moderation Labels' and documents the kind-34550 coord form and the
'My organizations ignores moderation' rule.

Note: existing surfaced organizations will disappear from the shelf
until a moderator publishes featured labels for them.
2026-05-21 21:12:33 -05:00
..
2026-05-13 18:35:03 -05:00
2026-05-15 19:37:23 -07:00
2026-05-20 12:32:57 -07:00
2026-04-17 12:15:51 +05:45
2026-04-17 12:15:51 +05:45
2026-05-11 14:49:11 +07:00
2026-04-30 11:22:07 -05:00
2026-05-05 17:24:57 -05:00
2026-05-21 19:04:41 -05:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-16 09:03:45 -07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00
2026-05-11 14:49:11 +07:00
2026-05-18 10:43:49 -07:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-21 14:08:11 -07:00
2026-05-11 14:49:11 +07:00
2026-05-11 14:49:11 +07:00
2026-05-21 20:26:01 -05:00
2026-05-11 14:49:11 +07:00
2026-05-13 18:35:03 -05:00