v2026.9.21.0

juanfont/headscalev2026.9.21.0Sep 21, 2026by synoet

Upgrading?

AI Summary

This release prioritizes agent improvements, specifically for Cursor integration, and extracts Google Calendar sync into a standalone service. It also adds iOS 27 support and refactors ownership models.

Key Highlights

  • Enhanced Cursor agent capabilities including slash command advertising and branch verification resilience
  • Extracted Google Calendar sync into a dedicated calendar_service
  • Added support for iOS 27
  • Implemented batched logging for agent sessions

New Features

  • iOS 27 support
  • Google Calendar sync service
  • Cursor slash commands over ACP
  • Batched agent session log publishing
  • GitHub PR review diffs in agents
  • File attachments on agent prompts

Full Release Notes

## What's Changed
* Seanaye/fix/cache startup timeout by @seanaye in https://github.com/macro-inc/macro/pull/6544
* chg(splits): add small bento-fication for multi split case by @sedson in https://github.com/macro-inc/macro/pull/6593
* fix(home): fix ai input padding by @sedson in https://github.com/macro-inc/macro/pull/6597
* fix(cursor): survive a branch Cursor could not verify without losing the conversation by @404Wolf in https://github.com/macro-inc/macro/pull/6584
* feat(cursor): advertise slash commands over ACP by @404Wolf in https://github.com/macro-inc/macro/pull/6525
* fix(agents): open focused composer from create shortcut by @ehayes2000 in https://github.com/macro-inc/macro/pull/6590
* feat(channels): channel participant rename channel by @whutchinson98 in https://github.com/macro-inc/macro/pull/6596
* Seanaye/feat/more gql optimistic updates by @seanaye in https://github.com/macro-inc/macro/pull/6547
* feat(agents): show an MCP tool call's request and response in session transcripts by @404Wolf in https://github.com/macro-inc/macro/pull/6585
* Fix spreadsheet keyboard, formatting, and cross-sheet editing by @jbecke in https://github.com/macro-inc/macro/pull/6600
* feat(agent-fold): speculative fold and one AgentSession per session by @404Wolf in https://github.com/macro-inc/macro/pull/6518
* chore(local): enable the ai_tools queue flags on local stacks by @gbirman in https://github.com/macro-inc/macro/pull/6565
* fix(email): do not strand a send whose enqueue fails by @gbirman in https://github.com/macro-inc/macro/pull/6580
* fix(web): simplify narrow view headers by @dev-rb in https://github.com/macro-inc/macro/pull/6606
* feat(ios): add iOS 27 support by @seanaye in https://github.com/macro-inc/macro/pull/6603
* feat: coding agent repo selection discovery by @ehayes2000 in https://github.com/macro-inc/macro/pull/6604
* fix(claude-cloud): discover Fable through the models API by @ehayes2000 in https://github.com/macro-inc/macro/pull/6595
* fix(macrod): connect before agent creation and preserve harness selection by @gbirman in https://github.com/macro-inc/macro/pull/6546
* fix(web): align CRM mobile layout by @dev-rb in https://github.com/macro-inc/macro/pull/6609
* fix(viewshell): dismissing narrow sidebar is not recorded as preference at wider view by @peterchinman in https://github.com/macro-inc/macro/pull/6612
* feat(agents): add provider connection prompts and retain the Cursor rollout flag by @404Wolf in https://github.com/macro-inc/macro/pull/6510
* fix(task): use correct prio icons by @sedson in https://github.com/macro-inc/macro/pull/6611
* fix(home): unread/read/all single select filter by @sedson in https://github.com/macro-inc/macro/pull/6613
* fix(colors): fix invisible default color canvas, cleanup bg-message by @sedson in https://github.com/macro-inc/macro/pull/6614
* revert(email): stop replaying historical sends (#6580) by @gbirman in https://github.com/macro-inc/macro/pull/6617
* revert mobile ai view to legacy version by @sedson in https://github.com/macro-inc/macro/pull/6618
* feat(web): shared message queries and components; document discussions behind a flag by @gbirman in https://github.com/macro-inc/macro/pull/6443
* style(core): update style of item action dialogs by @sedson in https://github.com/macro-inc/macro/pull/6610
* chg(channel-input): remove trash from edit by @sedson in https://github.com/macro-inc/macro/pull/6620
* fix: reactive favorites in gql by @peterchinman in https://github.com/macro-inc/macro/pull/6619
* fix(channel): keep focused mobile input at collapsed pill height by @peterchinman in https://github.com/macro-inc/macro/pull/6616
* feat(calendar): extract Google Calendar sync into services/calendar_service by @gbirman in https://github.com/macro-inc/macro/pull/6577
* feat(messages): show channel threads that mention a document in its Discussion by @gbirman in https://github.com/macro-inc/macro/pull/6445
* chore: upgrade Vitest to 5.0.1 by @gbirman in https://github.com/macro-inc/macro/pull/6567
* feat(web): turn unified document discussions on by default in dev by @gbirman in https://github.com/macro-inc/macro/pull/6624
* feat(agent): file attachments on agent prompts as ACP resource links by @ehayes2000 in https://github.com/macro-inc/macro/pull/6269
* feat(agents): review linked GitHub pull request diffs by @ehayes2000 in https://github.com/macro-inc/macro/pull/6626
* chore(agents): show walkthrough .txt artifacts as inline code blocks by @404Wolf in https://github.com/macro-inc/macro/pull/6634
* feat(agent): gate permission bypass and unify pending interactions by @404Wolf in https://github.com/macro-inc/macro/pull/6194
* chore(agents): open agent-session images in the channel lightbox by @404Wolf in https://github.com/macro-inc/macro/pull/6639
* chore(agents): put models first in the agent picker by @404Wolf in https://github.com/macro-inc/macro/pull/6635
* feat(agent): name another participant above their prompt by @404Wolf in https://github.com/macro-inc/macro/pull/6605
* fix(agents): open sidebar PR link as the GitHub entity by @404Wolf in https://github.com/macro-inc/macro/pull/6641
* fix(agents): default new conversations to Automatic repository by @404Wolf in https://github.com/macro-inc/macro/pull/6636
* chore(agents): expand and edit review notes before sending them to the agent by @404Wolf in https://github.com/macro-inc/macro/pull/6645
* chore(agents): align Home agent composer with Agents new conversation by @404Wolf in https://github.com/macro-inc/macro/pull/6644
* chore(agents): show a loading spinner on Agents sidebar rows while a session is working by @404Wolf in https://github.com/macro-inc/macro/pull/6633
* feat(agent_session): publish log frames to viewers in batches by @404Wolf in https://github.com/macro-inc/macro/pull/6655
* chore(agents): add rename and delete to Agents sidebar sessions by @404Wolf in https://github.com/macro-inc/macro/pull/6650
* fix(web): use the batched agent_session_log event shape in the turn-state test by @404Wolf in https://github.com/macro-inc/macro/pull/6659
* feat(agent_session): write streamed log frames in batches by @404Wolf in https://github.com/macro-inc/macro/pull/6658
* fix(agents): keep waiting on live Cursor runs and announce under the right parent by @404Wolf in https://github.com/macro-inc/macro/pull/6656
* refactor(channel): run target-message on createMachine by @synoet in https://github.com/macro-inc/macro/pull/6036
* feat(agents): instrument opening a session, and the Cursor poll's 429 by @404Wolf in https://github.com/macro-inc/macro/pull/6668
* refactor(calls): let ring scopes own audible resources by @synoet in https://github.com/macro-inc/macro/pull/6666
* fix(calls): extend recording link expiry to six hours by @synoet in https://github.com/macro-inc/macro/pull/6672
* refactor(email): scope target navigation with a machine by @synoet in https://github.com/macro-inc/macro/pull/6665
* fix(lexical-service): announce agent sessions with a reply-target parent by @404Wolf in https://github.com/macro-inc/macro/pull/6625
* fix(web): block and context access outside of provider scope causing errors by @dev-rb in https://github.com/macro-inc/macro/pull/6663
* refactor(web): refactor drive view to use new patterns and not depend on old soup by @dev-rb in https://github.com/macro-inc/macro/pull/6662
* refactor(sync): decouple spreadsheet business logic by @synoet in https://github.com/macro-inc/macro/pull/6671
* refactor(pdf): replace monolithic context state by @dev-rb in https://github.com/macro-inc/macro/pull/6568
* fix(activity): preserve live entity preview subscriptions by @synoet in https://github.com/macro-inc/macro/pull/6678
* feat(ownership): refactor documents typed owner in document models and access by @whutchinson98 in https://github.com/macro-inc/macro/pull/6615
* feat(routines): have ai routines use kafka by @whutchinson98 in https://github.com/macro-inc/macro/pull/6451
* feat(activity): realtime activityUpdates subscription by @synoet in https://github.com/macro-inc/macro/pull/5674
* refactor(calls): share join leave and recovery lifecycle by @synoet in https://github.com/macro-inc/macro/pull/6667
* feat(web): live activity feed and side panel via activityUpdates by @synoet in https://github.com/macro-inc/macro/pull/5675
* fix(calendar): group Home reminders by delivery time by @synoet in https://github.com/macro-inc/macro/pull/6681
* refactor(chat): typed owner in chat models and access by @whutchinson98 in https://github.com/macro-inc/macro/pull/6688
* feat(ownership): refactor projects typed owner in project models restorepurge and poller by @whutchinson98 in https://github.com/macro-inc/macro/pull/6689
* fix(cache): confirm owner lock loss before heartbeat recovery by @seanaye in https://github.com/macro-inc/macro/pull/6694
* refactor(agent_session): typed owner in session model and API by @whutchinson98 in https://github.com/macro-inc/macro/pull/6693
* Seanaye/fix/long email queries by @seanaye in https://github.com/macro-inc/macro/pull/6695
* feat(infra): deploy calendar_service dormant on the shared gateway by @gbirman in https://github.com/macro-inc/macro/pull/6623
* Seanaye/fix/missing mentions entries by @seanaye in https://github.com/macro-inc/macro/pull/6696
* fix(web): render document comments without block context by @gbirman in https://github.com/macro-inc/macro/pull/6703
* Preserve Quick Access continuation after failed cache refresh by @seanaye in https://github.com/macro-inc/macro/pull/6704
* fix(dev): serve local stacks through a single frontend origin by @ehayes2000 in https://github.com/macro-inc/macro/pull/6705
* refactor(scheduled_action): typed owner in the scheduled action model by @whutchinson98 in https://github.com/macro-inc/macro/pull/6707
* fix(nix): add the calendar-service deploy binary package by @gbirman in https://github.com/macro-inc/macro/pull/6711
* fix(infra): serve email-service /calendar routes through the gateway by @gbirman in https://github.com/macro-inc/macro/pull/6569
* fix(teams): let teammates join without membership caps by @jbecke in https://github.com/macro-inc/macro/pull/6699
* feat(channels): add calls tab to see list of calls by @dev-rb in https://github.com/macro-inc/macro/pull/6715
* fix(agents): chat direction by @ehayes2000 in https://github.com/macro-inc/macro/pull/6714
* feat(web): add agents sidebar navigation and move MCP connections by @ehayes2000 in https://github.com/macro-inc/macro/pull/6713
* refactor(web): remove Preview Pair split model by @peterchinman in https://github.com/macro-inc/macro/pull/6697
* chore(agents): hide Changes and repository chrome for non-coding agent sessions by @404Wolf in https://github.com/macro-inc/macro/pull/6664
* Seanaye/feat/slow query telemetry by @seanaye in https://github.com/macro-inc/macro/pull/6717
* Seanaye/fix/channel read by @seanaye in https://github.com/macro-inc/macro/pull/6723
* fix(channel): keep attachment remove button opaque on hover by @peterchinman in https://github.com/macro-inc/macro/pull/6700
* fix(comments): simplify document discussion controls by @gbirman in https://github.com/macro-inc/macro/pull/6628
* chore(agents): stamp Cursor agent sessions as cursor, not opencode by @404Wolf in https://github.com/macro-inc/macro/pull/6669
* fix(web): show rename-modal chips from the live item preview by @dev-rb in https://github.com/macro-inc/macro/pull/6733
* Seanaye/feat/telemetry for failed worker by @seanaye in https://github.com/macro-inc/macro/pull/6716
* chore(ios): bump version by @peterchinman in https://github.com/macro-inc/macro/pull/6736
* fix(web): correct agents search result spacing by @ehayes2000 in https://github.com/macro-inc/macro/pull/6721
* fix(agents): use standard conversation share form by @ehayes2000 in https://github.com/macro-inc/macro/pull/6730
* feat(calendar_service): notify inbox reauth on backfill grant failure by @gbirman in https://github.com/macro-inc/macro/pull/6706
* fix(agents): stop review-note sends from flushing the queue twice by @404Wolf in https://github.com/macro-inc/macro/pull/6710
* fix(agents): use GitHub PR statistics for change counts by @ehayes2000 in https://github.com/macro-inc/macro/pull/6734
* chore(agents): label the in-memory harness “Macro Agent” in the UI by @404Wolf in https://github.com/macro-inc/macro/pull/6737
* Seanaye/feat/cold start feature flag by @seanaye in https://github.com/macro-inc/macro/pull/6746
* Keep native cache startup bounded and suppress Turso debug logging by @seanaye in https://github.com/macro-inc/macro/pull/6745
* feat: gql email save & delete draft mutations by @peterchinman in https://github.com/macro-inc/macro/pull/6494
* chore(infra): let calendar-service match /calendar behind email-service's rule by @gbirman in https://github.com/macro-inc/macro/pull/6742
* feat(calendar): point agent calendar tools at calendar_service by @gbirman in https://github.com/macro-inc/macro/pull/6747
* chore(agents): harness row for in-memory agent sessions by @404Wolf in https://github.com/macro-inc/macro/pull/6735
* feat(agents): suggest a repo's branches in the new-convo picker by @404Wolf in https://github.com/macro-inc/macro/pull/6646
* fix(web): call calendar endpoints through the gateway's /calendar route by @gbirman in https://github.com/macro-inc/macro/pull/6752


**Full Changelog**: https://github.com/macro-inc/macro/compare/v2026.9.18.0...v2026.9.21.0

Related Repositories