v2026.5.28.0

macro-inc/macrov2026.5.28.0May 28, 2026by synoet

AI Summary

This release focuses on stabilizing multi-inbox infrastructure by fixing Gmail OAuth callbacks and introduces foreign entities for GitHub PRs.

Key Highlights

  • Fixed Gmail OAuth callback logic
  • Foreign entity support for GitHub PRs
  • UI improvements (radio/checkbox, markdown delete)
  • Channel ops moved to new hex service

New Features

  • Multi-inbox linking fixes
  • GitHub PR foreign entities
  • Channel storage service migration

Full Release Notes

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


**Full Changelog**: https://github.com/macro-inc/macro/compare/v2026.5.27.0...v2026.5.28.0