What's new on Mana Pool: May 21 - June 3
Here’s a look at what’s changed on manapool.com between May 21-June 3.
Stuff You Might Notice
🚚 For Sellers
Inventory Management
- Inventory edit page now shows Condition → Finish → Language in consistent order across all filter rows.
- Added a “Select all” button to inventory filters - instead of clicking every matching option one at a time (e.g. all “token” variants), you can now select them all in one click.
- The set filter now matches on set codes (e.g. “C19”) in addition to full set names, so you can find printings the way sellers actually think about them.
- 🐛 Fixed the price input $ sign overlapping/clipping the value on mobile, so you can actually see what you’re typing on the inventory edit page.
Packing Slips & Shipping
- 🐛 Fixed the 4×6 layout option - selecting 4×6 on the packing slip page and clicking Print PDF now actually produces a 4×6 document instead of Letter size.
- 🐛 Fixed the State dropdown on the packing envelope return address so it can now be cleared - useful if you want to leave the return address blank.
New Seller Onboarding
- Added new seller onboarding for new sellers to /seller/getting-started.
- Seller tools now don’t show to all users - they only show if you either click “I want to sell” at signup, or if you later enable seller tools - makes the menu less cluttered for pure buyers.
Ratings
- Added a CSV export to the ratings page.
🧙♀️ For Buyers
Cart improvements
- When a large cart has an unavailable item, a jump-to-next-issue link and sticky error bar now appear so you can find the problem row instantly instead of hunting through hundreds of cards.
Card search
- Added a card text filter to the browse experience so you can search by oracle text (e.g. find all cards with “banding”).
- Inventory filters now correctly imply in-stock - when inventory filters are active, out-of-stock items are hidden as expected.
Bug fixes
- 🐛 Fixed broken “view in browser” links in emails - the “Problems viewing this email? Click here” link now actually works across all email templates.
- 🐛 Fixed an issue where buyer report emails for auto-replacement orders were going to an internal system account instead of the real buyer.
- 🐛 Fixed a checkout crash that affected carts containing items added via “saved for later” or admin-issued replacements.
👩💻 API & Docs
- 🐛 Deduplicated bulk-price schemas in the OpenAPI spec using shared $refs.
- 🐛 Fixed the API docs - the catalog export description now correctly says “daily” instead of “weekly.”
- Improved the custom_external_id field description in the API docs.
- Banned sellers are now filtered out of the public catalog feed and recent-sales APIs.
⚡ Performance & Reliability
- 🐛 Fixed a statement timeout on the “similar cards” search - it now uses the GIN trigram index properly.
- Added a full-text index on cardsmtg to speed up card name and text searches.
- Split the large _cardsmtg_preaggregates materialized view to avoid refresh timeouts that were causing site outages.
- Converted seller_stats from a materialized view to a blue/green swapping table to eliminate refresh-related downtime.
- Converted homepage_products to the same blue/green swapping table pattern.
- 🐛 Fixed the matview refresh debounce/concurrency key that had caused the 3×/day scheduled refresh to stop running.
🕵️ Behind the Scenes
These changes affect internal systems or beta test features that won’t be apparent to you, but we include this info for the curious.
Admin Tooling
- New Refresh Status page at /admin/developer/refresh-status shows when all materialized views and tables were last refreshed at a glance.
- 🐛 Fixed the Change Email and Anonymize User Data links on admin buyer pages - both were 404ing due to singular/plural route mismatches.
- Admin menu reorganized: mobile layout fixed, tabs merged, and routes grouped under category prefixes.
- Retention dashboard can now be filtered by affiliate.
Ops Notifications
- Ops-related Slack notifications (seller enable/disable/ban, payout events, Shopify alerts, order prodding) moved from #dev-logs to #ops-logs for less noise in dev channels.
- 🐛 Fixed the payouts CSV download being capped at 1,000 rows.
Reducing Alert Noise
- Suppressed noisy per-file test-harness log lines in CI and quieted the Vercel build output - build logs are now actually readable.
- Dropped transient client-side network errors (Safari “Load failed”, Chrome “Failed to fetch”, AbortError, etc.) from Sentry so real errors are easier to spot.
- Removed noisy Sentry errors from bot traffic hitting non-existent card slugs.
Maintenance Mode
- Added a DB-backed maintenance mode toggle with an admin UI - admins can now flip maintenance mode on/off in seconds without a Vercel redeploy, in case deploys go awry.
🚧 In Development
Gathered & Verify (BETA TESTERS)
- Admins can now verify received packages at the item level, with a Mass Save button to stage all sub-order outcomes at once instead of one section at a time.
- 🐛 Fixed the “Mark Received” button on the buyer gathered orders list.
- 🐛 Fixed gathered-order buyers being greeted as “Dear Mana Pool Fulfillment” in shipped notification emails - they now see their actual name.
- 🐛 Removed the # from the ATTN line in hub shipping addresses (now reads ATTN: 1-2 A instead of ATTN: #1-2 A).
- Admin gathered-order page now surfaces reports and remediations on each sub-order row so hub workers can see the full picture.
- Admin gathered-order notes (freeform textarea + replacements counter) are now stored in the database instead of localStorage, so any teammate or support agent can see them.
- Added percentage-based rollout support to the gathered orders feature gate for gradual expansion.
- Admin pipeline for handling buyer reports on gathered orders.
- Admin per-report page is live for G&V reports with manual replacement and refund support wired end-to-end.
- 🐛 Fixed crashes in the email and Inngest pipelines when a buyer filed a report on a gathered order.
- 🐛 Fixed remediation buyer emails going to the system account instead of the real buyer on auto-replacement orders.
- Admin per-report page refactored into panel components to keep it maintainable as the feature grows.
Required Verifications
- Backend and admin tooling for requiring hub authentication on high-value cards from sellers with no track record.