Release Notes — 2026-05-26
Release Notes — 2026-05-26
Period (hotfixes): 2026-05-25 → 2026-05-26
Planned Releases: All changes in production-stage not yet on master
Planned Releases
mediajel-dashboard
#11107: Restore campaign cadence reprocess button
Restores the Cadence Reprocess feature to the Campaign Admin Tools modal, allowing admins to reprocess campaigns in configurable day-batches (1–30). Adds a dedicated "Reprocess by Cadence" card alongside the existing standard reprocess option.
#11114: Add Tailwind CSS and modern UI library foundation
Introduces Tailwind CSS, PostCSS, and supporting animation libraries as a foundation for building faster, more maintainable interfaces alongside the existing Ant Design library. No existing functionality is changed.
#11118: Standardize all dates to UTC
Centralizes all date and time display to UTC by updating the useTimezone hook, eliminating inconsistencies where different views showed different dates for the same campaign.
#11125: Fix adding historical task to a new project
Fixes a backend rejection when users attempt to link an existing task to a project via the Task Form, allowing tasks with a cleared assignee field to be saved successfully.
#11126: Search tickets by comments and descriptions
Adds the ability to search tasks by their comments and descriptions in addition to titles, with the user's name as a fallback search parameter.
#11140: Upgrade React from version 16 to 18
Upgrades React from 16.14.0 to 18.3.1 with legacy root compatibility, migrating the app entry point to createRoot and updating the test infrastructure accordingly.
#11142: Hide revenue and ROAS for non-ecomm campaigns
Hides Revenue and ROAS metric cards on the Campaign Summary and Home Rollup pages when a campaign has no transaction data (awareness-only or signups-only campaigns).
#11150: Fix Google OAuth modal state when already signed in
Corrects the Google OAuth modal so it reflects the correct signed-in state, preventing it from prompting users to authenticate again when they already have an active Google connection.
#11152: Add edit button to task details panel
Adds an edit button directly in the task details view, allowing users to edit a task without leaving the detail panel.
#11157: Revert uuid dependency upgrade
Reverts the uuid package from version 14.0.0 back to 3.4.0 due to compatibility issues introduced by the major version bump.
#11168: shadcn/ui design system integration
Establishes a modern dual-stack UI foundation by integrating the shadcn/ui design system alongside the existing Ant Design v4 codebase. All new features should be built using this modern stack; no existing functionality is changed.
#11169: Fix Following and Collaborating task filters being hidden
Fixes a bug where the Following and Collaborating filters were not visible in certain task views, restoring correct task filtering across the My Tasks and All Tasks pages.
#11179: Tags activity improvements with page URL breakdown
Enhances the Tags Activity section with a per-URL activity breakdown, providing more detailed insight into tag engagement across pages.
#11180: Filter clear buttons apply immediately without a second click
Improves the Status and Type filter clear buttons in the Campaigns view so clicking Clear immediately resets and applies the filter without requiring a separate Apply click.
#11191: Add Ad Provider IDs column to Campaigns and Pacing exports
Adds an "Ad Provider IDs" column to both the Campaigns table and the Overview Pacing tab exports, aggregating and deduplicating DSP advertiser IDs from all child campaigns per order.
#11208: Fix intermittent SSO and manual login failures
Fixes two separate login failure modes: SSO token URL parsing that truncated base64 padding characters, and empty token values in localStorage causing Buffer errors during manual login.
#11217: Source pacing modal data from backend pacing JSON
Refactors the Campaigns pacing modal and the Home Display Pacing tab to read from the backend-supplied pacing JSON array (today/yesterday/all-time entries) rather than recomputing values on the client.
#11220: Fix Percentage pricing validation and date comparison errors
Fixes two campaign requestor validation bugs: CPM validation is now skipped for Percentage pricing campaigns where CPM fields are hidden, and date comparison logic is corrected to prevent false blocking error states.
#11230: Restore UTC timezone standardization (missed dojo deploy)
Re-applies the UTC timezone fix from #11118 after it was not propagated to the dojo environment during a prior sync.
#11231: Restore hide revenue/ROAS feature (overwritten in dojo)
Re-applies the revenue/ROAS visibility feature from #11142 after it was overwritten during a dojo environment sync.
#11245: Add rate limit warning and auto-reconnect to campaign launch modal
Adds user-facing rate limit warning alerts and automatic websocket reconnection to the Campaign Launch Progress modal, preventing silent failures when Nexxen API rate limits are hit.
#11254: Manual link and unlink for DSP advertiser IDs
Adds the ability to manually link or unlink an existing DSP advertiser ID to an organization without going through the standard Nexxen verification flow, accepting freeform input as a pragmatic interim solution.
#11256: Fix filters resetting when updating a task in the flyout panel
Fixes applied filters being cleared when a user adds a comment or makes an update to a task in the flyout panel, preserving filter state across task interactions.
#11257: Inline editing for project lists
Enables inline editing for project list items, allowing users to rename or update list entries directly without opening a separate edit dialog.
#11264: Disable all-time date filter in campaign view
Removes the all-time date filter toggle from the campaign data view, which was causing data inconsistencies and confusion when comparing campaign performance across different date ranges.
#11273: Add channel partner org levels to task channel partner dropdown
Expands the channel partner dropdown in task management to include organizations at the CHANNEL_PARTNER_DIRECT, CORE, and ENTERPRISE org levels.
#11284: Fix content area layout and spacing in Tasks view
Corrects SCSS styling for the content area in the Tasks view to address layout and spacing issues.
#11285: Fix status tag display in Tasks view
Corrects SCSS styling for status tags in the Tasks view to address visual display issues with the tag component.
#11300: Fix campaign edit modal reappearing after being closed
Fixes a bug where the campaign edit confirmation modal would reappear after the user dismissed it, requiring a page refresh to proceed.
#11304: Fix user creation form field values not submitting correctly
Ensures all form field values (including phone number) are passed directly from the user creation form to the API call instead of relying on component state, and hides the timezone field pending a proper refactor.
#11331: Fix task-to-project modal not closing after confirmation
Fixes a bug where the modal for adding a task with an existing assignee to a project would not close after the user confirmed the assignee conversion, leaving the UI unresponsive.
#11343: Fix Task History tab showing 0 on first load
Re-applies a fix where the task History tab incorrectly showed 0 items on the first visit and only updated after being clicked, after the original fix was not propagated to staging.
mediajel-gql-service
#7264: Nexxen Clickhouse integration
Integrates Nexxen display campaign data processing through the Clickhouse-backed microservice pipeline, enabling Nexxen campaigns to run through the standard display campaign processing and reporting flow.
#7306: Fix transaction creatives drift
Fixes a data drift issue in transaction creatives where cumulative source data was not being rebuilt correctly during reprocessing, causing mismatched transaction counts between reports.
#7316: Add v1/v2 schema awareness to cadence reprocess job
Updates the cadence reprocess job to differentiate between Prisma v1 and v2 schemas, restoring the ability to trigger cadence reprocess from the Campaign Admin Tools modal.
#7335: Hide revenue and ROAS fields for non-ecomm campaigns
Adds the hasEcommerceAttribution flag to the GraphQL campaign response, enabling the frontend to conditionally hide Revenue and ROAS metrics for awareness-only campaigns.
#7340: Harden GraphQL authentication and rate limiting security
Fixes the isAuthenticated middleware to actually validate tokens, adds JWT algorithm constraints to prevent algorithm confusion attacks, and prevents error information leaks through GraphQL Shield.
#7343: Fix Nexxen number parsing
Corrects number parsing for Nexxen data fields to prevent incorrect metric values in reports caused by type coercion issues.
#7344: Fix Google OAuth modal state when already signed in
Updates GraphQL schema and resolvers to return the correct signed-in state for the Google OAuth integration, supporting the frontend modal fix.
#7359: Restore missing publisher images in transaction reports
Adds a mechanism to detect and recover campaigns with missing publisher images in transaction reports, with a targeted rebuild flag for selective restoration.
#7362: Tags activity improvements with page URL breakdown
Extends the GraphQL layer with resolvers and types to support the per-URL page activity breakdown for the Tags Activity feature.
#7367: Migrate CI deployment to GitOps workflow
Replaces the imperative kops/helm deployment process with a GitOps-based CI pipeline for more reliable, auditable, and automated deployments.
#7389: Fix missing schema in dojo environment
Adds the missing schema definitions required for the dojo environment to function correctly after a schema divergence between environments.
#7395: Switch Nexxen cost metric to advertiser_invoice
Updates all Nexxen chart endpoints to use advertiser_invoice instead of actual_spend as the cost metric, aligning reporting with the correct billing field across all chart types.
#7396: Pacing improvements: IO schedules, timezone fixes, and new metrics
Overhauls Nexxen pacing to use IO-level schedules instead of line item details, corrects schedule date timezone parsing to America/New_York, and adds new pacing metrics.
#7399: Add missing DSP tracking fields to Prisma v1 Media schema
Adds dspCreativeId and dspAdId fields to the Prisma v1 Media schema, fixing a TypeScript compilation error caused by these fields being present in Prisma v6 but absent from the legacy schema.
#7406: Add rate limit metadata fields to campaign launch schema
Adds isRateLimited, rateLimitDelay, and rateLimitRemainingDaily fields to the CampaignLaunchProgressMetadata GraphQL type, enabling the frontend to display user-friendly rate limit warnings during campaign launch.
#7430: GraphQL schema regeneration and cleanup
Regenerates the GraphQL schema to remove stale type definitions and ensure consistency across the codebase.
#7448: Restore accidentally dropped publisher exports in transactions query
Restores three symbols (prunePublishersForReport, mergePublishers, PersistedPublisher) that were accidentally dropped from the transactions query file during a merge conflict resolution.
#7459: Fix orphan rows and partial publisher transaction upsert
Fixes two issues in the transaction report consolidation flow: unique constraint violations caused by stale orphan rows from prior runs, and publisher undercounts caused by partial upserts not preserving all publisher records.
#7460: Fix Bull queue clearing in multi-pod deployments
Updates the queue clearing logic to remove only completed and failed jobs rather than obliterating the entire queue, preventing in-flight work from being lost in multi-pod deployments and adding a lock to prevent race conditions.
amplication-nestjs-microservices
#1913: Nexxen Clickhouse integration
Implements the Nexxen Clickhouse data pipeline in the microservices layer, enabling Nexxen campaign data to flow through the Clickhouse-backed reporting infrastructure.
#2030: Google Ads paid search adapter
Adds a Google Ads paid-search data source adapter to the data-factory service, ingesting keyword and asset daily campaign metrics into ClickHouse via a ReplacingMergeTree-backed schema with self-service Google OAuth authentication.
#2083: Include email in Google OAuth return
Updates the Google OAuth flow to include the user's email address in the returned data, enabling downstream services to identify and link Google accounts by email.
#2093: Tags activity improvements with page URL breakdown
Extends the microservices layer to support the per-URL page activity breakdown for the Tags Activity feature.
#2096: Auto-register built-in automation workflows on startup
Adds an AutomationSeedService that registers two built-in workflows (Cognito User Sync and Knowledge Base Refresh) on application startup, and fixes schedule creation validation errors and schedule list loading issues.
#2098: Upgrade kops to 1.33.2
Upgrades the kops Kubernetes Operations tool to version 1.33.2 for improved cluster management and compatibility.
#2106: Add environment variables for external service
Adds missing environment variable configuration required for the external service to function correctly in the deployment environment.
#2116: Rename actual_spend to advertiser_invoice in customer analytics
Renames the actual_spend metric to advertiser_invoice across the customer analytics feature to align with the renamed ClickHouse column, updating interfaces, the allowlist, the SQL projection, and Swagger documentation.
#2118: Update EFS and access point for new VPC network
Updates Elastic File System (EFS) and access point configuration to use the new VPC network, ensuring correct storage connectivity in the updated infrastructure.
#2121: Fix Percentage pricing package creation for multi-flight campaigns
Fixes createPackage failures for Percentage pricing campaigns with multiple flight schedules by using the campaignDurations array and applying the same date normalization logic used by createInsertionOrder.
#2128: Add rate limit status tracking to campaign launch progress
Adds rate limit detection to the campaign launch progress service, extracting constants and interfaces to a shared types file and enriching progress metadata with rate limit fields for frontend display.
#2150: Schema update for Nexxen Clickhouse integration
Updates the database schema to support new data structures required by the Nexxen Clickhouse integration.
#2157: Migrate dojo environment to GitOps deployment
Migrates the dojo environment deployment to a GitOps workflow, replacing manual deployment steps with automated pipeline-driven deployments.
#2236: Fix missing googleAdsAdapter argument in DataIngestionConsumer spec
Fixes a TypeScript compilation error in the DataIngestionConsumer test spec where the googleAdsAdapter constructor argument was missing, causing all subsequent constructor arguments to be misaligned and CI to fail.
Hotfixes (2026-05-25 → 2026-05-26)
mediajel-dashboard — #11402: Fix intermittent trouble logging in
Resolved an intermittent login failure caused by corrupted AWS Amplify device-key data left in browser storage from incomplete previous sessions (idle timeouts, tab closes, or failed logins). The authentication layer now detects partial device-key sets and triggers a clean re-registration instead of crashing, and a failed sign-out no longer leaves users stuck on a loading spinner.
mediajel-gql-service — #7525: Fix campaign order details
Updated the campaign order query and transformation logic to include related advertiser and shared organization data in the output. Each campaign order now surfaces its associated advertiser and organization details, and each campaign carries a campaignOrderId for clearer linkage to its parent order.
Generated by ReleaseNotesAgent