> ## 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.

# Direct paths to more wins

> Released September 14, 2026

## 🔴 Release v2.535.2

⭐⭐⭐ Complex • 31 commits • 765 files • +13,949 / -91,746 lines

<Note>
  Campaign teams can now send members straight to a widget section or a specific challenge, reward, achievement, or game. Members also get a more rewarding claim moment, a launcher badge that includes unread notifications, smoother game detail pages, and fresher leaderboard progress.
</Note>

This release shortens the distance between a campaign message and the action you want a member to take. An email, button, or game screen can open the exact place in the embedded widget, even when the member needs to sign in first. The widget checks that the requested content belongs in that community and retries temporary lookups so members land in the right place.

Achievement claims now feel like a payoff. Members see a larger badge, a count-up for the points they earned, confetti, and a short completion animation. The launcher badge also counts unread inbox notifications, so members have one clear signal when something new is waiting.

Campaign teams get more dependable previews and community switching, while game detail pages use a smoother, image-matched layout by default. Leaderboards also pick up XP that arrived while a refresh was waiting, keeping rankings closer to the activity that produced them. Security and access-control hardening.

## What's new

* Open a widget section or a specific member item from a campaign button or link
* Turn achievement claims into a clear celebration with animated points and confetti
* Show claimable achievements and unread notifications in one launcher badge
* Create clean transparent badge artwork with supported AI image models
* Keep game visuals smooth and leaderboard XP current during busy activity

## For platform administrators

* **Public widget navigation** – Send members to a specific widget section or item from a campaign CTA, including challenges, rewards, achievements, and games.
  * Check: the campaign links or buttons that open your embedded widget
* **Current leaderboard distribution view** – Open a leaderboard's distribution page on the current period and load the selected leaderboard directly.
* **Reliable community switching** – Move between communities without an old selection being restored after a refresh or navigation.
* **Aligned preview panes** – Keep the phone preview positioned consistently across Brand Kit and other admin preview panels.
  * Check: the previews you use for mobile widget and theme review
* **Visible accessibility review** – Bring colour accessibility findings into view when a theme has contrast issues, with a responsive colour layout for narrower editors.
  * Check: light and dark theme colour editing when a contrast warning appears
* **Transparent AI artwork** – Generate PNG artwork with a real transparent background on supported ChatGPT ImageGen models, avoiding a second background-removal pass that can soften edges.
  * Check: a badge or achievement image generated through Ask Nudj

## For community members

* **Celebration claim modal** – See the achievement badge arrive at a larger size, watch the points count up, and get confetti when you claim.
* **Unified launcher badge** – See a single count for claimable achievements and unread inbox notifications, including after closing the widget.
* **Smoother game detail pages** – Open game details in the parallax layout by default, with a colour transition that matches the artwork while it loads.
  * Check: a branded game detail page on desktop and mobile
* **Fresh XP rankings** – See pending XP included in leaderboard results after concurrent activity settles.
* **Return to the action** – When enabled for your organisation, return to the action page after following an external-link action instead of losing your place.
* **Smoother sign-in handoff** – Keep your widget session on track when simultaneous sign-in requests arrive.

## Usage examples

### Open a specific place in the widget

Use the public embed API to connect a campaign button to the right member experience. Section panels do not need an item ID; item panels do.

```js theme={null}
window.nudj("open", { panel: "streak" });
window.nudj("open", { panel: "reward", entityId: "<24-character-id>" });
window.nudj("navigate", { panel: "challenge", entityId: "<24-character-id>" });
```

If the member is signed out, Nudj keeps the approved target and opens it after sign-in. If a section is disabled for the community, the request falls back to its view when one was supplied.

### Link a campaign CTA to a member's reward

Add a button to an email, campaign page, or authenticated game screen that calls `open` with a reward ID. Members can review the reward in the Spend view without first searching through the widget.

## Apps updated

<CardGroup cols={3}>
  <Card title="User App" icon="mobile">
    ✓ Updated – widget deep links, achievement celebrations, unread launcher counts, smoother game details, and external-action return flow
  </Card>

  <Card title="API" icon="server">
    ✓ Updated – leaderboard refreshes now adopt pending XP after a lease wait
  </Card>

  <Card title="Admin" icon="gear">
    ✓ Updated – dependable community selection, aligned previews, accessibility review, and current leaderboard distribution views
  </Card>

  <Card title="MCP Server" icon="robot">
    ✓ Updated – native transparent-background handling for supported AI image models
  </Card>

  <Card title="Website" icon="globe">
    No changes
  </Card>

  <Card title="Games" icon="gamepad">
    No changes
  </Card>

  <Card title="Shopify" icon="cart">
    No changes
  </Card>
</CardGroup>

## Detailed changes

<AccordionGroup>
  <Accordion title="Widget navigation and member journeys" icon="mobile">
    * Extended the public embed API so `open` and `navigate` can target widget views, sections, or individual challenges, rewards, achievements, and games.
    * Queued the latest navigation request until the widget is ready, then replayed approved targets after sign-in when needed.
    * Kept item lookups community-scoped and aligned with the lists members can actually see, including paginated achievements and transient lookup retries.
    * Fell back to the requested view when a target section is unavailable for the community, without prompting a signed-out member to authenticate for a destination that cannot open.
    * Returned members to the action page after configured external-link actions.
    * Kept the embed launcher badge in sync with both claimable achievements and unread inbox notifications, including when the panel closes.
    * Security and access-control hardening.
  </Accordion>

  <Accordion title="Achievement and game experiences" icon="trophy">
    * Reworked the achievement claim modal into a shared celebration with a larger image, badge glow, animated points counter, confetti, sound support, and a short exit animation.
    * Kept admin and link previews read-only while still showing the celebration treatment.
    * Made parallax the default game detail presentation, with smoother hero sizing, image-matched transition colours, brand-colour fallbacks, and lighter overlays while artwork loads.
  </Accordion>

  <Accordion title="Leaderboard and admin improvements" icon="server">
    * Adopted pending XP after a leaderboard refresh waits for another refresh owner, with one additional adoption attempt when XP arrives during snapshot creation.
    * Loaded the selected leaderboard configuration directly on its distribution page and defaulted the period selector to the current period.
    * Removed stale community restoration from the admin context so the selected community remains the one the current session requested.
    * Kept phone previews aligned across admin preview panes and automatically revealed contrast findings when theme colours need attention.
  </Accordion>

  <Accordion title="AI artwork and shared packages" icon="robot">
    * Sent native transparency settings to supported ChatGPT ImageGen endpoints and kept background removal for models that need it.
    * Preserved PNG output for transparent images so badge and achievement artwork keeps real alpha rather than a painted checkerboard.
    * Centralised the AI image model registry used by shared models, admin image flows, and MCP image generation.
    * Added tiered exploration achievement guidance and proof examples to the game integration documentation.
  </Accordion>

  <Accordion title="Platform maintenance" icon="check-circle">
    * Added a permanent benchmark community and repeatable seed data for testing query behaviour at large scale.
    * Limited development deployments to affected applications and added lighter local pull-request validation to shorten feedback loops.
    * Security and access-control hardening.
  </Accordion>
</AccordionGroup>

## Technical details

The widget navigation contract now carries an optional `view`, `panel`, and `entityId`. The loader queues one latest request before iframe readiness. The widget validates the target, checks community feature availability, applies the same visibility rules as its rendered lists, and preserves approved targets across sign-in. Item panels never claim, complete, or purchase anything as part of navigation.

Leaderboard reads now adopt pending XP after lease acquisition and retry adoption if XP lands between adoption and snapshot creation. The admin distribution page also reads a leaderboard configuration by its ID instead of loading a page of configurations and searching locally.

AI image generation now uses native alpha on supported ChatGPT ImageGen models and keeps the existing background-removal path for other models. Transparent output is mirrored as PNG. Shared model metadata keeps the admin picker and MCP tool aligned.

Internal performance work added a large benchmark community for query analysis and affected-app development deployments. Security and access-control hardening.

## Related features

* Embedded widget
* Widget deep links
* Achievement claims
* In-app notifications
* Community leaderboards
* Game detail pages
* AI image generation
* Game integrations

## Contributors

<CardGroup cols={4}>
  <Card href="https://github.com/DerekCounihan">
    <img src="https://github.com/DerekCounihan.png" alt="DerekCounihan" style={{borderRadius: '50%', width: 48}} />

    **@DerekCounihan**

    25 commits • +12,857 / -91,604 lines • 693 files
  </Card>

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

    **@dchnudj**

    3 commits • +573 / -69 lines • 10 files
  </Card>

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

    **@HienH**

    1 commit • +228 / -28 lines • 6 files
  </Card>

  <Card href="https://github.com/blankcode-alt">
    <img src="https://github.com/blankcode-alt.png" alt="blankcode-alt" style={{borderRadius: '50%', width: 48}} />

    **@blankcode-alt**

    1 commit • +137 / -27 lines • 6 files
  </Card>

  <Card href="https://github.com/nudj-changelog-bot%5Bbot%5D">
    <img src="https://github.com/nudj-changelog-bot[bot].png" alt="nudj-changelog-bot[bot]" style={{borderRadius: '50%', width: 48}} />

    **@nudj-changelog-bot\[bot]**

    1 commit
  </Card>
</CardGroup>

## Release stats

| Metric        | Value             |
| ------------- | ----------------- |
| Total Commits | 31                |
| Lines Added   | +13,949           |
| Lines Removed | -91,746           |
| Files Changed | 765               |
| Complexity    | ⭐⭐⭐ Complex (3/5) |

***

*v2.535.2 deployed on September 14, 2026*
