Faster loads, smoother trades, mobile updates, card scanning, alters page

Here's a look at what hit Echo last month, what's just rolling out, and what's in the pipe.
Shipped Last Month
Performance overhaul across the board. We tackled the slow-request tail that made some pages hang for 3–5 seconds under traffic. The backend now keeps database connections warm across requests instead of reconnecting every time, and we bumped worker capacity so bursts don't queue. You'll see this most on dashboard, quickstats, and collection pages — they now load in under half a second instead of stalling.
Import reliability fixes. Large CSV imports (500+ cards) were silently failing with "BATCH_FAILED" stamped on every row. We split batches into 100-card chunks so imports actually finish, and fixed the date-parsing bug that was rejecting innocent cards when one row in the batch had a malformed date. ManaBox and other third-party CSVs now import cleanly without manual retries.
Alters! We revived our old-school alters page, view it here https://www.echomtg.com/mtg/alters/ also users can submit their own alters or alters they purchased to the gallery :)
Trades page improvements. Visiting a trader URL with a hyphen or typo (like /trades/love-bison/ when the real username has an underscore) now shows a "Trader not found" page with smart suggestions instead of an empty dashboard. Want-list edits are live — you can now change quantity and priority inline, and Remove actually removes the card instead of leaving a ghost row behind.
Mobile navigation cleanup. The sidebar now defaults to closed on phones and stays pinned at the top when you scroll. We also trimmed button labels on small screens ("Bulk Action" → "Bulk", "Export CSV" → "Export") to keep the collection toolbar from wrapping onto three lines.
What to Look Out For
Card scanning in apps and in web browser! Go right to your inventory by scanning cards from the mobile apps and from your desktop: https://vision.echomtg.com/
Collection search is smarter. The search box on /apps/collection/ now lets you choose which fields to match — card name (default), types, or oracle text. A popover next to the input shows your active fields at a glance. Searching for "first strike" with text enabled finds cards with that ability; searching with only name enabled skips the noise.
Watchlist threshold edits are back. The Threshold column on /apps/watchlist/ was empty for a while — it's now an editable percentage input (–99% to +99%) that updates your alert trigger inline. Changes save after a short debounce so rapid clicks don't spam the backend.
Item pages load faster with less layout shift. We removed the nested scrollbars that were causing content to jump around during page load, replaced heavy data tables with plain HTML where sorting wasn't needed (grading scale, variations list), and deferred below-the-fold components so the card image paints immediately. Google's performance score jumped from red to green on most item pages.
What's to Come
Public inventory pages are rolling out. Financer and Pro users can now opt in to a public collection page at echomtg.com/<username>/inventory/ from User Settings. We generate a privacy-safe snapshot daily (acquired prices and dates stay private) and host it as a read-only searchable table. The full DuckDB-powered search interface ships in the next few days; right now you'll see a placeholder with your collection count and a signup CTA for visitors.
Better Quick Add Search. Typing in the global search dialog no longer flickers through stale results — we added a generation guard so only the latest response paints. We also cut the background polling for trade notifications from every 60 seconds to every 5 minutes (and skip it entirely when the tab is hidden) so autocomplete and inventory adds don't get starved by notification checks you're not watching.
Ongoing backend cleanup. We're seeding missing pricing stubs for cards that resolved but never got priced (pairs with the recent LEFT JOIN fix), tightening FPM timeouts so admin endpoints with cold-cache aggregations don't 502, and wiring real telemetry draining so per-request recording doesn't pin workers past response delivery. These land progressively as we validate each piece on beta.
Thanks for the bug reports and feature requests that drove this month's work — keep them coming. If something's broken or you have an idea that would make Echo better for your collection, let us know.

