AD10€10 off with code AD10 at checkout
CHANGELOG

What we shipped.

Public changelog. No marketing roll-ups. What shipped is listed here — honestly, as it happens.

May 2026

NEW19 May 2026

Email-System final · Locale persistence 3-layer

14 email templates — locale-aware, dark-mode bulletproof, Stripe-tier design. Locale persistence across cookie + profiles.preferred_locale + Clerk publicMetadata. Single useLocaleSwitcher entry point — no more state drift on auth callbacks. Slovak ICU plural forms completed (40 keys, many form).
FIX12 May 2026

Round 10–12 · Anon-grants revoked · RLS hardening · 84 orphans deleted

Baseline migration: anon-CRUD on 50+ tables via PostgREST revoked. Storage RLS fixed — non-org buckets no longer world-writable. Q3 2026 playout partitions created; RLS policy applied. 84 orphan files (~13.3k LOC) deleted: dead dashboards, legacy partner/promoter modules. 5 GDPR purge functions deployed via AWS EventBridge.
FIX11 May 2026

Round 9 · Webhook split · Type-safety pass · 1118/1118 tests

Webhook God-object (2604 LOC) split into 17 handler files — max 168 LOC each. 10 Lambda must-ports from CLEANUP_PLAN §7.2 applied and deployed. TypeScript any sites reduced from 410 → 206 across 7 audit rounds. 1118/1118 unit tests pass, 0 new tsc errors.
NEW6 May 2026

Round-8 Audit fixes · Audit-Logging V2

Audit log UI: /admin/logs with 10 tabs — audit_log + security_events tables. Hash-chain financial events for tamper-evidence. 52 trigger-points instrumented across booking, payout, and moderation flows. Daily retention purge cron via AWS EventBridge.

April 2026

IMPROVE21 Apr 2026

Engine · 3-bucket SOV · Pacing adjuster

3-bucket Share-of-Voice: booked / house-ad / partner with own time budgets. Pacing thresholds corrected: >1.3 before >1.1 (strictest first, bug-fix). NULL default for ad_sov_pct unified to 75 across App + Lambda. House-ad SOV bucket driven by house_ad_sov_pct in app_config (default 30).
IMPROVE17 Apr 2026

Heartbeat pipeline · AWS IoT migration

heartbeat-processor Lambda: SQS BatchSize=1, Window=0s — fixed silent batching bug. IoT ThingName now equals screen_id UUID (was mismatched, causing silent MQTT denials). Topics normalised: ${MQTT_TOPIC_PREFIX}/screens/{screenId}/{config|command|heartbeat|response}. device_enabled kill-switch gates all Player API routes before state update.
NEW15 Apr 2026

v2 Player · Native Fire TV app (Kotlin)

Fire TV: 100% native Kotlin — ExoPlayer + ImageView + cross-fade. No WebView. Native playlist API: /api/v2/native/playlist delivers full CDN URLs. Anti-standby 3-layer system for always-on display. media_type field in playlist API; player prefers it over URL extension.
NEW1 Apr 2026

Plattform v2 · Vollständige Neuentwicklung

Complete rewrite: Next.js 15 App Router + React 19 + Tailwind 4. 4-step booking flow: Dates → Screens → Content → Review & Pay. Stripe Connect for partner payouts — automatic via scheduled cron after campaign end. Feature-Sliced architecture: 28 feature modules, 40 DAL files.
On air · live in 5 min · every play counted

Upload. Map. Live.

From €2 minimum order · minimum 1 day. No agency, no sales call, no annual contract.

5 min
until live
€2
min. order
1 day
minimum term
Changelog — What We Shipped | adyoutiser