<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Luke changelog</title>
    <link>https://tryluke.dev/changelog</link>
    <description>What changed in each Luke release.</description>
    <language>en</language>
    <atom:link href="https://tryluke.dev/changelog/rss.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Sat, 17 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Luke 0.17.0: A Pull request tab for every agent</title>
      <link>https://tryluke.dev/changelog/0.17.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.17.0</guid>
      <pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>A Pull request tab for every agent</h3>
<p>An agent&#39;s pull request opens in a tab of its own, a fixed header over
Conversation, Checks, and Files changed. Conversation loads piece by piece,
previews each review thread with its diff, and can hide bots and resolved
threads. Checks run live, show their App, fold, and list the pull request&#39;s
deployments. Files changed draws the diff unified or split, with every diff
setting in a popover. Reply on, resolve, and unresolve a thread, submit a
review, or change the pull request as yourself. A review or a comment on the
pull request reaches the agent with what it says.
(<a href="https://github.com/ReviewStage/luke/pull/3030">#3030</a>,
<a href="https://github.com/ReviewStage/luke/pull/3116">#3116</a>,
<a href="https://github.com/ReviewStage/luke/pull/3206">#3206</a>,
<a href="https://github.com/ReviewStage/luke/pull/3221">#3221</a>,
<a href="https://github.com/ReviewStage/luke/pull/3229">#3229</a>,
<a href="https://github.com/ReviewStage/luke/pull/3233">#3233</a>,
<a href="https://github.com/ReviewStage/luke/pull/3238">#3238</a>,
<a href="https://github.com/ReviewStage/luke/pull/3239">#3239</a>,
<a href="https://github.com/ReviewStage/luke/pull/3250">#3250</a>,
<a href="https://github.com/ReviewStage/luke/pull/3258">#3258</a>,
<a href="https://github.com/ReviewStage/luke/pull/3261">#3261</a>,
<a href="https://github.com/ReviewStage/luke/pull/3272">#3272</a>,
<a href="https://github.com/ReviewStage/luke/pull/3275">#3275</a>,
<a href="https://github.com/ReviewStage/luke/pull/3292">#3292</a>,
<a href="https://github.com/ReviewStage/luke/pull/3308">#3308</a>)</p>
<h3>Cards on every chip</h3>
<p>Every chip shows a card of what it names when you point at it. An agent&#39;s
card works on any task of the workspace. A page&#39;s card previews the page and
names who showed each version. A pull request&#39;s card gives its files, age,
branches, labels, counts, and the lines it adds and removes. A pull request&#39;s
or an issue&#39;s card names its author by their GitHub face, and a Linear
issue&#39;s card names its assignee.
(<a href="https://github.com/ReviewStage/luke/pull/3102">#3102</a>,
<a href="https://github.com/ReviewStage/luke/pull/3106">#3106</a>,
<a href="https://github.com/ReviewStage/luke/pull/3109">#3109</a>,
<a href="https://github.com/ReviewStage/luke/pull/3126">#3126</a>,
<a href="https://github.com/ReviewStage/luke/pull/3140">#3140</a>,
<a href="https://github.com/ReviewStage/luke/pull/3161">#3161</a>,
<a href="https://github.com/ReviewStage/luke/pull/3191">#3191</a>,
<a href="https://github.com/ReviewStage/luke/pull/3234">#3234</a>)</p>
<h3>Issues</h3>
<p>Turn on Settings › Experimental › Issues to track your workspace&#39;s issues in
Luke. The Issues page is a board with one column for each status, read as a
workflow and scrolled sideways, or a list, whichever you chose last. File an
issue from a small composer or a column&#39;s head, and change its title, status,
priority, and Markdown description in place. An issue&#39;s page says who filed it
and when, and every card and row has an actions menu, with a Luke link to copy
or open.
(<a href="https://github.com/ReviewStage/luke/pull/3105">#3105</a>,
<a href="https://github.com/ReviewStage/luke/pull/3112">#3112</a>,
<a href="https://github.com/ReviewStage/luke/pull/3128">#3128</a>,
<a href="https://github.com/ReviewStage/luke/pull/3130">#3130</a>,
<a href="https://github.com/ReviewStage/luke/pull/3141">#3141</a>,
<a href="https://github.com/ReviewStage/luke/pull/3144">#3144</a>,
<a href="https://github.com/ReviewStage/luke/pull/3147">#3147</a>,
<a href="https://github.com/ReviewStage/luke/pull/3168">#3168</a>,
<a href="https://github.com/ReviewStage/luke/pull/3173">#3173</a>,
<a href="https://github.com/ReviewStage/luke/pull/3187">#3187</a>,
<a href="https://github.com/ReviewStage/luke/pull/3254">#3254</a>,
<a href="https://github.com/ReviewStage/luke/pull/3273">#3273</a>,
<a href="https://github.com/ReviewStage/luke/pull/3277">#3277</a>,
<a href="https://github.com/ReviewStage/luke/pull/3288">#3288</a>,
<a href="https://github.com/ReviewStage/luke/pull/3290">#3290</a>,
<a href="https://github.com/ReviewStage/luke/pull/3293">#3293</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Mention a workspace&#39;s people with @
(<a href="https://github.com/ReviewStage/luke/pull/3170">#3170</a>)</li>
<li>Select words in an agent&#39;s message and Reply to quote them in the message box
(<a href="https://github.com/ReviewStage/luke/pull/3025">#3025</a>)</li>
<li>Open an agent&#39;s pushed branch on this Mac in a terminal inside Luke
(<a href="https://github.com/ReviewStage/luke/pull/3137">#3137</a>)</li>
<li>Coding agents run an Electron app in their sandbox
(<a href="https://github.com/ReviewStage/luke/pull/3185">#3185</a>)</li>
<li>Coding agents send what is ready for review to your Inbox, and Inbox items
say whose agent asks them
(<a href="https://github.com/ReviewStage/luke/pull/3162">#3162</a>,
<a href="https://github.com/ReviewStage/luke/pull/3198">#3198</a>)</li>
<li>A plan&#39;s comment threads stay anchored to their words through every save
(<a href="https://github.com/ReviewStage/luke/pull/3034">#3034</a>)</li>
<li>Zoom and pan a picture in the image preview
(<a href="https://github.com/ReviewStage/luke/pull/3205">#3205</a>)</li>
<li>Drag the sidebar&#39;s pins into the order you want
(<a href="https://github.com/ReviewStage/luke/pull/3131">#3131</a>)</li>
<li>New task opens its dialog at once, its name field matches Linear issues,
and its issue picker searches Linear
(<a href="https://github.com/ReviewStage/luke/pull/3149">#3149</a>,
<a href="https://github.com/ReviewStage/luke/pull/3300">#3300</a>)</li>
<li>Go back and forward with a mouse&#39;s side buttons under Logi Options+
(<a href="https://github.com/ReviewStage/luke/pull/3316">#3316</a>)</li>
<li>Coding agents read another agent with <code>read_agent</code>, and have the <code>gh stack</code>
extension in their sandbox
(<a href="https://github.com/ReviewStage/luke/pull/3291">#3291</a>,
<a href="https://github.com/ReviewStage/luke/pull/3296">#3296</a>)</li>
<li>A coding agent&#39;s model is sent only its newest pictures
(<a href="https://github.com/ReviewStage/luke/pull/3253">#3253</a>)</li>
<li>A new task opens with the side panel hidden, closing the last tab shuts the
panel, and Show panel opens the tab you last closed
(<a href="https://github.com/ReviewStage/luke/pull/3123">#3123</a>,
<a href="https://github.com/ReviewStage/luke/pull/3159">#3159</a>,
<a href="https://github.com/ReviewStage/luke/pull/3166">#3166</a>)</li>
<li>The plan&#39;s tab closes beside another tab
(<a href="https://github.com/ReviewStage/luke/pull/3204">#3204</a>)</li>
<li>A plan&#39;s document opens on its &quot;Edited by&quot; line
(<a href="https://github.com/ReviewStage/luke/pull/3240">#3240</a>)</li>
<li>An agent&#39;s plan card draws the plan&#39;s pictures
(<a href="https://github.com/ReviewStage/luke/pull/3186">#3186</a>)</li>
<li>⌘K finds the open task&#39;s archived agents and opens each on its own page
(<a href="https://github.com/ReviewStage/luke/pull/3107">#3107</a>)</li>
<li>Settings opens with the caret in its search
(<a href="https://github.com/ReviewStage/luke/pull/3129">#3129</a>)</li>
<li>Choose Luke&#39;s video avatar under Settings › Experimental › Video calls
(<a href="https://github.com/ReviewStage/luke/pull/3104">#3104</a>)</li>
<li>Workspace integrations show each GitHub account&#39;s photo
(<a href="https://github.com/ReviewStage/luke/pull/3139">#3139</a>)</li>
<li>A call&#39;s row names the agent it is about by its chip
(<a href="https://github.com/ReviewStage/luke/pull/3114">#3114</a>)</li>
<li>An automation run&#39;s pull request shows as its chip
(<a href="https://github.com/ReviewStage/luke/pull/3181">#3181</a>)</li>
<li>An agent turn&#39;s Copy and Copy link sit at its foot
(<a href="https://github.com/ReviewStage/luke/pull/3178">#3178</a>)</li>
<li>An automation run is handed only the MCP servers its own prompt mentions
(<a href="https://github.com/ReviewStage/luke/pull/3190">#3190</a>)</li>
<li>The window and every web page draw from shared themes
(<a href="https://github.com/ReviewStage/luke/pull/3119">#3119</a>,
<a href="https://github.com/ReviewStage/luke/pull/3138">#3138</a>,
<a href="https://github.com/ReviewStage/luke/pull/3142">#3142</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Linear refusing a workspace&#39;s connection
(<a href="https://github.com/ReviewStage/luke/pull/3124">#3124</a>)</li>
<li>Fixed a refused sign-in renewal waiting on teardown before signing out
(<a href="https://github.com/ReviewStage/luke/pull/3082">#3082</a>)</li>
<li>Fixed an agent&#39;s pull request chip showing only after the next message
(<a href="https://github.com/ReviewStage/luke/pull/3081">#3081</a>)</li>
<li>Fixed toasts standing away from the window&#39;s bottom-right corner, and an
agent&#39;s news staying until dismissed
(<a href="https://github.com/ReviewStage/luke/pull/3180">#3180</a>)</li>
<li>Fixed the agent&#39;s message box losing the caret after a send
(<a href="https://github.com/ReviewStage/luke/pull/3220">#3220</a>)</li>
<li>Fixed the @ list staying open when words past a space match nothing
(<a href="https://github.com/ReviewStage/luke/pull/3241">#3241</a>)</li>
<li>Fixed Luke&#39;s own GitHub App bot drawn as a person
(<a href="https://github.com/ReviewStage/luke/pull/3208">#3208</a>)</li>
<li>Fixed Escape leaving the Inbox, and the Inbox opening on a different item
than the one last chosen
(<a href="https://github.com/ReviewStage/luke/pull/3183">#3183</a>,
<a href="https://github.com/ReviewStage/luke/pull/3184">#3184</a>)</li>
<li>Fixed an Inbox image that lands before its item not being drawn
(<a href="https://github.com/ReviewStage/luke/pull/3177">#3177</a>)</li>
<li>Fixed the Automations pages sharing one step of the window&#39;s history
(<a href="https://github.com/ReviewStage/luke/pull/3153">#3153</a>)</li>
<li>Fixed the Draft pencil marking the task that is open
(<a href="https://github.com/ReviewStage/luke/pull/3145">#3145</a>)</li>
<li>Fixed the sender of a plan or task not named under its card
(<a href="https://github.com/ReviewStage/luke/pull/3158">#3158</a>)</li>
<li>Fixed a section&#39;s byline crowding its heading
(<a href="https://github.com/ReviewStage/luke/pull/3228">#3228</a>)</li>
<li>Fixed a reply quote in the message box set off differently from a sent quote
(<a href="https://github.com/ReviewStage/luke/pull/3143">#3143</a>)</li>
<li>Fixed a chip, an Inbox crumb, or a missing picture keeping a wide gap
(<a href="https://github.com/ReviewStage/luke/pull/3117">#3117</a>)</li>
<li>Fixed a tab shown as its glyph losing the glyph under the pointer
(<a href="https://github.com/ReviewStage/luke/pull/3127">#3127</a>)</li>
<li>Fixed the plan editor and the message box writing styles the panel refuses
(<a href="https://github.com/ReviewStage/luke/pull/3136">#3136</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated Sentry to its official setup, tracing one request in ten
(<a href="https://github.com/ReviewStage/luke/pull/3169">#3169</a>,
<a href="https://github.com/ReviewStage/luke/pull/3247">#3247</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.16.0: Links that say what they point at</title>
      <link>https://tryluke.dev/changelog/0.16.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.16.0</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Links that say what they point at</h3>
<p>Every Luke link in a plan, a transcript, an Inbox item, or the Call tab is a
chip named for its place: the task&#39;s, agent&#39;s, page&#39;s, person&#39;s, or
automation&#39;s own name, wearing its glyph. A Luke address pasted into a box
becomes its chip, and a bare one in a message is handed to the agent as its
mention. A pull request&#39;s, a GitHub issue&#39;s, or a Linear issue&#39;s link says its
title and state, read through the workspace&#39;s own GitHub App or Linear, in an
Inbox item through that item&#39;s own workspace. A Luke link pasted into Slack,
iMessage, or X unfurls as Luke&#39;s card.
(<a href="https://github.com/ReviewStage/luke/pull/3036">#3036</a>,
<a href="https://github.com/ReviewStage/luke/pull/3038">#3038</a>,
<a href="https://github.com/ReviewStage/luke/pull/3047">#3047</a>,
<a href="https://github.com/ReviewStage/luke/pull/3049">#3049</a>,
<a href="https://github.com/ReviewStage/luke/pull/3071">#3071</a>,
<a href="https://github.com/ReviewStage/luke/pull/3074">#3074</a>,
<a href="https://github.com/ReviewStage/luke/pull/3098">#3098</a>)</p>
<h3>Agents that start, mention, and archive agents</h3>
<p>A coding agent starts another coding agent on its own task or on any task of
its workspace, which <code>list_tasks</code> finds, and the new agent reports back to it.
The @ list offers every coding agent of the workspace, labelled by its task,
and coding agents write mentions too. Luke and coding agents read any page of
the workspace with <code>read_page</code>, so a page mention points at the page rather
than carrying it. An agent can archive or unarchive another, and the archived
agent&#39;s card and banner say who archived it and why. A message from another
coding agent is drawn under that agent&#39;s mark.
(<a href="https://github.com/ReviewStage/luke/pull/3028">#3028</a>,
<a href="https://github.com/ReviewStage/luke/pull/3029">#3029</a>,
<a href="https://github.com/ReviewStage/luke/pull/3064">#3064</a>,
<a href="https://github.com/ReviewStage/luke/pull/3067">#3067</a>,
<a href="https://github.com/ReviewStage/luke/pull/3068">#3068</a>,
<a href="https://github.com/ReviewStage/luke/pull/3076">#3076</a>,
<a href="https://github.com/ReviewStage/luke/pull/3078">#3078</a>,
<a href="https://github.com/ReviewStage/luke/pull/3088">#3088</a>,
<a href="https://github.com/ReviewStage/luke/pull/3093">#3093</a>)</p>
<h3>Start a task without planning</h3>
<p>New task has a Plan switch. Turn it off and the task starts with an empty
plan and no call, and the switch stays as you left it next time.
(<a href="https://github.com/ReviewStage/luke/pull/3083">#3083</a>)</p>
<h3>Luke at any width</h3>
<p>A narrow window or side panel keeps everything in reach. A side panel&#39;s file
tree, Changes tree, and Terminal shells float over a skinny tab, peeked by
hover and opened by their toggle, as the main sidebar does. Tab strips shrink,
then fold to glyphs, then scroll with the chosen tab in view. The plan, an
agent&#39;s transcript, the call bar, Settings, the Factory, Home, the Inbox, and
the sidebar&#39;s foot all read in a narrow column, and toasts, dialogs, and menus
stay on screen in a short window.
(<a href="https://github.com/ReviewStage/luke/pull/3089">#3089</a>,
<a href="https://github.com/ReviewStage/luke/pull/3090">#3090</a>,
<a href="https://github.com/ReviewStage/luke/pull/3079">#3079</a>,
<a href="https://github.com/ReviewStage/luke/pull/3056">#3056</a>,
<a href="https://github.com/ReviewStage/luke/pull/3055">#3055</a>,
<a href="https://github.com/ReviewStage/luke/pull/3058">#3058</a>,
<a href="https://github.com/ReviewStage/luke/pull/3052">#3052</a>,
<a href="https://github.com/ReviewStage/luke/pull/3053">#3053</a>,
<a href="https://github.com/ReviewStage/luke/pull/3054">#3054</a>,
<a href="https://github.com/ReviewStage/luke/pull/3050">#3050</a>,
<a href="https://github.com/ReviewStage/luke/pull/3043">#3043</a>,
<a href="https://github.com/ReviewStage/luke/pull/3051">#3051</a>,
<a href="https://github.com/ReviewStage/luke/pull/3059">#3059</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Luke&#39;s video shows in the in-app call card and the floating call window
while Settings › Experimental › Video calls is on
(<a href="https://github.com/ReviewStage/luke/pull/3061">#3061</a>,
<a href="https://github.com/ReviewStage/luke/pull/3062">#3062</a>)</li>
<li>Code review is a suggested automation on the Automations list
(<a href="https://github.com/ReviewStage/luke/pull/3077">#3077</a>)</li>
<li>An MCP server&#39;s chip shows the server&#39;s row and tools, and says whether the
turn is handed it (<a href="https://github.com/ReviewStage/luke/pull/3097">#3097</a>)</li>
<li>What scrolls fades beneath every pinned bar, banner, and call timer
(<a href="https://github.com/ReviewStage/luke/pull/3057">#3057</a>)</li>
<li>The keyboard&#39;s focus ring is drawn once, whole, on the shape you see, and
scrolls its control in with room to spare
(<a href="https://github.com/ReviewStage/luke/pull/3044">#3044</a>,
<a href="https://github.com/ReviewStage/luke/pull/3045">#3045</a>,
<a href="https://github.com/ReviewStage/luke/pull/3046">#3046</a>,
<a href="https://github.com/ReviewStage/luke/pull/3069">#3069</a>)</li>
<li>Settings, dialogs, and empty states say less and only what helps
(<a href="https://github.com/ReviewStage/luke/pull/3096">#3096</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Open in Luke opening a bare Electron rather than Luke
(<a href="https://github.com/ReviewStage/luke/pull/3063">#3063</a>)</li>
<li>Fixed Reopen on an account still signing in adding a new account, and a
disconnect deleting an account added under the same name
(<a href="https://github.com/ReviewStage/luke/pull/3039">#3039</a>)</li>
<li>Fixed an agent whose harness is not yet known wearing a stray glyph
(<a href="https://github.com/ReviewStage/luke/pull/3094">#3094</a>)</li>
<li>Fixed an automation&#39;s Runs panel appearing without sliding as the window&#39;s
panes do (<a href="https://github.com/ReviewStage/luke/pull/3091">#3091</a>)</li>
<li>Fixed a plan picture&#39;s last editor drawn over the text rather than in the
viewer (<a href="https://github.com/ReviewStage/luke/pull/3073">#3073</a>)</li>
<li>Fixed an empty plan drawing a summary and its button
(<a href="https://github.com/ReviewStage/luke/pull/3072">#3072</a>)</li>
<li>Fixed a click on an empty plan&#39;s panel not putting the caret in its text
(<a href="https://github.com/ReviewStage/luke/pull/3075">#3075</a>)</li>
<li>Fixed an Inbox picture standing taller than a screenful
(<a href="https://github.com/ReviewStage/luke/pull/3065">#3065</a>)</li>
<li>Fixed a chip parting from the punctuation after it at a line&#39;s end
(<a href="https://github.com/ReviewStage/luke/pull/3060">#3060</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added a View › Developer menu and named side-by-side instances to development
builds (<a href="https://github.com/ReviewStage/luke/pull/3080">#3080</a>,
<a href="https://github.com/ReviewStage/luke/pull/3087">#3087</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.15.0: Pictures in plans</title>
      <link>https://tryluke.dev/changelog/0.15.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.15.0</guid>
      <pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Pictures in plans</h3>
<p>Paste or drop a picture into a plan, or insert one with ⌥⌘I: it shows at
once while it uploads, with its alt text and caption in place, and a failed
upload offers Retry. A plan&#39;s pictures are drawn on its page and in its
versions, open over the window, and are served only to its workspace&#39;s
members. A coding agent adds a screenshot from its sandbox to the plan, and
coding agents and Luke look at a plan&#39;s pictures when the alt text is not
enough.
(<a href="https://github.com/ReviewStage/luke/pull/2895">#2895</a>,
<a href="https://github.com/ReviewStage/luke/pull/2913">#2913</a>,
<a href="https://github.com/ReviewStage/luke/pull/2914">#2914</a>,
<a href="https://github.com/ReviewStage/luke/pull/2943">#2943</a>,
<a href="https://github.com/ReviewStage/luke/pull/2945">#2945</a>,
<a href="https://github.com/ReviewStage/luke/pull/2991">#2991</a>,
<a href="https://github.com/ReviewStage/luke/pull/3008">#3008</a>)</p>
<h3>Pictures from coding agents</h3>
<p>A coding agent or its worker shows you pictures from its sandbox, such as a
screenshot of what it built, taken in the sandbox&#39;s own Chromium after a
change to anything visible, and its transcript draws them
in place: one picture large, a few in a row, many as thumbnails. An
integration&#39;s pictures stand as chips under its call. A picture opens in a
viewer that walks the whole set, and Add to plan puts it in the agent&#39;s plan,
with Undo.
(<a href="https://github.com/ReviewStage/luke/pull/2911">#2911</a>,
<a href="https://github.com/ReviewStage/luke/pull/2906">#2906</a>,
<a href="https://github.com/ReviewStage/luke/pull/2919">#2919</a>,
<a href="https://github.com/ReviewStage/luke/pull/2927">#2927</a>,
<a href="https://github.com/ReviewStage/luke/pull/2979">#2979</a>,
<a href="https://github.com/ReviewStage/luke/pull/3004">#3004</a>)</p>
<h3>A person&#39;s page</h3>
<p>Press a person anywhere to open their page in the workspace: what they are
working on now, what waits on their answer, the tasks and automations they
created, and their other agents. ⌘K&#39;s People filter, Settings › Workspace ›
Members, and Your profile in the account menu lead there too. Their tasks in
sidebar filters the sidebar to them, and Copy link copies a link to their page.
A member who left keeps their picture, grayed, and their name says they left.
(<a href="https://github.com/ReviewStage/luke/pull/2982">#2982</a>,
<a href="https://github.com/ReviewStage/luke/pull/2983">#2983</a>,
<a href="https://github.com/ReviewStage/luke/pull/2984">#2984</a>,
<a href="https://github.com/ReviewStage/luke/pull/2985">#2985</a>,
<a href="https://github.com/ReviewStage/luke/pull/2986">#2986</a>,
<a href="https://github.com/ReviewStage/luke/pull/2995">#2995</a>,
<a href="https://github.com/ReviewStage/luke/pull/3001">#3001</a>,
<a href="https://github.com/ReviewStage/luke/pull/3015">#3015</a>)</p>
<h3>Copy link to anything</h3>
<p>Copy link now reaches nearly every place in Luke: an agent, its worker, its
Changes, a message in its transcript, a page, the Call tab, a version, an Inbox
item, an automation and its runs, the Factory, and a Settings page. ⌥⌘C copies
the link of what is open, ⌘K offers Copy link to each thing at hand, and every
copy says Link copied. A Luke link opens its place in the window, and a place
the reader cannot reach is Not found.
(<a href="https://github.com/ReviewStage/luke/pull/2950">#2950</a>,
<a href="https://github.com/ReviewStage/luke/pull/2969">#2969</a>,
<a href="https://github.com/ReviewStage/luke/pull/2970">#2970</a>,
<a href="https://github.com/ReviewStage/luke/pull/2971">#2971</a>,
<a href="https://github.com/ReviewStage/luke/pull/2972">#2972</a>,
<a href="https://github.com/ReviewStage/luke/pull/2973">#2973</a>,
<a href="https://github.com/ReviewStage/luke/pull/2974">#2974</a>,
<a href="https://github.com/ReviewStage/luke/pull/2975">#2975</a>,
<a href="https://github.com/ReviewStage/luke/pull/3017">#3017</a>)</p>
<h3>Pull requests as you</h3>
<p>A coding agent you start commits as you, with Luke as co-author, and its pull
request is opened as you, so it is yours on GitHub. The Changes tab names Luke
beside you, and where an agent had to write as the GitHub App, it says why.
(<a href="https://github.com/ReviewStage/luke/pull/2952">#2952</a>,
<a href="https://github.com/ReviewStage/luke/pull/2963">#2963</a>,
<a href="https://github.com/ReviewStage/luke/pull/2976">#2976</a>)</p>
<h3>Start a task from Linear</h3>
<p>An owner or admin connects Linear once for the whole workspace in Settings ›
Workspace › Integrations. Then New task in the sidebar offers the workspace&#39;s
Linear issues, and picking one starts the task with that issue as Luke&#39;s
context. Agents in the workspace use its Linear connection.
(<a href="https://github.com/ReviewStage/luke/pull/2859">#2859</a>)</p>
<h3>Several accounts at one integration</h3>
<p>Connect more than one account at a provider, such as a work and a personal
Notion, in Settings › Integrations. Each stands as a row of its own, named for
its workspace there, in Settings and in the MCP popover, and agents are handed
each as a connection of its own, asking which one you mean where you have not
said.
(<a href="https://github.com/ReviewStage/luke/pull/2858">#2858</a>,
<a href="https://github.com/ReviewStage/luke/pull/2864">#2864</a>,
<a href="https://github.com/ReviewStage/luke/pull/2867">#2867</a>,
<a href="https://github.com/ReviewStage/luke/pull/2868">#2868</a>,
<a href="https://github.com/ReviewStage/luke/pull/2869">#2869</a>,
<a href="https://github.com/ReviewStage/luke/pull/2896">#2896</a>,
<a href="https://github.com/ReviewStage/luke/pull/2897">#2897</a>,
<a href="https://github.com/ReviewStage/luke/pull/2915">#2915</a>,
<a href="https://github.com/ReviewStage/luke/pull/2994">#2994</a>)</p>
<h3>Agents that talk to each other</h3>
<p>On a call, Luke lists, reads, and messages every coding agent in the task&#39;s
workspace, each named with its task, and coding agents list and message the
other coding agents of their workspace. In an agent&#39;s box, @ also offers the
task&#39;s pages and its other agents.
(<a href="https://github.com/ReviewStage/luke/pull/3026">#3026</a>,
<a href="https://github.com/ReviewStage/luke/pull/3027">#3027</a>,
<a href="https://github.com/ReviewStage/luke/pull/2822">#2822</a>,
<a href="https://github.com/ReviewStage/luke/pull/3031">#3031</a>)</p>
<h3>Drafts kept</h3>
<p>What you type in an agent&#39;s box or an Inbox answer stays when you switch tabs
or tasks, kept per agent, task, and item on this Mac, and a pencil marks
a draft waiting out of sight.
(<a href="https://github.com/ReviewStage/luke/pull/2925">#2925</a>,
<a href="https://github.com/ReviewStage/luke/pull/2948">#2948</a>,
<a href="https://github.com/ReviewStage/luke/pull/3005">#3005</a>)</p>
<h3>Experiments: video calls, Automations, and the Factory</h3>
<p>Settings › Experimental › Video calls puts Luke&#39;s face on a call, as a live
avatar at the top of the Call tab, kept at 16:9 at any width. A new automation
can start from Code review, which reviews pull requests as Luke, at most five at
once and fifty a day. Automations choose the MCP servers their runs are handed,
wear what fires them, and keep running through failures, a failed run saying
why. An automation&#39;s agent is named by its pull request or issue, or from its
prompt, and its transcript opens on the message that started it. Its agent
stands among the sidebar&#39;s tasks, can be pinned there, and announces its turn&#39;s
end as a task&#39;s agent does, and a run that fails to start is told to its owner.
That agent&#39;s page keeps the side panel for its workers, Changes, and Terminal,
and its box offers @ and / as a task&#39;s agent&#39;s does. The Factory now reads Talk,
Build, Ship: the task on your call, the agents at work, failed, or waiting on
you, and what merged in the last day, each row saying what, which task, who, and
when. Its rows move with ↑ and ↓, open with Return, and offer Copy link, and ⌘K
and the sidebar reach it.
(<a href="https://github.com/ReviewStage/luke/pull/2908">#2908</a>,
<a href="https://github.com/ReviewStage/luke/pull/2923">#2923</a>,
<a href="https://github.com/ReviewStage/luke/pull/2924">#2924</a>,
<a href="https://github.com/ReviewStage/luke/pull/2926">#2926</a>,
<a href="https://github.com/ReviewStage/luke/pull/2929">#2929</a>,
<a href="https://github.com/ReviewStage/luke/pull/2932">#2932</a>,
<a href="https://github.com/ReviewStage/luke/pull/2933">#2933</a>,
<a href="https://github.com/ReviewStage/luke/pull/2936">#2936</a>,
<a href="https://github.com/ReviewStage/luke/pull/2939">#2939</a>,
<a href="https://github.com/ReviewStage/luke/pull/2940">#2940</a>,
<a href="https://github.com/ReviewStage/luke/pull/2941">#2941</a>,
<a href="https://github.com/ReviewStage/luke/pull/2942">#2942</a>,
<a href="https://github.com/ReviewStage/luke/pull/2949">#2949</a>,
<a href="https://github.com/ReviewStage/luke/pull/2962">#2962</a>,
<a href="https://github.com/ReviewStage/luke/pull/2965">#2965</a>,
<a href="https://github.com/ReviewStage/luke/pull/2980">#2980</a>,
<a href="https://github.com/ReviewStage/luke/pull/2996">#2996</a>,
<a href="https://github.com/ReviewStage/luke/pull/2997">#2997</a>,
<a href="https://github.com/ReviewStage/luke/pull/2999">#2999</a>,
<a href="https://github.com/ReviewStage/luke/pull/2937">#2937</a>,
<a href="https://github.com/ReviewStage/luke/pull/2951">#2951</a>,
<a href="https://github.com/ReviewStage/luke/pull/2967">#2967</a>,
<a href="https://github.com/ReviewStage/luke/pull/3009">#3009</a>,
<a href="https://github.com/ReviewStage/luke/pull/3016">#3016</a>,
<a href="https://github.com/ReviewStage/luke/pull/2781">#2781</a>,
<a href="https://github.com/ReviewStage/luke/pull/3018">#3018</a>,
<a href="https://github.com/ReviewStage/luke/pull/2953">#2953</a>,
<a href="https://github.com/ReviewStage/luke/pull/2954">#2954</a>,
<a href="https://github.com/ReviewStage/luke/pull/2955">#2955</a>,
<a href="https://github.com/ReviewStage/luke/pull/2956">#2956</a>,
<a href="https://github.com/ReviewStage/luke/pull/2957">#2957</a>,
<a href="https://github.com/ReviewStage/luke/pull/2958">#2958</a>,
<a href="https://github.com/ReviewStage/luke/pull/2968">#2968</a>,
<a href="https://github.com/ReviewStage/luke/pull/2998">#2998</a>,
<a href="https://github.com/ReviewStage/luke/pull/3020">#3020</a>)</p>
<h3>Improvements</h3>
<ul>
<li>A review, a comment, or a later failed check on an agent&#39;s pull request
reaches the agent as a message from GitHub
(<a href="https://github.com/ReviewStage/luke/pull/3007">#3007</a>)</li>
<li>A coding agent waits on its checks or a deploy without spending a model step
on each look (<a href="https://github.com/ReviewStage/luke/pull/3000">#3000</a>)</li>
<li>Settings › Notifications sends a test notification and says when macOS has
Luke&#39;s notifications off
(<a href="https://github.com/ReviewStage/luke/pull/3011">#3011</a>)</li>
<li>⌘F finds on every page that stands in the window
(<a href="https://github.com/ReviewStage/luke/pull/2964">#2964</a>)</li>
<li>⌘K groups, orders, and filters the sidebar&#39;s tasks, and archived tasks are a
view of the sidebar&#39;s list rather than a group at its foot
(<a href="https://github.com/ReviewStage/luke/pull/2904">#2904</a>,
<a href="https://github.com/ReviewStage/luke/pull/2905">#2905</a>,
<a href="https://github.com/ReviewStage/luke/pull/2966">#2966</a>)</li>
<li>Luke and coding agents edit anywhere in the plan, headings included, and a
batch of their edits lands whole or not at all
(<a href="https://github.com/ReviewStage/luke/pull/2916">#2916</a>)</li>
<li>⌘K offers Pin task or Unpin task for the task on screen
(<a href="https://github.com/ReviewStage/luke/pull/3021">#3021</a>)</li>
<li>A GitHub bot wears a bot badge beside its own GitHub picture
(<a href="https://github.com/ReviewStage/luke/pull/3022">#3022</a>)</li>
<li>Mark a task unread from its menus and ⌘K, and read again
(<a href="https://github.com/ReviewStage/luke/pull/2961">#2961</a>)</li>
<li>A task&#39;s last update counts its agents&#39; finished turns, so a task moves up
the sidebar when its agent finishes
(<a href="https://github.com/ReviewStage/luke/pull/2935">#2935</a>)</li>
<li>A task row grouped by creator names no repository
(<a href="https://github.com/ReviewStage/luke/pull/3003">#3003</a>)</li>
<li>A note typed on an Inbox item that asks nothing back reaches the agent, and
the box says so (<a href="https://github.com/ReviewStage/luke/pull/2946">#2946</a>)</li>
<li>A task&#39;s Inbox heads its list with the Inbox&#39;s name and Needs you, as the
window&#39;s Inbox does (<a href="https://github.com/ReviewStage/luke/pull/2918">#2918</a>)</li>
<li>An integration&#39;s MCP call wears its logo and names its own tool
(<a href="https://github.com/ReviewStage/luke/pull/2934">#2934</a>)</li>
<li>New task&#39;s workspace and repository chips are the searchable pickers
Settings uses, and the repository list drops its &quot;on GitHub&quot; heading
(<a href="https://github.com/ReviewStage/luke/pull/2930">#2930</a>,
<a href="https://github.com/ReviewStage/luke/pull/2928">#2928</a>)</li>
<li>Luke&#39;s, an agent&#39;s, and an automation&#39;s marks stand bare where nothing
overlaps them (<a href="https://github.com/ReviewStage/luke/pull/2990">#2990</a>,
<a href="https://github.com/ReviewStage/luke/pull/3014">#3014</a>)</li>
<li>A hover card offers no Open of its own, since a press on what it hangs from
opens it (<a href="https://github.com/ReviewStage/luke/pull/2992">#2992</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed the agent composer&#39;s and the Inbox answer box&#39;s controls piling on
each other in a narrow column, a ⋯ now taking in what does not fit
(<a href="https://github.com/ReviewStage/luke/pull/3013">#3013</a>)</li>
<li>Fixed Needs you keeping an answered item in the list, and it now says when
nothing needs you (<a href="https://github.com/ReviewStage/luke/pull/3002">#3002</a>)</li>
<li>Fixed a message that reached an agent mid-turn being drawn above the turn
rather than where it arrived
(<a href="https://github.com/ReviewStage/luke/pull/3023">#3023</a>)</li>
<li>Fixed a coding agent sometimes never getting its title
(<a href="https://github.com/ReviewStage/luke/pull/3024">#3024</a>)</li>
<li>Fixed a quote in a transcript or plan standing far indented and in italics
(<a href="https://github.com/ReviewStage/luke/pull/3033">#3033</a>)</li>
<li>Fixed the page a pasted Luke link opens, and the sign-in pages, showing no
icon in the browser&#39;s tab
(<a href="https://github.com/ReviewStage/luke/pull/3035">#3035</a>)</li>
<li>Fixed a message to a coding agent started before October 15 staying at
Starting (<a href="https://github.com/ReviewStage/luke/pull/3010">#3010</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added repository checks that keep logic out of the agents&#39; apps and refuse a
tracked literal shaped like a provider&#39;s credential
(<a href="https://github.com/ReviewStage/luke/pull/2889">#2889</a>,
<a href="https://github.com/ReviewStage/luke/pull/2988">#2988</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.14.0: The Terminal tab</title>
      <link>https://tryluke.dev/changelog/0.14.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.14.0</guid>
      <pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>The Terminal tab</h3>
<p>Every coding agent has a Terminal tab: a shell in the agent&#39;s own sandbox,
with its repository checked out and its GitHub sign-in kept fresh. Start,
rename, and end more shells beside it, each marked while it runs, and ⌘F
finds in a shell&#39;s scrollback. ⌘J, ⌘K&#39;s New terminal, the panel&#39;s +, and an
agent&#39;s ⋯ and right-click open one. A shell Luke cannot reach says why, and
the sandbox stays up while a terminal is open, stopping five idle minutes
after.
(<a href="https://github.com/ReviewStage/luke/pull/2575">#2575</a>,
<a href="https://github.com/ReviewStage/luke/pull/2592">#2592</a>,
<a href="https://github.com/ReviewStage/luke/pull/2599">#2599</a>,
<a href="https://github.com/ReviewStage/luke/pull/2591">#2591</a>,
<a href="https://github.com/ReviewStage/luke/pull/2639">#2639</a>,
<a href="https://github.com/ReviewStage/luke/pull/2600">#2600</a>,
<a href="https://github.com/ReviewStage/luke/pull/2611">#2611</a>,
<a href="https://github.com/ReviewStage/luke/pull/2622">#2622</a>,
<a href="https://github.com/ReviewStage/luke/pull/2640">#2640</a>,
<a href="https://github.com/ReviewStage/luke/pull/2703">#2703</a>,
<a href="https://github.com/ReviewStage/luke/pull/2814">#2814</a>,
<a href="https://github.com/ReviewStage/luke/pull/2817">#2817</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.14.0/the-terminal-tab.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.14.0/the-terminal-tab.png" alt="A coding agent's Terminal tab full screen: pnpm test src/members has just passed 54 tests in the agent's sandbox, beside its shells, tests, a running dev server, and psql." loading="lazy"></a></p>
<h3>@-mentions</h3>
<p>Type @ in the plan or in a coding agent&#39;s message box to mention a file, a
folder, or one of the plan&#39;s sections; in the agent&#39;s box, @ also offers the
repository&#39;s skills and your MCP servers and their tools. A mention is a chip
wherever it is drawn, a renamed heading renames its mentions, and Luke never
drops one when he corrects the plan. The agent is handed what it cannot read
itself, and a server or tool mentioned rides along on the next turn alone. In
a File tab, ⌥⌘K mentions the selected lines, pinned to their commit, and a
pasted link to an integration&#39;s page is a chip that brings its server along.
(<a href="https://github.com/ReviewStage/luke/pull/2593">#2593</a>,
<a href="https://github.com/ReviewStage/luke/pull/2603">#2603</a>,
<a href="https://github.com/ReviewStage/luke/pull/2586">#2586</a>,
<a href="https://github.com/ReviewStage/luke/pull/2624">#2624</a>,
<a href="https://github.com/ReviewStage/luke/pull/2653">#2653</a>,
<a href="https://github.com/ReviewStage/luke/pull/2664">#2664</a>,
<a href="https://github.com/ReviewStage/luke/pull/2643">#2643</a>,
<a href="https://github.com/ReviewStage/luke/pull/2668">#2668</a>,
<a href="https://github.com/ReviewStage/luke/pull/2683">#2683</a>,
<a href="https://github.com/ReviewStage/luke/pull/2721">#2721</a>,
<a href="https://github.com/ReviewStage/luke/pull/2792">#2792</a>,
<a href="https://github.com/ReviewStage/luke/pull/2795">#2795</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.14.0/at-mentions.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.14.0/at-mentions.png" alt="An agent's message box with a memberships.ts chip and @migr typed, its @ list offering the migrations folder and a migration file, the plan's Migration section, the db-migrations skill, and Neon's migration tools." loading="lazy"></a></p>
<h3>Who did what</h3>
<p>Everyone is drawn one way: a person on a circle with their picture, and Luke,
a coding agent, or an automation on a rounded square. A plan&#39;s &quot;Edited by&quot;
line and its section bylines name whoever wrote it, the time opening the
history, and a task&#39;s ⋯ menu ends with who created and last edited it. A
teammate&#39;s call is headed by their face and name, their messages in an
agent&#39;s tab carry it, and an agent a teammate started, an Inbox answer, and a
command run on someone&#39;s Mac each say whose it was. A task someone else
created wears their face in the sidebar, and its card, crumb, Home, the
Factory, and ⌘K name who created it.
(<a href="https://github.com/ReviewStage/luke/pull/2784">#2784</a>,
<a href="https://github.com/ReviewStage/luke/pull/2794">#2794</a>,
<a href="https://github.com/ReviewStage/luke/pull/2796">#2796</a>,
<a href="https://github.com/ReviewStage/luke/pull/2793">#2793</a>,
<a href="https://github.com/ReviewStage/luke/pull/2779">#2779</a>,
<a href="https://github.com/ReviewStage/luke/pull/2774">#2774</a>,
<a href="https://github.com/ReviewStage/luke/pull/2775">#2775</a>,
<a href="https://github.com/ReviewStage/luke/pull/2773">#2773</a>,
<a href="https://github.com/ReviewStage/luke/pull/2742">#2742</a>,
<a href="https://github.com/ReviewStage/luke/pull/2748">#2748</a>,
<a href="https://github.com/ReviewStage/luke/pull/2702">#2702</a>,
<a href="https://github.com/ReviewStage/luke/pull/2715">#2715</a>,
<a href="https://github.com/ReviewStage/luke/pull/2638">#2638</a>,
<a href="https://github.com/ReviewStage/luke/pull/2853">#2853</a>,
<a href="https://github.com/ReviewStage/luke/pull/2854">#2854</a>,
<a href="https://github.com/ReviewStage/luke/pull/2873">#2873</a>,
<a href="https://github.com/ReviewStage/luke/pull/2875">#2875</a>,
<a href="https://github.com/ReviewStage/luke/pull/2877">#2877</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.14.0/who-did-what.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.14.0/who-did-what.png" alt="The Teammate invitations plan, edited by Dana Moreno on her face under its acme › relay crumb and the five who can edit it, its sections signed by Dana, Luke during your call, a coding agent, and Jordan Lee." loading="lazy"></a></p>
<h3>Workspaces, clearer</h3>
<p>The workspace heads the sidebar by its tile, its photo or first letter, and
who shares it, and the window&#39;s title, New task, and a task&#39;s crumbs say
where you are: &quot;acme › relay&quot; and &quot;5 can edit&quot; over its title. Switching
workspaces opens its last task or its home, the Inbox follows, and Search
names the others. A personal workspace takes your name. Owners and admins
rename a workspace and set its photo, the owner makes members admins and hands
the workspace over to leave it, and an invite stays good after whoever sent it
leaves. A task whose repository its workspace cannot reach says so over every
tab and offers Move to workspace, which says who loses and gains it.
(<a href="https://github.com/ReviewStage/luke/pull/2718">#2718</a>,
<a href="https://github.com/ReviewStage/luke/pull/2712">#2712</a>,
<a href="https://github.com/ReviewStage/luke/pull/2802">#2802</a>,
<a href="https://github.com/ReviewStage/luke/pull/2719">#2719</a>,
<a href="https://github.com/ReviewStage/luke/pull/2723">#2723</a>,
<a href="https://github.com/ReviewStage/luke/pull/2730">#2730</a>,
<a href="https://github.com/ReviewStage/luke/pull/2808">#2808</a>,
<a href="https://github.com/ReviewStage/luke/pull/2733">#2733</a>,
<a href="https://github.com/ReviewStage/luke/pull/2736">#2736</a>,
<a href="https://github.com/ReviewStage/luke/pull/2741">#2741</a>,
<a href="https://github.com/ReviewStage/luke/pull/2764">#2764</a>,
<a href="https://github.com/ReviewStage/luke/pull/2786">#2786</a>,
<a href="https://github.com/ReviewStage/luke/pull/2788">#2788</a>,
<a href="https://github.com/ReviewStage/luke/pull/2789">#2789</a>,
<a href="https://github.com/ReviewStage/luke/pull/2772">#2772</a>,
<a href="https://github.com/ReviewStage/luke/pull/2749">#2749</a>,
<a href="https://github.com/ReviewStage/luke/pull/2750">#2750</a>,
<a href="https://github.com/ReviewStage/luke/pull/2757">#2757</a>,
<a href="https://github.com/ReviewStage/luke/pull/2820">#2820</a>,
<a href="https://github.com/ReviewStage/luke/pull/2824">#2824</a>,
<a href="https://github.com/ReviewStage/luke/pull/2840">#2840</a>,
<a href="https://github.com/ReviewStage/luke/pull/2845">#2845</a>,
<a href="https://github.com/ReviewStage/luke/pull/2761">#2761</a>,
<a href="https://github.com/ReviewStage/luke/pull/2771">#2771</a>,
<a href="https://github.com/ReviewStage/luke/pull/2803">#2803</a>,
<a href="https://github.com/ReviewStage/luke/pull/2804">#2804</a>,
<a href="https://github.com/ReviewStage/luke/pull/2870">#2870</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.14.0/workspaces-clearer.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.14.0/workspaces-clearer.png" alt="The sidebar headed by acme's mark and its five members, its switcher open on Dean's personal workspace, acme, and Harbor Labs, over acme's tasks." loading="lazy"></a></p>
<h3>Tasks</h3>
<p>What you work through with Luke is now a task, and the plan is the document
inside it: the sidebar, New task, ⌘K, the Tasks menu, and every notice say
so. A coding agent&#39;s own instructions, and an automation&#39;s, are its Prompt.
(<a href="https://github.com/ReviewStage/luke/pull/2835">#2835</a>,
<a href="https://github.com/ReviewStage/luke/pull/2841">#2841</a>,
<a href="https://github.com/ReviewStage/luke/pull/2844">#2844</a>,
<a href="https://github.com/ReviewStage/luke/pull/2848">#2848</a>)</p>
<h3>Luke links</h3>
<p>Copy link to task, in a task&#39;s ⋯ menu or the ⋯ beside its title, copies a
link that opens the task in Luke at its section: pressed in the window, from
another app through tryluke://, or from a browser through a page whose one
press opens Luke and which says what to check when nothing opens.
(<a href="https://github.com/ReviewStage/luke/pull/2695">#2695</a>,
<a href="https://github.com/ReviewStage/luke/pull/2696">#2696</a>,
<a href="https://github.com/ReviewStage/luke/pull/2697">#2697</a>,
<a href="https://github.com/ReviewStage/luke/pull/2819">#2819</a>,
<a href="https://github.com/ReviewStage/luke/pull/2831">#2831</a>)</p>
<h3>Experiments: Automations and the Factory</h3>
<p>Settings › Experimental turns on features before they are finished. Automations
start a coding agent on a schedule, on a GitHub event in the workspace&#39;s
repositories (choosing whose events, at which moments, and whether drafts and
forks count), or from a webhook, for you or the whole workspace, and its page
lists its runs, each opening the agent it started. An agent an automation
started belongs to no task: it has a page of its own, its questions wait in
the Inbox under its automation, and it says what started it. The Factory is a
read-only board of every task, from Plan to Build to Ship, beside the Inbox.
(<a href="https://github.com/ReviewStage/luke/pull/2709">#2709</a>,
<a href="https://github.com/ReviewStage/luke/pull/2699">#2699</a>,
<a href="https://github.com/ReviewStage/luke/pull/2692">#2692</a>,
<a href="https://github.com/ReviewStage/luke/pull/2752">#2752</a>,
<a href="https://github.com/ReviewStage/luke/pull/2754">#2754</a>,
<a href="https://github.com/ReviewStage/luke/pull/2759">#2759</a>,
<a href="https://github.com/ReviewStage/luke/pull/2760">#2760</a>,
<a href="https://github.com/ReviewStage/luke/pull/2776">#2776</a>,
<a href="https://github.com/ReviewStage/luke/pull/2778">#2778</a>,
<a href="https://github.com/ReviewStage/luke/pull/2768">#2768</a>,
<a href="https://github.com/ReviewStage/luke/pull/2770">#2770</a>,
<a href="https://github.com/ReviewStage/luke/pull/2805">#2805</a>,
<a href="https://github.com/ReviewStage/luke/pull/2780">#2780</a>,
<a href="https://github.com/ReviewStage/luke/pull/2799">#2799</a>,
<a href="https://github.com/ReviewStage/luke/pull/2674">#2674</a>,
<a href="https://github.com/ReviewStage/luke/pull/2720">#2720</a>,
<a href="https://github.com/ReviewStage/luke/pull/2713">#2713</a>,
<a href="https://github.com/ReviewStage/luke/pull/2745">#2745</a>,
<a href="https://github.com/ReviewStage/luke/pull/2765">#2765</a>,
<a href="https://github.com/ReviewStage/luke/pull/2767">#2767</a>,
<a href="https://github.com/ReviewStage/luke/pull/2601">#2601</a>,
<a href="https://github.com/ReviewStage/luke/pull/2608">#2608</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.14.0/automations.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.14.0/automations.png" alt="The Morning Sentry triage automation's page: weekdays at 9:00 on a schedule, its task, repositories, and model, and its runs beside it, one working now and four finished." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>The sidebar lists tasks in one section, grouped by repository, by creator,
or not at all, in the order you choose, and filters them by who created them
(<a href="https://github.com/ReviewStage/luke/pull/2893">#2893</a>,
<a href="https://github.com/ReviewStage/luke/pull/2899">#2899</a>)</li>
<li>The Changes tab and card name who opened the pull request, its reviewers by
where each stands, its commit authors, and its review comments
(<a href="https://github.com/ReviewStage/luke/pull/2862">#2862</a>,
<a href="https://github.com/ReviewStage/luke/pull/2863">#2863</a>,
<a href="https://github.com/ReviewStage/luke/pull/2865">#2865</a>,
<a href="https://github.com/ReviewStage/luke/pull/2878">#2878</a>)</li>
<li>A Mermaid fence in a plan draws as its diagram, in the read view and under
its code in the editor
(<a href="https://github.com/ReviewStage/luke/pull/2890">#2890</a>)</li>
<li>A workspace holds several GitHub installations, listed in Settings ›
Workspace and managed on GitHub
(<a href="https://github.com/ReviewStage/luke/pull/2642">#2642</a>,
<a href="https://github.com/ReviewStage/luke/pull/2644">#2644</a>)</li>
<li>Start a task without a name: it stands as Untitled until you name it
(<a href="https://github.com/ReviewStage/luke/pull/2888">#2888</a>)</li>
<li>An Inbox item standing alone says where it stands, 2 of 8, and steps through
the list by its arrows, J, and K, and a settled one offers the next that
needs you where its box stood
(<a href="https://github.com/ReviewStage/luke/pull/2882">#2882</a>,
<a href="https://github.com/ReviewStage/luke/pull/2885">#2885</a>)</li>
<li>A task counts as read the moment it opens, on whichever of its tabs
(<a href="https://github.com/ReviewStage/luke/pull/2900">#2900</a>)</li>
<li>A pinned task is pinned for you alone, not for the whole workspace
(<a href="https://github.com/ReviewStage/luke/pull/2901">#2901</a>)</li>
<li>Luke answers sooner on a call, his replies waiting on nothing earlier, and a
call greets you from where the last one left off
(<a href="https://github.com/ReviewStage/luke/pull/2623">#2623</a>)</li>
<li>A link is one quiet underline, a bare address says its host and path with a
↗, and cards, Inbox rows, and notifications name a link rather than print it
(<a href="https://github.com/ReviewStage/luke/pull/2800">#2800</a>,
<a href="https://github.com/ReviewStage/luke/pull/2815">#2815</a>,
<a href="https://github.com/ReviewStage/luke/pull/2798">#2798</a>,
<a href="https://github.com/ReviewStage/luke/pull/2797">#2797</a>)</li>
<li>Executor joins Settings › Integrations, every tool offered and its approvals
put to you (<a href="https://github.com/ReviewStage/luke/pull/2590">#2590</a>)</li>
<li>Settings › Integrations searches integrations and tools on its own, and a
tool opens onto a page of its own there and in the MCP popover
(<a href="https://github.com/ReviewStage/luke/pull/2635">#2635</a>,
<a href="https://github.com/ReviewStage/luke/pull/2700">#2700</a>)</li>
<li>A window too narrow for the sidebar folds it to float over the work, and a
narrow Inbox opens on its item, the list a press of ‹ Inbox away
(<a href="https://github.com/ReviewStage/luke/pull/2679">#2679</a>,
<a href="https://github.com/ReviewStage/luke/pull/2680">#2680</a>,
<a href="https://github.com/ReviewStage/luke/pull/2879">#2879</a>)</li>
<li>An Inbox option the agent recommends wears a Recommended badge
(<a href="https://github.com/ReviewStage/luke/pull/2881">#2881</a>)</li>
<li>A repository out of reach says why under the composer and offers what mends
it (<a href="https://github.com/ReviewStage/luke/pull/2573">#2573</a>,
<a href="https://github.com/ReviewStage/luke/pull/2588">#2588</a>)</li>
<li>A sign-in Connect cancelled or refused says so, with Try again
(<a href="https://github.com/ReviewStage/luke/pull/2595">#2595</a>,
<a href="https://github.com/ReviewStage/luke/pull/2604">#2604</a>)</li>
<li>The repository chip says when a workspace&#39;s GitHub was removed or suspended
on GitHub, rather than that none is connected
(<a href="https://github.com/ReviewStage/luke/pull/2834">#2834</a>)</li>
<li>Each column&#39;s ⋯ offers the chosen tab&#39;s actions, and tab housekeeping stays
on the right-click (<a href="https://github.com/ReviewStage/luke/pull/2783">#2783</a>)</li>
<li>The sidebar sets an unread task in semibold and a read one in a quieter ink,
every row 30px tall (<a href="https://github.com/ReviewStage/luke/pull/2801">#2801</a>)</li>
<li>Every window draws its words without the Mac&#39;s font smoothing
(<a href="https://github.com/ReviewStage/luke/pull/2807">#2807</a>)</li>
<li>The sign-in&#39;s buttons stand taller and wear &quot;Last used&quot; on the corner of the
one it marks (<a href="https://github.com/ReviewStage/luke/pull/2782">#2782</a>,
<a href="https://github.com/ReviewStage/luke/pull/2785">#2785</a>)</li>
<li>A tool-call group leads with its fold&#39;s chevron, wears the failed mark where
a call it holds failed, and a subagent&#39;s tab groups its calls as its agent&#39;s
does (<a href="https://github.com/ReviewStage/luke/pull/2892">#2892</a>,
<a href="https://github.com/ReviewStage/luke/pull/2907">#2907</a>)</li>
<li>No button, menu item, or command ends its name with an ellipsis
(<a href="https://github.com/ReviewStage/luke/pull/2821">#2821</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a sidebar group not listing its tasks newest updated first
(<a href="https://github.com/ReviewStage/luke/pull/2818">#2818</a>)</li>
<li>Fixed Settings saying Connected for a GitHub installation that GitHub
removed or suspended
(<a href="https://github.com/ReviewStage/luke/pull/2828">#2828</a>,
<a href="https://github.com/ReviewStage/luke/pull/2829">#2829</a>)</li>
<li>Fixed an agent&#39;s terminals failing to list in a busy account
(<a href="https://github.com/ReviewStage/luke/pull/2809">#2809</a>)</li>
<li>Fixed &quot;Changed since you last looked&quot; missing a teammate&#39;s saves
(<a href="https://github.com/ReviewStage/luke/pull/2689">#2689</a>)</li>
<li>Fixed Home missing a teammate&#39;s agent&#39;s open items
(<a href="https://github.com/ReviewStage/luke/pull/2755">#2755</a>)</li>
<li>Fixed the Call tab not naming a teammate&#39;s call
(<a href="https://github.com/ReviewStage/luke/pull/2694">#2694</a>)</li>
<li>Fixed Choose a model&#39;s menu hanging away from its button and showing a stale
catalog (<a href="https://github.com/ReviewStage/luke/pull/2763">#2763</a>)</li>
<li>Fixed an open popover jumping as its button grew or shrank
(<a href="https://github.com/ReviewStage/luke/pull/2629">#2629</a>)</li>
<li>Fixed a call&#39;s card floating over a version history&#39;s versions
(<a href="https://github.com/ReviewStage/luke/pull/2816">#2816</a>)</li>
<li>Fixed Contact us opening inside the account menu rather than beside it
(<a href="https://github.com/ReviewStage/luke/pull/2649">#2649</a>)</li>
<li>Fixed Settings › Profile and Settings › Workspace drawing you unlike the rest
of the window, and offering Remove on your own row
(<a href="https://github.com/ReviewStage/luke/pull/2810">#2810</a>,
<a href="https://github.com/ReviewStage/luke/pull/2813">#2813</a>)</li>
<li>Fixed a transparent workspace photo showing its letter tile behind it
(<a href="https://github.com/ReviewStage/luke/pull/2769">#2769</a>)</li>
<li>Fixed a picture on its own line opening in the plan editor as something you
could not edit (<a href="https://github.com/ReviewStage/luke/pull/2886">#2886</a>)</li>
<li>Fixed a menu&#39;s second submenu item not opening its submenu on hover
(<a href="https://github.com/ReviewStage/luke/pull/2917">#2917</a>)</li>
<li>Fixed Luke&#39;s face moving on the sign-in screen
(<a href="https://github.com/ReviewStage/luke/pull/2891">#2891</a>)</li>
<li>Fixed an agent&#39;s to-do list sitting off its rows&#39; text, its item in progress
now wearing the working mark
(<a href="https://github.com/ReviewStage/luke/pull/2874">#2874</a>)</li>
<li>Fixed an inline chip sitting off its line&#39;s baseline, a section&#39;s byline
sitting off its ⋯, and a page&#39;s empty state sitting low
(<a href="https://github.com/ReviewStage/luke/pull/2856">#2856</a>,
<a href="https://github.com/ReviewStage/luke/pull/2658">#2658</a>,
<a href="https://github.com/ReviewStage/luke/pull/2832">#2832</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the renderer to load Settings, analytics, and the markdown parser as
chunks of their own, its main bundle 18% smaller
(<a href="https://github.com/ReviewStage/luke/pull/2738">#2738</a>,
<a href="https://github.com/ReviewStage/luke/pull/2743">#2743</a>)</li>
<li>Updated the code&#39;s layout so application logic lives in <code>packages/</code>, under
one <code>@luke/*</code> scope (<a href="https://github.com/ReviewStage/luke/pull/2648">#2648</a>,
<a href="https://github.com/ReviewStage/luke/pull/2652">#2652</a>,
<a href="https://github.com/ReviewStage/luke/pull/2654">#2654</a>,
<a href="https://github.com/ReviewStage/luke/pull/2659">#2659</a>,
<a href="https://github.com/ReviewStage/luke/pull/2728">#2728</a>)</li>
<li>Added screenshots to 0.13.0 from its own build
(<a href="https://github.com/ReviewStage/luke/pull/2645">#2645</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.13.0: Workspaces</title>
      <link>https://tryluke.dev/changelog/0.13.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.13.0</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Workspaces</h3>
<p>Plans now live in workspaces you share with your team. Every account starts
with a personal workspace, and the sidebar switches between workspaces and
creates new ones. A workspace&#39;s members read and write its plans, its coding
agents, and their calls. Settings › Workspace invites people by link, lists
the invites still pending, removes members, and connects the workspace&#39;s own
GitHub organization, whose installation is the only source of its
repositories. Your personal GitHub link moves to Settings › Integrations, and
the Mac signs in once and holds a session of its own.
(<a href="https://github.com/ReviewStage/luke/pull/2110">#2110</a>,
<a href="https://github.com/ReviewStage/luke/pull/2111">#2111</a>,
<a href="https://github.com/ReviewStage/luke/pull/2122">#2122</a>,
<a href="https://github.com/ReviewStage/luke/pull/2133">#2133</a>,
<a href="https://github.com/ReviewStage/luke/pull/2151">#2151</a>,
<a href="https://github.com/ReviewStage/luke/pull/2152">#2152</a>,
<a href="https://github.com/ReviewStage/luke/pull/2124">#2124</a>,
<a href="https://github.com/ReviewStage/luke/pull/2250">#2250</a>,
<a href="https://github.com/ReviewStage/luke/pull/2268">#2268</a>,
<a href="https://github.com/ReviewStage/luke/pull/2274">#2274</a>,
<a href="https://github.com/ReviewStage/luke/pull/2396">#2396</a>,
<a href="https://github.com/ReviewStage/luke/pull/2135">#2135</a>,
<a href="https://github.com/ReviewStage/luke/pull/2153">#2153</a>,
<a href="https://github.com/ReviewStage/luke/pull/2414">#2414</a>,
<a href="https://github.com/ReviewStage/luke/pull/2418">#2418</a>,
<a href="https://github.com/ReviewStage/luke/pull/2427">#2427</a>,
<a href="https://github.com/ReviewStage/luke/pull/2500">#2500</a>,
<a href="https://github.com/ReviewStage/luke/pull/2501">#2501</a>,
<a href="https://github.com/ReviewStage/luke/pull/2502">#2502</a>,
<a href="https://github.com/ReviewStage/luke/pull/2503">#2503</a>,
<a href="https://github.com/ReviewStage/luke/pull/2504">#2504</a>,
<a href="https://github.com/ReviewStage/luke/pull/2505">#2505</a>,
<a href="https://github.com/ReviewStage/luke/pull/2508">#2508</a>,
<a href="https://github.com/ReviewStage/luke/pull/2524">#2524</a>,
<a href="https://github.com/ReviewStage/luke/pull/2539">#2539</a>,
<a href="https://github.com/ReviewStage/luke/pull/2566">#2566</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.13.0/workspaces.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.13.0/workspaces.png" alt="Settings › Workspace on acme: Dean is its owner, five members and a pending invite to sam@acme.dev with its link to copy, and acme's GitHub organization connected for its repositories." loading="lazy"></a></p>
<h3>Eight more integrations</h3>
<p>GitHub, Granola, Mercury, Neon, PostHog, Supabase, Vercel, and Y Combinator
join Linear, Notion, Sentry, and Slack in Settings › Integrations. Every tool
a server offers is now offered to Luke and coding agents, Slack&#39;s writes
included. GitHub connects through your own GitHub sign-in. An integration
reads Connected only once its server answers with tools, and says the server&#39;s
own reason when it does not.
(<a href="https://github.com/ReviewStage/luke/pull/2495">#2495</a>,
<a href="https://github.com/ReviewStage/luke/pull/2499">#2499</a>,
<a href="https://github.com/ReviewStage/luke/pull/2479">#2479</a>,
<a href="https://github.com/ReviewStage/luke/pull/2490">#2490</a>,
<a href="https://github.com/ReviewStage/luke/pull/2532">#2532</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.13.0/eight-more-integrations.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.13.0/eight-more-integrations.png" alt="Settings › Integrations with all twelve integrations connected, from GitHub to Y Combinator, each saying how many tools its server offers." loading="lazy"></a></p>
<h3>The MCP popover</h3>
<p>The MCP button in a coding agent&#39;s message box searches servers and their
tools, lists Connected apart from Not connected, and opens a server onto its
tools in place, each tool onto its whole description. Settings › Integrations
searches the same way, and a connected row opens onto its tools.
(<a href="https://github.com/ReviewStage/luke/pull/2527">#2527</a>,
<a href="https://github.com/ReviewStage/luke/pull/2528">#2528</a>,
<a href="https://github.com/ReviewStage/luke/pull/2542">#2542</a>,
<a href="https://github.com/ReviewStage/luke/pull/2554">#2554</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.13.0/the-mcp-popover.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.13.0/the-mcp-popover.png" alt="The MCP popover open over a coding agent's message box: its servers under Connected with their tool counts and this agent's switches, PostHog's off, and Mercury and Y Combinator under Not connected with Connect." loading="lazy"></a></p>
<h3>Home</h3>
<p>With no plan open, Luke rests on a home page that greets you with New plan,
what needs you, and your recent plans, which ↑ and ↓ move through. The
sidebar&#39;s Home row and ⇧⌘H go there. A launch reopens the plan you last had
open, its tabs and side panel as they were. New plan is now a dialog over the
window with the plan&#39;s name and a repository chip.
(<a href="https://github.com/ReviewStage/luke/pull/2468">#2468</a>,
<a href="https://github.com/ReviewStage/luke/pull/2485">#2485</a>,
<a href="https://github.com/ReviewStage/luke/pull/2494">#2494</a>,
<a href="https://github.com/ReviewStage/luke/pull/2543">#2543</a>,
<a href="https://github.com/ReviewStage/luke/pull/2550">#2550</a>,
<a href="https://github.com/ReviewStage/luke/pull/2562">#2562</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.13.0/home.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.13.0/home.png" alt="The home page with no plan open: Welcome back, Dean, with New plan, five Inbox items waiting with their plans, and six recent plans with their repositories, beside the sidebar's acme workspace." loading="lazy"></a></p>
<h3>The Inbox, one item at a time</h3>
<p>The Inbox reads one item at a time beside a list grouped by plan or newest
first. What needs you wears a dot and a bold title, and the Needs you toggle
narrows the list to it. A settled item shows what it offered with your pick
marked, and the list resizes.
(<a href="https://github.com/ReviewStage/luke/pull/2442">#2442</a>,
<a href="https://github.com/ReviewStage/luke/pull/2465">#2465</a>,
<a href="https://github.com/ReviewStage/luke/pull/2497">#2497</a>,
<a href="https://github.com/ReviewStage/luke/pull/2551">#2551</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.13.0/the-inbox-one-item-at-a-time.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.13.0/the-inbox-one-item-at-a-time.png" alt="The Inbox with the sidebar folded: items grouped by plan, three needing you marked with a dot, and a settled decision read beside them with 7 days marked as your pick and your reply under it." loading="lazy"></a></p>
<h3>Fast on your own key</h3>
<p>Saving an Anthropic key asks once whether its organization runs fast mode, and
Fast is offered on any key that does. When the organization was never granted
fast mode, the Fast row says so and links to where you ask for it. A fast step
Anthropic refuses runs again at standard speed, and its turn&#39;s card says so.
(<a href="https://github.com/ReviewStage/luke/pull/2544">#2544</a>,
<a href="https://github.com/ReviewStage/luke/pull/2552">#2552</a>,
<a href="https://github.com/ReviewStage/luke/pull/2555">#2555</a>,
<a href="https://github.com/ReviewStage/luke/pull/2556">#2556</a>)</p>
<h3>Improvements</h3>
<ul>
<li>⇧⌘T reopens the tabs you closed, the latest first, each where it stood
(<a href="https://github.com/ReviewStage/luke/pull/2429">#2429</a>)</li>
<li>The update pill shows only what there is to press, a failed check says so,
and Luke&#39;s menu can check for updates
(<a href="https://github.com/ReviewStage/luke/pull/2428">#2428</a>)</li>
<li>An agent&#39;s GitHub error offers the GitHub sign-in, and the start or message
goes through once you sign in
(<a href="https://github.com/ReviewStage/luke/pull/2415">#2415</a>)</li>
<li>An integration&#39;s sign-in waits with Reopen and Cancel, and says when it
failed or did not finish
(<a href="https://github.com/ReviewStage/luke/pull/2521">#2521</a>)</li>
<li>Every setting has one home in Settings, and Open Settings mends every GitHub
and integration refusal
(<a href="https://github.com/ReviewStage/luke/pull/2418">#2418</a>,
<a href="https://github.com/ReviewStage/luke/pull/2501">#2501</a>)</li>
<li>⌘K lists the Settings pages, and steps its filters with ⌘[ and ⌘], or ← and
→ while the field is empty
(<a href="https://github.com/ReviewStage/luke/pull/2489">#2489</a>,
<a href="https://github.com/ReviewStage/luke/pull/2496">#2496</a>)</li>
<li>A tool row about a page, the board, an agent, code, the plan, or the Inbox
opens it (<a href="https://github.com/ReviewStage/luke/pull/2484">#2484</a>)</li>
<li>An agent named anywhere, in the Inbox, a transcript, ⌘K, or the archived
list, hangs its card and opens its tab
(<a href="https://github.com/ReviewStage/luke/pull/2523">#2523</a>)</li>
<li>A file is named one way wherever it stands, hangs its card, and opens in the
side panel (<a href="https://github.com/ReviewStage/luke/pull/2559">#2559</a>)</li>
<li>Copy a link to a plan section from its heading&#39;s ⋯, and a mention of it in
the plan opens it (<a href="https://github.com/ReviewStage/luke/pull/2577">#2577</a>)</li>
<li>A page tab&#39;s code toggle shows its version&#39;s HTML as a File tab draws a file
(<a href="https://github.com/ReviewStage/luke/pull/2487">#2487</a>)</li>
<li>An agent&#39;s Changes tab is kept, pinned, and named for its agent like the
side panel&#39;s other tabs
(<a href="https://github.com/ReviewStage/luke/pull/2439">#2439</a>)</li>
<li>A press on a skill&#39;s chip opens its SKILL.md, and a coding agent&#39;s Loaded
skill row names the skill as /name with its card
(<a href="https://github.com/ReviewStage/luke/pull/2473">#2473</a>,
<a href="https://github.com/ReviewStage/luke/pull/2557">#2557</a>,
<a href="https://github.com/ReviewStage/luke/pull/2578">#2578</a>)</li>
<li>The Call tab stands a call&#39;s first ask and opening look-around where they
happened, and folds a spoken turn&#39;s words with its work
(<a href="https://github.com/ReviewStage/luke/pull/2433">#2433</a>,
<a href="https://github.com/ReviewStage/luke/pull/2486">#2486</a>,
<a href="https://github.com/ReviewStage/luke/pull/2436">#2436</a>,
<a href="https://github.com/ReviewStage/luke/pull/2437">#2437</a>,
<a href="https://github.com/ReviewStage/luke/pull/2453">#2453</a>,
<a href="https://github.com/ReviewStage/luke/pull/2449">#2449</a>)</li>
<li>The notetaker writes a correction in place of exactly what it names, and may
write a point&#39;s parts as sub-bullets
(<a href="https://github.com/ReviewStage/luke/pull/2460">#2460</a>,
<a href="https://github.com/ReviewStage/luke/pull/2463">#2463</a>,
<a href="https://github.com/ReviewStage/luke/pull/2459">#2459</a>)</li>
<li>Switches turn on in the accent blue
(<a href="https://github.com/ReviewStage/luke/pull/2518">#2518</a>)</li>
<li>Every menu, modal, hover card, tab, fold, chip, and segmented control is drawn
one way across the app
(<a href="https://github.com/ReviewStage/luke/pull/2536">#2536</a>,
<a href="https://github.com/ReviewStage/luke/pull/2538">#2538</a>,
<a href="https://github.com/ReviewStage/luke/pull/2549">#2549</a>,
<a href="https://github.com/ReviewStage/luke/pull/2553">#2553</a>,
<a href="https://github.com/ReviewStage/luke/pull/2558">#2558</a>,
<a href="https://github.com/ReviewStage/luke/pull/2560">#2560</a>,
<a href="https://github.com/ReviewStage/luke/pull/2531">#2531</a>)</li>
<li>Working, failed, unread, a pull request, a provider, and a time each wear one
mark wherever they are drawn
(<a href="https://github.com/ReviewStage/luke/pull/2526">#2526</a>,
<a href="https://github.com/ReviewStage/luke/pull/2530">#2530</a>,
<a href="https://github.com/ReviewStage/luke/pull/2535">#2535</a>,
<a href="https://github.com/ReviewStage/luke/pull/2546">#2546</a>)</li>
<li>A read that did not land says so the same way everywhere, then offers Retry
(<a href="https://github.com/ReviewStage/luke/pull/2534">#2534</a>)</li>
<li>Fewer lines describe the screen back to you
(<a href="https://github.com/ReviewStage/luke/pull/2567">#2567</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a goodbye&#39;s turn reading as failed rather than settled
(<a href="https://github.com/ReviewStage/luke/pull/2433">#2433</a>)</li>
<li>Fixed the voice and call windows being sent the planning conversation
(<a href="https://github.com/ReviewStage/luke/pull/2464">#2464</a>)</li>
<li>Fixed Settings pages drawing at the wrong size on their first frame
(<a href="https://github.com/ReviewStage/luke/pull/2425">#2425</a>)</li>
<li>Fixed menus scrolling sideways and the MCP popover&#39;s title sitting off
(<a href="https://github.com/ReviewStage/luke/pull/2475">#2475</a>)</li>
<li>Fixed the Inbox&#39;s crumbs and name drawn out of place, in a window and in full
screen (<a href="https://github.com/ReviewStage/luke/pull/2488">#2488</a>,
<a href="https://github.com/ReviewStage/luke/pull/2493">#2493</a>)</li>
<li>Fixed the account menu and the in-place GitHub and integration remedies
missing after the workspaces change
(<a href="https://github.com/ReviewStage/luke/pull/2517">#2517</a>,
<a href="https://github.com/ReviewStage/luke/pull/2520">#2520</a>)</li>
<li>Fixed Granola&#39;s and PostHog&#39;s marks
(<a href="https://github.com/ReviewStage/luke/pull/2519">#2519</a>,
<a href="https://github.com/ReviewStage/luke/pull/2529">#2529</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated PRIVACY.md to describe what shipped on 13 October and what the new
integrations can do (<a href="https://github.com/ReviewStage/luke/pull/2462">#2462</a>,
<a href="https://github.com/ReviewStage/luke/pull/2495">#2495</a>)</li>
<li>Updated Better Auth to 1.7.7, Effect to 4.0.4, and Drizzle to v1
(<a href="https://github.com/ReviewStage/luke/pull/2409">#2409</a>,
<a href="https://github.com/ReviewStage/luke/pull/2412">#2412</a>,
<a href="https://github.com/ReviewStage/luke/pull/2424">#2424</a>)</li>
<li>Updated the renderer to ship as ES modules, with a smaller bundle
(<a href="https://github.com/ReviewStage/luke/pull/2506">#2506</a>)</li>
<li>Added screenshots to 0.12.0 and retook 0.2.0 through 0.11.0&#39;s from each
release&#39;s own build
(<a href="https://github.com/ReviewStage/luke/pull/2435">#2435</a>,
<a href="https://github.com/ReviewStage/luke/pull/2481">#2481</a>,
<a href="https://github.com/ReviewStage/luke/pull/2482">#2482</a>,
<a href="https://github.com/ReviewStage/luke/pull/2492">#2492</a>)</li>
<li>Added changelog pages ten releases at a time, a page for each release, and an
RSS feed (<a href="https://github.com/ReviewStage/luke/pull/2498">#2498</a>,
<a href="https://github.com/ReviewStage/luke/pull/2507">#2507</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.12.0: The Call tab</title>
      <link>https://tryluke.dev/changelog/0.12.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.12.0</guid>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>The Call tab</h3>
<p>Each plan&#39;s calls now read as one thread in the Call tab, which takes the place
of Transcript and Work. What you and Luke said stand as messages, and the work
Luke did for a line, his thinking, commands, and subagents, sits right under the
line that asked for it, drawn as a coding agent&#39;s turn is. Each call ends on how
long it ran, and its card says why it ended and the model it ran on.
(<a href="https://github.com/ReviewStage/luke/pull/2365">#2365</a>,
<a href="https://github.com/ReviewStage/luke/pull/2368">#2368</a>,
<a href="https://github.com/ReviewStage/luke/pull/2369">#2369</a>,
<a href="https://github.com/ReviewStage/luke/pull/2378">#2378</a>,
<a href="https://github.com/ReviewStage/luke/pull/2404">#2404</a>,
<a href="https://github.com/ReviewStage/luke/pull/2242">#2242</a>,
<a href="https://github.com/ReviewStage/luke/pull/2246">#2246</a>,
<a href="https://github.com/ReviewStage/luke/pull/2410">#2410</a>,
<a href="https://github.com/ReviewStage/luke/pull/2417">#2417</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/the-call-tab.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/the-call-tab.png" alt="The Call tab over the whole window: yesterday's call closing on how long it ran, with Luke's reading, a subagent, and a command On your Mac folded under the question that asked for them, then today's call live." loading="lazy"></a></p>
<h3>The plan is one document</h3>
<p>A plan is now one Markdown document you edit in place, its title inline, and the
tab, the sidebar, and ⌘K follow the title as you type. New plans start as a copy
of your account&#39;s template, which you write in Settings › Plan template, with a
version history of its own. The default template reads like a design doc between
teammates: context, goal, approach, interfaces, alternatives, hard parts,
testing, and open questions. Luke writes each note under whichever of your
headings it belongs to, and plans from earlier releases carry over as documents.
(<a href="https://github.com/ReviewStage/luke/pull/2114">#2114</a>,
<a href="https://github.com/ReviewStage/luke/pull/2182">#2182</a>,
<a href="https://github.com/ReviewStage/luke/pull/2186">#2186</a>,
<a href="https://github.com/ReviewStage/luke/pull/2190">#2190</a>,
<a href="https://github.com/ReviewStage/luke/pull/2193">#2193</a>,
<a href="https://github.com/ReviewStage/luke/pull/2219">#2219</a>,
<a href="https://github.com/ReviewStage/luke/pull/2220">#2220</a>,
<a href="https://github.com/ReviewStage/luke/pull/2226">#2226</a>,
<a href="https://github.com/ReviewStage/luke/pull/2248">#2248</a>,
<a href="https://github.com/ReviewStage/luke/pull/2275">#2275</a>,
<a href="https://github.com/ReviewStage/luke/pull/2315">#2315</a>,
<a href="https://github.com/ReviewStage/luke/pull/2317">#2317</a>,
<a href="https://github.com/ReviewStage/luke/pull/2320">#2320</a>,
<a href="https://github.com/ReviewStage/luke/pull/2331">#2331</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/the-plan-is-one-document.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/the-plan-is-one-document.png" alt="A plan as one document, its title inline and the default template's headings filled in, with the plan's coding agents as tabs beside it." loading="lazy"></a></p>
<h3>Version history</h3>
<p>Every save to a plan is kept. Version history, in the plan&#39;s ⋯ menu, takes the
whole window the way Settings does: each version stands under who wrote it, a
version of several changes opens the sections it changed, Open goes to where it
was written, and Restore puts it back as a new version, so a restore can be
undone too. Each section says who last edited it, and that line opens the
version.
(<a href="https://github.com/ReviewStage/luke/pull/2011">#2011</a>,
<a href="https://github.com/ReviewStage/luke/pull/2017">#2017</a>,
<a href="https://github.com/ReviewStage/luke/pull/2025">#2025</a>,
<a href="https://github.com/ReviewStage/luke/pull/2042">#2042</a>,
<a href="https://github.com/ReviewStage/luke/pull/2063">#2063</a>,
<a href="https://github.com/ReviewStage/luke/pull/2147">#2147</a>,
<a href="https://github.com/ReviewStage/luke/pull/2254">#2254</a>,
<a href="https://github.com/ReviewStage/luke/pull/2261">#2261</a>,
<a href="https://github.com/ReviewStage/luke/pull/2272">#2272</a>,
<a href="https://github.com/ReviewStage/luke/pull/2292">#2292</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/version-history.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/version-history.png" alt="Version history over the whole window: versions under you, Luke, and a coding agent, one of them restored, and the agent's version open with its changes marked." loading="lazy"></a></p>
<h3>The Inbox</h3>
<p>Coding agents post what they need from you, a decision, a manual step, or a
question, to the plan&#39;s Inbox rather than leaving it in a transcript. An item
can carry text, links, exact lines of the repository, and pictures the agent
took in its sandbox, and you answer it in the plan&#39;s Inbox tab. The sidebar&#39;s
Inbox lists every plan with items waiting and counts them, and a new item raises
a notification and a badge on Luke&#39;s Dock icon.
(<a href="https://github.com/ReviewStage/luke/pull/2161">#2161</a>,
<a href="https://github.com/ReviewStage/luke/pull/2162">#2162</a>,
<a href="https://github.com/ReviewStage/luke/pull/2163">#2163</a>,
<a href="https://github.com/ReviewStage/luke/pull/2216">#2216</a>,
<a href="https://github.com/ReviewStage/luke/pull/2218">#2218</a>,
<a href="https://github.com/ReviewStage/luke/pull/2228">#2228</a>,
<a href="https://github.com/ReviewStage/luke/pull/2238">#2238</a>,
<a href="https://github.com/ReviewStage/luke/pull/2258">#2258</a>,
<a href="https://github.com/ReviewStage/luke/pull/2288">#2288</a>,
<a href="https://github.com/ReviewStage/luke/pull/2312">#2312</a>,
<a href="https://github.com/ReviewStage/luke/pull/2327">#2327</a>,
<a href="https://github.com/ReviewStage/luke/pull/2392">#2392</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/the-inbox.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/the-inbox.png" alt="A plan's Inbox tab with a coding agent's decision over the lines of code it is about, and a question carrying a picture the agent took, while the sidebar's Inbox counts three." loading="lazy"></a></p>
<h3>The Changes tab</h3>
<p>Once a coding agent opens a pull request, its Changes tab shows the diff file by
file, beside the file tree narrowed to the changed files, with the file count,
the lines added and removed, and a link to the files on GitHub. Open it from the
agent&#39;s Changes chip, the side panel&#39;s +, the summary, or ⌘K.
(<a href="https://github.com/ReviewStage/luke/pull/2307">#2307</a>,
<a href="https://github.com/ReviewStage/luke/pull/2395">#2395</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/the-changes-tab.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/the-changes-tab.png" alt="A finished coding agent beside its Changes tab: a migration's diff and the file tree narrowed to the pull request's nine changed files." loading="lazy"></a></p>
<h3>Skills</h3>
<p>Type / in a coding agent&#39;s message box to list the agent skills in the plan&#39;s
repository (.agents/skills and .claude/skills). The one you pick is a chip the
agent loads, and a chip in a sent message opens the skill&#39;s SKILL.md in a File
tab. Luke and coding agents are offered the repository&#39;s skills on their own
too, and load one when it fits.
(<a href="https://github.com/ReviewStage/luke/pull/2325">#2325</a>,
<a href="https://github.com/ReviewStage/luke/pull/2334">#2334</a>,
<a href="https://github.com/ReviewStage/luke/pull/2337">#2337</a>,
<a href="https://github.com/ReviewStage/luke/pull/2375">#2375</a>,
<a href="https://github.com/ReviewStage/luke/pull/2394">#2394</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/skills.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/skills.png" alt="A coding agent's message box with / typed and the repository's skills listed above it." loading="lazy"></a></p>
<h3>Commands on your Mac</h3>
<p>Luke, coding agents, and their subagents can run a shell command on your Mac. It
runs in your login shell from your home folder, with no approval step, and draws
in the transcript as a command row tagged On your Mac, with what it printed. It
is on by default, and Settings › General › Let agents run commands on this Mac
turns it off.
(<a href="https://github.com/ReviewStage/luke/pull/2359">#2359</a>,
<a href="https://github.com/ReviewStage/luke/pull/2374">#2374</a>,
<a href="https://github.com/ReviewStage/luke/pull/2376">#2376</a>,
<a href="https://github.com/ReviewStage/luke/pull/2388">#2388</a>)</p>
<h3>Luke and coding agents share one runtime</h3>
<p>Luke&#39;s planning model now runs on the same agent runtime as coding agents, so
both have the same tools: the repository&#39;s skills, your integrations, the web,
commands on your Mac, and pages. Both hand work to subagents the same way:
Luke&#39;s subagents run in the background so the call keeps going, and a coding
agent can wait on its subagent or work beside it. A message to a coding agent no
longer stops a subagent it is waiting on, and every subagent row names the model
and effort it ran on. Every model call on Luke&#39;s key, a coding agent&#39;s and each
generated title included, now counts toward your account&#39;s usage.
(<a href="https://github.com/ReviewStage/luke/pull/2132">#2132</a>,
<a href="https://github.com/ReviewStage/luke/pull/2244">#2244</a>,
<a href="https://github.com/ReviewStage/luke/pull/2363">#2363</a>,
<a href="https://github.com/ReviewStage/luke/pull/2365">#2365</a>,
<a href="https://github.com/ReviewStage/luke/pull/2367">#2367</a>,
<a href="https://github.com/ReviewStage/luke/pull/2372">#2372</a>,
<a href="https://github.com/ReviewStage/luke/pull/2386">#2386</a>,
<a href="https://github.com/ReviewStage/luke/pull/2387">#2387</a>,
<a href="https://github.com/ReviewStage/luke/pull/2402">#2402</a>,
<a href="https://github.com/ReviewStage/luke/pull/2403">#2403</a>)</p>
<h3>Pages</h3>
<p>Luke and coding agents can show you an interactive page, such as a mockup or a
comparison, in a Page tab in the side panel, drawn in a sandboxed frame. Each
page keeps its versions, and the side panel&#39;s + lists the plan&#39;s pages.
(<a href="https://github.com/ReviewStage/luke/pull/2360">#2360</a>,
<a href="https://github.com/ReviewStage/luke/pull/2362">#2362</a>,
<a href="https://github.com/ReviewStage/luke/pull/2364">#2364</a>,
<a href="https://github.com/ReviewStage/luke/pull/2370">#2370</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/pages.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/pages.png" alt="A Page tab beside the plan showing version 2 of an interactive mockup of the invite flow." loading="lazy"></a></p>
<h3>Integrations</h3>
<p>Connect Linear, Notion, and Sentry in Settings › Integrations, and Luke, coding
agents, and their subagents use them through each service&#39;s own MCP server. The
MCP button in a coding agent&#39;s message box lists each server&#39;s tools, switches a
server off for that chat, and connects one in place.
(<a href="https://github.com/ReviewStage/luke/pull/2070">#2070</a>,
<a href="https://github.com/ReviewStage/luke/pull/2319">#2319</a>,
<a href="https://github.com/ReviewStage/luke/pull/2328">#2328</a>,
<a href="https://github.com/ReviewStage/luke/pull/2329">#2329</a>,
<a href="https://github.com/ReviewStage/luke/pull/2333">#2333</a>,
<a href="https://github.com/ReviewStage/luke/pull/2336">#2336</a>,
<a href="https://github.com/ReviewStage/luke/pull/2358">#2358</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/integrations.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/integrations.png" alt="Settings › Integrations with every integration connected." loading="lazy"></a></p>
<h3>The call follows you</h3>
<p>A call keeps going when you switch plans, open Settings, or leave Luke. While
its plan is out of sight, the call bar stands at the foot of the sidebar, in the
window&#39;s corner, or in a floating window over other apps, with a button back to
the call&#39;s plan. Starting a call on another plan asks first.
(<a href="https://github.com/ReviewStage/luke/pull/2123">#2123</a>,
<a href="https://github.com/ReviewStage/luke/pull/2136">#2136</a>,
<a href="https://github.com/ReviewStage/luke/pull/2169">#2169</a>,
<a href="https://github.com/ReviewStage/luke/pull/2185">#2185</a>,
<a href="https://github.com/ReviewStage/luke/pull/2209">#2209</a>,
<a href="https://github.com/ReviewStage/luke/pull/2224">#2224</a>,
<a href="https://github.com/ReviewStage/luke/pull/2251">#2251</a>)</p>
<h3>Pin, archive, and group plans</h3>
<p>The sidebar groups plans by repository, each row with when it last changed, and
each repository has a + that starts a plan on it. Pin a plan or a repository to
keep it on top on every Mac you sign in on, and archive a plan to put it away
read-only; Delete is now Permanently delete. A plan&#39;s hover card shows its
repository, its coding agents, and their pull requests.
(<a href="https://github.com/ReviewStage/luke/pull/1992">#1992</a>,
<a href="https://github.com/ReviewStage/luke/pull/2001">#2001</a>,
<a href="https://github.com/ReviewStage/luke/pull/2027">#2027</a>,
<a href="https://github.com/ReviewStage/luke/pull/2028">#2028</a>,
<a href="https://github.com/ReviewStage/luke/pull/2034">#2034</a>,
<a href="https://github.com/ReviewStage/luke/pull/2060">#2060</a>,
<a href="https://github.com/ReviewStage/luke/pull/2064">#2064</a>,
<a href="https://github.com/ReviewStage/luke/pull/2068">#2068</a>,
<a href="https://github.com/ReviewStage/luke/pull/2074">#2074</a>,
<a href="https://github.com/ReviewStage/luke/pull/2120">#2120</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/pin-archive-and-group-plans.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/pin-archive-and-group-plans.png" alt="The sidebar with a pinned plan and a pinned repository, plans grouped by repository with when each last changed, and a pinned plan's card listing its coding agents and their pull requests." loading="lazy"></a></p>
<h3>A command palette</h3>
<p>⌘K opens any plan, coding agent, subagent, setting, or command, and any file in
the open plan&#39;s repository, with a filter for each kind.
(<a href="https://github.com/ReviewStage/luke/pull/2010">#2010</a>,
<a href="https://github.com/ReviewStage/luke/pull/2192">#2192</a>,
<a href="https://github.com/ReviewStage/luke/pull/2212">#2212</a>,
<a href="https://github.com/ReviewStage/luke/pull/2399">#2399</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.12.0/a-command-palette.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.12.0/a-command-palette.png" alt="The ⌘K command palette open over a plan, searching &quot;invite&quot; across plans, coding agents, and files." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Coding agents open as tabs in the plan&#39;s own column, beside the plan, with a +
of their own (<a href="https://github.com/ReviewStage/luke/pull/2076">#2076</a>,
<a href="https://github.com/ReviewStage/luke/pull/2077">#2077</a>)</li>
<li>A summary at the plan column&#39;s right lists its tabs, coding agents, subagents,
and files, pinned open, folded to a rail, or hung as a card
(<a href="https://github.com/ReviewStage/luke/pull/2105">#2105</a>,
<a href="https://github.com/ReviewStage/luke/pull/2115">#2115</a>,
<a href="https://github.com/ReviewStage/luke/pull/2318">#2318</a>)</li>
<li>Attach files to a message to a coding agent with the + beside Send, by
pasting, or by dropping them
(<a href="https://github.com/ReviewStage/luke/pull/2083">#2083</a>,
<a href="https://github.com/ReviewStage/luke/pull/2085">#2085</a>,
<a href="https://github.com/ReviewStage/luke/pull/2116">#2116</a>,
<a href="https://github.com/ReviewStage/luke/pull/2159">#2159</a>)</li>
<li>Dictate into a coding agent&#39;s message box or the new-plan composer with the
mic button (<a href="https://github.com/ReviewStage/luke/pull/2106">#2106</a>,
<a href="https://github.com/ReviewStage/luke/pull/2107">#2107</a>)</li>
<li>A coding agent keeps a live to-do list in its transcript
(<a href="https://github.com/ReviewStage/luke/pull/2075">#2075</a>)</li>
<li>A coding agent watches its pull request&#39;s CI and fixes what fails, where the
GitHub App may read the checks
(<a href="https://github.com/ReviewStage/luke/pull/2058">#2058</a>)</li>
<li>Archive a coding agent from its tab or the summary, and bring it back from the
summary&#39;s Archived fold
(<a href="https://github.com/ReviewStage/luke/pull/2252">#2252</a>,
<a href="https://github.com/ReviewStage/luke/pull/2276">#2276</a>)</li>
<li>Settings › Coding agents takes your own Anthropic and OpenAI API keys, and
coding agents run on them
(<a href="https://github.com/ReviewStage/luke/pull/2078">#2078</a>,
<a href="https://github.com/ReviewStage/luke/pull/2079">#2079</a>,
<a href="https://github.com/ReviewStage/luke/pull/2080">#2080</a>,
<a href="https://github.com/ReviewStage/luke/pull/2335">#2335</a>)</li>
<li>The model picker offers a model&#39;s smaller context window, per agent or as the
default (<a href="https://github.com/ReviewStage/luke/pull/2046">#2046</a>,
<a href="https://github.com/ReviewStage/luke/pull/2047">#2047</a>)</li>
<li>The File tab has a file tree that searches the whole repository, breadcrumbs,
back and forward, copy and download, and a link to the file on GitHub
(<a href="https://github.com/ReviewStage/luke/pull/2051">#2051</a>,
<a href="https://github.com/ReviewStage/luke/pull/2081">#2081</a>,
<a href="https://github.com/ReviewStage/luke/pull/2082">#2082</a>,
<a href="https://github.com/ReviewStage/luke/pull/2086">#2086</a>,
<a href="https://github.com/ReviewStage/luke/pull/2125">#2125</a>,
<a href="https://github.com/ReviewStage/luke/pull/2131">#2131</a>,
<a href="https://github.com/ReviewStage/luke/pull/2139">#2139</a>,
<a href="https://github.com/ReviewStage/luke/pull/2154">#2154</a>)</li>
<li>A file Luke showed opens with his note over the lines he showed
(<a href="https://github.com/ReviewStage/luke/pull/2264">#2264</a>)</li>
<li>⌘F finds within the tab you are in
(<a href="https://github.com/ReviewStage/luke/pull/2156">#2156</a>)</li>
<li>A Zoom setting under Settings › Appearance, stepped by ⌘+, ⌘−, and ⌘0
(<a href="https://github.com/ReviewStage/luke/pull/2053">#2053</a>)</li>
<li>The window reopens where you left it, ⌘W with no tab open closes it, ⌃⌘F goes
full screen, and Quit asks first during a call
(<a href="https://github.com/ReviewStage/luke/pull/2160">#2160</a>)</li>
<li>Settings pages name themselves at their top and group their rows in cards, and
anything that cannot be undone asks in a dialog
(<a href="https://github.com/ReviewStage/luke/pull/2340">#2340</a>,
<a href="https://github.com/ReviewStage/luke/pull/2346">#2346</a>,
<a href="https://github.com/ReviewStage/luke/pull/2347">#2347</a>,
<a href="https://github.com/ReviewStage/luke/pull/2348">#2348</a>,
<a href="https://github.com/ReviewStage/luke/pull/2349">#2349</a>)</li>
<li>The sidebar&#39;s account opens a menu with Settings, the changelog, and feedback,
and the gear beside it goes straight to Settings
(<a href="https://github.com/ReviewStage/luke/pull/2232">#2232</a>)</li>
<li>Toasts stack in the window&#39;s corner, and archiving, deleting, and an agent&#39;s
end offer an action in theirs
(<a href="https://github.com/ReviewStage/luke/pull/2013">#2013</a>,
<a href="https://github.com/ReviewStage/luke/pull/2118">#2118</a>)</li>
<li>Side panel tabs drag to any place, have a right-click menu, and pin to the
sidebar (<a href="https://github.com/ReviewStage/luke/pull/1991">#1991</a>,
<a href="https://github.com/ReviewStage/luke/pull/2057">#2057</a>,
<a href="https://github.com/ReviewStage/luke/pull/2061">#2061</a>)</li>
<li>Each coding agent wears its harness&#39;s mark and each subagent its model&#39;s, with
a ring while it works and an alert when it fails
(<a href="https://github.com/ReviewStage/luke/pull/2067">#2067</a>,
<a href="https://github.com/ReviewStage/luke/pull/2189">#2189</a>,
<a href="https://github.com/ReviewStage/luke/pull/2290">#2290</a>)</li>
<li>An agent&#39;s tab hovers a card with its model, its latest step, and when it last
moved (<a href="https://github.com/ReviewStage/luke/pull/2049">#2049</a>)</li>
<li>A finished turn says how long it worked, and that line&#39;s card names its model,
its tokens, and what it cached
(<a href="https://github.com/ReviewStage/luke/pull/1986">#1986</a>,
<a href="https://github.com/ReviewStage/luke/pull/2038">#2038</a>,
<a href="https://github.com/ReviewStage/luke/pull/2155">#2155</a>,
<a href="https://github.com/ReviewStage/luke/pull/2167">#2167</a>)</li>
<li>A context ring beside the agent&#39;s model shows how full its context window is
(<a href="https://github.com/ReviewStage/luke/pull/2014">#2014</a>)</li>
<li>The model picker shows the newest model of each family until you search
(<a href="https://github.com/ReviewStage/luke/pull/2031">#2031</a>)</li>
<li>Coding agents are titled from their first exchange, and subagents get short
titles too (<a href="https://github.com/ReviewStage/luke/pull/2069">#2069</a>,
<a href="https://github.com/ReviewStage/luke/pull/2150">#2150</a>)</li>
<li>Luke asks one question at a time on a call
(<a href="https://github.com/ReviewStage/luke/pull/1994">#1994</a>)</li>
<li>Links in a transcript or an Inbox item open in your browser
(<a href="https://github.com/ReviewStage/luke/pull/2300">#2300</a>,
<a href="https://github.com/ReviewStage/luke/pull/2352">#2352</a>)</li>
<li>Folds and popovers open and close with motion, and every scroller draws one
thin scrollbar (<a href="https://github.com/ReviewStage/luke/pull/2253">#2253</a>,
<a href="https://github.com/ReviewStage/luke/pull/2311">#2311</a>,
<a href="https://github.com/ReviewStage/luke/pull/2321">#2321</a>)</li>
<li>One focus ring for every control and every field
(<a href="https://github.com/ReviewStage/luke/pull/2304">#2304</a>,
<a href="https://github.com/ReviewStage/luke/pull/2357">#2357</a>)</li>
<li>Settings › Updates names the commit a build was cut from
(<a href="https://github.com/ReviewStage/luke/pull/2408">#2408</a>)</li>
<li>A repository is drawn with its owner&#39;s picture
(<a href="https://github.com/ReviewStage/luke/pull/2026">#2026</a>)</li>
<li>Actions in Luke&#39;s own menus are named without a trailing ellipsis
(<a href="https://github.com/ReviewStage/luke/pull/2416">#2416</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a coding agent on Fast failing at its first step: Fast now runs on
Luke&#39;s Anthropic key, and says it is unavailable on your own key
(<a href="https://github.com/ReviewStage/luke/pull/2239">#2239</a>,
<a href="https://github.com/ReviewStage/luke/pull/2366">#2366</a>)</li>
<li>Fixed Luke not ending the call when you asked him to
(<a href="https://github.com/ReviewStage/luke/pull/2054">#2054</a>)</li>
<li>Fixed the notetaker leaving out what a call settled unless you said yes to it
(<a href="https://github.com/ReviewStage/luke/pull/2040">#2040</a>)</li>
<li>Fixed coding agent notifications not arriving
(<a href="https://github.com/ReviewStage/luke/pull/2052">#2052</a>)</li>
<li>Fixed a deleted plan keeping its calls, its running coding agents, and their
sandboxes (<a href="https://github.com/ReviewStage/luke/pull/2298">#2298</a>,
<a href="https://github.com/ReviewStage/luke/pull/2303">#2303</a>,
<a href="https://github.com/ReviewStage/luke/pull/2326">#2326</a>)</li>
<li>Fixed a deleted account keeping its Linear grant
(<a href="https://github.com/ReviewStage/luke/pull/2299">#2299</a>)</li>
<li>Fixed a coding agent started with only a file never starting
(<a href="https://github.com/ReviewStage/luke/pull/2119">#2119</a>)</li>
<li>Fixed a coding agent reading as running after its messages were merged into
one (<a href="https://github.com/ReviewStage/luke/pull/2048">#2048</a>)</li>
<li>Fixed asking for a coding agent also starting a background worker
(<a href="https://github.com/ReviewStage/luke/pull/2127">#2127</a>)</li>
<li>Fixed a File tab that could not read its file
(<a href="https://github.com/ReviewStage/luke/pull/2030">#2030</a>)</li>
<li>Fixed a file Luke showed opening at main&#39;s head rather than the commit he read
(<a href="https://github.com/ReviewStage/luke/pull/2316">#2316</a>)</li>
<li>Fixed the File tab copying line numbers with the code
(<a href="https://github.com/ReviewStage/luke/pull/2330">#2330</a>)</li>
<li>Fixed a coding agent&#39;s sandbox too small to run the repository&#39;s linter
(<a href="https://github.com/ReviewStage/luke/pull/2016">#2016</a>)</li>
<li>Fixed the sidebar saying there were no plans before the list was read
(<a href="https://github.com/ReviewStage/luke/pull/2294">#2294</a>)</li>
<li>Fixed popovers opening under the whiteboard
(<a href="https://github.com/ReviewStage/luke/pull/2045">#2045</a>)</li>
<li>Fixed the message box&#39;s popovers opening away from their button
(<a href="https://github.com/ReviewStage/luke/pull/2037">#2037</a>)</li>
<li>Fixed Luke failing to read a newer service&#39;s answers
(<a href="https://github.com/ReviewStage/luke/pull/2210">#2210</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the avatar set with room around the face for profile photos
(<a href="https://github.com/ReviewStage/luke/pull/2021">#2021</a>)</li>
<li>Added screenshots to the 0.7.0 through 0.11.0 entries, and linked every entry
to its pull requests (<a href="https://github.com/ReviewStage/luke/pull/2041">#2041</a>,
<a href="https://github.com/ReviewStage/luke/pull/2062">#2062</a>)</li>
<li>Updated PRIVACY.md to describe what Luke keeps today
(<a href="https://github.com/ReviewStage/luke/pull/2287">#2287</a>)</li>
<li>Updated the service to delete a finished agent run&#39;s history at once, and to
log a failure&#39;s kind but never its detail
(<a href="https://github.com/ReviewStage/luke/pull/2310">#2310</a>,
<a href="https://github.com/ReviewStage/luke/pull/2332">#2332</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.11.0: Coding agents work alongside you</title>
      <link>https://tryluke.dev/changelog/0.11.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.11.0</guid>
      <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Coding agents work alongside you</h3>
<p>Ask Luke in a planning call how a coding agent is doing, or tell one what to
do, and Luke answers or steers the right agent. A coding agent can now edit
the plan the way Luke&#39;s notetaker does, and the plan says which agent made
each edit. New coding agent in the side panel&#39;s + opens a draft agent whose
first message is its task, so it starts on your task instead of the plan.
Each agent gets a generated title, and you can rename it from its tab&#39;s
right-click menu.
(<a href="https://github.com/ReviewStage/luke/pull/1958">#1958</a>,
<a href="https://github.com/ReviewStage/luke/pull/1959">#1959</a>,
<a href="https://github.com/ReviewStage/luke/pull/1960">#1960</a>,
<a href="https://github.com/ReviewStage/luke/pull/1962">#1962</a>,
<a href="https://github.com/ReviewStage/luke/pull/1964">#1964</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.11.0/coding-agents-work-alongside-you.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.11.0/coding-agents-work-alongside-you.png" alt="A coding agent's tab, titled for its work beside a second agent's, over its transcript where it updated the plan and opened #214." loading="lazy"></a></p>
<h3>Subagents</h3>
<p>A coding agent hands scoped work to read-only workers and picks each one&#39;s
model and effort. Each worker draws as a subagent row in the agent&#39;s
transcript, and the row opens the worker&#39;s own tab in the side panel.
(<a href="https://github.com/ReviewStage/luke/pull/1954">#1954</a>,
<a href="https://github.com/ReviewStage/luke/pull/1961">#1961</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.11.0/subagents.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.11.0/subagents.png" alt="A coding agent's transcript with two subagent rows, each naming its model and effort, and one worker open in a tab of its own beside the plan." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Each coding agent shows what it costs in tokens and dollars
(<a href="https://github.com/ReviewStage/luke/pull/1957">#1957</a>)</li>
<li>The pull request pill shows the pull request of the branch checked out in
the agent&#39;s sandbox, whatever branches it moved through
(<a href="https://github.com/ReviewStage/luke/pull/1965">#1965</a>)</li>
<li>The Code tab shows every snippet Luke showed on the plan, and a snippet
opens its whole file in a File tab
(<a href="https://github.com/ReviewStage/luke/pull/1956">#1956</a>,
<a href="https://github.com/ReviewStage/luke/pull/1967">#1967</a>)</li>
<li>The side panel&#39;s + opens and closes coding agent and subagent tabs, with
the same searchable menu the pickers use
(<a href="https://github.com/ReviewStage/luke/pull/1950">#1950</a>,
<a href="https://github.com/ReviewStage/luke/pull/1952">#1952</a>)</li>
<li>Side panel tabs scroll sideways instead of shrinking to icons, and the tab
strip fades only an edge that hides a tab
(<a href="https://github.com/ReviewStage/luke/pull/1947">#1947</a>,
<a href="https://github.com/ReviewStage/luke/pull/1955">#1955</a>)</li>
<li>Every transcript uses the Work tab&#39;s style
(<a href="https://github.com/ReviewStage/luke/pull/1943">#1943</a>)</li>
<li>The agent&#39;s model shows in the message box
(<a href="https://github.com/ReviewStage/luke/pull/1944">#1944</a>)</li>
<li>Luke starts reading the plan&#39;s repository the moment a call starts, while
he greets you (<a href="https://github.com/ReviewStage/luke/pull/1938">#1938</a>)</li>
<li>Luke always shows in the Dock and ⌘Tab
(<a href="https://github.com/ReviewStage/luke/pull/1941">#1941</a>)</li>
<li>The theme defaults to System
(<a href="https://github.com/ReviewStage/luke/pull/1949">#1949</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed the Code tab jittering as it scrolled
(<a href="https://github.com/ReviewStage/luke/pull/1972">#1972</a>)</li>
<li>Fixed the Work and Code tabs losing a plan&#39;s work after a restart
(<a href="https://github.com/ReviewStage/luke/pull/1951">#1951</a>)</li>
<li>Fixed a dragged tab stopping short of either end of the tab strip
(<a href="https://github.com/ReviewStage/luke/pull/1955">#1955</a>)</li>
<li>Fixed a coding agent&#39;s shell starting outside its checkout
(<a href="https://github.com/ReviewStage/luke/pull/1946">#1946</a>)</li>
<li>Fixed a shadow behind the composer&#39;s card
(<a href="https://github.com/ReviewStage/luke/pull/1939">#1939</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Removed the Show Luke in the Dock setting
(<a href="https://github.com/ReviewStage/luke/pull/1941">#1941</a>)</li>
<li>Removed the PostHog extensions Luke never used from the app bundle
(<a href="https://github.com/ReviewStage/luke/pull/1969">#1969</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.10.0: Coding agents</title>
      <link>https://tryluke.dev/changelog/0.10.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.10.0</guid>
      <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Coding agents</h3>
<p>Start a coding agent from a plan. Start in the plan toolbar hands the plan to
an agent working in a cloud sandbox on the plan&#39;s repository, on your default
model, and its chevron picks the model, its effort, and Fast for this run from
the Anthropic and OpenAI models on offer. Each agent gets a tab in the side
panel beside Board, Code, and Transcript, with a live transcript of what it
thought, ran, and wrote, a message box under it that steers the agent
mid-run, and Stop. The tab&#39;s head wears the agent&#39;s branch, then its pull
request with its state and checks, and offers Open pull request, Copy branch
name, Copy checkout command, and View changes on GitHub. A macOS notification
says when an agent finishes and names the pull request it opened, and its tab
wears a dot until you look. Settings › Coding agents holds the default model
and effort.
(<a href="https://github.com/ReviewStage/luke/pull/1862">#1862</a>,
<a href="https://github.com/ReviewStage/luke/pull/1871">#1871</a>,
<a href="https://github.com/ReviewStage/luke/pull/1872">#1872</a>,
<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>,
<a href="https://github.com/ReviewStage/luke/pull/1899">#1899</a>,
<a href="https://github.com/ReviewStage/luke/pull/1900">#1900</a>,
<a href="https://github.com/ReviewStage/luke/pull/1903">#1903</a>,
<a href="https://github.com/ReviewStage/luke/pull/1906">#1906</a>,
<a href="https://github.com/ReviewStage/luke/pull/1907">#1907</a>,
<a href="https://github.com/ReviewStage/luke/pull/1919">#1919</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.10.0/coding-agents.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.10.0/coding-agents.png" alt="A coding agent's tab full screen, mid-run, with what it read, edited, and tested, a steer from the developer, its pull request in the head, and the message box with Stop." loading="lazy"></a></p>
<h3>Planning on a GitHub repository</h3>
<p>Each plan is about a GitHub repository, reached through the Luke GitHub App.
The new-plan composer&#39;s chip picks it, with your recent repositories, a search
over every repository the App reaches, and a link to install the App; the
plan menu offers Change repository… and Open on GitHub. Luke reads the
repository and shows its code from a checkout in the cloud, so planning no
longer runs commands on your Mac. The local-folder path is gone: a plan from
an earlier release opens on the repository picker. Sign in with GitHub now
goes through the Luke GitHub App too.
(<a href="https://github.com/ReviewStage/luke/pull/1863">#1863</a>,
<a href="https://github.com/ReviewStage/luke/pull/1866">#1866</a>,
<a href="https://github.com/ReviewStage/luke/pull/1868">#1868</a>,
<a href="https://github.com/ReviewStage/luke/pull/1870">#1870</a>,
<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>,
<a href="https://github.com/ReviewStage/luke/pull/1885">#1885</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.10.0/planning-on-a-github-repository.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.10.0/planning-on-a-github-repository.png" alt="The new-plan composer with its repository picker open on acme's repositories, a search field, and a link to GitHub." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Back and forward through plans and Settings, with ⌘[ and ⌘], title-bar
buttons, a Go menu, and the mouse&#39;s back and forward buttons
(<a href="https://github.com/ReviewStage/luke/pull/1921">#1921</a>)</li>
<li>A Theme setting under Settings › Appearance: Light, Dark, or System
(<a href="https://github.com/ReviewStage/luke/pull/1934">#1934</a>)</li>
<li>A light palette for the window, the code, and the whiteboard
(<a href="https://github.com/ReviewStage/luke/pull/1936">#1936</a>)</li>
<li>Drag the side panel&#39;s tabs into a new order, or move one with ⇧⌘← and ⇧⌘→
(<a href="https://github.com/ReviewStage/luke/pull/1935">#1935</a>)</li>
<li>The side panel drags out until the document&#39;s floor, and full screen asks a
longer pull (<a href="https://github.com/ReviewStage/luke/pull/1923">#1923</a>)</li>
<li>A sleeker sign-in that waits in place while the browser answers, with Cancel
(<a href="https://github.com/ReviewStage/luke/pull/1926">#1926</a>)</li>
<li>Send feedback and Suggest a feature open a standard dialog, with screenshots
attached, pasted, or dropped
(<a href="https://github.com/ReviewStage/luke/pull/1928">#1928</a>)</li>
<li>Escape leaves Settings
(<a href="https://github.com/ReviewStage/luke/pull/1921">#1921</a>)</li>
<li>Every Settings pop-up is the app&#39;s own searchable menu, and the effort is a
segmented control (<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>,
<a href="https://github.com/ReviewStage/luke/pull/1888">#1888</a>)</li>
<li>The voice transcript reads as a conversation, each call from a divider with
its day and time (<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>,
<a href="https://github.com/ReviewStage/luke/pull/1898">#1898</a>)</li>
<li>New plan and the agent&#39;s message box share one composer
(<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>,
<a href="https://github.com/ReviewStage/luke/pull/1933">#1933</a>)</li>
<li>Copy plan moved into the plan&#39;s ⋯ menu and keeps ⇧⌘C
(<a href="https://github.com/ReviewStage/luke/pull/1872">#1872</a>,
<a href="https://github.com/ReviewStage/luke/pull/1877">#1877</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Settings&#39; toolbar ending Reset to defaults short of the edge
(<a href="https://github.com/ReviewStage/luke/pull/1925">#1925</a>)</li>
<li>Fixed glyph and labelled buttons drawing in several styles across the window
(<a href="https://github.com/ReviewStage/luke/pull/1929">#1929</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Removed the last of the notch-era window: its modes, hover machinery, and
presentation (<a href="https://github.com/ReviewStage/luke/pull/1927">#1927</a>,
<a href="https://github.com/ReviewStage/luke/pull/1932">#1932</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.9.0: A Work tab for what Luke thought and ran</title>
      <link>https://tryluke.dev/changelog/0.9.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.9.0</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>A Work tab for what Luke thought and ran</h3>
<p>A new Work tab in the side panel shows each planning turn like an agent
transcript: what Luke&#39;s planning model thought, the tools it called, and what
it wrote. A background worker&#39;s whole session opens from its call in the tab.
(<a href="https://github.com/ReviewStage/luke/pull/1893">#1893</a>,
<a href="https://github.com/ReviewStage/luke/pull/1894">#1894</a>,
<a href="https://github.com/ReviewStage/luke/pull/1895">#1895</a>,
<a href="https://github.com/ReviewStage/luke/pull/1901">#1901</a>,
<a href="https://github.com/ReviewStage/luke/pull/1904">#1904</a>,
<a href="https://github.com/ReviewStage/luke/pull/1905">#1905</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.9.0/a-work-tab.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.9.0/a-work-tab.png" alt="The Work tab with a finished planning turn above the current one: Luke's thought, his background worker, and the commands he is running." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>The plan column and the side panel use Cursor-style tabs that go icon-only
when narrow (<a href="https://github.com/ReviewStage/luke/pull/1902">#1902</a>,
<a href="https://github.com/ReviewStage/luke/pull/1910">#1910</a>)</li>
<li>The window uses one spacing scale throughout
(<a href="https://github.com/ReviewStage/luke/pull/1913">#1913</a>)</li>
<li>Transcript call headers stick flush to the top of the scroll area
(<a href="https://github.com/ReviewStage/luke/pull/1909">#1909</a>)</li>
<li>A tab&#39;s close button draws full size, dim at rest and brighter on hover
(<a href="https://github.com/ReviewStage/luke/pull/1912">#1912</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Luke falling silent or losing the lead on a planning call
(<a href="https://github.com/ReviewStage/luke/pull/1908">#1908</a>)</li>
<li>Fixed the right-panel toggle moving and missing rapid clicks
(<a href="https://github.com/ReviewStage/luke/pull/1892">#1892</a>)</li>
<li>Fixed title-bar buttons showing through sliding panes
(<a href="https://github.com/ReviewStage/luke/pull/1914">#1914</a>)</li>
<li>Fixed New plan in the folded sidebar not leaving the new-plan page
(<a href="https://github.com/ReviewStage/luke/pull/1915">#1915</a>)</li>
<li>Fixed the sidebar&#39;s plan row missing its rename pencil
(<a href="https://github.com/ReviewStage/luke/pull/1915">#1915</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Removed the Quit Luke buttons from sign-in and Settings, since ⌘Q in the
app menu quits Luke (<a href="https://github.com/ReviewStage/luke/pull/1916">#1916</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.8.0: A new home for your plans</title>
      <link>https://tryluke.dev/changelog/0.8.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.8.0</guid>
      <pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>A new home for your plans</h3>
<p>Luke opens on a composer for a new plan, beside a sidebar that lists your
plans newest first. The sidebar resizes, folds away with ⌘B, and opens Settings
from one account button at its foot. Rename a plan, or delete it after a
standard confirmation, from one plan menu in the toolbar&#39;s ⋯ or a right-click
in the sidebar.
(<a href="https://github.com/ReviewStage/luke/pull/1826">#1826</a>,
<a href="https://github.com/ReviewStage/luke/pull/1827">#1827</a>,
<a href="https://github.com/ReviewStage/luke/pull/1831">#1831</a>,
<a href="https://github.com/ReviewStage/luke/pull/1835">#1835</a>,
<a href="https://github.com/ReviewStage/luke/pull/1836">#1836</a>,
<a href="https://github.com/ReviewStage/luke/pull/1842">#1842</a>,
<a href="https://github.com/ReviewStage/luke/pull/1847">#1847</a>,
<a href="https://github.com/ReviewStage/luke/pull/1856">#1856</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.8.0/a-new-home-for-your-plans.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.8.0/a-new-home-for-your-plans.png" alt="The new-plan composer beside the sidebar of plans, one plan's right-click menu open on Rename, Reveal in Finder, Change folder, and Delete plan." loading="lazy"></a></p>
<h3>A side panel for the board, the code, and the transcript</h3>
<p>A plan&#39;s whiteboard, the code Luke shows, and the transcript of what was said
now sit in a right side panel with tabs. The panel runs full height, goes full
screen, and opens by itself the first time Luke draws or shows code in a plan.
Luke draws on the whiteboard as he talks, lays it out by Excalidraw&#39;s guides,
then looks at what he drew and fixes what he sees.
(<a href="https://github.com/ReviewStage/luke/pull/1798">#1798</a>,
<a href="https://github.com/ReviewStage/luke/pull/1799">#1799</a>,
<a href="https://github.com/ReviewStage/luke/pull/1816">#1816</a>,
<a href="https://github.com/ReviewStage/luke/pull/1828">#1828</a>,
<a href="https://github.com/ReviewStage/luke/pull/1829">#1829</a>,
<a href="https://github.com/ReviewStage/luke/pull/1833">#1833</a>,
<a href="https://github.com/ReviewStage/luke/pull/1841">#1841</a>,
<a href="https://github.com/ReviewStage/luke/pull/1851">#1851</a>,
<a href="https://github.com/ReviewStage/luke/pull/1864">#1864</a>,
<a href="https://github.com/ReviewStage/luke/pull/1878">#1878</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.8.0/a-side-panel-for-the-board-the-code-and-the-transcript.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.8.0/a-side-panel-for-the-board-the-code-and-the-transcript.png" alt="The side panel full screen on the whiteboard Luke drew for a plan: the flow from a member's invite to the teammate joining or the link being refused." loading="lazy"></a></p>
<h3>Luke as a planning teammate</h3>
<p>Luke plans with you rather than interviewing you: he takes notes live, doesn&#39;t
assume you already know what you want to build, and opens each call on what was
said on the plan&#39;s earlier calls. He hands slow work to a background worker and
tells you its result at a natural pause, and Stop cancels that work too.
(<a href="https://github.com/ReviewStage/luke/pull/1792">#1792</a>,
<a href="https://github.com/ReviewStage/luke/pull/1813">#1813</a>,
<a href="https://github.com/ReviewStage/luke/pull/1815">#1815</a>,
<a href="https://github.com/ReviewStage/luke/pull/1817">#1817</a>,
<a href="https://github.com/ReviewStage/luke/pull/1820">#1820</a>,
<a href="https://github.com/ReviewStage/luke/pull/1824">#1824</a>,
<a href="https://github.com/ReviewStage/luke/pull/1825">#1825</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.8.0/luke-as-a-planning-teammate.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.8.0/luke-as-a-planning-teammate.png" alt="The Transcript tab, where today's call opens on what was settled yesterday and Luke reports a background worker's finding at a pause." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Keyboard shortcuts cover the whole app and are listed in the menu bar
(<a href="https://github.com/ReviewStage/luke/pull/1844">#1844</a>)</li>
<li>Settings has a search field, a Back button, and Reset to defaults beside the
page title (<a href="https://github.com/ReviewStage/luke/pull/1838">#1838</a>,
<a href="https://github.com/ReviewStage/luke/pull/1848">#1848</a>,
<a href="https://github.com/ReviewStage/luke/pull/1859">#1859</a>)</li>
<li>Planning replies stream sentence by sentence, never ahead of what Luke has
actually done (<a href="https://github.com/ReviewStage/luke/pull/1802">#1802</a>)</li>
<li>A planning call picks up where it left off after a lost connection
(<a href="https://github.com/ReviewStage/luke/pull/1803">#1803</a>)</li>
<li>The stop key silences Luke at once
(<a href="https://github.com/ReviewStage/luke/pull/1795">#1795</a>)</li>
<li>The sidebar and side panel open and close smoothly, and snap when you drag
past their bounds (<a href="https://github.com/ReviewStage/luke/pull/1850">#1850</a>)</li>
<li>Usage is still counted, but there is no daily allowance anymore
(<a href="https://github.com/ReviewStage/luke/pull/1860">#1860</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed one call&#39;s end touching the next call
(<a href="https://github.com/ReviewStage/luke/pull/1818">#1818</a>)</li>
<li>Fixed Markdown showing up in Luke&#39;s spoken replies
(<a href="https://github.com/ReviewStage/luke/pull/1793">#1793</a>)</li>
<li>Fixed answers crossing between two actions run at the same time
(<a href="https://github.com/ReviewStage/luke/pull/1873">#1873</a>)</li>
<li>Fixed Stop not reaching a planning turn
(<a href="https://github.com/ReviewStage/luke/pull/1874">#1874</a>)</li>
<li>Fixed the voice losing track of a planning turn waiting on background work
(<a href="https://github.com/ReviewStage/luke/pull/1875">#1875</a>)</li>
<li>Fixed the window scrolling sideways when the side panel opened on Luke&#39;s code
(<a href="https://github.com/ReviewStage/luke/pull/1884">#1884</a>)</li>
<li>Fixed a fade band at the top of Settings pages
(<a href="https://github.com/ReviewStage/luke/pull/1857">#1857</a>)</li>
<li>Fixed all-caps labels left in the app
(<a href="https://github.com/ReviewStage/luke/pull/1865">#1865</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the app icon to sit on Apple&#39;s macOS icon grid with its shadow
beneath the tile (<a href="https://github.com/ReviewStage/luke/pull/1845">#1845</a>,
<a href="https://github.com/ReviewStage/luke/pull/1846">#1846</a>)</li>
<li>Removed the notch panel, the spoken introduction, the desk voice, calendar,
the iOS and Apple Watch app, and other features no longer in use
(<a href="https://github.com/ReviewStage/luke/pull/1806">#1806</a>,
<a href="https://github.com/ReviewStage/luke/pull/1807">#1807</a>,
<a href="https://github.com/ReviewStage/luke/pull/1808">#1808</a>,
<a href="https://github.com/ReviewStage/luke/pull/1809">#1809</a>,
<a href="https://github.com/ReviewStage/luke/pull/1810">#1810</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.7.1</title>
      <link>https://tryluke.dev/changelog/0.7.1</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.7.1</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke speaks first when a planning call opens, starting from what to build
or from where the plan stands
(<a href="https://github.com/ReviewStage/luke/pull/1785">#1785</a>)</li>
<li>Luke stops asking once the plan is enough for an agent to build from, and
says the plan is complete
(<a href="https://github.com/ReviewStage/luke/pull/1783">#1783</a>)</li>
<li>Web search answers faster during a planning call
(<a href="https://github.com/ReviewStage/luke/pull/1788">#1788</a>)</li>
<li>Luke fills your pauses with fewer &quot;mhm&quot;s and &quot;okay&quot;s
(<a href="https://github.com/ReviewStage/luke/pull/1784">#1784</a>)</li>
<li>You can delete an open plan from its header, after Luke asks you to confirm
(<a href="https://github.com/ReviewStage/luke/pull/1786">#1786</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a web search cut short reading as one that found nothing
(<a href="https://github.com/ReviewStage/luke/pull/1788">#1788</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the README and tryluke.dev to lead with feature planning
(<a href="https://github.com/ReviewStage/luke/pull/1787">#1787</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.7.0: Plan a feature with Luke</title>
      <link>https://tryluke.dev/changelog/0.7.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.7.0</guid>
      <pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Plan a feature with Luke</h3>
<p>The Plans tab holds named feature plans, each on a fixed template written for
a coding agent to pick up. Start a planning call and Luke asks one question at
a time while a notetaker writes the plan as you talk, streaming each draft to
your Mac. Point a plan at a folder on your Mac and Luke reads the code there to
answer his own questions instead of asking you; each command runs in a sandbox
with no network, no writes, and no <code>.env</code> files. He can also search the web and
read public pages, and with GitHub connected he reads your repositories.
(<a href="https://github.com/ReviewStage/luke/pull/1730">#1730</a>,
<a href="https://github.com/ReviewStage/luke/pull/1734">#1734</a>,
<a href="https://github.com/ReviewStage/luke/pull/1739">#1739</a>,
<a href="https://github.com/ReviewStage/luke/pull/1745">#1745</a>,
<a href="https://github.com/ReviewStage/luke/pull/1749">#1749</a>,
<a href="https://github.com/ReviewStage/luke/pull/1750">#1750</a>,
<a href="https://github.com/ReviewStage/luke/pull/1755">#1755</a>,
<a href="https://github.com/ReviewStage/luke/pull/1760">#1760</a>,
<a href="https://github.com/ReviewStage/luke/pull/1776">#1776</a>,
<a href="https://github.com/ReviewStage/luke/pull/1777">#1777</a>,
<a href="https://github.com/ReviewStage/luke/pull/1779">#1779</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.7.0/plan-a-feature-with-luke.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.7.0/plan-a-feature-with-luke.png" alt="A plan on its fixed template mid-call, the notetaker writing its change map while Luke asks one question about what he read in the code." loading="lazy"></a></p>
<h3>Luke opens as a Mac app</h3>
<p>Luke opens in an ordinary window with a Dock tile instead of the notch panel,
on two tabs: Plans and Settings. For now Luke speaks only on a planning call,
so briefings, the launch greeting, and the talk key outside a plan are off,
onboarding is skipped after sign-in, and the Sessions and Conversation tabs
are hidden.
(<a href="https://github.com/ReviewStage/luke/pull/1743">#1743</a>,
<a href="https://github.com/ReviewStage/luke/pull/1755">#1755</a>,
<a href="https://github.com/ReviewStage/luke/pull/1775">#1775</a>,
<a href="https://github.com/ReviewStage/luke/pull/1782">#1782</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Luke runs on GPT-6.1 Sol
(<a href="https://github.com/ReviewStage/luke/pull/1772">#1772</a>)</li>
<li>A planning call survives a dropped connection instead of ending
(<a href="https://github.com/ReviewStage/luke/pull/1755">#1755</a>,
<a href="https://github.com/ReviewStage/luke/pull/1756">#1756</a>,
<a href="https://github.com/ReviewStage/luke/pull/1758">#1758</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a planning call&#39;s plan losing sections it had already written, leaving
them Unanswered (<a href="https://github.com/ReviewStage/luke/pull/1780">#1780</a>)</li>
<li>Fixed the settings search drawing under a nested page&#39;s header
(<a href="https://github.com/ReviewStage/luke/pull/1644">#1644</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated session replay to mask every word, so a recording carries layout and
no text (<a href="https://github.com/ReviewStage/luke/pull/1494">#1494</a>)</li>
<li>Updated PRIVACY.md for feature plans, the planning call&#39;s notetaker, the
folder Luke reads on your Mac, and the sub-agents Luke opens for himself
(<a href="https://github.com/ReviewStage/luke/pull/1496">#1496</a>,
<a href="https://github.com/ReviewStage/luke/pull/1731">#1731</a>,
<a href="https://github.com/ReviewStage/luke/pull/1749">#1749</a>,
<a href="https://github.com/ReviewStage/luke/pull/1755">#1755</a>,
<a href="https://github.com/ReviewStage/luke/pull/1777">#1777</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.6.0: One brain, running on Luke's service</title>
      <link>https://tryluke.dev/changelog/0.6.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.6.0</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>One brain, running on Luke&#39;s service</h3>
<p>Luke&#39;s replies and announcements come from one brain that remembers across
turns, and it runs on his service rather than on your Mac. Once a minute the
service checks your Conductor sessions and wakes the brain with what changed,
so a session that finished or needs you is noticed whether or not your Mac is
awake. Ask about a session and he reads what it did, including the chat&#39;s own
conversation.
(<a href="https://github.com/ReviewStage/luke/pull/738">#738</a>,
<a href="https://github.com/ReviewStage/luke/pull/865">#865</a>,
<a href="https://github.com/ReviewStage/luke/pull/1038">#1038</a>,
<a href="https://github.com/ReviewStage/luke/pull/1069">#1069</a>,
<a href="https://github.com/ReviewStage/luke/pull/1079">#1079</a>,
<a href="https://github.com/ReviewStage/luke/pull/972">#972</a>,
<a href="https://github.com/ReviewStage/luke/pull/1421">#1421</a>)</p>
<h3>Voice on your Luke account, and voice alone</h3>
<p>Spoken exchanges need no OpenAI key of your own — every call runs through
Luke&#39;s service on the account you signed in with, so the Voice page loses its
Provider section and a key an earlier build stored is dropped at launch. Hold
the talk key and the microphone is open for exactly as long as you hold it;
release it and Luke keeps talking until the stop key or Escape. The Voice row
offers all 22 Live voices, with Marin as the default.</p>
<p>The Ask Luke composer, its ⌥L shortcut, and typed asks are gone.
(<a href="https://github.com/ReviewStage/luke/pull/933">#933</a>,
<a href="https://github.com/ReviewStage/luke/pull/956">#956</a>,
<a href="https://github.com/ReviewStage/luke/pull/1006">#1006</a>,
<a href="https://github.com/ReviewStage/luke/pull/1013">#1013</a>,
<a href="https://github.com/ReviewStage/luke/pull/1381">#1381</a>,
<a href="https://github.com/ReviewStage/luke/pull/1417">#1417</a>,
<a href="https://github.com/ReviewStage/luke/pull/1166">#1166</a>)</p>
<h3>The Conversation tab</h3>
<p>History is now Conversation, and it draws the account&#39;s one thread as the
service holds it, so a Clear on any device empties it everywhere. Luke&#39;s
replies render as Markdown, each action he took is a row saying what he did
with a chip that opens the session it reached, and several in one turn fold
under a line that counts them. An ellipsis beside each of his messages opens
thumbs up and down; a thumbs down offers a feedback composer with the message
quoted, and nothing leaves your Mac until you press Send.
(<a href="https://github.com/ReviewStage/luke/pull/795">#795</a>,
<a href="https://github.com/ReviewStage/luke/pull/977">#977</a>,
<a href="https://github.com/ReviewStage/luke/pull/740">#740</a>,
<a href="https://github.com/ReviewStage/luke/pull/936">#936</a>,
<a href="https://github.com/ReviewStage/luke/pull/939">#939</a>,
<a href="https://github.com/ReviewStage/luke/pull/1473">#1473</a>,
<a href="https://github.com/ReviewStage/luke/pull/1489">#1489</a>,
<a href="https://github.com/ReviewStage/luke/pull/873">#873</a>,
<a href="https://github.com/ReviewStage/luke/pull/747">#747</a>,
<a href="https://github.com/ReviewStage/luke/pull/1029">#1029</a>,
<a href="https://github.com/ReviewStage/luke/pull/1462">#1462</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.6.0/the-conversation-tab.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.6.0/the-conversation-tab.png" alt="The Conversation tab: you ask what needs you, Luke answers about two agents, searches his notebook for what was said about invite expiry, and messages the Add teammate invitations agent to finish #214." loading="lazy"></a></p>
<h3>Luke&#39;s notebook</h3>
<p>Luke keeps a notebook on the service: what he knows about you, the decisions
worth remembering, and a dated note for each day he works. Before answering
about prior work, dates, people, or preferences he searches it and reads only
the lines he needs. A read-only Memory page in Settings shows the notebook as
he wrote it.
(<a href="https://github.com/ReviewStage/luke/pull/1475">#1475</a>,
<a href="https://github.com/ReviewStage/luke/pull/1484">#1484</a>,
<a href="https://github.com/ReviewStage/luke/pull/1491">#1491</a>,
<a href="https://github.com/ReviewStage/luke/pull/1477">#1477</a>,
<a href="https://github.com/ReviewStage/luke/pull/1478">#1478</a>,
<a href="https://github.com/ReviewStage/luke/pull/1479">#1479</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.6.0/lukes-notebook.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.6.0/lukes-notebook.png" alt="Settings › Memory: the notebook Luke keeps, read-only, with who's who, what was settled on Teammate invitations, and which agent runs where." loading="lazy"></a></p>
<h3>Your Conductor key lives in the vault</h3>
<p>Connect on the Connections row stores your Conductor key in your account&#39;s
vault, never on your Mac, and a key an earlier build kept locally is handed
over once and deleted here. Onboarding asks for that key right after your
first sign-in, ahead of any session row and the calendar step.
(<a href="https://github.com/ReviewStage/luke/pull/1260">#1260</a>,
<a href="https://github.com/ReviewStage/luke/pull/1267">#1267</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Luke greets you by first name at every signed-in launch, and the spoken
introduction waits for your first sign-in instead of greeting a stranger
(<a href="https://github.com/ReviewStage/luke/pull/1204">#1204</a>,
<a href="https://github.com/ReviewStage/luke/pull/1254">#1254</a>)</li>
<li>Briefings are two short sentences at most, subject first, and never a title
read aloud (<a href="https://github.com/ReviewStage/luke/pull/1378">#1378</a>)</li>
<li>A voice call opens already knowing your roster, so &quot;anything need me?&quot; is
answered without a round trip
(<a href="https://github.com/ReviewStage/luke/pull/1226">#1226</a>)</li>
<li>A reply that only needed a read is spoken the moment its words form, and
Luke may read ahead to a session or a notebook search while you are still
speaking (<a href="https://github.com/ReviewStage/luke/pull/1164">#1164</a>,
<a href="https://github.com/ReviewStage/luke/pull/1229">#1229</a>)</li>
<li>Every spoken exchange is kept, including the ones Luke answers himself, so
your words and his come back after a relaunch
(<a href="https://github.com/ReviewStage/luke/pull/1318">#1318</a>,
<a href="https://github.com/ReviewStage/luke/pull/1319">#1319</a>)</li>
<li>Captions show your own words as you say them, in a quieter tone, and every
segment of a longer reply rolls up under the housing
(<a href="https://github.com/ReviewStage/luke/pull/1464">#1464</a>,
<a href="https://github.com/ReviewStage/luke/pull/883">#883</a>)</li>
<li>You can stop an ask: a Stop on a waiting ask is honored when its turn
starts, and a Stop on a running one ends only the turn it was aimed at
(<a href="https://github.com/ReviewStage/luke/pull/1155">#1155</a>,
<a href="https://github.com/ReviewStage/luke/pull/1258">#1258</a>)</li>
<li>The Voice page&#39;s Pause announcements switch becomes Announce when sessions
need you, on by default; switching it back on reads the still-true held ones
out together (<a href="https://github.com/ReviewStage/luke/pull/686">#686</a>)</li>
<li>A briefing on offer opens a muted session on your Mac so Luke speaks it here
when you are present, and is pushed to your phone when you are not
(<a href="https://github.com/ReviewStage/luke/pull/1404">#1404</a>)</li>
<li>Pressing a filled thumb takes a rating back, and the message stands unrated
on every device (<a href="https://github.com/ReviewStage/luke/pull/1467">#1467</a>)</li>
<li>Luke reads an agent&#39;s messages whole instead of the first 400 characters,
and walks a long Conductor chat to its end
(<a href="https://github.com/ReviewStage/luke/pull/916">#916</a>)</li>
<li>Luke&#39;s persona is a set of rules with a banned-phrase list rather than
exemplars, so a day of announcements no longer hardens into stock phrases
(<a href="https://github.com/ReviewStage/luke/pull/875">#875</a>)</li>
<li>An action whose effect is uncertain after a crash shows as unknown in the
Conversation, distinct from a refusal, and Luke never retries it on his own
(<a href="https://github.com/ReviewStage/luke/pull/943">#943</a>)</li>
<li>A Conductor workspace can be created with Fable 5.1 or GPT-6 Astra as its
agent&#39;s model (<a href="https://github.com/ReviewStage/luke/pull/758">#758</a>,
<a href="https://github.com/ReviewStage/luke/pull/759">#759</a>)</li>
<li>A settings search result lands the keyboard on the row&#39;s control rather than
the page header (<a href="https://github.com/ReviewStage/luke/pull/1428">#1428</a>)</li>
<li>The Conversation tab&#39;s Clear moves beside the tab bar and shows only while
the thread has lines (<a href="https://github.com/ReviewStage/luke/pull/778">#778</a>)</li>
<li>tryluke.dev prerenders the landing, About, Changelog, and Privacy pages, so
link previews and visitors without JavaScript see the page
(<a href="https://github.com/ReviewStage/luke/pull/716">#716</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a workspace created or an agent added through Luke going out with
Conductor&#39;s default agent, model, and effort instead of the pairing you chose
(<a href="https://github.com/ReviewStage/luke/pull/1443">#1443</a>,
<a href="https://github.com/ReviewStage/luke/pull/1486">#1486</a>)</li>
<li>Fixed a voice chosen on the Voice page not taking until the standing call had
idled out (<a href="https://github.com/ReviewStage/luke/pull/1470">#1470</a>)</li>
<li>Fixed asking Luke to create a workspace in a Conductor cloud project being
refused with &quot;No listed project matches that identity&quot;
(<a href="https://github.com/ReviewStage/luke/pull/876">#876</a>)</li>
<li>Fixed asking Luke to flip the Captions switch being refused with &quot;Captions
takes no effort level&quot; (<a href="https://github.com/ReviewStage/luke/pull/895">#895</a>)</li>
<li>Fixed clearing a setting answering &quot;Could not save that setting on this
system&quot; and coming back at the next launch
(<a href="https://github.com/ReviewStage/luke/pull/1252">#1252</a>)</li>
<li>Fixed Mission Control tiling the notch panel in the middle of the desktop
after an introduction takeover
(<a href="https://github.com/ReviewStage/luke/pull/1225">#1225</a>)</li>
<li>Fixed quitting Luke mid-meeting dropping the meeting hold on announcements
until the next poll (<a href="https://github.com/ReviewStage/luke/pull/1141">#1141</a>)</li>
<li>Fixed Luke saying &quot;I couldn&#39;t write that ask down&quot; for a follow-up asked
seconds after a question
(<a href="https://github.com/ReviewStage/luke/pull/1476">#1476</a>)</li>
<li>Fixed a spoken ask&#39;s row landing one word short of what you said, and a
spoken line vanishing from the Conversation two seconds after you finished
(<a href="https://github.com/ReviewStage/luke/pull/1482">#1482</a>,
<a href="https://github.com/ReviewStage/luke/pull/1465">#1465</a>)</li>
<li>Fixed a reply drawing above your question when a spoken ask entered a turn
late, and an aside sorting up into a turn that had settled
(<a href="https://github.com/ReviewStage/luke/pull/1297">#1297</a>,
<a href="https://github.com/ReviewStage/luke/pull/1473">#1473</a>)</li>
<li>Fixed &quot;Still thinking&quot; dots drawing above later replies for an interrupted
turn (<a href="https://github.com/ReviewStage/luke/pull/1461">#1461</a>)</li>
<li>Fixed the feedback composer opened from a thumbs down returning to Settings
instead of the Conversation
(<a href="https://github.com/ReviewStage/luke/pull/1466">#1466</a>)</li>
<li>Fixed an announcement&#39;s arrival line reading a session title from before the
pass that named it (<a href="https://github.com/ReviewStage/luke/pull/1407">#1407</a>)</li>
<li>Fixed the Conversation drawing Luke&#39;s reply twice, and what he said aloud
drifting from the words it recorded
(<a href="https://github.com/ReviewStage/luke/pull/891">#891</a>,
<a href="https://github.com/ReviewStage/luke/pull/870">#870</a>)</li>
<li>Fixed a voice call ending at the provider&#39;s hour cap with a red
&quot;[object RTCErrorEvent]&quot; caption; an idle call now retires itself after five
minutes (<a href="https://github.com/ReviewStage/luke/pull/854">#854</a>)</li>
<li>Fixed the key slot and feedback composer popups opening with empty black
above their words on a Mac without a notch
(<a href="https://github.com/ReviewStage/luke/pull/715">#715</a>)</li>
<li>Fixed the lead provider mark hopping left and springing back as the capsule
unfolded (<a href="https://github.com/ReviewStage/luke/pull/777">#777</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the provider set to Conductor alone: Superset, the local Claude Code,
Codex, and OMP observers, and the Linear connection are removed
(<a href="https://github.com/ReviewStage/luke/pull/1200">#1200</a>,
<a href="https://github.com/ReviewStage/luke/pull/1201">#1201</a>,
<a href="https://github.com/ReviewStage/luke/pull/1207">#1207</a>)</li>
<li>Updated a live launch to remove the retired local brain database an earlier
build left on your Mac
(<a href="https://github.com/ReviewStage/luke/pull/1294">#1294</a>)</li>
<li>Updated PRIVACY.md for the scheduled observation of your Conductor sessions,
voice on the account alone, spoken exchanges kept on the service, the
read-ahead a spoken ask may make, and the notebook&#39;s search
(<a href="https://github.com/ReviewStage/luke/pull/1069">#1069</a>,
<a href="https://github.com/ReviewStage/luke/pull/1229">#1229</a>,
<a href="https://github.com/ReviewStage/luke/pull/1422">#1422</a>,
<a href="https://github.com/ReviewStage/luke/pull/1480">#1480</a>)</li>
<li>Updated the landing page&#39;s footer to close on a &quot;© 2026 Stage Inc.&quot; line
(<a href="https://github.com/ReviewStage/luke/pull/1380">#1380</a>)</li>
<li>Updated the third-party notice to name every OpenClaw port the code carries
(<a href="https://github.com/ReviewStage/luke/pull/1411">#1411</a>)</li>
<li>Updated the About page portraits to full-resolution JPEGs with their
metadata stripped (<a href="https://github.com/ReviewStage/luke/pull/673">#673</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.5.0: Onboarding ends at a calendar</title>
      <link>https://tryluke.dev/changelog/0.5.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.5.0</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Onboarding ends at a calendar</h3>
<p>Onboarding now ends by asking for a calendar — your Mac&#39;s own or Google — so
meeting quiet can hold announcements from your first sign-in. Skip it and Luke
carries on without one.
(<a href="https://github.com/ReviewStage/luke/pull/561">#561</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.5.0/onboarding-ends-at-a-calendar.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.5.0/onboarding-ends-at-a-calendar.png" alt="The panel at the end of onboarding offering Apple Calendar or Google Calendar, or to set it up later, while Luke says he will keep quiet during your meetings." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Announcements say what an agent is working on, a short phrase Luke derives
from the session&#39;s transcript, instead of the session&#39;s title
(<a href="https://github.com/ReviewStage/luke/pull/649">#649</a>)</li>
<li>A Pause announcements switch on the Voice page holds spoken announcements by
hand; replies in a conversation you opened still speak
(<a href="https://github.com/ReviewStage/luke/pull/651">#651</a>)</li>
<li>The Ask Luke composer also sits at the foot of the History tab, so you can
continue the thread without changing tabs
(<a href="https://github.com/ReviewStage/luke/pull/643">#643</a>)</li>
<li>Luke names every workspace he creates — your name when you gave one,
otherwise a short name for the work — instead of Conductor&#39;s random-city
fallback (<a href="https://github.com/ReviewStage/luke/pull/636">#636</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed History cutting off any ask or reply longer than 400 characters
(<a href="https://github.com/ReviewStage/luke/pull/629">#629</a>)</li>
<li>Fixed the Provider keys section reading &quot;The vault answered with something
unexpected&quot; for a key stored for a provider Luke no longer carries
(<a href="https://github.com/ReviewStage/luke/pull/656">#656</a>)</li>
<li>Fixed the spoken introduction ending on a question you had no chance to
answer (<a href="https://github.com/ReviewStage/luke/pull/644">#644</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the provider set to Conductor, Superset, Claude Code, Codex, and OMP,
with Cursor, OpenCode, Copilot, Gemini CLI, and Grok Build staying on as the
agents a workspace runs (<a href="https://github.com/ReviewStage/luke/pull/645">#645</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.4.0: Synced provider keys</title>
      <link>https://tryluke.dev/changelog/0.4.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.4.0</guid>
      <pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Synced provider keys</h3>
<p>Enter a cloud provider&#39;s API key once and every Mac you sign Luke into has it.
A Sync section in Settings governs it: while on, your account&#39;s vault holds
what this Mac&#39;s encrypted store holds, and turning it off deletes every synced
copy while the local keys stay. A key your shell configured is never synced —
only one you typed into Luke.
(<a href="https://github.com/ReviewStage/luke/pull/574">#574</a>,
<a href="https://github.com/ReviewStage/luke/pull/580">#580</a>)</p>
<h3>A conversation that outlives the app</h3>
<p>The History tab now survives a quit. The thread, and the facts you asked Luke
to remember, live in his own application data under a real retention policy —
the 200 most recent lines, nothing older than a fortnight — and Clear still
empties the file along with the screen. Lines draw as they are being said, each
carries its local timestamp, and every chat a line named draws a chip that
opens it, even after the chat is archived.
(<a href="https://github.com/ReviewStage/luke/pull/589">#589</a>,
<a href="https://github.com/ReviewStage/luke/pull/614">#614</a>,
<a href="https://github.com/ReviewStage/luke/pull/606">#606</a>,
<a href="https://github.com/ReviewStage/luke/pull/618">#618</a>,
<a href="https://github.com/ReviewStage/luke/pull/613">#613</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Luke opens at login, a switch under Appearance backed by macOS&#39;s own login
items (<a href="https://github.com/ReviewStage/luke/pull/585">#585</a>)</li>
<li>Spoken exchanges run on the OpenAI Agents realtime SDK, which owns the
connection, the session configuration, and the tool round-trips
(<a href="https://github.com/ReviewStage/luke/pull/635">#635</a>,
<a href="https://github.com/ReviewStage/luke/pull/630">#630</a>)</li>
<li>Several sessions changing at once arrive as one announcement instead of a run
of them (<a href="https://github.com/ReviewStage/luke/pull/623">#623</a>,
<a href="https://github.com/ReviewStage/luke/pull/628">#628</a>,
<a href="https://github.com/ReviewStage/luke/pull/625">#625</a>)</li>
<li>Luke observes local OMP sessions, reading their title, status, recap, current
tool, and conversation (<a href="https://github.com/ReviewStage/luke/pull/584">#584</a>)</li>
<li>A keyboard shortcut can be removed outright: the row says None, and Reset
restores the default (<a href="https://github.com/ReviewStage/luke/pull/587">#587</a>)</li>
<li>A session&#39;s parting words are shown whole on its row and its own screen
(<a href="https://github.com/ReviewStage/luke/pull/633">#633</a>)</li>
<li>Luke words his own announcements from the observed fields rather than reading
a composed sentence (<a href="https://github.com/ReviewStage/luke/pull/588">#588</a>)</li>
<li>Ask about &quot;that chat&quot; right after an announcement and Luke resolves it to the
one he just told you about, naming the candidates when nothing settles it
(<a href="https://github.com/ReviewStage/luke/pull/599">#599</a>)</li>
<li>Spoken time is no longer metered: the hosted voice quota and the settings it
needed are gone (<a href="https://github.com/ReviewStage/luke/pull/634">#634</a>)</li>
<li>Every provider API key hint reads the same way and links to the page that
issues the key (<a href="https://github.com/ReviewStage/luke/pull/591">#591</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed the Updates row moving under your cursor while an update downloaded
(<a href="https://github.com/ReviewStage/luke/pull/581">#581</a>)</li>
<li>Fixed Luke silently losing the ability to lower and restore Music and
Spotify, leaving an unkillable helper at full CPU
(<a href="https://github.com/ReviewStage/luke/pull/582">#582</a>)</li>
<li>Fixed the landing page drawing its footer hairline across the hero art on
phones (<a href="https://github.com/ReviewStage/luke/pull/583">#583</a>)</li>
<li>Fixed the landing page&#39;s hero mock spilling outside the phone&#39;s screen
(<a href="https://github.com/ReviewStage/luke/pull/590">#590</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added Sentry crash reporting: unhandled exceptions from every Electron
process and native minidumps, carrying no account identity
(<a href="https://github.com/ReviewStage/luke/pull/632">#632</a>)</li>
<li>Added the hosted <code>/api/observe</code> endpoint, which runs each cloud adapter once
under the caller&#39;s vault keys and answers a bounded roster
(<a href="https://github.com/ReviewStage/luke/pull/573">#573</a>)</li>
<li>Added hosted act endpoints for messaging a session and creating a workspace
(<a href="https://github.com/ReviewStage/luke/pull/571">#571</a>,
<a href="https://github.com/ReviewStage/luke/pull/611">#611</a>,
<a href="https://github.com/ReviewStage/luke/pull/620">#620</a>)</li>
<li>Updated how Luke&#39;s persona instructions describe his voice
(<a href="https://github.com/ReviewStage/luke/pull/639">#639</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.13: History</title>
      <link>https://tryluke.dev/changelog/0.3.13</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.13</guid>
      <pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>History</h3>
<p>Luke keeps the conversation you have been having with him. A History tab holds
every line of the current launch — what you asked, what he answered, and the
acts he carried at your request — and each message offers a copy control that
takes exactly the words the bubble shows. Clear empties both the thread you can
see and the context the model still holds, and the whole tab stays out of
session recordings.
(<a href="https://github.com/ReviewStage/luke/pull/513">#513</a>,
<a href="https://github.com/ReviewStage/luke/pull/569">#569</a>)</p>
<h3>Improvements</h3>
<ul>
<li>The notch says which apps hold your work: provider marks take the place of
the session count beside the housing
(<a href="https://github.com/ReviewStage/luke/pull/577">#577</a>)</li>
<li>Luke names each agent by its work and gives you the decision context before
he asks a question (<a href="https://github.com/ReviewStage/luke/pull/553">#553</a>,
<a href="https://github.com/ReviewStage/luke/pull/566">#566</a>,
<a href="https://github.com/ReviewStage/luke/pull/567">#567</a>,
<a href="https://github.com/ReviewStage/luke/pull/578">#578</a>)</li>
<li>Luke never asks for folder permission: Cursor and Antigravity sessions no
longer read a workspace folder to label their branch
(<a href="https://github.com/ReviewStage/luke/pull/552">#552</a>)</li>
<li>Rows say when a session is running inside a Herdr pane
(<a href="https://github.com/ReviewStage/luke/pull/560">#560</a>)</li>
<li>Music and Spotify are asked for automation consent only mid-exchange, and
only once that player is audibly playing
(<a href="https://github.com/ReviewStage/luke/pull/550">#550</a>)</li>
<li>Settings drop the Usage data section: counting and screen recording follow
the run mode alone, and PRIVACY.md is the whole of what Luke tells you about
either (<a href="https://github.com/ReviewStage/luke/pull/563">#563</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed desktop session recordings never reaching PostHog at all
(<a href="https://github.com/ReviewStage/luke/pull/535">#535</a>)</li>
<li>Fixed a red voice error appearing when you cut Luke off mid-reply
(<a href="https://github.com/ReviewStage/luke/pull/564">#564</a>)</li>
<li>Fixed a slow cloud write being cut short by the observation pass&#39;s shared
deadline (<a href="https://github.com/ReviewStage/luke/pull/557">#557</a>)</li>
<li>Fixed the admin roster&#39;s last-seen instant ignoring hosted usage
(<a href="https://github.com/ReviewStage/luke/pull/548">#548</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added the hosted provider-key vault, which encrypts a stored cloud provider
key at rest and offers no way to read one back
(<a href="https://github.com/ReviewStage/luke/pull/568">#568</a>)</li>
<li>Added the websocket realtime endpoint to the voice mint
(<a href="https://github.com/ReviewStage/luke/pull/562">#562</a>)</li>
<li>Added the <code>entire</code> CLI&#39;s session hooks for Codex, Cursor, and OpenCode
(<a href="https://github.com/ReviewStage/luke/pull/549">#549</a>)</li>
<li>Updated an act handler&#39;s refusals to name their cause
(<a href="https://github.com/ReviewStage/luke/pull/572">#572</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.12</title>
      <link>https://tryluke.dev/changelog/0.3.12</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.12</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke uses Echo as his default voice and gives you a short spoken welcome
after sign-in (<a href="https://github.com/ReviewStage/luke/pull/520">#520</a>,
<a href="https://github.com/ReviewStage/luke/pull/541">#541</a>)</li>
<li>Luke keeps his conversation context on the app guide and leaves the tracker&#39;s
issue roster out of it (<a href="https://github.com/ReviewStage/luke/pull/528">#528</a>,
<a href="https://github.com/ReviewStage/luke/pull/538">#538</a>,
<a href="https://github.com/ReviewStage/luke/pull/539">#539</a>)</li>
<li>Replicas workspaces can sleep when their task finishes, and Luke reports
unexpected wakes as observation diagnostics
(<a href="https://github.com/ReviewStage/luke/pull/530">#530</a>,
<a href="https://github.com/ReviewStage/luke/pull/531">#531</a>,
<a href="https://github.com/ReviewStage/luke/pull/536">#536</a>)</li>
<li>Development traces capture Luke&#39;s local agent traffic and export attention
reviews in the form the model received
(<a href="https://github.com/ReviewStage/luke/pull/534">#534</a>,
<a href="https://github.com/ReviewStage/luke/pull/540">#540</a>)</li>
<li>Onboarding stays out of the way while macOS asks for microphone access
(<a href="https://github.com/ReviewStage/luke/pull/524">#524</a>,
<a href="https://github.com/ReviewStage/luke/pull/533">#533</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed provider marks disappearing while Luke speaks
(<a href="https://github.com/ReviewStage/luke/pull/517">#517</a>)</li>
<li>Fixed update checks giving up while a newly published release is still
uploading (<a href="https://github.com/ReviewStage/luke/pull/523">#523</a>)</li>
<li>Fixed voice conversations reseeding history or changing roster context on
clock ticks (<a href="https://github.com/ReviewStage/luke/pull/526">#526</a>,
<a href="https://github.com/ReviewStage/luke/pull/527">#527</a>)</li>
<li>Fixed Conductor reads including archived workspaces or starting from an
unfiltered workspace list
(<a href="https://github.com/ReviewStage/luke/pull/525">#525</a>,
<a href="https://github.com/ReviewStage/luke/pull/537">#537</a>)</li>
<li>Fixed GitHub releases becoming visible before all six downloadable assets
finished uploading (<a href="https://github.com/ReviewStage/luke/pull/521">#521</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added an About page, a contact address, and maintainer credits
(<a href="https://github.com/ReviewStage/luke/pull/542">#542</a>,
<a href="https://github.com/ReviewStage/luke/pull/543">#543</a>,
<a href="https://github.com/ReviewStage/luke/pull/546">#546</a>)</li>
<li>Updated the hosted macOS release and Replicas lifecycle documentation
(<a href="https://github.com/ReviewStage/luke/pull/519">#519</a>,
<a href="https://github.com/ReviewStage/luke/pull/529">#529</a>,
<a href="https://github.com/ReviewStage/luke/pull/532">#532</a>)</li>
<li>Updated the product framing across the website and README
(<a href="https://github.com/ReviewStage/luke/pull/544">#544</a>,
<a href="https://github.com/ReviewStage/luke/pull/545">#545</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.11</title>
      <link>https://tryluke.dev/changelog/0.3.11</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.11</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke opens Replicas sessions directly in the Replicas desktop app
(<a href="https://github.com/ReviewStage/luke/pull/516">#516</a>)</li>
<li>Luke keeps agent updates concise, specific to the work, and available after
meeting quiet ends (<a href="https://github.com/ReviewStage/luke/pull/514">#514</a>,
<a href="https://github.com/ReviewStage/luke/pull/515">#515</a>)</li>
<li>The admin dashboard makes account status, usage, and controls easier to scan
(<a href="https://github.com/ReviewStage/luke/pull/511">#511</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed first-launch announcements waiting for an interaction before they could
be heard (<a href="https://github.com/ReviewStage/luke/pull/477">#477</a>)</li>
<li>Fixed signed-in users who finished onboarding being offered the introduction
again (<a href="https://github.com/ReviewStage/luke/pull/512">#512</a>)</li>
<li>Fixed swallowed admin API failures omitting the upstream 503 cause from logs
(<a href="https://github.com/ReviewStage/luke/pull/492">#492</a>)</li>
<li>Fixed hosted macOS releases omitting the PostHog project key and silently
disabling recording (<a href="https://github.com/ReviewStage/luke/pull/518">#518</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.10: Onboarding</title>
      <link>https://tryluke.dev/changelog/0.3.10</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.10</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Onboarding</h3>
<p>Luke introduces himself to new users.
(<a href="https://github.com/ReviewStage/luke/pull/497">#497</a>,
<a href="https://github.com/ReviewStage/luke/pull/508">#508</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.3.10/onboarding.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.3.10/onboarding.png" alt="Luke's introduction over the dimmed desktop: his face awake in the middle and his first words, &quot;Hi! I'm Luke.&quot;, beneath it." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Luke is more conversational and proactive about work that needs your
attention (<a href="https://github.com/ReviewStage/luke/pull/500">#500</a>)</li>
<li>Luke draws loading rows while a provider roster is temporarily unreadable
instead of making those agents disappear
(<a href="https://github.com/ReviewStage/luke/pull/498">#498</a>)</li>
<li>The website demonstrates Luke&#39;s panel with a live mesh gradient and an
animated tour of its presentations
(<a href="https://github.com/ReviewStage/luke/pull/499">#499</a>,
<a href="https://github.com/ReviewStage/luke/pull/502">#502</a>,
<a href="https://github.com/ReviewStage/luke/pull/504">#504</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Preview deployments failing to complete sign-in
(<a href="https://github.com/ReviewStage/luke/pull/408">#408</a>)</li>
<li>Fixed workspace creation losing the provider selected in Settings
(<a href="https://github.com/ReviewStage/luke/pull/475">#475</a>)</li>
<li>Fixed the web service omitting the acts package from its runtime wiring
(<a href="https://github.com/ReviewStage/luke/pull/495">#495</a>)</li>
<li>Fixed signed-out voice runs reporting the wrong missing credential
(<a href="https://github.com/ReviewStage/luke/pull/505">#505</a>)</li>
<li>Fixed workspace-only providers being rejected by the desktop bridge
(<a href="https://github.com/ReviewStage/luke/pull/507">#507</a>)</li>
<li>Fixed Apple notarization uploads using the accelerated transfer path that
could leave incomplete submissions stuck as In Progress
(<a href="https://github.com/ReviewStage/luke/pull/509">#509</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the README and privacy policy for the current product behavior
(<a href="https://github.com/ReviewStage/luke/pull/474">#474</a>,
<a href="https://github.com/ReviewStage/luke/pull/476">#476</a>)</li>
<li>Updated the account connection pages and the internal animation reference
(<a href="https://github.com/ReviewStage/luke/pull/488">#488</a>,
<a href="https://github.com/ReviewStage/luke/pull/501">#501</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.9: More agents, one roster</title>
      <link>https://tryluke.dev/changelog/0.3.9</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.9</guid>
      <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>More agents, one roster</h3>
<p>Luke observes local Antigravity, Grok Build, and Radius Browser agent chats,
alongside Replicas cloud workspaces connected with your own API key. He reads
each provider through its documented local or cloud surface, and providers
without credentials work as before.
(<a href="https://github.com/ReviewStage/luke/pull/402">#402</a>,
<a href="https://github.com/ReviewStage/luke/pull/407">#407</a>,
<a href="https://github.com/ReviewStage/luke/pull/462">#462</a>,
<a href="https://github.com/ReviewStage/luke/pull/463">#463</a>)</p>
<h3>Improvements</h3>
<ul>
<li>You can filter the roster by the app or provider behind each chat
(<a href="https://github.com/ReviewStage/luke/pull/455">#455</a>)</li>
<li>Luke can create Conductor workspaces and message the live Superset terminal
attached to a chat (<a href="https://github.com/ReviewStage/luke/pull/392">#392</a>,
<a href="https://github.com/ReviewStage/luke/pull/450">#450</a>)</li>
<li>Luke names, recaps, opens, and messages local Cursor chats through Cursor&#39;s
own records and agent CLI
(<a href="https://github.com/ReviewStage/luke/pull/383">#383</a>,
<a href="https://github.com/ReviewStage/luke/pull/387">#387</a>,
<a href="https://github.com/ReviewStage/luke/pull/390">#390</a>,
<a href="https://github.com/ReviewStage/luke/pull/400">#400</a>)</li>
<li>Luke can check for updates or restart into a downloaded update when you ask
(<a href="https://github.com/ReviewStage/luke/pull/388">#388</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed archived cloud work continuing to appear in the roster
(<a href="https://github.com/ReviewStage/luke/pull/385">#385</a>,
<a href="https://github.com/ReviewStage/luke/pull/427">#427</a>)</li>
<li>Fixed Luke narrating tool calls and adding filler to spoken updates
(<a href="https://github.com/ReviewStage/luke/pull/451">#451</a>,
<a href="https://github.com/ReviewStage/luke/pull/470">#470</a>)</li>
<li>Fixed Luke inventing a recap segment when a session has no recap
(<a href="https://github.com/ReviewStage/luke/pull/469">#469</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated analytics sharing to include broader product events and unmasked
session replay, with the recording control governing both
(<a href="https://github.com/ReviewStage/luke/pull/409">#409</a>)</li>
<li>Updated the workspace to pnpm 10
(<a href="https://github.com/ReviewStage/luke/pull/449">#449</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.8</title>
      <link>https://tryluke.dev/changelog/0.3.8</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.8</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke uses Conductor&#39;s own chat names and opens each local chat directly
(<a href="https://github.com/ReviewStage/luke/pull/362">#362</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed panel content sitting flush against the strip instead of keeping a
consistent inset (<a href="https://github.com/ReviewStage/luke/pull/377">#377</a>)</li>
<li>Fixed macOS releases failing while electron-builder assembled the installer
DMG (<a href="https://github.com/ReviewStage/luke/pull/380">#380</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated the macOS release pipeline to use electron-builder alone
(<a href="https://github.com/ReviewStage/luke/pull/367">#367</a>)</li>
<li>Updated the README, privacy policy, contribution guide, and security policy
for launch (<a href="https://github.com/ReviewStage/luke/pull/379">#379</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.7</title>
      <link>https://tryluke.dev/changelog/0.3.7</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.7</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke opens local Cursor chats through Cursor&#39;s own agent route
(<a href="https://github.com/ReviewStage/luke/pull/363">#363</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Luke announcing that a chat is waiting when it does not need a reply
(<a href="https://github.com/ReviewStage/luke/pull/374">#374</a>)</li>
<li>Fixed the ready-to-install update status using unnecessary extra copy
(<a href="https://github.com/ReviewStage/luke/pull/373">#373</a>)</li>
<li>Fixed Developer ID releases omitting native helpers from the packaged app
(<a href="https://github.com/ReviewStage/luke/pull/375">#375</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.6</title>
      <link>https://tryluke.dev/changelog/0.3.6</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.6</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>An open spoken ask can name the app where its answer belongs
(<a href="https://github.com/ReviewStage/luke/pull/369">#369</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Developer ID releases failing while signing the nested Calendar helper
(<a href="https://github.com/ReviewStage/luke/pull/370">#370</a>)</li>
<li>Fixed spoken announcements calling a settled chat &quot;waiting on you&quot; when it
did not need a reply (<a href="https://github.com/ReviewStage/luke/pull/374">#374</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.5</title>
      <link>https://tryluke.dev/changelog/0.3.5</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.5</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke keeps your voice conversation history across calls, so you can continue
where you left off (<a href="https://github.com/ReviewStage/luke/pull/354">#354</a>)</li>
<li>Luke records your spoken turns alongside his replies in the conversation
history (<a href="https://github.com/ReviewStage/luke/pull/355">#355</a>)</li>
<li>Luke can search the session list when you ask out loud
(<a href="https://github.com/ReviewStage/luke/pull/364">#364</a>)</li>
<li>Superset workspaces without chats show as standing rows you can delete
(<a href="https://github.com/ReviewStage/luke/pull/365">#365</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed the session count appearing before the roster finished loading
(<a href="https://github.com/ReviewStage/luke/pull/361">#361</a>)</li>
<li>Fixed idle voice calls lingering after their conversation history took over
(<a href="https://github.com/ReviewStage/luke/pull/356">#356</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Updated every declared Node.js version to match the repository version
(<a href="https://github.com/ReviewStage/luke/pull/366">#366</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.4</title>
      <link>https://tryluke.dev/changelog/0.3.4</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.4</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke reads your Mac&#39;s own calendars to stay quiet while you are in a meeting
(<a href="https://github.com/ReviewStage/luke/pull/311">#311</a>)</li>
<li>Luke observes local Gemini CLI sessions alongside your other coding agents
(<a href="https://github.com/ReviewStage/luke/pull/347">#347</a>)</li>
<li>Luke opens local Conductor chats at the exact place their notifications point
(<a href="https://github.com/ReviewStage/luke/pull/349">#349</a>)</li>
<li>Spoken announcement notices show each session&#39;s app marks
(<a href="https://github.com/ReviewStage/luke/pull/340">#340</a>)</li>
<li>Luke combines session filters in spoken asks just like the panel chips do
(<a href="https://github.com/ReviewStage/luke/pull/348">#348</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed voice replies ending early when audio resumes after draining
(<a href="https://github.com/ReviewStage/luke/pull/342">#342</a>)</li>
<li>Fixed the web service failing to load its function sources
(<a href="https://github.com/ReviewStage/luke/pull/343">#343</a>)</li>
<li>Fixed unanswered cloud writes appearing to have failed
(<a href="https://github.com/ReviewStage/luke/pull/345">#345</a>)</li>
<li>Fixed spoken announcements interrupting your active conversation
(<a href="https://github.com/ReviewStage/luke/pull/344">#344</a>)</li>
<li>Fixed spoken panel asks misunderstanding session filters and sort order
(<a href="https://github.com/ReviewStage/luke/pull/346">#346</a>)</li>
<li>Fixed status-edge announcements omitting the session name
(<a href="https://github.com/ReviewStage/luke/pull/350">#350</a>)</li>
<li>Fixed session-list asks bypassing the panel&#39;s session filter
(<a href="https://github.com/ReviewStage/luke/pull/351">#351</a>)</li>
<li>Fixed spoken session answers omitting the apps that hold each session
(<a href="https://github.com/ReviewStage/luke/pull/352">#352</a>)</li>
<li>Fixed media volume restoration being skipped when Luke quits
(<a href="https://github.com/ReviewStage/luke/pull/353">#353</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added the electron-builder release path
(<a href="https://github.com/ReviewStage/luke/pull/324">#324</a>)</li>
<li>Updated the installer volume name to Luke Installer
(<a href="https://github.com/ReviewStage/luke/pull/339">#339</a>)</li>
<li>Updated the provider documentation around agents, apps, and read/write
surfaces (<a href="https://github.com/ReviewStage/luke/pull/341">#341</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.3</title>
      <link>https://tryluke.dev/changelog/0.3.3</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.3</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Luke marks your sessions held by cmux and opens their exact pane
(<a href="https://github.com/ReviewStage/luke/pull/332">#332</a>)</li>
<li>Luke keeps your session filter choices across closings and restarts
(<a href="https://github.com/ReviewStage/luke/pull/336">#336</a>)</li>
<li>Luke groups your local Orca agents under their worktrees
(<a href="https://github.com/ReviewStage/luke/pull/333">#333</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a stopped voice reply being trimmed past the end of its audio
(<a href="https://github.com/ReviewStage/luke/pull/335">#335</a>)</li>
<li>Fixed Spotify volume restoration being skipped when the app is installed in
its current location (<a href="https://github.com/ReviewStage/luke/pull/329">#329</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.2</title>
      <link>https://tryluke.dev/changelog/0.3.2</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.2</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Improvements</h3>
<ul>
<li>Session rows lead with the agent doing the work and show the apps holding
each session (<a href="https://github.com/ReviewStage/luke/pull/331">#331</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed automatic updates failing before a download could begin
(<a href="https://github.com/ReviewStage/luke/pull/327">#327</a>)</li>
<li>Fixed the Superset sign-in popup looking unlike Luke&#39;s other credential
prompts (<a href="https://github.com/ReviewStage/luke/pull/322">#322</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added Luke&#39;s icon to the mounted installer volume
(<a href="https://github.com/ReviewStage/luke/pull/326">#326</a>)</li>
<li>Updated the design contract and package boundaries
(<a href="https://github.com/ReviewStage/luke/pull/328">#328</a>,
<a href="https://github.com/ReviewStage/luke/pull/321">#321</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.1</title>
      <link>https://tryluke.dev/changelog/0.3.1</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.1</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixes</h3>
<ul>
<li>Fixed Luke falling asleep at launch before the first session roster arrived
(<a href="https://github.com/ReviewStage/luke/pull/319">#319</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.3.0: Superset workspaces</title>
      <link>https://tryluke.dev/changelog/0.3.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.3.0</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Superset workspaces</h3>
<p>Luke connects to Superset and puts its managed workspaces alongside every other
coding-agent session. You can create, open, rename, message, and delete settled
workspaces without leaving Luke.
(<a href="https://github.com/ReviewStage/luke/pull/274">#274</a>,
<a href="https://github.com/ReviewStage/luke/pull/299">#299</a>,
<a href="https://github.com/ReviewStage/luke/pull/309">#309</a>,
<a href="https://github.com/ReviewStage/luke/pull/310">#310</a>,
<a href="https://github.com/ReviewStage/luke/pull/312">#312</a>,
<a href="https://github.com/ReviewStage/luke/pull/316">#316</a>)</p>
<h3>Usage data</h3>
<p>Luke counts how his own features are used — a launch, a provider connected,
sessions observed, a call opened — and sends those counts to his own service,
tied to your account, so we can see what is worth building next. It is on by
default, and the switch is Share usage data in the new Usage data section on
the Settings tab&#39;s front page. Every event name and value is fixed by the
build, so nothing about a session and nothing you type or say can travel in
one, and nothing is sent while you are signed out. <a href="https://github.com/ReviewStage/luke/blob/main/PRIVACY.md">Privacy</a> lists
every event and property by name.
(<a href="https://github.com/ReviewStage/luke/pull/289">#289</a>)</p>
<h3>Improvements</h3>
<ul>
<li>You can search Settings (<a href="https://github.com/ReviewStage/luke/pull/305">#305</a>)</li>
<li>Luke keeps himself current from the Updates row
(<a href="https://github.com/ReviewStage/luke/pull/284">#284</a>)</li>
<li>Luke stays silent for sessions waiting on automation
(<a href="https://github.com/ReviewStage/luke/pull/298">#298</a>)</li>
<li>Luke hides archived Claude Code and local Codex sessions
(<a href="https://github.com/ReviewStage/luke/pull/295">#295</a>,
<a href="https://github.com/ReviewStage/luke/pull/297">#297</a>)</li>
<li>Luke&#39;s voice and interface speak more directly about agents and their work
(<a href="https://github.com/ReviewStage/luke/pull/290">#290</a>,
<a href="https://github.com/ReviewStage/luke/pull/296">#296</a>,
<a href="https://github.com/ReviewStage/luke/pull/307">#307</a>,
<a href="https://github.com/ReviewStage/luke/pull/313">#313</a>)</li>
<li>Settings makes a spent free voice allowance clear everywhere
(<a href="https://github.com/ReviewStage/luke/pull/308">#308</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed a typed ask requesting microphone permission
(<a href="https://github.com/ReviewStage/luke/pull/294">#294</a>)</li>
<li>Fixed the panel closing when its shape receded past the pointer
(<a href="https://github.com/ReviewStage/luke/pull/293">#293</a>)</li>
<li>Fixed delegated Codex chat titles and announcements
(<a href="https://github.com/ReviewStage/luke/pull/303">#303</a>,
<a href="https://github.com/ReviewStage/luke/pull/304">#304</a>,
<a href="https://github.com/ReviewStage/luke/pull/306">#306</a>)</li>
<li>Fixed voice stop cancellation races
(<a href="https://github.com/ReviewStage/luke/pull/315">#315</a>)</li>
<li>Fixed the Superset sign-in code field looking unlike the other key slots
(<a href="https://github.com/ReviewStage/luke/pull/317">#317</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added anti-slop Oxlint rules across the repository
(<a href="https://github.com/ReviewStage/luke/pull/286">#286</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.2.0: Codex cloud tasks</title>
      <link>https://tryluke.dev/changelog/0.2.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.2.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Codex cloud tasks</h3>
<p>Luke observes your Codex cloud tasks through the Codex CLI.
(<a href="https://github.com/ReviewStage/luke/pull/256">#256</a>,
<a href="https://github.com/ReviewStage/luke/pull/258">#258</a>)</p>
<h3>Previews you can press</h3>
<p>Linear issues show as chips under the notch.
(<a href="https://github.com/ReviewStage/luke/pull/250">#250</a>,
<a href="https://github.com/ReviewStage/luke/pull/257">#257</a>,
<a href="https://github.com/ReviewStage/luke/pull/271">#271</a>)</p>
<h3>Improvements</h3>
<ul>
<li>Luke&#39;s role is an engineering manager
(<a href="https://github.com/ReviewStage/luke/pull/265">#265</a>)</li>
<li>Session rows show the number of files touched and lines changed when
available (<a href="https://github.com/ReviewStage/luke/pull/260">#260</a>)</li>
<li>Luke observes local Devin CLI sessions
(<a href="https://github.com/ReviewStage/luke/pull/255">#255</a>)</li>
<li>Linear connects through a Luke Linear app instead of an API key
(<a href="https://github.com/ReviewStage/luke/pull/261">#261</a>)</li>
<li>Luke hears what you say while the call is still connecting, even on the first
press after launch (<a href="https://github.com/ReviewStage/luke/pull/220">#220</a>)</li>
<li>Meeting quiet starts and ends on the meeting&#39;s own instants, and holds
through a calendar misread
(<a href="https://github.com/ReviewStage/luke/pull/270">#270</a>,
<a href="https://github.com/ReviewStage/luke/pull/272">#272</a>)</li>
<li>A bare &quot;new agent&quot; ask opens a new workspace
(<a href="https://github.com/ReviewStage/luke/pull/230">#230</a>)</li>
<li>An agent&#39;s pull request button uses the PR number
(<a href="https://github.com/ReviewStage/luke/pull/249">#249</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed completion notices firing as sessions closed
(<a href="https://github.com/ReviewStage/luke/pull/246">#246</a>)</li>
<li>Fixed announcements colliding with a reply Luke was still speaking
(<a href="https://github.com/ReviewStage/luke/pull/231">#231</a>)</li>
<li>Fixed back-to-back replies sharing one caption
(<a href="https://github.com/ReviewStage/luke/pull/237">#237</a>)</li>
<li>Fixed captions overlapping the volume hint, re-wrapping mid-display, and
vanishing under a resting pointer
(<a href="https://github.com/ReviewStage/luke/pull/248">#248</a>,
<a href="https://github.com/ReviewStage/luke/pull/245">#245</a>,
<a href="https://github.com/ReviewStage/luke/pull/262">#262</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added link card previews everywhere
(<a href="https://github.com/ReviewStage/luke/pull/244">#244</a>,
<a href="https://github.com/ReviewStage/luke/pull/273">#273</a>)</li>
<li>Updated the landing page with a direct download button
(<a href="https://github.com/ReviewStage/luke/pull/221">#221</a>)</li>
<li>Removed the menu bar item
(<a href="https://github.com/ReviewStage/luke/pull/242">#242</a>)</li>
<li>Removed excessive panel animations
(<a href="https://github.com/ReviewStage/luke/pull/243">#243</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.1.1: Free daily allowance</title>
      <link>https://tryluke.dev/changelog/0.1.1</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.1.1</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Free daily allowance</h3>
<p>Luke&#39;s voice runs on an included daily allowance, or you can connect your own
OpenAI key.
(<a href="https://github.com/ReviewStage/luke/pull/182">#182</a>,
<a href="https://github.com/ReviewStage/luke/pull/204">#204</a>,
<a href="https://github.com/ReviewStage/luke/pull/216">#216</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.1.1/free-daily-allowance.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.1.1/free-daily-allowance.png" alt="&quot;What Luke runs on&quot; in Settings: the included daily allowance chosen over an OpenAI key, its talking and session-check meters with plenty left." loading="lazy"></a></p>
<h3>Google Calendar</h3>
<p>Luke reads when your meetings start and end, and holds his updates until the
meeting is over.
(<a href="https://github.com/ReviewStage/luke/pull/195">#195</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.1.1/google-calendar.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.1.1/google-calendar.png" alt="The Google Calendar card in Settings: connected, two calendars chosen, and &quot;Quiet during meetings&quot; on." loading="lazy"></a></p>
<h3>Improvements</h3>
<ul>
<li>Luke checks for updates on his own
(<a href="https://github.com/ReviewStage/luke/pull/186">#186</a>)</li>
<li>Announcements join a conversation you already have open, with a clickable
chip that jumps to the session
(<a href="https://github.com/ReviewStage/luke/pull/180">#180</a>,
<a href="https://github.com/ReviewStage/luke/pull/184">#184</a>)</li>
<li>Every Settings page marks changed rows and offers a reset to defaults
(<a href="https://github.com/ReviewStage/luke/pull/192">#192</a>)</li>
<li>You can delete your Luke account from Settings
(<a href="https://github.com/ReviewStage/luke/pull/222">#222</a>)</li>
<li>Luke can set a Conductor session&#39;s model and effort in one move
(<a href="https://github.com/ReviewStage/luke/pull/228">#228</a>)</li>
<li>Signing in is smoother, from first launch to the finished account
(<a href="https://github.com/ReviewStage/luke/pull/190">#190</a>)</li>
<li>The archive control moves to the workspace tray header, and the microphone
permission to the Voice page
(<a href="https://github.com/ReviewStage/luke/pull/219">#219</a>,
<a href="https://github.com/ReviewStage/luke/pull/200">#200</a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Fixed Luke repeating himself across back-to-back replies
(<a href="https://github.com/ReviewStage/luke/pull/227">#227</a>)</li>
<li>Fixed the microphone staying open after an exchange ended
(<a href="https://github.com/ReviewStage/luke/pull/210">#210</a>)</li>
<li>Fixed archived Conductor workspaces still appearing in the list
(<a href="https://github.com/ReviewStage/luke/pull/198">#198</a>)</li>
<li>Fixed captions scrolling too fast to read
(<a href="https://github.com/ReviewStage/luke/pull/201">#201</a>)</li>
<li>Fixed Claude Code sessions showing the wrong time
(<a href="https://github.com/ReviewStage/luke/pull/208">#208</a>)</li>
<li>Fixed Luke misunderstanding questions about all your sessions at once
(<a href="https://github.com/ReviewStage/luke/pull/213">#213</a>)</li>
</ul>
<h3>Misc</h3>
<ul>
<li>Added logo and mark variations
(<a href="https://github.com/ReviewStage/luke/pull/191">#191</a>,
<a href="https://github.com/ReviewStage/luke/pull/196">#196</a>)</li>
<li>Updated the landing page download button to always fetch the latest build
(<a href="https://github.com/ReviewStage/luke/pull/183">#183</a>)</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Luke 0.1.0: One panel for every agent</title>
      <link>https://tryluke.dev/changelog/0.1.0</link>
      <guid isPermaLink="true">https://tryluke.dev/changelog/0.1.0</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<p>Introducing Luke: a voice agent that lives in the MacBook notch and watches
every local and cloud coding agent session.</p>
<h3>One panel for every agent</h3>
<p>One panel shows every coding agent working for you: Claude Code, Codex, Cursor,
and OpenCode on your Mac, and Conductor, Cursor, Devin, Google Jules, and
GitHub Copilot in the cloud. Filter, sort, or search the list, and click a
session to open it where it runs.
(<a href="https://github.com/ReviewStage/luke/pull/18">#18</a>,
<a href="https://github.com/ReviewStage/luke/pull/27">#27</a>,
<a href="https://github.com/ReviewStage/luke/pull/59">#59</a>,
<a href="https://github.com/ReviewStage/luke/pull/166">#166</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.1.0/one-panel-for-every-agent.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.1.0/one-panel-for-every-agent.png" alt="The panel hanging from the top of the screen, listing acme's agent sessions across Claude Code, Codex, Cursor, and more, two needing you, beside the Ask Luke composer." loading="lazy"></a></p>
<h3>Talk to Luke</h3>
<p>Hold <kbd>⌥</kbd><kbd>S</kbd> to speak with Luke, or press
<kbd>⌥</kbd><kbd>L</kbd> to type to him from any app. He answers about
sessions, changes his own settings, opens sessions, messages agents, creates
workspaces and spawns agents, and reads and acts on Linear issues.
(<a href="https://github.com/ReviewStage/luke/pull/12">#12</a>,
<a href="https://github.com/ReviewStage/luke/pull/78">#78</a>,
<a href="https://github.com/ReviewStage/luke/pull/70">#70</a>,
<a href="https://github.com/ReviewStage/luke/pull/89">#89</a>)</p>
<p><a href="https://tryluke.dev/changelog/0.1.0/talk-to-luke.png" target="_blank" rel="noreferrer"><img src="https://tryluke.dev/changelog/0.1.0/talk-to-luke.png" alt="The capsule beside the notch with Luke's voice meter lit and his words beneath it: Claude Code opened #214 and has one question about how long invite links last." loading="lazy"></a></p>
<h3>Announcements</h3>
<p>Luke speaks up when a session starts waiting, hits an error, or finishes. He
can show captions on screen, turn down Music and Spotify while he talks, and
display a clickable chip naming the session.
(<a href="https://github.com/ReviewStage/luke/pull/97">#97</a>,
<a href="https://github.com/ReviewStage/luke/pull/149">#149</a>,
<a href="https://github.com/ReviewStage/luke/pull/173">#173</a>)</p>
<h3>Misc</h3>
<ul>
<li>Added hook observation for Claude Code and Codex, so Luke can tell a finished
turn from one you walked away from
(<a href="https://github.com/ReviewStage/luke/pull/119">#119</a>,
<a href="https://github.com/ReviewStage/luke/pull/169">#169</a>)</li>
<li>Added Luke&#39;s face to the menu bar and the notch
(<a href="https://github.com/ReviewStage/luke/pull/35">#35</a>,
<a href="https://github.com/ReviewStage/luke/pull/51">#51</a>)</li>
<li>Added settings for showing Luke in the menu bar and Dock, the display he sits
on, his voice and pace, and editable shortcuts</li>
<li>Added a form to send the founders feedback or submit a prompt
(<a href="https://github.com/ReviewStage/luke/pull/87">#87</a>)</li>
<li>Added sign-in with Google or GitHub
(<a href="https://github.com/ReviewStage/luke/pull/161">#161</a>)</li>
</ul>
]]></description>
    </item>
  </channel>
</rss>
