What's Changed
- mail: Keep scheduled-send changes alive past a reload by @elie222 in #4534
- mail: Add a setup card for layout, tabs, All and bundles by @elie222 in #4522
- mail: Keep the Draft badge on unsaved replies after a reload by @elie222 in #4529
- onboarding: Show the reconnect prompt inside onboarding and re-check permissions each step by @elie222 in #4530
- assistant: Show a reply when a chat run fails or ends empty by @elie222 in #4528
- settings: Check the AI model and key when saving AI settings by @elie222 in #4531
- assistant: Start compacted chat history at a user message by @elie222 in #4532
- assistant: Count only senders with inbox mail and report messages actually archived by @elie222 in #4527
- automation: Keep a rule's label name in sync when its label changes by @elie222 in #4533
- landing: Drop the half-the-price-of-Superhuman claim by @elie222 in #4541
- billing: Add a switch to annual/monthly action in Billing settings by @elie222 in #4526
- test: Fix a race in the missing-permissions onboarding spec by @elie222 in #4540
- assistant: Show an upgrade card when sender categorization needs a paid plan by @elie222 in #4537
- test: Don't fail the onboarding permissions spec on unreadable responses by @elie222 in #4542
- INB-395: Preserve restored Outlook messages during sync by @gentlemandev in #4404
- mail: Scroll split tabs in one row instead of wrapping by @elie222 in #4523
- assistant: Return readable tool input errors and stop repeating failed calls by @elie222 in #4535
- mail-sqlite: Find a message's label rows through its own index when it changes by @elie222 in #4543
- assistant: Reject mistyped email IDs and recover message IDs used as thread IDs by @elie222 in #4539
- mail: Don't fail on desktop builds that can't list drafts yet by @elie222 in #4545
- billing: Price Professional annual at $40/mo by @elie222 in #4547
- test: Fix the flaky missing-permissions onboarding spec by @elie222 in #4549
- errors: Treat Gmail-disabled and disconnected accounts as expected by @elie222 in #4544
- billing: Apply plan changes directly when the portal doesn't offer the price by @elie222 in #4546
- docker: Fix the production image build on pnpm 12 by @elie222 in #4548
- deps: Update workspace packages and Next.js to 16.4.5 by @elie222 in #4552
- mail: Fold toolbar toggles into a View options menu by @elie222 in #4553
- mail: Open compose at once when pressing c by @elie222 in #4555
- assistant: Clean up inline email cards in chat by @elie222 in #4556
- billing: Trim the plan buttons on the pricing page and in Settings by @elie222 in #4568
- rules: Finish failed actions when an email is retried by @elie222 in #4567
- assistant: Ask for a final reply when a chat run ends without one by @elie222 in #4536
- build: Generate the Prisma client in the web build by @elie222 in #4569
- drafts: Give drafts relevant past mail with the sender by @elie222 in #4538
- billing: Remove the unused direct plan-change fallback by @elie222 in #4572
- billing: Treat paused Stripe subscriptions as unpaid by @elie222 in #4573
- fix: Apply valid review findings from the staging sync by @elie222 in #4571
- deps: Patch vulnerable dependencies flagged by Snyk by @elie222 in #4574
- tests: Fix jsdom localStorage on Node 25+ and stale history extraction test by @elie222 in #4577
- assistant: Let the assistant set up split inboxes and fix its searches by @elie222 in #4576
- mail: Show the selection bar on a sent reply as soon as it appears by @elie222 in #4575
- assistant: Cache each step of long chat turns by @elie222 in #4579
- assistant: Fix the split inbox delete card type error that breaks the build by @elie222 in #4582
- usage: Record OpenRouter BYOK cost and price Claude 5.5 models by @elie222 in #4578
- i18n: Set up Lingui and translate Settings by @elie222 in #4570
- composer: Format pasted Markdown text by @elie222 in #4583
- assistant: Keep exact action totals across long cleanups by @elie222 in #4580
- mail: Order the label picker like the sidebar, hidden labels last by @elie222 in #4585
- evals: Stop search mocks leaking between assistant eval tests by @elie222 in #4586
- composer: Exit empty quotes with Backspace or Delete by @elie222 in #4587
- i18n: Translate the rest of Settings into Spanish by @elie222 in #4590
- i18n: Translate onboarding into Spanish by @elie222 in #4591
- fix(mail): Keep the selection bar aligned after sending a reply by @elie222 in #4592
- i18n: Translate mail and compose into Spanish by @elie222 in #4593
- i18n: Translate rules and assistant settings into Spanish by @elie222 in #4596
- errors: Recover provider failures and handle expected request errors by @elie222 in #4599
- i18n: Translate the assistant chat into Spanish by @elie222 in #4595
- i18n: Translate calendars, meetings, drive and integrations into Spanish by @elie222 in #4600
- i18n: Translate remaining mail labels and localize dates by @elie222 in #4602
- i18n: Translate the app shell and billing into Spanish by @elie222 in #4597
- i18n: Translate the cleanup tools into Spanish by @elie222 in #4598
- i18n: Add French, German and Brazilian Portuguese by @elie222 in #4603
Full Changelog: desktop-v0.1.24...desktop-v0.1.25