The headline this week is a fix, not a feature: a cluster of bugs was quietly trapping people who had already paid us behind the upgrade paywall, with no way back into their own account. That's fixed now, along with AI Dictation getting roughly twice as fast, any chat model gaining the ability to generate images and video mid-conversation, and a pricing page that finally says one thing instead of three.
| Feature | Category | Who it's for |
|---|---|---|
| Paywall fix for previously-paid customers | Fixed | Anyone whose subscription lapsed or was on AppSumo |
| Faster AI Dictation (Parakeet model) | Improved | Everyone using voice-to-text |
| Realtime dictation restored on desktop | Fixed | macOS app users |
| /images and /video pages load instantly | Fixed | Anyone with a large media library |
| Image/video generation from any chat model | New | Chat users on any model |
| Redesigned pricing page, $1 trial restored | Improved | New signups |
| MCP connector security fix | Fixed | Anyone using MCP connectors |
| Seedance 2.5 video model | New | Video generation users |
Previously-paid customers can get back into their account
Over the past week we shipped seven separate fixes (PRs #778 through #785) to one underlying problem: the check that decides whether you're allowed to close the upgrade paywall was too narrow. It only recognized a payment if a specific billing record existed — a record that was only introduced in August 2026. Customers who paid before that, or whose subscription had since expired, or who redeemed an AppSumo lifetime deal that never synced back to the workspace, all looked "never paid" to the system and got stuck on /upgrade with no way out.
We rebuilt the check to look at real payment evidence directly: Stripe subscription history, Stripe charges and invoices, and the AppSumo license table, in that order, before falling back to the newer billing record. Previously-paid customers whose plan reverted to free can now dismiss the paywall and reach Settings, chat, and data export — even without an active subscription. If you were stuck this week, try closing the upgrade page again; it should work now.
We also fixed the mirror-image bug on the way in: Stripe redirects you to a success page before its webhook has actually written your new plan, so clicking through immediately after paying used to bounce you right back to the paywall. The success page now polls until your plan flips before enabling the button.
AI Dictation is about twice as fast
We benchmarked AI Dictation against real recordings from the macOS app and found our transcription provider was adding avoidable latency: p50 683ms and p90 1,277ms per request, server-side only. We added Together AI's Parakeet model as an alternative and it came back at p50 330ms / p90 467ms — including the upload, which the Groq numbers didn't even count. Parakeet is also non-autoregressive, so its latency barely moves with recording length, and it transcribes multilingual speech in its own language instead of translating it like Whisper did.
Parakeet is now the default. We also restored the realtime transcription session endpoint the desktop app depends on, added support for prompt context, keyword hints, and multiple language hints, and warmed the connections to our transcription upstreams at boot so the first request of the day isn't the one that pays a cold TLS handshake. Try it from the dictation button anywhere you can type in Writingmate.
Any chat model can now generate images and video
Image and video generation used to be tied to specific models. Now we've added two always-on tools — generate_image_using_auto and generateVideo — that any tool-capable text model can call mid-conversation, regardless of which model you picked. Ask GPT, Claude, or any other model in your plan for an image, and it generates one without you switching tabs.
Generated images also now render inline under the message instead of being folded into the collapsed "Thought for Ns" reasoning steps, where they used to hide. Video generation from chat is currently routed to a dedicated card that links you to /text-to-video rather than generating in place — we found in-chat video generation added too much wait time inside a conversation, so we send you to the page built for it instead.
Pricing page redesigned around one action
Our pricing and upgrade pages had drifted into telling three different stories — the marketing site starred one plan, onboarding starred another, and the in-app upgrade page had its own banner. We picked one story: Ultimate carries the "Most Popular" badge everywhere, as the same floating chip on every surface.
We also restored the $1, three-day trial for free workspaces (a refundable card-verification charge, not a real payment) after briefly removing it, and simplified the checkout copy so there's one selected-plan button instead of competing calls to action. The fine print — refund timing, renewal price, cancellation — moved into the FAQ instead of cluttering the button itself. On desktop, the plan comparison and testimonials still live below the compact selector; nothing there was removed, just reordered around a single clear next step.
Faster media pages and a new video model
The /images and /video pages were slow for anyone with a large generation history. The images API was returning chat-generated images as inline base64 data — sometimes tens of megabytes of JSON on a single page load — and pulling every message in a chat just to look up its prompt. Images are now referenced by URL and streamed on demand with immutable caching, and tiles lazy-load. The video gallery had a similar issue: every tile preloaded a chunk of its MP4 even with a poster image showing. Tiles now show a poster and only start loading video on hover.
We also added Seedance 2.5 to the video model lineup — 5 to 30 second clips, six aspect ratios, and an audio toggle — available now from the model picker at /text-to-video.
Fixed this week
- Closed a security bug where MCP connector configs could have Writingmate's own internal secrets substituted into requests sent to a third-party MCP server
- MCP OAuth connections no longer force repeated reconnection — concurrent token refreshes were racing and clearing valid tokens
- Starting a new chat with an unusually long prompt no longer fails with a server error
- Image-edit requests that come back empty from the provider now return a clear gateway error instead of a generic 500
- Project and Agent files under about 10,000 words are now inlined directly instead of burning through the tool-call budget, which was causing "tool_budget_exhausted" errors in Project chats
- Restored the correct desktop layout on
/upgrade, which had briefly been showing the mobile paywall on wide screens
Thanks for sticking with us through a week of unglamorous-but-important fixes — if you were one of the customers stuck behind the paywall, we're sorry it took this long, and we'd rather ship the seven small fixes than one that only half-solved it. See the full history of every change, big and small, on the changelog.
— Artem
Frequently asked questions about this week's release
Written by
Artem Vysotsky
Ex-Staff Engineer at Meta. Building the technical foundation to make AI accessible to everyone.
Reviewed by
Sergey Vysotsky
Ex-Chief Editor / PM at Mosaic. Passionate about making AI accessible and affordable for everyone.