Changelog — March 5, 2026
Major day: extra format asset grouping and billing, annotation PDF export with overlay toggle, improved download experience, and several bug fixes. Nine releases shipped from v1.7.3 to v1.10.2.
✨ New Features
-
Extra Format Asset Grouping — Automatic detection and classification of extra format assets (TIFF, PSD, PNG variants, recropping, color changes) in the image library. Assets are now grouped visually with their parent, with a manual override dropdown in the pricing table, a tooltip listing classified filenames, and a professional 4-column invoice layout with HT/TTC toggle.
#267 -
Annotation PDF Export & Overlay Toggle — Studio and retoucher users can now download a PDF of all client annotations from the project download menu. The PDF includes a title page, annotated images with numbered rectangles, and a comments section per asset. A new eye-toggle button in the preview dialog also lets users show/hide annotation rectangles on the original image.
#261
🐛 Bug Fixes
-
Extra Format Billing via Variation Field — The billing service previously missed assets uploaded before the extra format feature was introduced (no
extraFormatset in DB). Billing now falls back to detecting the extra format type from thevariationfield. The backfill script also correctly maps dimension patterns (e.g.3600x3600) toEXTRA_RECROPPINGand handles format name detection (png,tiff, etc.).#272 -
Stacking Extra Format Variants with Parent Assets — Extra format items (recropping, color change) were not stacking with their parent assets when
parseAssetIdentityproduced different view keys (e.g.view="1 TIFF" + index=1vsview="1" + variation="TIFF 1"). A post-processing merge step now identifies orphaned extra-format-only stacks and merges them into the matching parent stack.#269 -
Original File Serving on Download — The download endpoint was re-encoding images through Sharp (quality 85, format conversion), altering the original files. It now streams raw bytes directly from R2. Filename derivation preserves the original upload name (accents, spaces), and ZIP archives use STORE instead of DEFLATE.
#266 -
Download Selected Assets — The "Download selected assets" option was computed but never wired to the download dropdown. It is now fully functional for workflow states past
CLIENT_REVIEW.#262 -
Missing FtpSyncJob Migration — The
FtpSyncJobPrisma model existed in the schema but had no corresponding database migration, causingstartFtpSyncmutations to crash with "table does not exist". Migration is now added.#263 -
Comment Indicator Positioning on Media Card — Moved the comment indicator to the left side of the media card to prevent overlap with the selection checkbox. Added
cursor-pointerto the checkbox for improved UX.#258
📦 Dependencies & Infrastructure
- 9 releases published today:
v1.7.3→v1.8.0→v1.9.0→v1.9.1→v1.9.2→v1.9.3→v1.10.0→v1.10.1→v1.10.2via semantic-release. - Prisma client regenerated and React Email config updated across multiple PRs.
By Théo Daguier