Skip to main content

🔴 Massive Release v2.435.0

⭐⭐⭐ Complex • 28 commits • 329 files • +42,486 lines • −9,676 lines
Headline: In-app notification system with user inbox and admin controls, AI model configuration centralization with native web search, games asset inventory tooling for MCP chat, and challenge participant export for analytics.This release delivers in-app notifications end-to-end (backend + user UI + admin channel picker), a unified AI model configuration system replacing scattered settings, comprehensive asset inventory documentation for game builders via MCP, and challenge analytics export for campaign measurement.

What’s New

🔔 In-App Notifications System (Complete)

Real-time member notifications with desktop and widget support. Members see notification bells in the desktop sidebar and widget, open an inbox to read, and admins configure which notification types each community receives.

🤖 Centralized AI Model Configuration

Unified AI model registry replacing scattered configuration. Default model (moonshotai/kimi-k2.7-code-highspeed), provider routing, and reasoning level all in one place. Built-in native OpenAI web search for GPT-5.5.

🎮 Games Asset Inventory Tool

Comprehensive asset requirements documentation for every game type, discoverable via MCP. Guides AI chat and direct clients through image slots, generation workflows, color fields, and recommended models.

📊 Challenge Participant Export

Download complete participant lists for each challenge (names, completion times, points earned, badges, answers). CSV format ready for analysis, audience segmentation, or campaign ROI measurement.

💬 Chat Session Improvements

Enhanced chat interface with real-time image awaiting status, inventory-aware game creation, and simplified tool workflows.

Detailed Changes

📱 User App

  • In-app notification inbox with bell icon (navigation sidebar + wallet header)
  • Notification drawer slides up on bell click, shows all notifications with read/unread status
  • Mark as read individually or mark all as read in one action
  • Unread badge counter on bell icon with real-time updates
  • Widget notification bell in Shopify widget loyalty launcher (non-intrusive bell icon in loyalty-launcher)
  • Referral drawer theme fix — header colors now inherit from community theme instead of hardcoded colors
  • Challenge completion copy — shows “You’ve earned your reward!” when challenge is completed and reward is redeemable
  • Hydration-safe admin preview — defers iframe detection to effect hook, eliminates hydration mismatch when accessing admin-preview mode
  • Widget launcher flash elimination — theme loads before widget initializes, no more white flash on load
  • Challenge banner improvements — replaced placeholder copy for image-less challenge cards

⚙️ Admin App

  • Notification channel picker — configure which notification types each community receives (toggle-based channel selection)
  • Challenge participant export (CSV download) — full list with completion details, points earned, badges awarded, challenge answers
  • Bulk status change across all admin entity tables (challenges, rewards, actions, tiers) — select multiple items and change status in one action
  • Improved chat setup guidance — clearer onboarding flow for first-time chat configuration
  • Chat bubbles on widget preview — agent can now see chat context while viewing the live widget
  • Agent-driven preview — AI agent observes and controls the widget preview panel as part of chat workflow
  • Reward allocation tool improvements — card shows the reward → challenge link for context
  • AI Model Config UI — centralized display of default model, reasoning level, and available model options
  • Upgraded AI SDK from v6 to v7 — improved model management, better provider routing support
  • Tool result refactoring — cleaner, more modular chat tool output display

🔌 API

  • In-app notifications read API/me/notifications/unread-count (poll-based with 60-second interval)
  • In-app notifications list/me/notifications (paginated, filters by community)
  • Mark notification as read — single notification or bulk “mark all as read” by community
  • Notification delivery — fan-out system delivers notifications to the right users, respects admin channel configuration
  • In-app notification channel schema — storage model for notification channels, enables admin control over types
  • Referral revenue attribution fix — correctly attributes revenue to the code that referred the user, not just the code owner’s total
  • Analytics endpoints expanded for challenge participant export operations

🤖 MCP Server

  • Games asset_inventory operation — comprehensive tool returns asset requirements for each game type (scratch, spin, quiz, etc.)
    • Asset slots (image/color/sound required)
    • Generation guidance (AI model, prompt templates with placeholders)
    • Workflow steps for game creation
    • Brand asset vs AI-generated guidance
    • Color field mappings from brand palette
  • Enhanced image handling — improved status tracking for async image generation
  • Chat session artifacts — better tracking of generated assets during game creation
  • Games merge configuration — helper for combining user config with defaults
  • Schema validation — stricter validation of achievement updates, rejects field-less modifications
  • Receipt-scanning alignment — points calculation mode now matches API enum values
  • +201 direct-MCP tests across 26 test suites, covering:
    • Games asset inventory (189 test cases)
    • Brand memory integration
    • Image generation workflows
    • Analytics operations

🎮 Games

  • Scratch-card v2 branding — new Nudj-branded default images for scratch-card game
    • Updated background, card art, and product images
    • Maintains brand consistency across community games
  • Game configuration defaults — improved default values for new games
  • Widget integration improvements — better asset loading, theme-aware rendering

📦 Packages Updated

  • Models — notification channel schema, new game asset types
  • API Client — notification endpoints, analytics participant export
  • Database — notification storage collections, indexing for fast queries
  • Design System — i18n translations for notification UI (6 languages)

Per-App Changes

Features:
  • Notification inbox drawer with real-time updates
  • Notification bell (navigation + widget)
  • Mark read / mark all read actions
  • Unread badge counter
Fixes:
  • Referral drawer theme inheritance
  • Admin preview hydration safety
  • Widget launcher flash on load
  • Challenge completion messaging
  • Image-less challenge banner copy
Files: 36 changed (+1,404 lines, −308 lines)
Features:
  • Notification channel configuration
  • Challenge participant CSV export
  • Bulk entity status change
  • Chat bubbles on widget preview
  • Agent-controlled preview panel
  • Improved chat setup guidance
  • Centralized AI model configuration
  • AI SDK v7 upgrade
Fixes:
  • Reward allocation tool context links
  • Total earned XP/points in publish modal
  • Template filter group labels
  • Preview pane width (380px → 480px)
  • Tool result display refactoring
Files: 47+ changed
Features:
  • Notification read API (unread count, list, mark read)
  • Notification delivery system
  • Notification channel storage
  • Analytics challenge participant export
Fixes:
  • Referral revenue attribution per code
  • Engagement create options default
  • Achievement field validation
  • Receipt-scanning points alignment
Files: Multiple service + route updates
Features:
  • Games asset_inventory operation (823 lines)
  • Comprehensive asset slot documentation
  • Generation workflow guidance
  • Brand memory integration
  • Chat session artifact tracking
Fixes:
  • Image job status tracking
  • Receipt-scanning enum alignment
  • Achievement field validation
Files: 49+ changed (+3,597 lines)
Features:
  • Scratch-card v2 branded images
  • Enhanced widget integration
Files: 12 changed

Admin Highlights

  • Notification Channel Picker – Enable/disable specific notification types per community to reduce member notification fatigue
  • Challenge Participant Export – Download CSV with full participant list, completion times, points earned, and badges for analytics and audience segmentation
  • Bulk Status Change – Select multiple challenges, rewards, or actions and change status in one operation across all admin tables
  • Centralized AI Model Configuration – Default model, provider routing, and reasoning level all configured in one registry; no more scattered settings
  • Native OpenAI Web Search – GPT-5.5 now includes built-in web search capability for research-heavy chat sessions
  • Games Asset Inventory Tool – MCP operation documents every game type’s asset requirements, generation workflows, and recommended AI models
  • Chat Widget Preview Integration – Agent can observe and control the live widget preview while building games and challenges in chat
  • Improved Chat Setup Guidance – Clearer onboarding prompts and documentation for first-time chat configuration
  • Reward Allocation Context – View which challenges link to each reward without leaving the tool
  • Preview Pane Width Expansion – Increased from 380px to 480px for better workflow visibility

User Highlights

  • In-App Notification Inbox – Bell icon in navigation brings up all your notifications; mark read individually or clear all at once
  • Notification Bell on Widget – See your notifications instantly in the Shopify widget loyalty launcher without leaving the store
  • Real-Time Unread Count – Badge counter on the bell updates every 60 seconds so you never miss a notification
  • Improved Referral Drawer – Referral drawer colors now match your community’s brand theme instead of a generic color
  • Challenge Completion Confirmation – Clear confirmation message appears when you complete a challenge and your reward is ready to redeem
  • Faster Widget Loading – No more white flash when loading the Shopify widget; theme loads before the widget appears

Technical Notes

AI Model Configuration Registry

The new MODEL_DIRECTORY in model-constants.ts replaces scattered configuration across four files:
  • Single source of truth for model metadata (id, provider, gateway order, reasoning support)
  • Derived exports (KNOWN_MODELS, modelsThatSupportReasoning, getGatewayProviderOrder())
  • Central defaults: STATIC_DEFAULT_MODEL_API_IDENTIFIER and DEFAULT_REASONING_LEVEL
  • Environment override still supported via NEXT_PUBLIC_CHAT_AGENT_MODEL

Games Asset Inventory Structure

Each game type provides a typed GameAssetInventory with:
  • Asset slots (purpose, image size, format, transparency, generation model)
  • Prompt templates with brand-memory placeholders ({{brandName}}, {{primaryHex}}, etc.)
  • Color field mappings for runtime branding
  • Default sounds and odds
  • Workflow steps for game creation
  • Renderer-specific notes (e.g., scratch card portrait aspect ratio, cover-crop behavior)
This allows AI chat (via MCP) and direct clients to discover and follow optimal game creation workflows without reading docs.

Notification System Architecture

  • Backend: MongoDB collections for notifications, channel subscriptions, read status tracking
  • API: REST endpoints for list, unread count, mark read
  • UI: React Query for polling (60-second interval), real-time updates on read/unread actions
  • Feature gate: InAppNotifications flag controls visibility; anonymous users are excluded
  • Cache invalidation: Dual-invalidation on read mutations (both notification list and unread count)

AI SDK v7 Migration

  • Updated @ai-sdk/openai to v4, ai to v7
  • Provider-utils 5.x (shared across all providers — critical for provider-defined tools)
  • Improved web search tool integration (OpenAI web_search tool now passed through gateway)
  • Removed broken-code nitro fallback pattern for OpenRouter models

Usage Examples

Notification Unread Count Hook

const unreadCount = useInAppNotificationUnreadCount(communityId);
const badge = unreadCount > 0 ? <Badge count={unreadCount} /> : null;

Mark Notifications as Read

const { markRead, markAllRead } = useInAppNotificationMutations(communityId);

// Mark single
markRead(notificationId);

// Mark all
markAllRead();

Games Asset Inventory via MCP

const result = await mcp.callTool("games", "asset_inventory", {
  gameType: "scratch",
});

// Returns full asset slot documentation, generation prompts, workflows
const { assets, colorFields, workflow } = result.inventory;

Challenge Participant Export

Admin calls API directly:
const csv = await api.analytics.challenges.getChallengeUsersExport({
  path: { challengeId },
  query: { format: "csv" },
});
  • Gamification Core — Challenges, Rewards, Achievements
  • Leaderboards — Community rankings powered by XP
  • Theme System — Brand colors and styling (notification UI inherits theme)
  • AI Chat Agent — Uses games asset inventory for guided game creation
  • Widget — Shopify integration with notification support
  • Analytics — Challenge participant export feeds into campaign measurement

Breaking Changes

None. All features are backward compatible.
  • Notification feature is behind InAppNotifications flag (defaults to enabled)
  • Existing chat workflows unaffected by AI model configuration changes
  • Games asset inventory is a new MCP operation; no changes to existing game endpoints

Contributors

erek_d@me.com@erek_d@me.com15 commits • +26.5k / −3.7k lines

solicshop@gmail.com@solicshop@gmail.com7 commits • +1.0k / −750 lines

dch@wenudj.com@dch@wenudj.com3 commits • +3.3k / −290 lines

jamescockayne@jamescockayne2 commits • +11.7k / −5.0k lines

tomcarroll09@duck.com@tomcarroll09@duck.com1 commit • +76 / −1 lines

Release Stats

MetricValue
Total Commits28
Lines Added+42,486
Lines Removed−9,676
Files Changed329
Release Size🔴 Massive
Complexity⭐⭐⭐ (3 stars)

v2.435.0 deployed on July 9, 2026