Changelog
Wave 1 — Alpha A (Launched May 2026)
Wave 1 builds the core social-knowledge platform: identity, interests, content, reputation, and economy.
Identity & Onboarding
- ✅ Invite-only registration flow (REG-XXXXXX codes)
- ✅ Invite code reservation (30-min hold) + consumption in single transaction
- ✅ JWT auth (access + refresh tokens, rotating refresh, 7d/15m expiry)
- ✅ Password reset via email (1h token, always returns 200 to prevent enumeration)
- ✅ Account self-deletion (GDPR — anonymises PII in single transaction)
- ✅ User profile edit (name, username, bio, avatar, city, country)
- ✅ Personas (max 5 per user, default "Main", accent color tokens)
- ✅ Invite quota formula:
clamp(5 + bonusByRep + bonusByAge, 5, 30)(replaces flat cap)
Interests
- ✅ 3-level interest catalog (L1 categories, L2 sub-interests, L3 deep-interests)
- ✅ UserInterest with depth (1..5: Curious→Lifework) + expertise (1..5)
- ✅ Onboarding drill-down flow (interests-1/2/3 screens)
- ✅ Interest accent colors (
ink | gold | sage | coral | cyan | plum) - ✅ Rollup: reputation propagates to parent interests (50%/25%/12%...)
AI Reflection
- ✅ 5-question reflection session (scripted + Anthropic backends)
- ✅ Interest mapping from transcript (keyword + LLM confidence scoring)
- ✅ AssistantSuggestion → apply-suggestions → UserInterest
- ✅ Letter-rain animated topic selector (Reanimated spring)
- ✅ AI content enhancement endpoint (
POST /ai/enhance-post) - ✅ Session history with resume capability
Social
- ✅ Circles with 4 built-in kinds + custom (general/family/work/inner/custom)
- ✅ Bidirectional consent: invitation flow (pending→accepted/declined/revoked)
- ✅ Circle invitations with deep-link notification
- ✅ Follow graph (unidirectional)
- ✅ User mute + block
- ✅ ConnectionIntent (networking/friends/romantic/mentor/mentee/collab)
- ✅ Discovery candidates ranked by shared interest count
- ✅ Mentor matching (expertise gap filter)
- ✅ People directory with
isFollowingfield
Posts
- ✅ 7 formats: note, essay, photo, video, quote, thread, repost
- ✅ 3 visibility levels: public, circles, inner
- ✅ Content depth 0..5 (surface → thesis)
- ✅ Primary interest + multi-interest tagging (up to 5)
- ✅ Tagged comments: reaction/reply/criticism/contribution (differential rep)
- ✅ Reactions (heart/spark) + bookmarks + views counter
- ✅ Scheduled publishing (cron-based,
publish_at+scheduled_emitted_at) - ✅ Soft delete + moderator hide (separate
deleted_at/hidden_at) - ✅ Post series (ordered episodes with navigation + follow)
- ✅ Post pinning (max 3 per profile)
- ✅ Journalism tag (rep ≥ 20 gate)
- ✅ Co-authorship (max 4, 90% cap, invitation flow)
- ✅ Post boost (×1.5/24h for 10 mana, ×2.0/48h for 25 mana)
Reputation
- ✅ Per-interest only (no global karma) — append-only ledger + materialised snapshot
- ✅ Events: post.contributed (+3), reply.reply (+1), reply.criticism (+2), reply.contribution (+5), reaction.received (+1), bookmark.received (+1), repost.received (+1), invite.used (+3), onboarding.bootstrap (+5 per L1 interest)
- ✅ Level names: Curious (0) → Reader (10) → Practitioner (30) → Adept (50) → Master (70) → Lifework (90)
- ✅ Peer voting: ±1 per interest, sybil dampening (
weight = min(3, sqrt(rep/10))), 0 below rep 5 - ✅ Vote weight prevents alt-account manipulation
- ✅ Reputation appeals (submit, admin resolve with optional delta restoration)
- ✅ Level-up milestone notifications
Economy
- ✅ EmojiWallet (50 starter mana, +5/day regen capped at 50)
- ✅ 8 emotions: love, awe, joy, curiosity, gratitude, insight, calm, courage
- ✅ 6 tiers: Spark (1), Wave (3), Storm (10), Surge (25), Tempest (50), Nova (100 mana)
- ✅ Tier rep gates: Storm ≥ 10 rep, Surge ≥ 20, Tempest ≥ 35, Nova ≥ 50 (in post's interest)
- ✅ Append-only EmojiPayment ledger (reversals = new row)
- ✅ Co-author mana split at payment time (atomic transaction)
- ✅ Feature-gated:
feature_flags.key = 'emoji-pay'
Notifications
- ✅ 26 notification kinds (in-app + Expo push + daily email digest)
- ✅ Centrifugo real-time channel delivery
- ✅ Per-kind opt-out + per-channel opt-out (push/email/inApp)
- ✅ 1h rollup collapse ("N people reacted to...")
- ✅ Milestone notifications: post hit 5/15/50 reactions
Messaging
- ✅ DM scoped to shared-circle members (privacy gate)
- ✅ Group conversations (max 50 members)
- ✅ Message reactions (emoji, 1–8 graphemes)
- ✅ Read receipts (
lastReadAt) - ✅ Per-conversation mute
Contribution
- ✅ Append-only ContributionEvent ledger + snapshot
- ✅ Score deltas: post_created (+10), reply_created (+3), reaction_given (+1), bookmark_given (+1), emoji_pay_sent (+2)
- ✅ Invite-tree inheritance: 50%/25%/10% to ancestors
Wiki
- ✅ WikiEntry versioned per interest
- ✅ WikiProposal with community voting
- ✅ Auto-approve at netVotes ≥ 3
- ✅ Rep gate: min 5 rep in interest (or 20 total) to propose/vote
Access
- ✅ AccessMatrixService: canVoteWiki, canMentor, canModerate, canProposeGuild, canPostJournalism
- ✅
GET /access/mecapabilities endpoint - ✅
@RequiresRepdecorator +ReputationGuard
Admin Panel
- ✅ Dashboard with platform metrics
- ✅ User management (ban/unban, role assignment)
- ✅ Invite code management
- ✅ Content moderation (hide/unhide posts + replies)
- ✅ Report queue
- ✅ Reputation management + peer vote moderation + appeals
- ✅ Economy wallets + payment ledger
- ✅ Audit log (append-only)
- ✅ Feature flags UI
- ✅ Broadcast notifications
- ✅ Wiki proposals moderation
- ✅ Interest catalog management
- ✅ Global search
Security
- ✅ CORS: never reflect with credentials
- ✅ Throttling per-route (brute-force, enumeration prevention)
- ✅ Refresh tokens rejected at access guard
- ✅ Email stripped from public post/circle serialisers
- ✅ SSRF blocked on link-preview
- ✅ Dev media sink gated to
NODE_ENV !== 'production'
Wave 2 — Complete (shipped)
The full Wave 2 set is live: AI mood filter + filter presets (capture/restore), filter transparency ("why you see this"), persona switcher in composer + tappable reputation card, mana boost amplifying For-you reach, contribution score (separate ledger from reputation), multi-interest tagging (PostInterest, ≤5), AI content enhancement in the composer, and Wiki MVP (versioned entries + community proposals).
Shipped since Wave 1 (newest first)
2026-06-13
- ✅ Docs refresh: landing/overview + new module pages (groups, guilds, federation, videos, content-contexts, media, invite-tree)
2026-06-10
- ✅ Mobile native build 1.3.0 → 1.4.0:
expo-imagewith disk+memory cache (kills avatar re-fetch flicker), full a11y sweep (217 props across 62 screens), ADR-009 draft (legalize Postgres FKs toUseras the single cross-context exception) - ✅ Mobile audit fixes: dark
ErrorBoundary, keyboard insets, themed palettes - ✅ Deep audit (2026-06-08) backend fixes: reputation leaderboard now
JwtAuthGuard(was anonymous), guild-treasuryFOR UPDATElock (TOCTOU overdraw),/identity/refresh@Throttlecap,ReputationSnapshot(interestId, value)covering index, groups standings viagroupBy(was in-memory), messaginglistMine()bounded withtake, dev media PUT validates UUID basename, invite-tree ISOcreatedAt
2026-06-07 — 06-08
- ✅ Circle-invite visibility on both sides: recipient-side inline Confirm / Decline (notification
payload.invitationId) + profile banner; sender-side pending signal, "Invitations sent", "Circles you're in" (GET /circles/me/pending/:userId,GET /circles/memberships/me) - ✅ Self-quote and self-repost rejected; quote sheet lifted above keyboard; active-filter signal
- ✅ Dark mode + dark-theme legibility pass (accent chips, theme-aware wordmark, hero glow, frosted dock, floating module row, feed card)
- ✅ Unified MediaCard (video/audio share PostCard chrome), modern design foundation, shared EmptyState + Skeleton
- ✅ Discovery: video engagement block in the unified stream (reactions/replies/shares + viewer state)
- ✅ Polls (single-choice on posts), GDPR data export (right-to-access), presence (online / last-seen), 30-day creator trend chart, screen-reader labels
- ✅ Admin: in-app moderation for groups & guilds + full member / request / proposal management (kick, expel, approve/reject applications, force-close proposals)
- ✅ Education: true-3D knowledge map, flashcard quiz/duel mode
2026-06-04 — 06-06
- ✅ Federation v1–v3 (ActivityPub bridge, ADR-008): read-side, write-side (inbox, signatures, delivery), inbound follow + remote post reads
- ✅ Semantic search & connection recs: pgvector embeddings (
text-embedding-3-small), 40 % semantic feed re-rank (graceful no-op without key), centroid-ANN "people you may know" - ✅ Wave 3-6 content contexts: events, debates, problems, courses, projects, marketplace (offerings + mana escrow), videos (#VideoVisit social layer), audio posts — all in the unified Discover stream
- ✅ Guild treasuries + admin content-oversight surface (8 UGC kinds), unified create menu, interest content-type tabs
- ✅ Feed: AI mood filter, attention nudge, filter transparency, mana-boost reach, scrollable Discover tabs
- ✅ Video pipeline: custom in-app player, on-device compression, viewability-managed playback, 200 MB cap
2026-05-29 — 06-03
- ✅ Guilds Inc1–3 (schema, service, governance, rep-weighted voting) + Groups Inc1–3 (invite flow, ownership transfer, rep-weighted standing)
- ✅ Education E1–E5 (courses, lessons, 3D map, wiki bridge, flashcards), #Talent + #Attention boards, #Art profile emblems
- ✅ Admin: Groups + Guilds moderation tabs, user personas on detail page
- ✅ Marketing landing site + privacy page at rgls.uk