🔴 Massive Release v2.469.4
⭐⭐⭐ Complex • 21 commits • 503 filesNudj 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.
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
User App
✓ Updated - 8 changes
API
✓ Updated - 6 changes
Admin
✓ Updated - 12 changes
MCP Server
✓ Updated - 2 changes
Design System
✓ Updated - 1 change
Games
✓ Updated - 1 change
Detailed Changes
User App
User App
- 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
API
API
- 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
Admin
Admin
- 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_123and123) - 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
MCP Server
MCP Server
- Chat Image Attachment: Improved image attachment runner for better asset library integration
- Entity Cache Invalidation: New helpers for invalidating related entity queries after mutations
Design System
Design System
- i18n Localization: Added translation strings for new OAuth and widget features across all supported languages (English, German, Spanish, French, Portuguese, Chinese)
Games
Games
- E2E Test Suite: Comprehensive Playwright test configuration and test cases for games suite
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:- CSP Frame-Ancestors: Dynamically generated from community’s
allowedDomainsinstead of hardcoded, preventing embedding on unauthorized domains - Session Cookies: NextAuth now issues cookies with appropriate
SameSiteattribute for cross-site iframe scenarios - 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
@jamescockayne3 commits • +464/-36 linesRelease Stats
v2.469.4 deployed on August 4, 2026



