Changelog

What We Shipped

Every feature, improvement, and fix. Newest first.

Internal

955 Edge Case Tests & DRY Audit

Two large code health passes in a single day.

Test suite expansion — added 955 edge case tests across backend and frontend, covering auth edge cases, API error paths, component boundary conditions, and hook state transitions.

DRY audit — eliminated ~1,300 duplicate lines across 63 files. Extracted shared helpers, consolidated repeated patterns, and removed copy-pasted logic that had drifted out of sync.

Improvement

Vendor Management UX Improvements

The vendor management table got a usability pass. Row actions are always visible now (no more hunting in menus), the whole row is clickable, and the invite flow uses proper primary buttons.

  • Always-visible row actions for assign, edit, and remove
  • Clickable rows to open the vendor management dialog
  • Scope summary shown inline so you can see permissions at a glance
Fix

Zapier Integration Hardening

Full audit of the Zapier API integration. Fixed bugs in trigger payloads, tightened auth checks, added proper credit deduction for AI operations triggered via Zapier, and removed dead code paths.

New Feature

Auto-Sync Product Edits to Shopify

When you edit a Shopify-sourced product in the UI (name, description, tags), changes now sync back to Shopify automatically.

Improvement

Shopify Product Sync Improvements

Product sync from Shopify is more reliable now. Categories pull in from the GraphQL API, image fallbacks work properly when a product has no featured image, and the sync button uses a proper primary style so it's easy to find.

New Feature

PIM & Bulk Product Management

Product Information Management (PIM) overhaul with collections, external mappings, multi-portal support, and vendor collection access.

  • Collections with attribute schemas and up to 3 levels of inheritance
  • Bulk edit fields (brand, category, description, tags) with merge/replace modes
  • Delete all products option
  • Rich product card in the asset modal's product tab
  • External mappings for syncing product data with third-party systems
New Feature

PDF Translation Tool

New tool at /tools/pdf-translation that translates PDF documents using Gemini 3 Flash. Two output modes: a clean translated PDF, or a bilingual side-by-side layout.

  • 45+ languages with CJK support via Noto Sans font embedding
  • Content-stream image detection preserves images and layout in the output
  • Available as an inline operation in the DAM asset modal too
  • 3 credits per document
Internal

shadcn/ui Migration

Migrated the entire UI layer to shadcn/ui primitives across 113 files. Replaced hardcoded color values with CSS variables, swapped raw HTML inputs for shadcn Input/Textarea/Select, added Accordion and Avatar components, and replaced custom progress bars and skeletons with their shadcn equivalents.

Net result: fewer lines of code, consistent styling, and better accessibility defaults.

New Feature

Vendor SFTP Upload & SAP Import

Vendors can now upload assets via SFTP. Files land in a watched directory, get auto-matched to products, and flow into the approval queue.

Also added SAP as an external product source for importing product catalogs.

New Feature

Products Tab & CSV Product Import

New Products section in the vendor portal. Import product catalogs from CSV files and manage them directly in the DAM.