> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nudj.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Release v2.491.9

> Released August 20, 2026

## 🟠 Release v2.491.9

⭐⭐ Moderate Complexity • 5 commits • 61 files changed

<Note>
  **Leaderboard Configuration Hardening & Brand Refresh**

  This release hardens cumulative leaderboard safety by requiring explicit end dates before activation, improves error messaging across the platform, fixes cross-region admin access, and refreshes all Nudj brand assets with updated logos.
</Note>

## What's New

* **Cumulative Leaderboards Now Require End Dates** – Prevent indefinite running boards by requiring store owners to set an end date before activation
* **Improved Error Messaging** – Get specific, actionable feedback when leaderboard configuration fails
* **Cross-Region Admin Access Fixed** – Global admins can now correctly access organizations across all shard locations
* **Updated Nudj Branding** – Fresh logo assets across all platforms with improved visual consistency

## Apps Updated

<CardGroup cols={3}>
  <Card title="User App" icon="mobile">
    ✓ Updated - Brand assets refresh
  </Card>

  <Card title="API" icon="server">
    ✓ Updated - Leaderboard safety + admin access fixes
  </Card>

  <Card title="Admin" icon="gear">
    ✓ Updated - Brand assets refresh
  </Card>

  <Card title="MCP Server" icon="robot">
    ✓ Updated - Brand assets refresh
  </Card>

  <Card title="Games" icon="gamepad">
    ✓ Updated - Brand assets refresh
  </Card>

  <Card title="Shopify" icon="shopping-cart">
    ✓ Updated - Leaderboard configuration + error messaging
  </Card>
</CardGroup>

## Detailed Changes

<AccordionGroup>
  <Accordion title="Leaderboard Configuration Safety (NJ-1828)" icon="shield">
    **Impact**: Cumulative leaderboards now prevent indefinite running without distribution windows.

    **What Changed:**

    * Open/Cumulative leaderboards now **seed as Draft** instead of Live, preventing accidental activation without an end date
    * All new cumulative boards require an explicit **end date to be set before going live**
    * The Shopify app's leaderboard settings modal now surfaces API error details directly to users (e.g., "Open leaderboard requires an end date")
    * Updated leaderboard template names: "All Time XP" → "Cumulative XP", "All Time Challenges" → "Cumulative Challenges" for clarity
    * Enhanced test coverage for leaderboard edge cases (elapsed dates, legacy boards, draft states)

    **For Store Owners:**
    When creating a cumulative leaderboard in the Shopify admin, you'll be guided to set an end date. If you try to activate without one, you'll see a clear error message explaining the requirement.
  </Accordion>

  <Accordion title="Error Messaging Improvements" icon="message-square">
    **Impact**: Debugging leaderboard issues is faster with specific error context.

    **What Changed:**

    * Shopify app now extracts and displays human-readable error messages from the API instead of generic failures
    * Admin token rejection now logs the specific reason (e.g., "expired token", "invalid signature") with contextual details for faster troubleshooting
    * Proper HTTP status codes are now preserved through error responses for accurate monitoring and retry logic
  </Accordion>

  <Accordion title="Cross-Region Admin Access (NJ-2114)" icon="globe">
    **Impact**: Global admins can seamlessly work across organizations in different regions.

    **What Changed:**

    * Fixed a regression where global admin users accessing organizations in different shard locations would be incorrectly rejected
    * Admin token authentication now correctly resolves users regardless of which region their record is stored in
    * Added regression test coverage for cross-region admin access patterns
  </Accordion>

  <Accordion title="Brand Assets Refresh (NJ-2119)" icon="palette">
    **Impact**: Cohesive, up-to-date Nudj branding across all customer-facing surfaces.

    **What Changed:**

    * Updated Nudj logo assets across all applications:
      * Admin panel (default logo, light/dark icon variants)
      * User app (favicon, logo variants)
      * Shopify app (icon variants, FAB assets)
      * Games and storybook (brand assets)
      * Marketing site and documentation
      * API public assets
    * Updated favicon across docs site and user app
    * Consistent branding across all properties with improved visual clarity
  </Accordion>

  <Accordion title="CI/Infrastructure" icon="gear">
    **NJ-2089**: Improved integration test concurrency scoping per PR/ref to prevent test flakiness from parallel runs in shared environments.
  </Accordion>
</AccordionGroup>

## For Store Managers

### Leaderboard Configuration Updates

When you create a new **Cumulative leaderboard** (one that accumulates XP/challenges with no reset):

1. **It starts in Draft mode** – You must configure it before activating
2. **Set an end date** – When do you want this leaderboard to distribute prizes? (e.g., "December 31, 2026")
3. **Activate when ready** – Once an end date is set, you can move it to Live
4. **Clear error messages** – If something fails, you'll see exactly why (e.g., "Open leaderboard requires an end date")

**Why this change?** Cumulative leaderboards without end dates create a support burden — they accumulate indefinitely and never distribute prizes. This ensures every cumulative board you create has a clear payoff date.

### Better Error Feedback

When a leaderboard configuration fails in the Shopify app, you'll now see the specific reason instead of a generic error, making it faster to fix.

## For Shopify Stores

* **Cumulative leaderboards are safer** – You'll be guided through setting an end date when creating one
* **Widget displays updated branding** – Fresh Nudj logos across the storefront widget
* **Clearer setup guidance** – Error messages now explain exactly what's needed to activate a leaderboard

## Contributors

<CardGroup cols={4}>
  <Card>
    <img src="https://github.com/hienhang@hotmail.co.uk.png" alt="HienH" style={{borderRadius: '50%', width: 48}} />

    **HienH**

    1 commit • +58/-3 lines
  </Card>

  <Card>
    <img src="https://github.com/solicshop@gmail.com.png" alt="Mo" style={{borderRadius: '50%', width: 48}} />

    **Mo**

    1 commit • +41/-56 lines
  </Card>

  <Card>
    <img src="https://github.com/tomcarroll09@duck.com.png" alt="Tom Carroll" style={{borderRadius: '50%', width: 48}} />

    **Tom Carroll**

    1 commit • +1050/-54 lines
  </Card>

  <Card>
    <img src="https://github.com/dch@wenudj.com.png" alt="DCH" style={{borderRadius: '50%', width: 48}} />

    **DCH**

    1 commit • +4/-4 lines
  </Card>
</CardGroup>

## Release Stats

| Metric        | Value       |
| ------------- | ----------- |
| Total Commits | 5           |
| Lines Added   | +1,436      |
| Lines Removed | -118        |
| Files Changed | 61          |
| Complexity    | ⭐⭐ Moderate |

***

*v2.491.9 deployed on August 20, 2026*
