Combined Summary (Frontend & API)Subscription & Billing Logic Overhaul
No more reimbursement on downgrades/cancellations. Paid cycle runs until the end, then applies changes.
Fixed issues with decreasing seats,
subscription_skip
edge cases, and robustness around Stripe webhook failures.Added toggle for invoice type filters, fixed pagination bugs, and improved error handling in invoice-related emails.
Access, Permissions & Bulk Ops
Confirmation modals added across access grant and deletion flows.
Enhanced clarity and UX in bulk uploader and export filters (items, tags).
Improved handling of invalid access request emails.
Artworks & Items
Reimplemented item deletion (archived-only, with confirmation).
Autocomplete now only considers PUBLISHED artworks/artists.
Provenance field fixed on create & display, with better placement above acquisition cost.
[BE] Fix for acquisition cost not exporting to PDF.
UI/UX & Copy Improvements
Breadcrumb optimization and minor copy fixes (“cancelled” to “canceled”, etc).
Improved responsive layout (e.g. hidden reports invites on mobile).
Sidebar styling and improved Appraiser Mode section.
Specific Frontend Fixes
Date picker z-index and logic fixed in registration.
“Appraisal Report Generator” 400 error resolved when passing multiple appraisal Ids.
Capitalization fixes in item details formatting.
Enhanced alert messaging on access form.
Specific Backend Fixes
Stripe recovery on webhook failure.
Resilient
subscription_user
downgrade/upgrade path logic.Attachments now load in
document.findOne
and export pipelines.Fix:
createMany
for appraisals was returning 400.Cron job to expire
subscription_skip
users corrected.
Technical / Infra / DevX
Suppressed email sending during test runs.
Prevent webhook crashes (
try/catch
in ctx.send).Minor email template tweaks (e.g., hide credit card digits, fix template logic).
Enhanced TanStack Query use and cleanup of unused subscription calls.