Here's a look at what hit Echo last month, what's just rolling out, and what's in the pipe.

Shipped Last Month

September brought a complete overhaul of how you upgrade your plan. Instead of bouncing to a checkout page and losing your place, you now get an in-page modal that lets you pick your tier, enter your card, and subscribe without ever leaving the app. The modal shows you exactly what each tier includes — capacity, apps, features — so you can compare before you commit. When you hit a feature gate or a capacity limit, the same modal opens automatically with context about what you're trying to unlock.

We also shipped a new Pro-tier tool for traders and LGS owners: Bulk Analyzer. Drop in someone else's collection export (EchoMTG, ManaBox, TCGPlayer, Deckbox, Card Kingdom formats all work), and you get a live offer sheet broken down by value tier. Adjust condition modifiers, set your buy percentages, toggle between cash and Venmo pricing, and see the numbers update in real time. It's read-only — no inventory writes — so you can run the math on a buylist without touching your own collection.

The Earnings ledger now preserves the date you originally acquired a card when you move it from inventory to sold. Before, that date was lost at transfer time; now it carries through, and you can edit it on any earnings row just like you edit the sold date. If you're tracking long-term holds for tax-loss harvesting or gain reporting, the full timeline is finally intact.

Six new guided tours landed across the app. Insurance, Collection, Import, Watchlist, Lists, and Sealed each get a spotlight walkthrough the first time you visit — the page grays out, a bubble highlights the feature, and you step through with Next/Back/Skip. Tours are localStorage-gated per user so you see each one exactly once, and every page has a "Tour" button in the toolbar if you want to replay it later.

Non-English card imports were silently falling back to English at batch time. If you uploaded a CSV with French, Japanese, or any other language set, the preview showed it correctly but the final insert wrote EN. That's fixed — the language field now normalizes on upload and persists through the whole import chain.

Behind the scenes, we wired vision (the card-scanner embedding system) into all seven games. Pokemon, Lorcana, Flesh and Blood, Star Wars Unlimited, Yu-Gi-Oh!, and One Piece cards now register embeddings when the wiki team imports them, so the mobile and web scanner can match them. Match quality on non-Magic games is still being evaluated, but the plumbing is live.

What to Look Out For

The Insurance app is now open to all logged-in users. You can generate the full six-section report — policyholder info, at-a-glance KPIs, storage recommendations, itemized schedule, proof-of-ownership checklist, methodology — without a Pro subscription. The gate moved to the export actions (Print / CSV / JSON), so you see exactly what you'd be getting before you decide to upgrade. If you've been on the fence about Pro, you can now preview the full insurance package and judge whether it's worth it for your carrier.

The Portfolio Dashboard gained two new advisor cards: Sell Signals and Buy Signals. Sell Signals surfaces six opportunity types — spike plays, long-term winners ready to cash out, tax-loss harvest candidates, foil premium collapses, bulk you should dump, and illiquid drag. Buy Signals shows owned printings dipping, cards below your basis, quiet 2-15% movers, and set momentum plays. Each tile previews the top three candidates and opens a modal with the full ranked list. All queries run off your local DuckDB snapshot, so the calculations are instant.

If your session token expires while you're logged in, pages that fetch on mount (Earnings, Collection) were rendering blank instead of showing the login prompt. We added a central 401 interceptor that flips your auth state and re-renders the "You Must be Logged In" empty state, so stale tokens no longer strand you on a white screen.

What's to Come

We're rolling out soft capacity caps for the Basic tier. When you're on Basic and you hit the 500-card limit, adds will succeed instead of rejecting — the new cards land in a "hidden" bucket that doesn't count toward your visible collection total, your portfolio stats, or your set-completion percentages. The collection header shows you the split ("500 visible / 1,200 total"), and an upgrade prompt explains what's locked. You can keep adding cards without losing data; upgrading to Collector instantly makes the full collection visible again. The write path is live on the backend; the frontend visibility filters and banner UI are landing this week.

The Bulk Analyzer is getting Phase 2 upgrades: an auto-drafted offer email template (seller name / your name / business name inputs, live placeholders for card counts and totals, Copy to Clipboard + Open in Mail actions), a break-even calculator (walks the value tiers top-down, tells you how many cards you need to sell to cover your offer, accounts for per-shipment costs and handling time), and hero KPI tiles (You Paid / Revenue to Break Even / Max Profit / Profit Skipping Cheap). If you're running a buylist operation, these turn the raw offer sheet into a ready-to-send package.

The upgrade modal is getting an inline tier picker and a monthly/annual toggle. Instead of showing you one pre-selected plan, you'll see all four tiers (Collector / Financer / Pro / LGS) with per-tier feature bullets and costs. Flip the toggle to Annual and the prices switch to the yearly rate with the monthly-equivalent breakdown. Pick your tier, pick your cycle, and subscribe — all without leaving the modal. The "Compare plans" accordion is always open now so you can see what each tier includes before you click.

A new subscriber walkthrough fires the first time you land on /apps/import/ after subscribing. Three slides: a thank-you that ties your subscription to funding development and covering infra costs, a "Your plan" breakdown with dynamic feature bullets pulled from your actual tier, and a "Get started" slide with three big CTAs (Upload CSV / Paste Decklist / Use Scanner) that drop you directly into the picker for the mode you chose. It's gated to paid tiers only — Basic users don't see the celebration modal.

Power and toughness normalization in the wiki's EnterCard flow was silently zeroing out any non-numeric value (★, X, ∞, 1+★, etc.). The fix preserves those values as-is and only coerces actual numeric strings to integers, so cards like [[card:442928]] (Tarmogoyf, "★/1+★") and [[card:456234]] (Charix, "*/4") will display correctly instead of showing "0/0" after the next wiki sync.

Thanks for all the bug reports and feature requests that shaped this month — keep them coming. If you hit a snag or have an idea, Discord and the in-app feedback form are the fastest way to reach us.