What's Changed
- test: cover public booking reschedule rate limits by @cursor[bot] in #2698
- chore: update Homebrew formula for v2.30.0 by @elie222 in #2700
- setup: Fix database command quoting by @elie222 in #2704
- booking: Stabilize calendar layout by @elie222 in #2705
- chore: Update dependencies by @elie222 in #2703
- drafts: Preserve link context in replies by @elie222 in #2706
- Tighten booking card to calendar height by @elie222 in #2708
- chore: harden CLI release formula update by @elie222 in #2701
- Onboarding: show real labeled emails on the inbox-processed step by @elie222 in #2709
- marketing: Add mobile app page by @elie222 in #2710
- changelog: Reschedule & Cancel Bookings (2026-05-18) by @cursor[bot] in #2691
- test: cover follow-up notification delivery handles by @cursor[bot] in #2675
- auth: Add Microsoft admin consent flow by @elie222 in #2711
- test: cover recent rule matching and meeting brief edges by @cursor[bot] in #2684
- test: cover Slack follow-up timestamp delivery by @cursor[bot] in #2671
- test: cover recent regression-prone paths by @cursor[bot] in #2707
- follow-up: Prevent cleanup loop by @elie222 in #2715
- booking: Fix date hover state by @elie222 in #2717
- Fix AI draft cleanup retries by @gentlemandev in #2713
- Fix messaging channel fallback labels by @gentlemandev in #2712
- Fix Slack draft send completion by @gentlemandev in #2702
- Fix draft channel rule selection by @gentlemandev in #2674
- Preserve edited AI drafts by @gentlemandev in #2673
- test: cover onboarding processed emails and admin consent callback by @cursor[bot] in #2716
- chore: update dependency override by @elie222 in #2718
- Fix Telegram follow-up actions by @gentlemandev in #2670
- Fix follow-up cleanup state handling by @elie222 in #2719
- Fix link handling in notification previews by @elie222 in #2720
- Fix follow-up notification completion by @elie222 in #2721
- Improve draft reply grounding by @elie222 in #2722
- booking: Improve public link metadata by @elie222 in #2725
- dev setup: Fix workspace cleanup by @elie222 in #2734
- teams: Add reviewer access flow by @elie222 in #2727
- Add mobile auth code exchange flow and app association files by @elie222 in #2723
- teams: Improve connect discovery and confirmation logging by @elie222 in #2735
- Fix chat history action menu hover by @gentlemandev in #2732
- Fix messaging draft send state by @gentlemandev in #2731
- changelog: Smarter AI Drafts (2026-05-20) by @cursor[bot] in #2714
- Fix rule suggestion rendering by @gentlemandev in #2728
- changelog: Outlook Assistant and Smarter Scheduling (May 13, 2026) by @cursor[bot] in #2647
- Fix Gmail draft threading by @gentlemandev in #2730
- Use bottom sheet for label submenu on mobile by @elie222 in #2736
- Improve booking link OG image and link previews by @elie222 in #2737
- assistant: Add inbox label removal action by @elie222 in #2738
- assistant chat: Decode email preview entities by @gentlemandev in #2739
- Limit rule notifications list height in Channels by @elie222 in #2741
- evals: add DeepSeek model cost reporting by @elie222 in #2746
- email: Fix auth cleanup for watch setup by @elie222 in #2748
- email: Handle provider error spikes by @elie222 in #2749
- Fix assistant sidebar close control by @elie222 in #2751
- reply drafts: Improve quality metrics by @elie222 in #2745
- organization: Add member activity status by @elie222 in #2753
- messaging: Fix notification failure handling by @elie222 in #2754
- teams: Fix bot auth configuration by @elie222 in #2756
- docker: gate all cron loops behind curl install by @CarterPape in #2697
- onboarding: Skip unused self-hosted steps by @elie222 in #2759
- Simplify onboarding step visibility logic by @elie222 in #2761
- marketing repo by @elie222 in #2766
- setup: Gate calendar setup step by @elie222 in #2763
- fix(security): constant-time comparison for internal/cron secrets by @casar68 in #2764
- fix(rules): anchor static from/to address matching to prevent spoofing by @casar68 in #2758
- marketing: Add mobile app download page and store redirects by @elie222 in #2768
- eval: Add result history and caching by @elie222 in #2769
- Fix draft notification sync by @gentlemandev in #2755
- Fix rule suggestion approval state by @gentlemandev in #2750
- Format rule suggestions in messaging by @gentlemandev in #2747
- eval: Cache more assistant eval results by @elie222 in #2770
- marketing repo by @elie222 in #2771
- messaging: Fix notification formatting by @elie222 in #2773
- marketing repo by @elie222 in #2772
- footer: add comparison links by @elie222 in #2776
- Fix account deletion transaction lock by @elie222 in #2777
- reply: Handle inline image markers in drafts by @elie222 in #2778
- Fix entity normalization in similarity scoring by @elie222 in #2780
- changelog: Android App Now Available (2026-06-02) by @cursor[bot] in #2775
- fix(gmail): handle per-thread batch errors in getThreadsBatch by @casar68 in #2760
- fix(usage): guarantee weekly-cost TTL; don't mask partial usage failures by @casar68 in #2767
- fix(ai): escape email fields to prevent prompt-injection breakout by @casar68 in #2757
- fix: complete ExecutedRule lifecycle when scheduled actions fail by @rpatricksmith in #2752
- landing: Update demo video by @elie222 in #2782
- landing: Restore homepage thumbnail by @elie222 in #2783
- fix(sentry): scrub PII/secrets before sending events by @casar68 in #2762
- chore: gitignore local agent/scanning scratch directories by @elie222 in #2784
- marketing: update content by @elie222 in #2785
- chore: Update marketing submodule by @elie222 in #2786
- logging: Adjust batch retry severity by @elie222 in #2787
- llm: Add OpenAI-compatible eval support by @elie222 in #2788
- llm: Centralize use-case routing by @elie222 in #2789
- Add role-based LLM configuration by @elie222 in #2790
- llm: Fix role selection follow-ups by @elie222 in #2791
- Fix CLI environment generation by @elie222 in #2793
- llms: Add Azure Foundry provider by @elie222 in #2792
- Add conversion analytics integration by @elie222 in #2798
- auth: Fix sign-in origin handling by @elie222 in #2801
- Fix draft recipient filtering by @elie222 in #2807
- chore: Clean up minor codebase issues by @elie222 in #2808
- chore: Move shared logic out of route modules by @elie222 in #2809
- chore: Move webhook processing into utilities by @elie222 in #2810
- chore: Move shared stats and sender helpers by @elie222 in #2811
- Marketing update by @elie222 in #2813
- chore: Consolidate action instrumentation by @elie222 in #2814
- Use shared Github icon on AI email assistant page by @elie222 in #2818
- test: Add sender overlap coverage by @elie222 in #2820
- perf: Add bounded meeting brief processing by @elie222 in #2821
- Fix paginated bulk archive and add delete action by @elie222 in #2812
- booking: Improve event titles by @elie222 in #2822
- Fix booking integration test for updated calendar event titles by @elie222 in #2824
- Improve rule creation handling by @elie222 in #2803
- perf: Add bounded Outlook backfill processing by @elie222 in #2823
- chore: update marketing submodule by @elie222 in #2806
- conversion: Add paid conversion dispatch by @elie222 in #2799
- Handle duplicate feedback saves by @elie222 in #2827
- Limit prompt history for pattern detection by @elie222 in #2828
- chore: Update workspace setup configuration by @elie222 in #2833
- docs: Add sponsor badge by @elie222 in #2834
- docs: Reorder README badges by @elie222 in #2835
- Fix production build validation by @elie222 in #2836
- docs: clarify CRON_SECRET usage for scheduled tasks by @elie222 in #2838
- Fix rule condition update precedence by @elie222 in #2837
- Fix production Docker build by @elie222 in #2840
- Improve connection error messaging by @elie222 in #2843
- fix(a11y): add accessible name to hero demo video button by @crossi-dev in #2841
- fix(mail): prevent horizontal overflow in email list rows by @elie222 in #2842
- Changelog: Bulk Delete by Sender (June 12, 2026) by @cursor[bot] in #2825
- bulk-unsubscribe: Restore row auto archive action by @elie222 in #2844
- assistant: surface email content in chat triage summaries by @elie222 in #2845
- Fix draft messaging channel toggles by @gentlemandev in #2804
- Fix draft signature ordering by @gentlemandev in #2794
- Fix draft eval date handling by @elie222 in #2846
- perf: Instrument account redirect timing by @elie222 in #2802
- test(assistant): fix provider mock not applying in triage content eval by @elie222 in #2849
- fix(ui): wrap long rule names in the fix-rule selection dialog by @elie222 in #2848
- Add suggested unsubscribe selection to bulk unsubscribe page by @elie222 in #2826
- feat(llms): bridge ai sdk tools to claude-code cli via in-process mcp server by @rollecode in #2847
- Changelog: Smarter Bulk Unsubscribe (June 17, 2026) by @cursor[bot] in #2850
- Fix messaging notification formatting by @elie222 in #2852
- fix: Update marketing import path by @elie222 in #2853
- calendar: Fix provider video location handling by @elie222 in #2854
- calendar: Fix conferencing fallback by @elie222 in #2856
- drive: Cascade folder tree selection by @elie222 in #2857
- Fix rule result tooltip display by @gentlemandev in #2860
- fix: load chat history on mobile web by @elie222 in #2864
- INB-301 Fix legacy draft reply validation by @elie222 in #2867
- fix: require save for file picker selections by @elie222 in #2866
- INB-175: Fix Slack assistant response truncation by @elie222 in #2868
- assistant: Open Outlook emails with provider links by @elie222 in #2865
- Fix Outlook Teams meeting link generation for booking events by @elie222 in #2858
- drive: Align Google Drive modal button styles by @elie222 in #2863
- INB-202: Fix Outlook sign-in for linked accounts by @elie222 in #2869
- Messaging: Fix Telegram sent draft notification rendering by @elie222 in #2870
- analytics: Refresh cached email stats by @elie222 in #2874
- Add server-side mobile auth start endpoint by @elie222 in #2876
- Improve assistant error observability by @elie222 in #2875
- Update scheduling availability data model by @elie222 in #2877
- Share mobile auth callback URL helpers by @elie222 in #2878
- Landing: use wordmark-only logo in header by @elie222 in #2879
- Use custom scheme for mobile auth callbacks by @elie222 in #2880
- Fix booking availability migration SQL alias by @elie222 in #2881
- Fix booking availability migration temp table by @elie222 in #2882
- Recover empty availability table migration retry by @elie222 in #2883
- Bind mobile auth return mode to server state by @elie222 in #2884
- Switch brand wordmark to Gabarito font by @elie222 in #2885
- Record provider account issues by @elie222 in #2886
- Add default availability settings on calendars page by @elie222 in #2887
- calendar: Fix availability build type narrowing by @elie222 in #2888
- Fix email account deletion handling by @elie222 in #2873
- calendar: Simplify availability section UI by @elie222 in #2889
- calendar: Reuse Item primitives for booking dialog heading by @elie222 in #2890
- fix: make analytics date range picker reachable on mobile by @elie222 in #2891
- Remove availability from booking link settings by @elie222 in #2897
- [codex] Add admin Apple subscription sync by @elie222 in #2902
- admin: Fix weekly usage cost accounting by @elie222 in #2903
- usage: Fix cost accounting for active models by @elie222 in #2904
- Changelog: Availability Without Booking Links (June 23, 2026) by @cursor[bot] in #2899
- Fix reconnect notification targeting by @elie222 in #2909
- admin: Add model spend breakdown by @elie222 in #2910
- analytics: Fix admin spend pipes by @elie222 in #2911
- admin: Shorten spend section copy by @elie222 in #2912
- Add offline HTML eval dashboard for run history by @elie222 in #2819
- assistant: Refine prompt guidance by @elie222 in #2913
- Fix provider token refresh handling by @elie222 in #2916
- Show and toggle sender label rules by @elie222 in #2900
- chore: Add evaluation run script by @elie222 in #2917
- chore: update workspace packages by @elie222 in #2918
- rules: Add organization-managed rules by @elie222 in #2795
- build: Fix server package bundling by @elie222 in #2923
- auth: Handle linked email sign-in errors by @elie222 in #2922
- Changelog: Organization Rules (June 28, 2026) by @cursor[bot] in #2921
- marketing update by @elie222 in #2924
- onboarding: Improve unsubscribe suggestions by @elie222 in #2925
- dependencies: Resolve transitive package advisory by @elie222 in #2926
- Fix Outlook email cell actions by @gentlemandev in #2920
- Refine email action link handling by @elie222 in #2927
- Fix Microsoft calendar booking fallback by @gentlemandev in #2919
- Fix Turbopack workspace root by @elie222 in #2928
- Fix digest rule selection by @elie222 in #2930
- Fix assistant rule update handling by @elie222 in #2929
- Add weekly archive activity update by @elie222 in #2931
- Fix assistant rule update handling by @elie222 in #2932
- Fix rule condition display typing by @elie222 in #2933
- Fix created item status display by @elie222 in #2935
- assistant-chat: Preserve rule text formatting by @elie222 in #2936
- organizations: Add ownership deletion safeguards by @elie222 in #2934
- chore: Centralize query param serialization by @elie222 in #2937
- rules: Align organization rule editor with the personal editor by @elie222 in #2938
- llms: Improve local model base URL handling by @elie222 in #2941
- Fix ownerless organization deletion by @gentlemandev in #2939
- Add konsistent structural convention checks by @elie222 in #2940
- Track Google Ads click identifiers by @elie222 in #2942
- calendar: Reject overlapping availability windows by @gentlemandev in #2950
- assistant: Auto-close draft reply action menu on select by @gentlemandev in #2949
- org: Fix Access Denied flash on organization pages by @gentlemandev in #2956
- rules: Shorten org-managed badge copy by @gentlemandev in #2957
- assistant: Strip HTML from classification reason display by @gentlemandev in #2954
- Changelog: Add Inbox Health email to June 17 entry by @cursor[bot] in #2855
- org: Remove synced organization rules when a member is removed by @gentlemandev in #2955
- calendar: Mark Microsoft default calendar as primary and add writable fallback by @gentlemandev in #2952
- meeting-briefs: Cover cron interval in event lookahead window by @gentlemandev in #2951
- settings: Fix digest schedule form and learned patterns dialog on small screens by @gentlemandev in #2953
- cli: Clarify Google OAuth setup with API enablement steps by @gentlemandev in #2651
- assistant: Require searchInbox before claiming inbox is empty by @gentlemandev in #2660
- Fix duplicate account linking flow by @gentlemandev in #2743
- Fix Slack draft notification actions by @gentlemandev in #2729
- slack: Render assistant slash command output as mrkdwn by @gentlemandev in #2658
- Forward conversion click IDs to private analytics by @elie222 in #2947
- Fix account linking duplicate handling by @elie222 in #2958
- logging: Fix categorization schema failures and downgrade expected errors by @elie222 in #2964
- email: Fix crash on missing headers and recreate deleted Outlook categories by @elie222 in #2967
- Fix package dependency resolution by @elie222 in #2968
- fix: Accept comma-separated Gmail scopes by @gentlemandev in #2966
- Update marketing submodule by @elie222 in #2969
- Update marketing submodule by @elie222 in #2970
- Update marketing submodule by @elie222 in #2973
- chore: Update dependencies by @elie222 in #2971
- Update marketing submodule by @elie222 in #2974
- build: Fix production build configuration by @elie222 in #2975
- build: Fix marketing build compatibility by @elie222 in #2979
- Fix PortableText link mark component build error by @elie222 in #2982
- build: use Turbopack for production builds by @elie222 in #2981
- Fix PortableText link href build error by @elie222 in #2986
- Fix assistant chat stale rule state rejections by @elie222 in #2984
- feat: AI relevance selection for reply memories in draft generation by @elie222 in #2987
- fix: writing-style sample population + comment cleanup by @elie222 in #2989
- Add notification when email watch lapses so users can reconnect by @elie222 in #2980
- Fix code scanning findings by @elie222 in #2991
- Add opt-in delete email rule action for self-hosters by @elie222 in #2992
- chore: remove dead code, unused files, and unused dependencies by @gentlemandev in #2972
- Fix email account deletion for admin memberships by @gentlemandev in #2990
- Fix mobile onboarding layout so the primary CTA stays on screen by @elie222 in #2983
- feat(assistant): sort the rules list A→Z and add inline search by @alexcf in #2906
- chore: seed emulator from demo inbox fixtures by @gentlemandev in #2944
- feat(webhooks): add WEBHOOK_ALLOW_PRIVATE_IPS opt-in for self-hosted internal targets by @alexcf in #2893
- Fix cascading source selection by @gentlemandev in #2977
- Forward trial starts to conversion analytics by @elie222 in #2993
- Update marketing submodule by @elie222 in #2995
- assistant: Extend chat execution timeout by @elie222 in #2994
- Update marketing submodule by @elie222 in #2996
- ai: Extend model evaluation coverage by @elie222 in #2998
- assistant: Improve multi-batch cleanup execution by @elie222 in #2997
- Update marketing submodule by @elie222 in #3000
- Improve conversion tracking by @elie222 in #3001
- fix: harden React bulk workflows by @elie222 in #3002
- security: Prevent chart style injection by @elie222 in #3003
- docs: changelog update for July 13, 2026 by @cursor[bot] in #2999
- Scope account providers to authenticated routes by @elie222 in #3004
- SEO: noindex app routes and paginate blog listing by @elie222 in #2985
- build: Remove obsolete recovery step by @elie222 in #2976
- Update marketing submodule pointer by @elie222 in #3006
- UI lifecycle: Cancel stale progress and scroll timers by @elie222 in #3005
- Mail: Stabilize beta banner hydration by @elie222 in #3008
- UI lifecycle: Cancel delayed scroll work by @elie222 in #3009
- Accessibility: Respect reduced motion preferences by @elie222 in #3010
- Derive follow-up notification snippets from the parsed message body by @gentlemandev in #2959
- Fix raw assistant tags leaking into AI chat responses by @gentlemandev in #2960
- billing: Add opt-in Stripe invoice emails by @elie222 in #3007
- Fix nested Gmail label resolution in assistant by @gentlemandev in #3011
- ui: Reduce article top spacing by @elie222 in #3013
- ui: Improve application alert layout by @elie222 in #3012
- ui: Improve alert message accessibility by @elie222 in #3014
- Add sidebar feedback dialog (PostHog storage) by @elie222 in #3017
- assistant: Validate sender categorization access by @elie222 in #3016
- assistant: Restore rule list ordering by @elie222 in #3021
- Fix cramped mobile header by hiding redundant Log in button by @elie222 in #3018
- setup: Compact feature card headers by @elie222 in #3026
- Preserve sender status across casing changes by @elie222 in #3020
- billing: Fix checkout success redirect by @elie222 in #3025
- Add gap between feedback dialog buttons on mobile by @elie222 in #3019
- api: Preserve request APIs through middleware by @elie222 in #3027
- Bake Node 24 into Cloud Agent environment by @elie222 in #3023
- performance: Improve landing page load speed by @elie222 in #3024
- navigation: Route returning sessions to automation by @elie222 in #3029
- auth: Prevent duplicate OAuth callback processing by @elie222 in #3022
- analytics: Set signup-age person property for survey targeting by @elie222 in #3030
- database: Enforce canonical sender uniqueness by @elie222 in #3028
- Improve private event handoff by @elie222 in #3032
- queue: Normalize QStash delivery headers by @gentlemandev in #3033
- drafts: Normalize tracked reply body lengths by @elie222 in #3035
- api: Add REST endpoint for sending email by @gentlemandev in #3037
- ai: Reduce duplicate context and standardize reasoning effort by @elie222 in #3034
- Support multi-label thread queries by @elie222 in #3039
- fix(api): strip quoted replies from thread previews by @elie222 in #3040
- llms: Log structured fallback outcomes by @elie222 in #3041
- api: add fast all-inboxes mobile endpoints by @gentlemandev in #3042
- api: support incremental all-inboxes loading by @gentlemandev in #3045
- outlook: Preserve HTML signature structure by @elie222 in #3048
- onboarding: Recognize mobile premium on web login by @elie222 in #3046
- chat: Improve request failure handling by @elie222 in #3049
- document filing: Ignore inline email assets by @elie222 in #3044
- onboarding: ship inline unsubscribe step to everyone by @elie222 in #3051
- automation: Surface bulk processing failures by @elie222 in #3038
- document filing: Parse attachment disposition exactly by @elie222 in #3050
- assistant: allow re-processing past emails on the top tier by @elie222 in #3054
- assistant: derive bulk re-process state from a single gated value by @elie222 in #3055
- api: add REST endpoints for mobile thread and sender actions by @elie222 in #3052
- Add untrash thread endpoint for mobile Undo by @elie222 in #3057
- Add draft-reply eval harness by @elie222 in #3053
- chore: Marketing update by @elie222 in #3056
- Marketing update by @elie222 in #3058
- billing: Confirm before ending a trial early by @elie222 in #3059
- Make the confidence gate visible in the eval report by @elie222 in #3060
- Propose one meeting time rather than a list of slots by @elie222 in #3063
- Add mobile rule create and edit API by @elie222 in #3061
- rules: Return canonical rule order from API by @elie222 in #3064
- rules: Persist action execution outcomes by @elie222 in #3070
- cold email: stop learning cold email patterns from junked conversations by @elie222 in #3072
- llm: Make usage accounting resilient by @elie222 in #3073
- Fix Outlook inline image metadata by @elie222 in #3076
- outlook: Fix inline attachment content ID projection by @elie222 in #3078
- marketing: Update marketing site by @gentlemandev in #3080
- Add AI meeting recorder with Recall.ai integration by @elie222 in #3071
- outlook: Cover inline attachment query contract by @elie222 in #3081
- evals: Make assistant eval failures trustworthy by @elie222 in #3077
- observability: Improve error resilience and log safety by @elie222 in #3084
- meetings: Redesign meeting recorder UI and add an onboarding screen by @elie222 in #3090
- Simplify meeting recorder lifecycle and consolidate related changes by @elie222 in #3083
- messaging: Add checkmark to sent reply status by @elie222 in #3092
- docs: changelog entry for AI meeting recorder by @cursor[bot] in #3094
- Drafting: Honor explicit requests for scheduling options by @gentlemandev in #3066
- meetings: Simplify recorder control flow by @elie222 in #3095
- INB-318: Cascade folder selection to loaded children by @gentlemandev in #3093
- gmail: Surface exhausted batch retry failures by @elie222 in #3096
- fix: handle provider rate limits reliably by @elie222 in #3097
- gmail: Stop bulk work during provider throttling by @elie222 in #3099
- database: Handle duplicate constraint metadata by @elie222 in #3101
- meetings: Reduce explainer copy across the recorder UI by @elie222 in #3102
- meetings: Add branded bot video by @elie222 in #3100
- Clarify digest delivery timing and status by @elie222 in #3098
- digest: Prevent overlapping digest processing by @elie222 in #3104
- webhooks: Handle known processing errors by @elie222 in #3103
- Add cursor-based mobile mailbox sync by @elie222 in #3108
- Add OTP detection and mobile push notifications by @elie222 in #3106
- llms: Fall back when configured models are unavailable by @elie222 in #3110
- tinybird: Migrate analytics project to Forward by @elie222 in #3111
- skills: Add Cubic-only review loop by @elie222 in #3113
- skills: Generalize automated review loop by @elie222 in #3115
- assistant: Align settings and triage eval contracts by @elie222 in #3085
- feat(chat): add run observability by @elie222 in #3118
- docs: Refresh product and self-hosting guides by @elie222 in #3123
- Fail closed when email image proxy is unavailable by @elie222 in #3126
- docs: Focus product docs on the core AI assistant experience by @elie222 in #3125
- docs: Editorial pass on core product pages by @elie222 in #3127
- email: Restore periodic Inbox Health suggestions by @elie222 in #3129
- docs: changelog — OTP alerts on mobile by @cursor[bot] in #3124
- docs: refine product documentation by @elie222 in #3132
- analytics: instrument authentication funnel by @elie222 in #3130
- email: Prevent repeated scheduled job failures by @elie222 in #3133
- Record the drafter's confidence alongside the context that produced it by @elie222 in #3065
- evals: update default judge configuration by @elie222 in #3140
- evals: Update judge model configuration by @elie222 in #3138
- Add POST /api/ai/translate for mobile email translation by @elie222 in #3141
- onboarding: Remove upgrade prompt from the bulk unsubscribe step by @elie222 in #3143
- chore: Trim comments on the unsubscribe allowance code by @elie222 in #3144
- pricing: Make the billing period default assignable by experiment by @elie222 in #3146
- pricing: Default the billing period to monthly by @elie222 in #3147
- chore: upgrade packages including Next.js 16.3 by @elie222 in #3149
- meetings: Show setup when calendar is disconnected by @gentlemandev in #3091
- digest: Preserve schedule when reopening settings by @gentlemandev in #3109
- meetings: Restore calendar connection gate by @elie222 in #3151
- digest: Restore loaded-state form initialization by @elie222 in #3152
- build: Restore Sanity dependency compatibility by @elie222 in #3155
- fix: Address meeting and digest review feedback by @elie222 in #3154
- Improve Microsoft Teams app validation guidance by @elie222 in #3153
- pricing: Tighten the upgrade page layout on mobile by @elie222 in #3148
- drafts: Improve reply completeness and scheduling notice by @elie222 in #3158
- fix(chat): Ground assistant decisions in tool evidence by @elie222 in #3161
- chat: Remove rule runtime pseudo-capability by @elie222 in #3162
- INB-320: Show accurate meeting recording statuses by @gentlemandev in #3107
- INB-319: Show invited meetings with embedded join links by @gentlemandev in #3105
- automation: Avoid forwarding to existing message participants by @elie222 in #3156
- ui: Link account alerts to reconnect page by @elie222 in #3163
- integrations: Fix runtime bugs and polish for GA release by @elie222 in #3165
- workflow: Automate post-PR monitoring by @elie222 in #3164
- fix(chat): consume fix context once by @elie222 in #3119
- Add chat-based onboarding A/B test by @gentlemandev in #2965
- meeting recorder: Improve scheduling observability by @elie222 in #3168
- webhooks: Improve verification diagnostics by @elie222 in #3169
- fix(chat): tighten inbox tool contracts by @elie222 in #3120
- test(eval): score assistant responses accurately by @elie222 in #3172
- onboarding: Rebuild chat onboarding as an LLM-guided flow by @elie222 in #3170
- INB-321: Add owner indicator to meeting notetaker by @gentlemandev in #3166
- fix(docker): restore meriyah's ESM entry and smoke-test the standalone server by @MrRussLuther in #3167
- docs: Remove stale internal documentation by @elie222 in #3173
- docs: Remove redundant repository guidance by @elie222 in #3176
- onboarding: share the chat prompt input with the in-app assistant chat by @elie222 in #3174
- dependencies: Update HTTP client package by @elie222 in #3177
- billing: Prevent duplicate checkout during plan changes by @elie222 in #3178
- Say what the two confidence settings cost by @elie222 in #3137
- Widen the reply-memory candidate pool by @elie222 in #3139
- docker: Simplify standalone image smoke check by @elie222 in #3175
- Bulk unsubscribe: align and filter suggested senders by @elie222 in #3181
- onboarding: Inline setup and cleanup cards, shorter copy, resumable chat by @elie222 in #3179
- landing: Mention mobile app, remove attachment filing section by @elie222 in #3182
- Update marketing content by @elie222 in #3183
- docs: Clarify public repository guidance by @elie222 in #3184
- onboarding: Align completion destination by @elie222 in #3185
- cold email: fail toward not blocking, and stop clobbering learned patterns by @elie222 in #3075
- docker: Remove fragile build-time server smoke check by @elie222 in #3187
- fix(analytics): target public conversion callback by @elie222 in #3186
- email: recognize additional public provider domains by @elie222 in #3188
- homepage: Clarify trial credit card requirement by @elie222 in #3190
- rules: preserve explicit learned-pattern exclusions by @elie222 in #3191
- rules: apply the exclusion rule to bulk pattern saves too by @elie222 in #3192
- evals: Harden comparison integrity by @elie222 in #3189
- site: link to AI email assistant directory by @elie222 in #3193
- gmail: Adapt batch retries to throttling by @elie222 in #3194
- integrations: simplify connect UX and add read-only providers by @elie222 in #3195
- Add all free tools to the site footer by @elie222 in #3199
- mail: remove beta banner, fix layout on small screens, add colored labels by @elie222 in #3197
- fix: restore production build compatibility by @elie222 in #3202
- meetings: Default recorder to all calls by @elie222 in #3201
- INB-323: Fix meeting summary structured output by @gentlemandev in #3203
- INB-322: Show processing while meeting recording continues by @gentlemandev in #3200
- rules: add integration write action with Todoist task support by @elie222 in #3198
- feat(mail): foundation for the redesigned mail tab by @elie222 in #3204
- docs: changelog — Inbox Health reports by @cursor[bot] in #3131
- fix(chat): serialize rule updates by @elie222 in #3121
- fix: isolate browser queue storage by @elie222 in #3207
- fix: Harden recent integration and mail changes by @elie222 in #3209
- Integrations: gate rule actions behind early access by @elie222 in #3208
- feat(mail): rebuild the mail screen on the new design by @elie222 in #3205
- feat(mail): add persistent local email cache by @elie222 in #3210
- fix(mail): tighten the mail screen chrome by @elie222 in #3211
- mail: Keep layout changes after switching views by @elie222 in #3213
- mail: Add Outlook navigation parity by @elie222 in #3214
- fix: seed emulator inbox during workspace setup by @elie222 in #3212
- fix(meetings): keep bot scheduling resilient by @elie222 in #3215
- Mail: Emphasize unread subjects by @elie222 in #3220
- mail: tighten row layout and preserve thread labels by @elie222 in #3218
- chore: shorten pull request review interval by @elie222 in #3222
- fix: Prevent duplicate integration callback exchanges by @elie222 in #3217
- fix(mail): improve rule attribution layout by @elie222 in #3221
- mail: redesign the thread view as a flat message list by @elie222 in #3225
- setup: Recover stalled completion actions by @elie222 in #3224
- integrations: explain what the page is for by @elie222 in #3223
- mail: Use Escape for back navigation by @elie222 in #3227
- mail: Balance removable label spacing by @elie222 in #3226
- Landing: Fix mobile horizontal overflow by @elie222 in #3231
- fix(mail): preserve provider label colors by @elie222 in #3229
- mail: add actions to the reader's ⋯ menu by @elie222 in #3232
- mail: Mark opened emails as read by @elie222 in #3230
- security: Restrict onboarding chat to text messages by @elie222 in #3233
- rules: Show messaging provider in notification labels by @elie222 in #3234
- Feedback: add optional webhook delivery by @elie222 in #3235
- marketing: Reduce GPU usage on animated pages by @elie222 in #3236
- Feedback: isolate layout environment access by @elie222 in #3238
- security: Encode Gmail batch message IDs by @elie222 in #3237
- security: Reject SVG image proxy responses by @elie222 in #3239
- fix(mail): keep label text readable by @elie222 in #3240
- Meetings: scope bot image file tracing by @elie222 in #3241
- security: Restrict shared Stripe billing to plan admins by @elie222 in #3242
- security: Publish API package only from main by @elie222 in #3243
- security: Keep request secrets out of logs by @elie222 in #3245
- fix(apple): Block sandbox production entitlements by @elie222 in #3246
- chore: update marketing by @elie222 in #3248
- security: keep compacted history at user trust by @elie222 in #3250
- security: Validate API key account ownership by @elie222 in #3249
- fix: apply static sender categorization only when category exists by @Kathircpe in #3252
- docs: changelog — Mail, Rebuilt by @cursor[bot] in #3228
- fix: fail open on Gmail permission check network errors by @Kathircpe in #3251
- fix(chat): make clearAiInstructions Gemini-compatible (#3047) by @EgerDev in #3219
- fix: persist one sender categorization result by @elie222 in #3253
- INB-324: Restrict billing access to organization admins by @gentlemandev in #3257
- security: Revoke cached access after account transfers by @elie222 in #3247
- fix(web): support Windows Turbopack drive roots by @elie222 in #3258
- fix(usage): rename openai* usage fields to provider-agnostic names by @Kathircpe in #3255
- build: Use pinned package manager for deployments by @elie222 in #3259
- feat: onedrive resumable upload by @Kathircpe in #3256
- mobile: Accept documented Outlook delta cursor URLs by @gentlemandev in #3112
- fix(web): make turbopack root valid on Windows drive roots by @EgerDev in #3216
- meetings: Refresh the notetaker camera image by @elie222 in #3264
- Improve meeting recording status UX by @elie222 in #3263
- fix(mail): Keep keyboard selection on screen and autoload threads by @elie222 in #3262
- refactor: simplify Microsoft upload handling by @elie222 in #3261
- llms: Handle wrapped unavailable model errors by @gentlemandev in #3114
- ai: Use OpenRouter web search server tool by @elie222 in #3265
- feat(mail): add unified inbox view by @elie222 in #3269
- fix(mail): improve unified inbox interactions by @elie222 in #3276
- feat(mail): Add end-to-end snooze workflow by @elie222 in #3277
- command palette: Simplify state and add emulator coverage by @elie222 in #3285
- Add account-scoped Meetings redirect by @gentlemandev in https://github.com/elie222/inbox-zero/pull/3288
- fix(mail): show active account address in switcher by @elie222 in https://github.com/elie222/inbox-zero/pull/3287
- feat(mail): add collapsible navigation by @elie222 in https://github.com/elie222/inbox-zero/pull/3289
- fix(mail): keep reader navigation and archive actions in sync by @elie222 in https://github.com/elie222/inbox-zero/pull/3290
- fix: type command palette keyboard events by @elie222 in https://github.com/elie222/inbox-zero/pull/3291
- desktop: Add Electron shell with system-browser login by @elie222 in https://github.com/elie222/inbox-zero/pull/3266
- Add public sender context to mail by @elie222 in https://github.com/elie222/inbox-zero/pull/3267
- outlook: Avoid retrying ambiguous Graph writes by @elie222 in https://github.com/elie222/inbox-zero/pull/3293
- mail: Download attachments with account context by @elie222 in https://github.com/elie222/inbox-zero/pull/3294
- mail: Fix rotated image proxy URL signatures by @elie222 in https://github.com/elie222/inbox-zero/pull/3296
- Mail: scope sidebar keyboard shortcut by @elie222 in https://github.com/elie222/inbox-zero/pull/3295
- desktop: Package macOS and Windows installers for GitHub Releases by @elie222 in https://github.com/elie222/inbox-zero/pull/3292
- desktop: Keep Mac signing secrets off the Windows release job by @elie222 in https://github.com/elie222/inbox-zero/pull/3298
New Contributors
- @CarterPape made their first contribution in #2697
- @casar68 made their first contribution in #2764
- @rpatricksmith made their first contribution in #2752
- @crossi-dev made their first contribution in #2841
- @rollecode made their first contribution in #2847
- @alexcf made their first contribution in #2906
- @MrRussLuther made their first contribution in #3167
- @Kathircpe made their first contribution in #3252
- @EgerDev made their first contribution in #3219
Full Changelog: v2.30.0...desktop-v0.1.0