v2026.5.28.0
What's Changed
- fix(soup): new filter clearing bug by @sedson in #3596
- feat(email): wire /link/gmail → callback → /email/init for multi-inbox by @gbirman in #3593
- fix(auth): no-op on already-linked Google identity in /link/gmail callback by @gbirman in #3597
- fix(db): drop email_links.macro_id unique index to unblock multi-inbox by @gbirman in #3599
- fix(auth): free in_progress_user_link slot on failed Gmail OAuth callback by @gbirman in #3598
- chore(pi): sqlx query validator skill by @whutchinson98 in #3602
- chore(pi): add rust validation skill by @whutchinson98 in #3601
- feat(github): add foreign entity for prs by @whutchinson98 in #3590
- db checker agent by @whutchinson98 in #3603
- feat: ai pricing by @ehayes2000 in #3545
- fix(sfs): add CORS headers to CloudFront /file/* responses by @ehayes2000 in #3591
- feat(ui): radio / checkbox by @Fake-User in #3606
- feat(md): delete btn and cmd-a override for markdown code boxes by @sedson in #3607
- fix(search): upgrade bundled pdfium to chromium/7857 by @gbirman in #3609
- feat(channels): repoint frontend channel ops from @service-comms to @service-storage by @synoet in #3605
- fix(mobile): clean up forward transition state machine by @peterchinman in #3608
- chore(deps): pin pdfium-render API to pdfium_7543 by @gbirman in #3612
- fix(login): auto focus email and otp inputs across stages by @synoet in #3610
- fix(ai): task properties by @whutchinson98 in #3617
- fix(md): escape hatches for lagging tanstack in rename mutation from title editor by @sedson in #3616
- chore(ci): simplify deploy pipeline by @whutchinson98 in #3619
- feat(multi-inbox): narrow-graph dispatch for cross-account inbox add by @gbirman in #3614
- fix(ui): single check by @Fake-User in #3620
- revert: remove FA IdP link data tagging by @gbirman in #3621
- fix(ui): stupid scroll hammer by @Fake-User in #3622
- feat(channels): port attachment references endpoint to channels hex by @synoet in #3611
- feat(core-components): simplify SplitFileMenu to use MobileDrawer and standard Dropdown by @sedson in #3624
- feat(fusionauth): reconcile lambda rejecting secondary-link sign-in by @gbirman in #3623
- feat(channels): serve channel list via storage client by @synoet in #3625
- fix(image_proxy): allow octet stream by @whutchinson98 in #3628
- fix(auth): return generic error when oauth callback has no code by @gbirman in #3629
- chore(channels): use MacroUserExtractor across channels handlers by @synoet in #3631
- feat(channels): port entity-mentions endpoints to channels hex by @synoet in #3618
- fix(mobile/share): dropdown scope and dismiss fix by @sedson in #3634
- fix[mobile]: restructure push notification navigation by @peterchinman in #3633
- feat(channels): port channel previews (POST /preview) to channels hex by @synoet in #3615
- feat(style): make empty states more descriptive and useful by @aidanhb in #3627
- style(properties): use panel components in call panel, restyle multiselect props, dropdown checkbox by @sedson in #3639
- feat(channels): port /activity endpoints to channels hex [3/7] by @synoet in #3638
Full Changelog: v2026.5.27.0...v2026.5.28.0