What's Changed
- mail: Offer Move to inbox for already-archived conversations by @elie222 in #3941
- deps: Bump undici 7.x override to 7.29.1 by @elie222 in #3944
- outlook: Resolve well-known folder names when paging a folder by @elie222 in #3948
- fix: Delete a user's Tinybird data when their account is deleted by @elie222 in #3933
- ci: Type check packages and run all package tests by @elie222 in #3921
- retry: Share the provider retry loop and Retry-After parsing by @elie222 in #3922
- ai: Fix eval keyword checks, unspaced-language memories and sent detection by @elie222 in #3950
- email: Keep provider checks at the provider boundary by @elie222 in #3923
- utils: Fold google/microsoft helpers into gmail/outlook and rename mail to split-inbox by @elie222 in #3924
- utils: Group outbound webhook files under utils/outbound-webhook by @elie222 in #3925
- chore: bump marketing submodule to 9051dc7 by @elie222 in #3951
- assistant: Clamp rule instructions and show readable match reasons by @elie222 in #3953
- fix: upgrade Nodemailer to 10.0.13 by @elie222 in #3903
- mail: Support provider-neutral search filters by @elie222 in #3956
- gmail: Stop follow-up scans exhausting quota and catch up on rate-limited history by @elie222 in #3957
- mail: Extract shared sidebar row presentation by @elie222 in #3960
- chore: Upgrade development emulator to 0.12.0 by @elie222 in #3961
- dev: Add one-command local emulator startup by @elie222 in #3962
- fix(mail): defer browser sync until a mail feature is used by @elie222 in #3963
- mcp: Prepare tool metadata for Claude directory review by @elie222 in #3965
- mail: Stop retrying rejected searches, drop deleted accounts, push changes on web by @elie222 in #3964
- admin: Allow granting premium before a user signs up by @elie222 in #3966
- mail: Match hasattachments:true in local index search by @gentlemandev in #3959
- deps: Patch proxy-addr and undici advisories by @elie222 in #3968
- calendars: One account timezone for briefs, availability and booking links by @elie222 in #3969
- stats: Exclude the account's own sent mail from sender stats by @elie222 in #3973
- bulk-unsubscribe: Center the getting-started video in one shared player by @elie222 in #3971
- build: Install the committed private revision by @elie222 in #3970
- onboarding: Stop draft-reply step from snapping back by @elie222 in #3972
- bulk-unsubscribe: Keep table header visible while scrolling by @elie222 in #3974
- reply-zero: Remove the Reply Zero page by @elie222 in #3975
- Update tested integration revision by @elie222 in #3979
- mail: Remove the unused no-reply page by @elie222 in #3980
- ui: Load the action-required banner on the client by @elie222 in #3981
- mail: Preview image and PDF attachments in the reader by @elie222 in #3976
- Update tested integration revision by @elie222 in #3982
- bulk-unsubscribe: Show contact photos or initials for personal senders by @elie222 in #3977
- mail: Show a loading spinner while a message body loads by @elie222 in #3987
- Preserve complete provider drafts and inline attachments by @elie222 in #3985
- mail: Stop email bodies from scrolling by a fraction of a pixel by @elie222 in #3990
- videos: Feature walkthroughs on Mux, load the player on demand by @elie222 in #3989
- transactional-email: Redesign the rarely read senders email by @elie222 in #3992
- mail: Escape clears the search from the thread list by @elie222 in #3995
- bulk-unsubscribe: Highlight the sorted column header by @elie222 in #3996
- videos: Add a plain YouTube embed for marketing pages that still use YouTube by @elie222 in #3994
- [Snyk] Security upgrade next from 16.3.6 to 16.3.8 by @elie222 in #3991
- docs: Feature walkthrough videos on Mux by @elie222 in #3998
- landing: New hero video on Mux, with watch-through tracking by @elie222 in #3997
- slack: Point setup copy to the Channels page by @elie222 in #3999
- docs: Match feature docs to the current UI by @elie222 in #4000
- drive: Truncate long folder names in folder trees by @elie222 in #4002
- Outlook: normalize search IDs for execution-history lookups by @elie222 in #3967
- mcp: Granular app permissions and optional mail client tools by @elie222 in #4004
- Update tested integration revision by @elie222 in #4005
- docs: changelog — Connect Popular Apps (Sep 28) by @cursor[bot] in #3912
- string: Do not split surrogate pairs when truncating by @gautierlp in #3993
- deps: Upgrade mammoth to fix ReDoS advisory by @elie222 in #4001
- docs: AI Chat and Connect MCP walkthrough videos by @elie222 in #4011
- fix: Desktop reconnect catch-up, regional webmail domains, local Redis hashes by @elie222 in #4007
- bulk-unsubscribe: Rework the page UI and preview senders in a side panel by @elie222 in #4008
- bulk-unsubscribe: Left-align sender panel actions to clear the chat widget by @elie222 in #4014
- ui: Fix nested button in folder selector by @jotafurtado in #3984
- docs: Match feature docs to the current UI, plus walkthrough videos (batch 2) by @elie222 in #4015
- stats: Fix empty response-time analytics for Gmail accounts by @elie222 in #4009
- cold-email: Remove the Cold Email label from archived mail on Not cold email by @elie222 in #4010
- stats: Open analytics sender searches in the account's mail provider by @elie222 in #4013
- bulk-archive: Show the selected count on collapsed cards with deselected senders by @elie222 in #4012
- copy: Accurate digest setting and meeting briefs setup text by @elie222 in #4016
- choose-rule: Cache the system prompt across inbound emails by @elie222 in #4017
- auth: Let a repeated app sign-in callback still reach the app by @elie222 in #4018
- mail-engine: Sync each account in its own lane by @elie222 in #4019
- mail-engine: Check custom Outlook folders less often and keep pushes cheap by @elie222 in #4020
- mail-engine: Read an account's due folders in one batched request by @elie222 in #4021
- mail-engine: Keep Cc and Bcc recipients in the local message cache by @elie222 in #4023
- Let the iOS reader load proxied email images by @elie222 in #4026
- mail: Translate a thread on demand from the reader by @elie222 in #4024
- logging: Log decision-model rule probabilities as an array by @elie222 in #4028
- loops: Record lifecycle email engagement in PostHog by @elie222 in #4029
- gmail: Show the full Apple Mail message, not only the signature by @elie222 in #4027
- docs: changelog — Bulk Unsubscribe Side Panel (Oct 6) by @cursor[bot] in #4025
- email: Fix self-extending rate-limit mode, long attachment IDs, Outlook label conflicts by @elie222 in #4030
- mail: Show meeting invitation bodies in the desktop app by @elie222 in #4031
- email: Notify users when Google blocks access or their AI key runs out of credits by @elie222 in #4033
- outlook: Retry conflicting category writes; handle exhausted AI credits by @elie222 in #4032
- Add private team comments for shared email conversations by @elie222 in #3827
- mail: Render inline body images larger than 1 MB by @gentlemandev in #4034
- chat: Keep the input visible on mobile Safari by @elie222 in #4036
- chat: Keep an in-progress reply when the chat refetches by @elie222 in #4037
- api: Cookie bulk-unsubscribe support for the iOS app by @elie222 in #3911
- Fix Outlook rate-limit skips, invitation login loop, date picker; default pricing to annual by @elie222 in #4039
- chat: Resume interrupted replies and make Stop cancel the run by @elie222 in #4038
- outlook: Catch up on mail skipped while the account was rate limited by @elie222 in #4040
- flags: Restore the smart filing env var by @elie222 in #4041
- env: Enable integrations, smart filing, and booking links by default by @elie222 in #4043
- llm: Use the Responses API for Azure Foundry so tool calls work by @elie222 in #4042
- nav: Let self-hosters hide Attachments with the smart filing env var by @elie222 in #4045
- comments: Inline team comments, @mention to share, hidden until opened by @elie222 in #4046
- mail: Fix sender profile research and move profile to an icon by @elie222 in #4047
- tinybird: Remove unused legacy email datasources and pipes by @elie222 in #4048
- mail: Trim snooze presets to tomorrow, end of week, weekend, next week by @elie222 in #4051
- command-k: Add Send feedback command by @elie222 in #4052
- nav: Move Shared with me and Activity into the account menu and tidy the shared pages by @elie222 in #4054
- compose: Hide one-off draft autosave failures and use friendly sync copy by @elie222 in #4060
- decision-model: Run decision models through the AI SDK and support OpenRouter by @elie222 in #4057
- mail: Show reply recipients by name and strip quoted display names by @elie222 in #4058
- mail: Edit simple signatures in place and tidy the link panel by @elie222 in #4061
- mail: Advance to the next conversation after snooze, trash, spam, and move by @elie222 in #4059
- landing: Let pages choose their hero video by @elie222 in #4062
- account: Clean up external resources when deleting accounts and mailboxes by @elie222 in #4063
- landing: Add the founders video and update two audience videos by @elie222 in #4067
- landing: Add three more audience videos by @elie222 in #4068
- landing: Update the law firm video by @elie222 in #4069
- mail: Fix to: search returning no results by @gentlemandev in #3942
- landing: Add creator, MSP and accounting firm videos by @elie222 in #4071
- mail: Star selected conversations from the list toolbar by @gentlemandev in #3940
- mail: Allow resending a reply after undoing its send (INB-369) by @bahmd in #4053
- ai: Make inline email cards opt-in per chat client by @gentlemandev in #3954
- calendar: Show meeting details on the invitation card (INB-367) by @gentlemandev in #3939
- mail: Close the reader when a draft-only conversation is discarded by @gentlemandev in #3945
- mail: Open the composer blank after a draft is deleted from the mailbox by @gentlemandev in #3946
- Fix Outlook assistant folder search scoping by @elie222 in #4072
- Slack: Show full pending email drafts by @elie222 in #4073
- Stop Slack channel files from triggering email drafts by @elie222 in #4074
- Suggest recipients from the local mail cache in compose (INB-373) by @elie222 in #4070
- Fix exact Outlook folder and category counts by @elie222 in #4075
- web: Add an opt-in cookie consent banner and remove the legacy affiliate script by @elie222 in #4065
- mail: Move the composer to the Squire editor by @elie222 in #4064
- landing: Add the customer support video by @elie222 in #4083
- Fix local inbox flags after confirmed archives by @elie222 in #4082
- Fix Outlook links in messaging notifications by @elie222 in #4078
- filing: Preserve Outlook notification conversation subjects by @elie222 in #4079
- build: Exclude runtime uploads from server tracing by @elie222 in #4085
- Grade eval ground truth as an outcome in the send-ready judge by @elie222 in #4086
- fix(outlook): download attachments with missing contentBytes by @elie222 in #4081
- Fix mobile layouts for automation and settings by @elie222 in #4084
- Fix Outlook draft send completion errors by @elie222 in #4076
- web: Serve /sales from the marketing site's sales contact page by @elie222 in #4087
- assistant: Reply in the email's language, not the chat language by @elie222 in #4077
- web: Point the remaining sales links at the sales contact page by @elie222 in #4088
- Show source types in attachment source badges by @elie222 in #4090
- landing: Add email client page by @elie222 in #4066
- mail: Stop showing the previous thread when the next one is slow to load by @elie222 in #4091
- mail: Handle drafts that no longer exist in the mailbox by @elie222 in #4092
- bulk-archive: Show only inbox mail in sender preview by @elie222 in #4093
- Fix Loops upgraded event on trial start and scheduled trial conversion by @elie222 in #4056
- mail: Keep composer attachments on the mailbox draft by @elie222 in #4094
- deps: Use emulate 0.13.0 and drop its local patch by @elie222 in #4103
- mail: Hold sends by mailbox draft and remove the upload staging pipeline by @elie222 in #4101
- mail: Drop the unused upload setting and attachment column by @elie222 in #4104
- e2e: Run the large attachment send on Outlook by @elie222 in #4106
- chore: add OpenAI domain verification challenge by @elie222 in #4107
- Send mobile push for new To Reply emails by @elie222 in #4105
- mail: Hide drafts of scheduled sends until they go out by @elie222 in #4108
- fix(mcp): correct rule write safety annotations by @elie222 in #4109
- Desktop: notify per new inbox email from the mail engine by @elie222 in #4110
- mail: Shorten the undo send window to 10 seconds by @elie222 in #4111
- Keep reply text when reopening a mailbox draft by @elie222 in #4112
- mail: Keep one signature and footer when reopening a draft by @elie222 in #4113
- Add REST API for split inbox tabs and library presets by @elie222 in #4114
- mail: Serve the compose signature from one endpoint by @elie222 in #4117
- mail: Rename the compose signature endpoint to /api/user/signature by @elie222 in #4119
New Contributors
- @gautierlp made their first contribution in #3993
- @jotafurtado made their first contribution in #3984
Full Changelog: desktop-v0.1.18...desktop-v0.1.19