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

# v2.469.4

> Released August 4, 2026

## 🔴 Massive Release v2.469.4

⭐⭐⭐ Complex • 21 commits • 503 files

<Note>
  Nudj v2.469.4 brings a major internationalization upgrade with a redesigned translation editor that makes managing multi-language content significantly faster, plus a unified image editor now available to all users. We've also hardened widget security and embedded script reliability, and built a comprehensive E2E testing infrastructure to ensure platform stability going forward. All the plumbing you don't see, and all the tools you do.
</Note>

## What's New

### For Platform Administrators & Community Managers

* **Redesigned Translation Editor** – New translator-friendly interface with improved filtering, CSV import/export, section organization, and real-time translation status tracking for managing community-wide multi-language content at scale
* **Unified Image Editor Now Available Everywhere** – The enhanced image editor with crop, refine, and advanced controls is now the standard for all asset uploads across challenges, rewards, and community branding
* **Persistent Community Card Preferences** – Admin dashboard now remembers your card visibility preferences across sessions, keeping your workspace organized exactly how you left it
* **Auto-Refreshing Admin Navigation Counts** – Challenge and reward counts in the navigation automatically update when you create new entities via the AI assistant, eliminating manual refreshes
* **Shopify Plan Handle Flexibility** – Accept Shopify plan IDs with or without the `plan_` prefix, reducing integration friction for merchants with different plan naming conventions

### For End Users & Widget Integrations

* **More Reliable Widget Embedding** – Embed.js now includes a watchdog that detects and recovers from initialization timeouts, with improved hash-trigger normalization for cleaner URL handling
* **Enhanced Widget Security** – Widget frame-ancestors policy is now dynamically derived from your configured allowed domains, with improved session cookie handling for iframe authentication scenarios
* **Secure OAuth in Widget Context** – Fixed popup window behavior to prevent unintended redirects after OAuth callbacks within the widget frame

## Apps Updated

<CardGroup cols={3}>
  <Card title="User App" icon="mobile">
    ✓ Updated - 8 changes
  </Card>

  <Card title="API" icon="server">
    ✓ Updated - 6 changes
  </Card>

  <Card title="Admin" icon="gear">
    ✓ Updated - 12 changes
  </Card>

  <Card title="MCP Server" icon="robot">
    ✓ Updated - 2 changes
  </Card>

  <Card title="Design System" icon="palette">
    ✓ Updated - 1 change
  </Card>

  <Card title="Games" icon="gamepad">
    ✓ Updated - 1 change
  </Card>
</CardGroup>

## Detailed Changes

<AccordionGroup>
  <Accordion title="User App" icon="mobile">
    * **Embedded Script Reliability**: Added ready-signal watchdog to embed.js that detects initialization timeouts and recovers gracefully, preventing blank widget states
    * **Security Improvements**: Fixed OAuth popup window lifecycle to prevent unintended redirects after callback within widget frame
    * **Session Cookie Cross-Site**: Improved NextAuth session cookie handling when running inside widget iframe (SameSite attribute handling)
    * **Frame-Ancestors CSP**: Widget Content Security Policy now dynamically derives allowed parent domains from community configuration instead of hardcoded values
    * **Hash Trigger Normalization**: Improved hash-based triggers in embed.js to handle leading '#' character consistently
    * **Card Detail Persistence**: Hidden card details on dashboard now persist across sessions
    * **Cache Invalidation**: Platform config cache properly invalidates on publish
  </Accordion>

  <Accordion title="API" icon="server">
    * **Language Config Management**: New mutation handler and validation utilities for platform language configuration updates
    * **Language Status Tracking**: Improved language last-updated timestamp tracking and deduplication of reviewed translation keys
    * **Development Fallbacks**: Dev-only localhost fallback for organization resolution in test environments
    * **Language Utility Functions**: New helpers for language validation, merging, and matching across updates
    * **Admin Language Endpoints**: Enhanced admin language endpoints with improved validation and status reporting
  </Accordion>

  <Accordion title="Admin" icon="gear">
    * **Redesigned Translation Editor**: Complete UI overhaul for the Edit Translations page with new components for translation rows, section lists, sticky headers, toolbar controls, CSV import/export, and translation status indicators
    * **Translation Filtering**: Added advanced filtering by translation status, missing keys, and section organization for faster content discovery
    * **Translation Session State**: New hooks for managing editor session state, draft changes, and unsaved-changes protection across language edits
    * **Community Card Preferences**: Theme schema now stores visibility preferences for community card details, persisting across sessions
    * **Navigation Count Refresh**: Generalized entity cache refresh mechanism that automatically updates challenge and reward counts after AI entity creation
    * **Image Editor Rollout**: Removed feature flag and deleted legacy crop/refine dialogs; unified editor is now the standard for all image uploads
    * **Shopify Plan Handle**: Accept both prefixed and non-prefixed Shopify plan IDs (e.g., `plan_123` and `123`)
    * **Identity Tester Safety**: Gate the identity-tester "Applied" confirmation button on real delivery confirmation instead of visual state
    * **Unsaved Changes Guard**: Enhanced unsaved-changes protection for the translation editor with context-aware warnings
  </Accordion>

  <Accordion title="MCP Server" icon="robot">
    * **Chat Image Attachment**: Improved image attachment runner for better asset library integration
    * **Entity Cache Invalidation**: New helpers for invalidating related entity queries after mutations
  </Accordion>

  <Accordion title="Design System" icon="palette">
    * **i18n Localization**: Added translation strings for new OAuth and widget features across all supported languages (English, German, Spanish, French, Portuguese, Chinese)
  </Accordion>

  <Accordion title="Games" icon="gamepad">
    * **E2E Test Suite**: Comprehensive Playwright test configuration and test cases for games suite
  </Accordion>
</AccordionGroup>

## Technical Architecture

### Translation Editor Rebuild

The Edit Translations page received a complete architectural overhaul focused on developer ergonomics:

* Component-based structure with specialized hooks for state management (`useEditTranslations`, `useTranslationDraft`, `useTranslationFilters`)
* CSV import/export pipeline with error handling and validation
* Real-time translation status tracking with section-aware rendering
* Unsaved-changes protection with context-aware user warnings

### Widget Security Hardening

Three interconnected fixes improve iframe-based widget reliability:

1. **CSP Frame-Ancestors**: Dynamically generated from community's `allowedDomains` instead of hardcoded, preventing embedding on unauthorized domains
2. **Session Cookies**: NextAuth now issues cookies with appropriate `SameSite` attribute for cross-site iframe scenarios
3. **OAuth Cleanup**: Popup windows properly close after callback to prevent navigation drift to merchant page

### E2E Testing Infrastructure

Comprehensive Playwright test suite across the platform:

* Shared global setup and configuration across games, admin, user apps
* Deterministic test data through improved seed-data integration
* E2E test corpus covering critical user flows

## Contributors

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

    **@[dch@wenudj.com](mailto:dch@wenudj.com)**

    11 commits • +38,580/-5,182 lines
  </Card>

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

    **@[solicshop@gmail.com](mailto:solicshop@gmail.com)**

    6 commits • +13,053/-7,941 lines
  </Card>

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

    **@jamescockayne**

    3 commits • +464/-36 lines
  </Card>
</CardGroup>

## Release Stats

| Metric        | Value       |
| ------------- | ----------- |
| Total Commits | 21          |
| Lines Added   | +52,158     |
| Lines Removed | -13,133     |
| Files Changed | 503         |
| Release Size  | 🔴 Massive  |
| Complexity    | ⭐⭐⭐ Complex |

***

*v2.469.4 deployed on August 4, 2026*
