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 — Planned
- Federation (ActivityPub bridge,
acct:[email protected]identifiers) - Personas UI (picker in composer, per-persona follower graph)
- Guild system (
canProposeGuildenabled, group knowledge spaces) - Per-bounded-context Postgres schemas (identity/interests/...)
- pgvector semantic search (interest embeddings, post similarity)
- Centrifugo real-time messaging delivery (replaces polling)
- ActivityPub inbox/outbox for interoperability
- Geo-aware discovery (map view, city-level matching)
- Extended interest catalog (depth-4 and depth-5 nodes)
- Automated moderation (ML-assisted report triage)