What's Changed
- mail: Create mailbox drafts with their recipients by @elie222 in #4121
- ci: Give desktop releases the repo's Latest badge by @elie222 in #4120
- mail: Create mailbox drafts with their Cc and Bcc by @elie222 in #4122
- mail: Keep the reply recipient when an Outlook draft is saved with no To by @elie222 in #4123
- comments: Add REST routes for team comment mutations by @elie222 in #4124
- chore: update marketing repository reference by @elie222 in #4125
- mail: Show saved reply drafts when a thread opens by @elie222 in #4049
- loops: Copy workflow names onto engagement events by @elie222 in #4055
- organizations: Let admins re-invite after an invitation expires by @elie222 in #4131
- mail: Keep inline body images loaded when a thread republishes by @elie222 in #4132
- mail: Render inline TIFF images in the email body by @elie222 in #4133
- landing: Keep the hero thumbnail transparent by @elie222 in #4134
- mail: Reply from the send-as address a message was sent to by @elie222 in #4135
- billing: Keep billing admin access when merging accounts by @elie222 in #4137
- mail: Cover replying and composing from Gmail send-as aliases end to end by @elie222 in #4138
- desktop: Scope unread badge to the selected inbox by @elie222 in #4139
- test: Cover image signatures on send-as aliases and Outlook replies by @elie222 in #4140
- mail: Open compose offline and explain network failures by @elie222 in #4141
- mail: Offer to view a sent email from the sent toast by @elie222 in #4142
- MCP: preserve HTML in mail thread responses by @elie222 in #4145
- mail: Keep a sent reply closed when returning to its thread during undo by @elie222 in #4144
- Update tested integration revision by @elie222 in #4146
- mail: Show the full sender name in the open message header by @elie222 in #4147
- mail: Drop tracking pixels and log image proxy rejections by @elie222 in #4148
- mail: Explain why sender context failed to load and let users retry by @elie222 in #4149
- llm: Fix OpenRouter web search failing on every call by @elie222 in #4154
- mail: Reject malformed TIFF structure before decoding previews by @elie222 in #4152
- mail: Forward local contact suggestions from secondary tabs by @elie222 in #4150
- deps: Upgrade better-auth to 1.7.7 by @elie222 in #4155
- mail: Tuck Cc/Bcc away and turn typed recipients into tokens by @elie222 in #4153
- ai: Resolve rule names with leaked JSON characters by @elie222 in #4151
- Bump marketing submodule by @elie222 in #4158
- mail: Show an attachment indicator in the thread list by @gentlemandev in #4130
- INB-341: Close compose modal after leaving mail by @gentlemandev in #3416
- docs: changelog — Translate Threads (Oct 7) by @cursor[bot] in #4044
- desktop: Render inline email body images (INB-381) by @elie222 in #4159
- [Snyk] Security upgrade @modelcontextprotocol/sdk from 1.30.0 to 1.31.0 by @elie222 in #4136
- [Snyk] Security upgrade zod from 4.2.1 to 4.6.6 by @elie222 in #4157
- comments: Count typed @mentions so teammates can see the thread (INB-387) by @gentlemandev in #4163
- launch: Free email app, signup intent, and /download by @elie222 in #4164
- docker: Install Prisma CLI at the app's version for migrations by @elie222 in #4165
- nav: Always show Inbox in the sidebar by @elie222 in #4166
- chore: update marketing repository reference by @elie222 in #4167
- docs: Explain Microsoft 365 shared mailbox support by @elie222 in #4169
- onboarding: Support dark mode on onboarding surfaces by @elie222 in #4171
- gmail: Fail fast when Gmail is disabled for the account by @elie222 in #4172
- onboarding: Show intent options as a list with descriptions by @elie222 in #4173
- onboarding: Ask the survey first and branch on signup intent by @elie222 in #4174
- cli: Use sslmode=verify-full in Terraform database URL by @elie222 in #4175
- chore: Remove paywall-first experiment leftovers by @elie222 in #4179
- calendar: Save fresh tokens when reconnecting an existing calendar by @mhaslinsky in #3937
- email-list: Show the year on short dates from previous years by @elie222 in #4178
- mail: Open settings from the account menu and desktop app menu by @elie222 in #4176
- fix(mail): report mail engine startup failures and allow retry by @elie222 in #4183
- fix(mail): handle multi-tab engine ownership invisibly by @elie222 in #4184
- mail: Clear unsubmitted search when a sidebar view is clicked by @elie222 in #4182
- mail: Let users drag to resize the email list and AI assistant by @elie222 in #4170
- deps: Upgrade Next.js to 16.4.1 for security advisories by @elie222 in #4186
- landing: Smooth-scroll the email app badge on every click by @elie222 in #4185
- chore: update marketing submodule by @elie222 in #4177
- fix(mail): start mail engine once per load by @elie222 in #4190
- settings: Tidy billing actions and shorten read status copy by @elie222 in #4189
- mail: Surface the desktop and mobile apps in the sidebar and announcement by @elie222 in #4194
- app: Ask long-lived tabs to reload after a new deployment by @elie222 in #4195
- app: Default theme to system preference by @elie222 in #4192
- settings: Fix delete account dialog closing after subscription confirmation by @elie222 in #4191
- desktop: Add native right-click menu by @elie222 in #4196
- onboarding: Replace screenshots with app-native illustrations by @elie222 in #4199
- mail: Keep sync from stalling on oversized attachment and recipient fields by @elie222 in #4200
- mail: Isolate messages the sync protocol cannot represent by @elie222 in #4201
- settings: Add 'Sent with' footer toggle to account settings by @elie222 in #4193
- feat: allow a custom hero video thumbnail by @elie222 in #4205
- mail: Show syncing instead of an empty list before the first sync finishes by @elie222 in #4206
- mail: Read split views from the role index instead of scanning every message by @elie222 in #4211
- chore: Update website logos by @elie222 in #4214
- mail-engine: Bound command waits on view refreshes and report command latency by @elie222 in #4207
- compose: Keep Cmd+B for bold instead of toggling the sidebar by @elie222 in #4215
- mail: Move Outlook conversations into mail folders instead of categories by @elie222 in #4219
- integrations: Add a test connection action for MCP integrations by @elie222 in #4216
- mail: Show the app update notice only on mail pages by @elie222 in #4222
- mail: Keep an open composer mounted while drafts sync by @elie222 in #4220
- drafts: Answer each of a sender's separate questions on its own by @elie222 in #4218
- drafts: Let reply drafts look things up in the user's public docs by @elie222 in #4217
- cold-email: Decide cold email with the LLM, not the rule-selection decision model by @elie222 in #4162
- drafts: Answer as the user without voicing the model's own doubts by @elie222 in #4161
- fix: Reduce production errors in auth, onboarding, and provider handling by @elie222 in #4229
- mail: Stop email images flashing in when opening a message by @elie222 in #4231
- perf: Query summary email archives without a full table scan by @elie222 in #4232
- mail: Warn before sending with a missing attachment or an unfilled placeholder by @elie222 in #4230
- docs: changelog — A Free Email App (Oct 16) by @cursor[bot] in #4181
- Android client: FCM push, emulator push trigger, and port listing by @elie222 in #4223
- mail: Split header, attachment list, and initial content out of ComposeEmailForm by @elie222 in #4236
- ai: Resolve rule names followed by extra words by @elie222 in #4237
- mail: Move compose draft persistence and attachment handling into hooks by @elie222 in #4238
- mail: Move the compose send pipeline into useComposeSend by @elie222 in #4239
- mail: Allow split view in All Accounts by @elie222 in #4234
- fix: Run AI draft cleanup per account so it finishes for every user by @elie222 in #4235
- settings: Clarify account deletion and keep the provider signature in compose by @elie222 in #4197
- bulk-archive: Delete all mail from selected senders and fix deselect toggle by @elie222 in #4241
- mail: Replace shared and activity menu links with a Team sidebar entry by @elie222 in #4240
- Bump marketing submodule by @elie222 in #4245
- ci: Raise Playwright gallery screenshot limits by @elie222 in #4246
- fix: Balance app store button spacing by @elie222 in #4247
New Contributors
- @mhaslinsky made their first contribution in #3937
Full Changelog: desktop-v0.1.19...desktop-v0.1.20