v1.52.0
·
39 commits
to release
since this release
1.52.0 (2026-09-02)
Features
- console: approval bell fed by a revived agent/activity frame (#1709) (1be28fd), closes #1704 #1704
- console: read a Linear team row the way Linear does, and drop two redundant controls (#1731) (aa689ed)
- console: show the turn's plan — recorded in the transcript and streamed live (#1645) (518a48a)
- control-plane: a conversation row per Linear team, and the sole-conversation arms retired (#1722) (3403ea3)
- cp: block the gitlab and linear connectors now served natively (#1679) (7e5d57d)
- cp: broker Linear access tokens on the daemon socket (#1682) (01d74fe)
- cp: gate pool claims on the member's platform capabilities (#1686) (5003942)
- cp: let a shared bot pin its default agent (#1665) (45dc551)
- cp: let the MCP read an agent's workspace (#1650) (60239a5)
- cp: Linear platform provider skeleton and storage (#1670) (4eff3b1)
- cp: Linear workspace connect funnel and token custody (#1675) (43dd8b9)
- daemon,web: DM a linked agent editor to decide a pending approval (#1648) (#1672) (5f64c5a)
- daemon: add OpenClaw as a curated ACP runtime with an external-execution sandbox exception (#1678) (4a4ab75)
- daemon: compose the Linear platform end to end (#1680) (ad543e9)
- daemon: daemon-authored Linear context block in the trusted header (#1718) (e97fb3c)
- daemon: Linear Layer-1 connection and config schema (#1674) (6ab1d83)
- daemon: log the Git metadata a host launch reopened (#1706) (68acd2a)
- daemon: make the Linear team the channel on the daemon side (#1720) (a896b5f)
- daemon: move the GitHub and GitLab reply rules into standing context (#1741) (3553dd2), closes #1735
- daemon: persist the prompt and platform facts behind a user turn as the row's body (#1744) (9d8d22f)
- daemon: put the console's short form on a delivery turn's text (#1748) (5b43c0b), closes #1744 #42 #42
- daemon: translate an ACP turn into Linear agent activities (#1673) (fb0601e)
- linear: add the planning reads to the Linear tool family (#1713) (8e1f640)
- linear: auto-start a delegated issue and link the turn's pull requests on the session (#1708) (120dcff)
- linear: draw a team by its own icon and color, the way Linear does (#1742) (919d958)
- linear: give a Linear session's agent the issue-centric tool family (#1710) (b902142)
- linear: list the session in the issue's Resources (#1699) (185d3cb)
- linear: move the issue coordinates and working convention into standing context (#1735) (b899729)
- linear: print a team's key beside its name, and link the name to Linear (#1747) (db0a996)
- linear: reach initiatives — the scope, and three tools behind it (#1736) (291b6d8)
- linear: record the answer in the console transcript and watch slow relay acks (#1729) (e0e9081)
- linear: surface a blocked permission gate in the issue feed (#1726) (61e4418)
- linear: the workspace is the channel (#1692) (94abd63)
- protocol,cp: route and revalidate approval-DM recipients (#1648) (#1671) (e163346)
- protocol: broker Linear access tokens over a linearcred frame family (#1666) (f307ea6)
- protocol: earn the multiAgentShareable manifest field (#1664) (26dfb00)
- relay: key Linear on the team and add the per-conversation default rung (#1719) (6d81408)
- relay: Linear platform ingress plugin (#1669) (d804163)
- setup: record the deployment Linear OAuth app (#1676) (b7da86f)
- slack: give agents bookmarks and lists, and batch the reserved scopes (#1661) (56cdc29)
- slack: give agents thread reads, reactions, canvases, and scheduled sends (#1644) (3816c5a)
- slack: let an agent search the workspace's public channels (#1646) (68e08eb)
- slack: post the plan on low, the default output mode (#1653) (4853e75)
- slack: render the turn's plan as a native bulleted list (#1649) (2b0395b)
- webchat: continue hook-origin sessions from the console composer (#1721) (e8f215a), closes #180
- webchat: post the Slack mirror of a console turn under the author's own name and avatar (#1712) (f022743)
- web: fold the facts behind a delivery bubble under "more" (#1751) (1b9fab9), closes #1748 #1744
- web: Linear platform console module (#1683) (7ee44bb)
- web: Linear workspaces as rows on the agent card (#1693) (d6a2ba7)
- web: make the Linear team the channel in the console (#1723) (89302e9)
Bug Fixes
- chart: route /linear/events to the relay pool (#1694) (7365ef2)
- cp: anchor approval-DM identity on workspaceId for token-installed bots (#1681) (4476a6c)
- daemon: a headless cron fire binds no conversation audience (#1732) (e2d5298)
- daemon: a runtime title that is only the prompt read back is not a title (#1740) (3c5b1d1)
- daemon: carve back the host executable a runtime hint points at (#1711) (cfe3f4f), closes #1689
- daemon: carve back the owner checkout's Git metadata for session worktrees (#1695) (220f3ec)
- daemon: keep Git's config readable and open the worktrees subtree in the Codex profile (#1715) (559ae2c)
- daemon: name the Linear delegator and keep the channel label on the workspace (#1697) (e2b491b)
- daemon: name the Linear delegator by full name, as the list does (#1701) (3675534)
- daemon: name the primary checkout rather than assuming the default layout (#1698) (b2a7bab)
- daemon: never rebuild a Linear conversation row from session history (#1725) (629afb0)
- daemon: open Git metadata to an unsandboxed Codex launch, hooks and config excepted (#1703) (7209d4a)
- daemon: quote the source message in approval DMs and keep the intro on rewrites (#1688) (5049c75)
- daemon: read a memory component dropped mid-walk as absent, not an escape (#1658) (a3026cf)
- daemon: read a workspace path dropped mid-resolve as absent, not an escape (#1659) (e4f3d40)
- daemon: stop a lost start gate from failing a finished skill helper (#1739) (51418d0)
- daemon: strip the approval-gated plan exits from headless passes (#1717) (e78a90c)
- linear: close each permission gate with its own decision, and keep the mobile card header readable (#1730) (c6bef4f), closes #1726
- linear: name a team by its workspace and its name, never by its key (#1737) (ccaded5), closes #ENG
- linear: the plan lives in the session, and the daemon signs a comment (#1743) (7581ec4)
- linear: work the ticket as written — the convention in five sentences (#1753) (827bc13)
- relay: answer an undecodable forward with an error instead of silence (#1733) (7830b10)
- relay: name a Linear follow-up's install from the team seat, not an empty id (#1734) (b68728b)
- slack: declare im:read — conversations.info needs it for a DM (#1660) (8180303)
- slack: list every missing scope at once, required and optional (#1654) (fb0226c), closes #1651
- slack: one scope list — every scope the app asks for is required (#1655) (7b9b8ea), closes #1646
- slack: tell the operator when optional permissions are missing (#1651) (7843a79)
- web: a Linear team row leads with no mark, and its name carries no link glyph (#1755) (7005323)
- web: bound the default-dispatch name the way the agent-page picker does (#1749) (ed3ec23)
- web: fold the Linear card's workspace chrome into the integration header (#1727) (a02b9a3)
- web: imply force reassign from an offline source instead of arming it (#1663) (84c0617)
- web: let the default-dispatch menu escape its card (#1700) (9ce7dee)
- web: Linear workspace row, official mark, one-row platform tiles (#1696) (c6bfb94)
- web: put the ⚡ trigger and the avatar dispatch control back on every platform (#1750) (f8b1315), closes #1727 #1747
- web: size the alternate cloud at two-thirds of the active word (#1745) (e2f0d78)
- web: the instance is the GitLab card's fact, not each identity's (#1728) (4c437c3)
- web: webhook tile last, smaller Lark / Feishu label (#1707) (4db7806)