etouch
Sign in
Back to changelog
by Théo Daguier

Changelog — April 27, 2026

Major sprint day with 35 merged PRs covering quote approval workflow, project asset delivery, redesigned timeline & media dialogs, notifications overhaul, resilience improvements, and a new changelog dashboard.

#feature#bugfix#refactor#ux#ci#resilience

Release

v1.32.0

✨ New Features

  • Quote Approval Flow — Implemented full quote lifecycle with APPROVED / REJECTED / EXPIRED statuses, enabling structured commercial validation. #603
  • Project Asset Delivery — New deliverProjectAssets mutation allows marking project assets as delivered to the client, completing the production pipeline. #602
  • Notifications Overhaul — Complete rewrite of the notifications dropdown with clean implementation, scope cleanup, and medium-priority items for better triage. #593 #601 #583
  • Project Timeline Redesign — Minimalist monochrome timeline with stepper, activity feed, and redesigned UI for photo-production context. #595 #588 #598
  • Media Detail Dialog Improvements — Zoom, before/after comparison slider, metadata cleanup, and improved thumbnail quality (800px + post-resize sharpening for HiDPI). #589 #599 #576
  • Icon-Based Mode Switcher — New mode switcher with icon + tooltip for cleaner navigation UX. #597
  • Changelog Dashboard — New changelog section with sidebar, summary entries, independent scroll, and integration into the user dropdown menu. #572 #573 #575 #577
  • Responsive Tables & Onboarding — Responsive table layouts, onboarding state persisted to DB, and loading skeletons for smoother perceived performance. #594

🐛 Bug Fixes

  • TypeScript Build Errors — Resolved all TypeScript errors across the monorepo to restore clean builds. #600
  • Global Error Handler & Resilience — Added global API error handler, Stripe idempotency keys, and BullMQ dead-letter queue for failed jobs. #596
  • Empty Analytics — Fixed analytics showing empty data by correcting date filter logic. #586
  • Storage Purge Size Estimation — Purge size now computed from R2 storage with DB fallback when R2 is unavailable. #579 #584 #587
  • Mobile UX — Improved touch targets, viewport handling, navigation, and overflow fixes for mobile devices. #582
  • API Keys & Settings — Fixed admin role scoping for API keys and redesigned the settings page. #569
  • Delete Confirmation — Removed revoke button and added proper delete confirmation dialog. #578 #581
  • Media Card Minimalist — Removed badge overlays and annotate button for cleaner media cards. #571
  • Changelog Build Mismatch — Resolved type mismatch in changelog from merged PRs. #574
  • Sidebar Icons — Improved sidebar icon selection for photo-production context. #590

♻️ Refactoring & Technical Improvements

  • Project List Simplification — Removed metrics cards, select column, and assets column from project list for a cleaner view. #580 #585
  • Retry & Resilience Layer — Added retry logic for React Query, email via BullMQ, and R2 storage operations. #592

📦 Dependencies & Infrastructure

  • CI: Prisma Schema Validation — Added Prisma schema validation step and enforced TypeScript gate in CI pipeline. #591