Skip to content

Luke 0.12.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 20:39
· 2939 commits to main since this release

What's Changed

  • feat(desktop,web): a working agent's line counts how long its run has gone by @dastratakos in #1986
  • feat(desktop): pin and archive plans, and Delete becomes Permanently delete by @dastratakos in #1992
  • feat(desktop): the "+" tab picker drops "Open" and status, always shows the kinds' shortcuts, and fades long names by @dastratakos in #2000
  • fix(desktop): a finished turn's run of calls folds once, never "3 tool calls > 3 tools called" by @dastratakos in #2003
  • feat(desktop): the sidebar groups plans by repository, each row with its last update, and a repository's + starts a plan on it by @dastratakos in #2001
  • fix(desktop): the scroll-to-newest button goes once a closed card leaves nothing below by @dastratakos in #2002
  • fix: a steered worker's tab shows its session, and a call's end re-reads the plan's work by @dastratakos in #1988
  • feat(desktop): transcript fold rows start with their icon, no chevron by @dastratakos in #2005
  • feat(desktop): side panel tabs get a right-click menu (Close, Close others, copy transcripts) and pin per plan by @dastratakos in #1991
  • feat(desktop): one polished copy answer: the glyph crossfades to a check, a menu's copy raises a toast by @dastratakos in #1993
  • feat(desktop): transcript copies raise the shared copy toast by @dastratakos in #2007
  • feat(desktop): live captions stand above the call bar, and step aside for the Transcript by @dastratakos in #2006
  • feat(desktop): every subagent row is one button that opens its tab, running or finished by @dastratakos in #2009
  • feat(desktop): ⌘K command palette for commands and plans by @luke-agent[bot] in #2010
  • feat(desktop): agent composer cleanup: a quiet model button, names without "Claude", harness marks by @dastratakos in #2012
  • feat(desktop,web): a context ring beside the agent's model chip says how full its model's context is by @dastratakos in #2014
  • fix(coder): open a coding agent's sandbox at four vCPUs, so the repository's oxlint runs in it by @dastratakos in #2016
  • feat(desktop): toasts take an action, and archive, delete, reset, agent failures, and an update say so in one by @dastratakos in #2013
  • feat(web): keep every plan save as a revision, and say who last edited the plan by @dastratakos in #2011
  • feat(brand): an avatar set with room around the face for profile photos by @dastratakos in #2021
  • feat(desktop): drop "Ready" under Luke's name; the status line stands only during a call by @dastratakos in #2019
  • feat(desktop): an agent's end while the window is focused is a toast with View, not a notification by @dastratakos in #2020
  • feat(desktop): the GitHub chip opens GitHub, the PR row is one button with coloured counts, and the dots go by @dastratakos in #2015
  • feat(desktop,web): a History tab lists every version of the plan, shows one against another, and restores it by @dastratakos in #2017
  • feat(desktop,web): edit a plan's text fields in place, merged with what Luke writes live by @dastratakos in #2022
  • feat(desktop,web): edit a plan's rules, open questions, and assumptions in place by @dastratakos in #2023
  • fix(desktop): the plan document's sections breathe again around the editable fields by @dastratakos in #2029
  • feat(desktop): Pin and Archive stand in a sidebar plan row's time on hover by @dastratakos in #2028
  • feat(desktop): the model picker shows the newest of each family until you search by @dastratakos in #2031
  • feat(desktop): a repository is drawn with its owner's picture where it is named or picked by @dastratakos in #2026
  • feat(desktop,web): each section says who last changed it, and what changed since you last looked is tinted by @dastratakos in #2025
  • feat(desktop): side panel tabs keep to a centred reading column, except the Board by @dastratakos in #2032
  • feat(desktop): a sidebar repository header is a row with its owner's picture, a fold chevron, and its own menu by @dastratakos in #2027
  • fix(web,desktop): a File tab reads its file again, and says honestly why when it cannot by @dastratakos in #2030
  • feat(desktop): closing a tab returns to the tab last viewed on the plan, and ⌘T opens a tab by @dastratakos in #2035
  • feat(desktop,hosted): the plan's rules read as a numbered list, without a stray dash or "No examples yet" by @dastratakos in #2033
  • feat: pin a repository in the sidebar, kept on the account so it follows you to every Mac by @dastratakos in #2034
  • feat(desktop): no success checks on calls and subagents, unboxed subagent rows with their harness mark, plain trimmed reasoning by @dastratakos in #2036
  • fix(web): the notetaker writes what the call settled, not only what the developer said yes to by @charleslpan in #2040
  • feat(desktop,web): subagents count how long they have worked, and a finished turn says how long it took by @dastratakos in #2038
  • ci: the Postgres job survives registry pull rate limits by @dastratakos in #2039
  • fix(desktop): composer popovers open right above the button that opened them by @dastratakos in #2037
  • feat(desktop): a collapsed repository group counts its plans on hover, and keeps the open plan in sight by @dastratakos in #2043
  • fix(desktop): the whiteboard stacks inside its own box, so the "+" menu and other popovers sit above Excalidraw by @dastratakos in #2045
  • feat(desktop): the agent composer asks to make changes, then for a follow up; the draft tab drops its empty-state line by @dastratakos in #2044
  • feat(desktop): a polished Keyboard shortcuts page, grouped like the menu bar with one keycap column by @dastratakos in #2050
  • feat(desktop): the File tab's header links to the file on GitHub at the branch it was read on by @dastratakos in #2051
  • feat(desktop): version history takes the whole window from the plan's ⋯ menu, and the History tab goes by @dastratakos in #2042
  • fix(web): a coding agent whose steers eve coalesced into one message stops reading as running by @dastratakos in #2048
  • feat(hosted,web): a coding agent may opt into a model's smaller context window, per agent and as the default by @dastratakos in #2046
  • fix(desktop): a finished turn's lone "Thought" stands at the top level, not inside an empty fold by @dastratakos in #2056
  • feat(desktop): sidebar plans read in regular weight, bold only when unread by @dastratakos in #2055
  • fix(voice,web): Luke delegates "end the call" again: earlier calls quoted, an ending policy, and hand-off logs by @dastratakos in #2054
  • feat(desktop): coding-agent notifications setting (on by default), and notifications that actually arrive by @dastratakos in #2052
  • docs(changelog): screenshots for 0.7.0 through 0.11.0, framed on the Golden Gate Sunset aerial by @dastratakos in #2041
  • feat(desktop): a Zoom setting, stepped by ⌘+ / ⌘− / ⌘0 by @dastratakos in #2053
  • feat(desktop): quiet Pin and Archive on plan rows, a Search row, a tilted pin, and Archived drawn as a repository group by @dastratakos in #2060
  • feat(desktop): the agent transcript runs up to the composer and fades into it by @dastratakos in #2059
  • docs(changelog): link every entry to the pull requests that made it by @dastratakos in #2062
  • feat(desktop): version history drops the Current badge, explains the unavailable Restore, and loads as skeletons by @dastratakos in #2063
  • feat(desktop): the plan column's tab draws no fill at rest, only on hover by @dastratakos in #2066
  • feat(web): a coding agent watches its pull request's CI with gh and fixes what fails, where the installation grants the App the read by @dastratakos in #2058
  • feat(desktop): pinned side panel tabs live in the sidebar, not pinned inside the panel by @dastratakos in #2057
  • feat(desktop): archived plans are read-only, with Unarchive as the banner's primary button by @dastratakos in #2064
  • feat(web,hosted): the service refuses writes on an archived plan as plan-archived by @dastratakos in #2071
  • feat(web,desktop): sidebar plan rows mark an agent at work or a pull request, and hang a card with the plan's agents and pull requests by @dastratakos in #2068
  • feat(desktop): every side panel tab drags to any place, the plan keeping the mixed order by @dastratakos in #2061
  • feat(desktop): state on the glyph, not in dots: harness marks with a working ring, an alert on failure, semibold for unread by @dastratakos in #2067
  • feat(web): the Luke GitHub App's webhook keeps what an agent published current for the plan list by @dastratakos in #2073
  • feat(desktop): the model picker offers a Context choice for models with two windows by @dastratakos in #2047
  • feat(web,hosted): subagents get a short title as coding agents do, carried on the wire by @dastratakos in #2069
  • feat(desktop): an agent's tab hovers a card with its whole name, when it last moved, and its latest step by @dastratakos in #2049
  • feat(desktop): polished tables and code blocks in every transcript by @dastratakos in #2065
  • feat(desktop): a sidebar plan hangs its card beside its row: its agents and pull requests at a glance by @dastratakos in #2074
  • feat(desktop): a press on the plan's tab chooses it, and Rename moves to its right-click by @dastratakos in #2076
  • feat(desktop): coding agents move to the plan's column's tab strip, with its own "+" by @dastratakos in #2077
  • feat(web): an account's own Anthropic and OpenAI keys, sealed on the service (BYOK 1/3) by @dastratakos in #2078
  • feat(web): coding agents run on the account's own provider key (BYOK 2/3) by @dastratakos in #2079
  • feat(web,desktop): a coding agent keeps a live to-do list, drawn in its transcript by @dastratakos in #2075
  • feat(desktop): Settings › API keys, the account's own Anthropic and OpenAI keys (BYOK 3/3) by @dastratakos in #2080
  • feat(desktop): a File tab spans the side panel by @dastratakos in #2081
  • feat(web): GET /api/plans/{id}/tree lists a folder of the plan's repository for the File tab's tree by @dastratakos in #2082
  • feat(desktop): one delayed spinner replaces the window's loading words by @dastratakos in #2084
  • feat(web): a coding agent's message and task carry attached files to the model and the transcript (attachments 1/2) by @dastratakos in #2083
  • feat(desktop): the File tab gets a collapsible file tree and clickable breadcrumbs by @dastratakos in #2086
  • feat(desktop): New plan and Search at regular weight, and Pinned folds under an Archived-style header by @dastratakos in #2087
  • feat(desktop): attach files in the agent composer: a "+" beside Send, paste, and drop (attachments 2/2) by @dastratakos in #2085
  • feat(desktop): a finished turn's footer names its day, and its text is selectable by @dastratakos in #2090
  • feat(desktop): a finished turn's fold names its subagents apart from its tool calls by @dastratakos in #2093
  • feat(desktop): hover cards stay open while the pointer is on them by @dastratakos in #2088
  • feat(desktop): a Last used chip on the sign-in marks the provider this Mac signed in with by @dastratakos in #2095
  • ci(web): Preview shape passes at once when the PR changes nothing the web service deploys by @dastratakos in #2102
  • fix(credentials): a refused call renews through the refresh grant, one grant at a time by @charleslpan in #2094
  • feat(web): the auth schema gains Better Auth 1.7's tables and columns ahead of the upgrade (better-auth 1.7 1/3) by @charleslpan in #2100
  • feat(voice): the voice service holds the question queue and hands Luke one question at a time by @charleslpan in #1994
  • feat(desktop): a summary column at the plan column's right, pinned, folded to a rail, or hung as a card by @dastratakos in #2105
  • feat(desktop): a hairline under Search parts the actions from the list, and the list drops its Plans heading by @dastratakos in #2101
  • feat(desktop): each drawing and snippet Luke shows brings its side panel tab on screen by @charleslpan in #2104
  • ci(web): delete the Preview probe job; the deployed-shape probe runs by hand by @charleslpan in #2117
  • fix(desktop): the summary is always drawn, pinned wherever it fits, its card expanding in place over the rail by @dastratakos in #2115
  • feat(desktop): a finished tool row reserves no seat for a state mark it does not show by @dastratakos in #2128
  • feat(agents): a message to a coding agent may be files alone by @dastratakos in #2116
  • feat(desktop): toasts stack as cards in the window's corner, an agent's end stands until seen by @dastratakos in #2118
  • fix(web): an agent the developer asks for is a coding agent, never a worker as well by @dastratakos in #2127
  • feat(desktop): the file tree draws coloured icons, shares a lone folder's row, and gains a search field and a Files Luke showed filter by @dastratakos in #2125
  • feat(web,desktop): a planning worker's row names the model it ran on, as an agent's subagent row does by @dastratakos in #2132
  • feat(web,desktop): a stop on the Work tab names the subagent it stopped by @dastratakos in #2130
  • feat(desktop): a plan's hover card opens its repository, its agents, and its pull requests by @dastratakos in #2120
  • fix(web): a coding agent started with a file opens its sandbox and starts, and one that never starts reads as failed by @dastratakos in #2119
  • feat(desktop): the file tree's search covers the whole repository, read in one recursive listing the first time it is used by @dastratakos in #2131
  • feat(desktop): a finished turn's fold counts the coding agents it started apart from its tool calls by @dastratakos in #2129
  • test(web): the live follow names a worker's model, as the read back does by @dastratakos in #2138
  • feat(web,desktop): plan as a teammates' design doc, held to a spec's bar by @charleslpan in #2114
  • feat(desktop): one bar across the file viewer: back and forward, breadcrumbs, GitHub, a ⋯ of file actions and view settings, and the tree's toggle by @dastratakos in #2139
  • feat(voice): a call outlives a plan switch and leaving the plan, and its mute chords answer wherever the panel stands by @dastratakos in #2123
  • feat(desktop): pressing a coding agent's start on the Work tab opens the agent's tab by @dastratakos in #2134
  • feat(desktop): a breadcrumb's list of its folder is drawn in the file tree's own rows, icons, and keys by @dastratakos in #2140
  • feat(web): a coding agent is titled from its first exchange as a turn ends, not from the plan as it starts by @dastratakos in #2150
  • feat(desktop): copy and download a File tab's file as it holds it, read raw in one bounded call, its long lines uncut by @dastratakos in #2154
  • feat(desktop): one Retry for every failure, a turning arrow in the toolbar button's muted voice, in place of the inline Try again links by @dastratakos in #2157
  • fix(web): the plan list reads no part of the document, so a reshaped document cannot empty it by @dastratakos in #2158
  • feat(desktop): a press on an attached file opens it over the window, and a chip draws the file tree's icon for its type by @dastratakos in #2159
  • feat(desktop): a section's "Edited by" opens version history on the revision that last changed it by @dastratakos in #2147
  • feat(web): a dictated clip answered with its words (dictation 1/2) by @dastratakos in #2106
  • test(desktop): a full-screen panel hides the summary with its column, and leaving uncovers the mode the column's width calls for by @dastratakos in #2165
  • feat(desktop): record-then-transcribe in the composer (dictation 2/2) by @dastratakos in #2107
  • feat(desktop): a call card shows the live call wherever its plan is not on screen, in the sidebar, the window's corner, or a floating window by @dastratakos in #2136
  • feat(desktop): standard macOS window flow: the window reopens where it was left, ⌘W with no tab closes the window, ⌃⌘F full screen, a live call asks before Quit, and the system's chords on the shortcuts page by @dastratakos in #2160
  • feat(web,desktop): a turn's "Worked for" line hangs a card saying what it ran on, when, how it ended, and its tokens by @dastratakos in #2155
  • feat(desktop): the agent composer's + moves to the foot's left, and the model chip and context ring join the mic and Send at its right by @dastratakos in #2166
  • feat(desktop): ⌘F finds within the tab holding the window's focus by @dastratakos in #2156
  • fix(web): a plan its coding agents saved to before the teammate template reads again by @dastratakos in #2168
  • feat(desktop): the call card is the plan's call bar itself, under the call's plan name by @dastratakos in #2169
  • feat(web): the developer's inbox on the service: items a plan's agents post, read and answered over two routes by @dastratakos in #2161
  • feat(web,desktop): a turn's card lists what it wrote to the prompt cache, where the provider said by @dastratakos in #2167
  • feat(desktop): the plan's Inbox tab reads and answers its agents' inbox items by @dastratakos in #2162
  • feat(web): a plan that is one document reads as its text (plan as one document 2/12) by @dastratakos in #2184
  • feat(web,desktop): coding agents post what they need of the developer to the plan's Inbox by @dastratakos in #2163
  • fix(desktop): the summary's rail stands on the panel button's line, and the pinned summary collapses from the rail's spot by @dastratakos in #2183
  • feat(desktop): the call card's way back is a button naming the call's plan, landing on its document by @dastratakos in #2185
  • feat(web): an account's plan template, stored and served (plan as one document 1/12) by @dastratakos in #2182
  • fix(desktop): plans archived together are drawn with one stamp, so the batch-archive test stops flaking by @dastratakos in #2188
  • feat(web): a plan that is one document takes the developer's edit and restore (plan as one document 3/12) by @dastratakos in #2186
  • feat(desktop): a crumb's dropdown is the real file tree; summary Files in the tree's rows by @dastratakos in #2191
  • feat(desktop): Luke at the head of the sidebar no longer follows the call by @dastratakos in #2194
  • feat(desktop): a plan that is one document draws as its text under its name (plan as one document 5/12) by @dastratakos in #2193
  • feat(desktop): one working mark, two pixels lapping a grid, wherever an agent works, in the glyph's own slot so nothing moves as work starts or ends by @dastratakos in #2189
  • fix(hosted): a desktop reads a service's answer whatever keys a newer service adds by @dastratakos in #2210
  • feat(desktop): ⌘K filters its rows by kind, stepped with ⌘[ and ⌘], over a foot of its keys by @dastratakos in #2192
  • feat(desktop): starting a second call asks first, and Cancel keeps the call standing by @dastratakos in #2209
  • feat(web): Luke's notes land in a plan that is one document (plan as one document 4/12) by @dastratakos in #2190
  • Sidebar plan hover card: no status words, less crowded by @dastratakos in #2215
  • feat(desktop): an agent's working line says Starting… until its turn opens and Thinking… until the turn draws its first row by @dastratakos in #2217
  • feat(desktop): Settings › Plan template edits the account's starter template for new plans (plan as one document 7/12) by @dastratakos in #2220
  • feat(desktop): ⌘K searches the open plan's files and opens one in a tab of its own by @dastratakos in #2212
  • fix(desktop): the floating call card drags from anywhere and never brings Luke forward, and its way back lands on the call's plan by @dastratakos in #2224
  • feat: a command a model describes reads as its description on its row, the command in its body by @dastratakos in #2222
  • feat(desktop): a plan that is one document is edited in place on TipTap, its title inline (plan as one document 6/12) by @dastratakos in #2226
  • feat(web): a new plan is one document, a copy of its account's template; old plans carry over by a hand-run backfill (plan as one document 8/12) by @dastratakos in #2219
  • feat(web,desktop): inbox items are blocks and a response, replacing the fixed kinds by @dastratakos in #2218
  • feat(desktop): a Thinking line previews its thought, call rows are drawn muted, and a preview drops while its row is open by @dastratakos in #2223
  • refactor(desktop): the voice window stops reporting loudness nobody reads by @dastratakos in #2230
  • fix(desktop): the summary rail's expand chevron wears no working badge, and the summary's first heading reads Tabs by @dastratakos in #2231
  • fix(desktop): the folded sidebar's call card floats at the default sidebar width by @dastratakos in #2233
  • feat(desktop): the sidebar's account opens a Cursor-style menu, the gear goes to Settings, and a waiting release stands between them by @dastratakos in #2232
  • fix(desktop): an agent's docked to-do list takes the composer's width and place by @dastratakos in #2234
  • feat(desktop): the plan template is written in the plan's own document editor (plan as one document 7/12 follow-up) by @dastratakos in #2240
  • fix(desktop): toasts stand in the window's very corner, stepping over the call bar only while a card has a button by @dastratakos in #2225
  • fix(web): a coding agent on a model's fast version runs at Anthropic as the base model asked for fast speed by @dastratakos in #2239
  • feat(web): a transcript's call says when and why it ended, what it metered, and the model it ran on by @dastratakos in #2242
  • feat(web,desktop): an inbox item points at exact lines of the agent's repository, read at the commit it named by @dastratakos in #2228
  • feat(desktop): a call on the Transcript tab closes on how long it ran, its card on hover by @dastratakos in #2246
  • feat(desktop,web): connect Linear in Settings, and every agent uses it through Linear's MCP server by @luke-agent[bot] in #2070
  • feat(desktop,web): a version's row is drawn under its writer as the rest of the window draws them (version history 1/3) by @dastratakos in #2254
  • fix(web): the plan scribe's store tests wait for the database's answer, not for a count of loop turns by @dastratakos in #2260
  • feat(desktop): a failed agent keeps its logo, and the failed mark moves to its row's end by @dastratakos in #2262
  • fix(desktop): every scroller draws one scrollbar, a thin thumb on no track that fades in on hover by @dastratakos in #2253
  • refactor(web): the service keeps every plan as its text alone, and the fixed template's fields path is gone (plan as one document 10/12) by @dastratakos in #2256
  • feat(web): a coding agent can be archived and brought back, stopping a running turn first by @dastratakos in #2252
  • feat(desktop): a version of several changes opens the sections it changed, each drawn alone (version history 2/3) by @dastratakos in #2261
  • fix(desktop): a drag of the floating call card leaves no hover or focus ring on its buttons by @dastratakos in #2243
  • feat(desktop): the Inbox tab is closed until an item arrives, closes like any tab, and empty tabs show their glyph by @dastratakos in #2258
  • feat(desktop): a File tab stands Luke's note over the lines he showed, folded as the tab keeps it, with a link to its card in Code by @dastratakos in #2264
  • perf(desktop): load session replay's recorder as its own bundle, after the panel has painted by @dastratakos in #2273
  • feat(desktop): the folded sidebar's call card stands just above the dock of the column it overlays by @dastratakos in #2251
  • feat(desktop,web): a version's Open goes to where it was written, from a quiet arrow on hover or its right-click (version history 3/3) by @dastratakos in #2272
  • feat(desktop): the side panel's preset tabs open at the strip's end like any other, and ⌥⌘1–4 are gone by @dastratakos in #2263
  • fix(web): a revision's assumptions column takes its default, and nothing writes it (plan as one document 11a/12) by @dastratakos in #2278
  • refactor(desktop): every plan is drawn and edited as one document, and the field editor is gone (plan as one document 12/12) by @dastratakos in #2248
  • feat(web): Luke's notes name the heading they go under, in whatever template the developer wrote (plan as one document 9/12) by @dastratakos in #2275
  • feat(web,desktop): Inbox notifications, a Dock badge, and an all-plans Inbox in the sidebar by @dastratakos in #2216
  • feat(web,desktop): an inbox item shows the developer a picture the agent took in its sandbox by @dastratakos in #2238
  • refactor(web): the schema modules stop declaring the fixed template's columns, one deployment before they are dropped (plan as one document 11b/12) by @dastratakos in #2279
  • feat(desktop): archive a coding agent from its tab or its summary row, and unarchive it from the summary's Archived fold by @dastratakos in #2276
  • feat(web): the fixed template's columns are dropped, and a plan's text is never null (plan as one document 11c/12) by @dastratakos in #2280
  • refactor(hosted): the plan wire carries the document alone, with the fixed template's fields and their edit forms gone (plan as one document cleanup) by @dastratakos in #2281
  • docs(agents): adopt lobehub's drizzle, db-migrations, and testing skills by @charleslpan in #2109
  • refactor(database): move schemas, migrations, and the Drizzle bridge into @sidecar/database by @charleslpan in #2141
  • feat(database): bring back drizzle-kit, generating migrations from the schema modules by @charleslpan in #2142
  • feat(lint): refuse a Drizzle delete or update with no where by @charleslpan in #2143
  • feat(database): getTestDB() in @sidecar/database/testing, and rows stay on Effect Schema by @charleslpan in #2144
  • docs(web): the data layer reads the way the Drizzle skills do by @charleslpan in #2145
  • feat(lint): refuse an awaited statement built on the Effect handle by @charleslpan in #2149
  • refactor(database): the store's column schemas move to @sidecar/database/models/columns by @charleslpan in #2170
  • refactor(database): the soft-delete purge moves to @sidecar/database/models/soft-delete by @charleslpan in #2171
  • refactor(database): the content addresses move to @sidecar/database/models/content-addressed by @charleslpan in #2172
  • charleslpan/models ids by @charleslpan in #2173
  • refactor(database): the message and turn reads move to @sidecar/database/models/message-reads by @charleslpan in #2174
  • refactor(database): the journal's attached-file parts move to @sidecar/database/models/attached-file-parts by @charleslpan in #2175
  • refactor(database): the store writer moves to @sidecar/database/models/writer by @charleslpan in #2176
  • refactor(database): the recorded runtime session moves to @sidecar/database/models/recorded-session by @charleslpan in #2177
  • refactor(database): the asks queue moves to @sidecar/database/models/asks by @charleslpan in #2178
  • charleslpan/models abandoned turns by @charleslpan in #2179
  • refactor(database): the voice writer moves to @sidecar/database/models/voice-writer by @charleslpan in #2180
  • refactor(database): the hosted store moves to @sidecar/database/models/hosted-store, and server/hosted/store/ is gone by @charleslpan in #2181
  • refactor(database): the daily quota moves to @sidecar/database/models/quota by @charleslpan in #2195
  • refactor(database): plan revisions move to @sidecar/database/models/plan-revisions by @charleslpan in #2197
  • refactor(hosted): CODING_AGENT_DEFAULT_CHOICE moves to @sidecar/hosted/models-wire by @charleslpan in #2207
  • feat(database): migrations are named by timestamp, and a repeated journal index fails by @charleslpan in #2213
  • refactor(database): the account store moves to @sidecar/database/models/account-store by @charleslpan in #2208
  • refactor(database): the plan store moves to @sidecar/database/models/plan-store by @charleslpan in #2198
  • refactor(database): repository pins move to @sidecar/database/models/repository-pin-store by @charleslpan in #2199
  • refactor(database): the transcript store moves to @sidecar/database/models/transcript-store by @charleslpan in #2200
  • refactor(database): the board store moves to @sidecar/database/models/board-store by @charleslpan in #2201
  • refactor(database): the provider-key seal moves to @sidecar/database/models/provider-key-seal by @charleslpan in #2202
  • refactor(database): the provider-key store moves to @sidecar/database/models/provider-key-store by @charleslpan in #2203
  • refactor(database): child titles move to @sidecar/database/models/child-titles by @charleslpan in #2204
  • refactor(database): the coding-agent store moves to @sidecar/database/models/coding-agent-store by @charleslpan in #2205
  • refactor(database): the voice session record moves to @sidecar/database/models/voice-session-record by @charleslpan in #2206
  • fix(desktop): a press of Start closes the Start model menu by @luke-agent[bot] in #2237
  • feat(web,desktop): a planning worker's row names the effort it ran on, and the brain reaches its model as a coding agent's step does by @luke-agent[bot] in #2244
  • fix(desktop): toasts always stand in the window's corner, and every card with an action can be dismissed by @dastratakos in #2284
  • feat(desktop): a described command's closed row previews the command, and a call row's title is in full ink by @dastratakos in #2285
  • docs(privacy): PRIVACY.md describes what is on main now by @dastratakos in #2287
  • feat(desktop): a plan being read stands one skeleton tab, and the summary's Inbox row counts what waits by @dastratakos in #2283
  • Every sidebar row is one line; pinned tabs get a hover card by @dastratakos in #2286
  • fix(desktop): a toast's title wraps at the card's line, sits a title's step above its detail, and both stop at two lines by @dastratakos in #2289
  • fix(desktop): the sidebar stands skeleton rows until the plan list is read, rather than claiming no plans by @dastratakos in #2294
  • feat(desktop): a version row's actions live in one ⋯ menu, and the drill-in's author opens where it was written by @dastratakos in #2292
  • fix(web): the mobile browser bar matches the light pages by @dastratakos in #2293
  • fix(web): deleting an account revokes its Linear grant at Vercel Connect by @dastratakos in #2299
  • The pinned tab a plan was opened from stays selected in the sidebar by @dastratakos in #2291
  • fix(web,database): deleting a plan deletes its calls and the words said on them by @dastratakos in #2303
  • fix(desktop): one focus ring for every control, and one for every field by @dastratakos in #2304
  • fix(desktop): Back from a tab opened out of version history returns to version history by @dastratakos in #2296
  • fix(desktop): a fold counting a turn's rows goes back to the muted ink by @dastratakos in #2305
  • fix(desktop): a link in the transcript, Work, and Inbox words opens on GitHub as the agent tab's does by @dastratakos in #2300
  • feat(desktop): the file tree slides in and out as a pane does, and the File tab's breadcrumbs are in the window's own type by @dastratakos in #2308
  • fix(desktop,web): failures are alerts, and the searchable menu announces its highlighted row by @dastratakos in #2306
  • feat(desktop): every coding agent wears its harness's mark and every subagent its model's, wherever it is drawn by @dastratakos in #2290
  • fix(web): deleting a plan stops its coding agents first by @dastratakos in #2298
  • feat(desktop): folds open and close with motion, and the to-do list rises off the composer by @dastratakos in #2311
  • feat(desktop): every menu and popover draws from one set of menu tokens by @dastratakos in #2301
  • fix(desktop): a file Luke showed opens at the commit his checkout read it at, not main's head by @dastratakos in #2316
  • fix(web): voice and web logs name a failure's kind, never its detail by @dastratakos in #2310
  • feat(desktop): the plan title names the plan everywhere as you type, and saves at each pause by @dastratakos in #2317
  • fix(desktop): Settings shows its confirm's question, and its rows are named by their visible label by @dastratakos in #2309
  • fix(ci): lint on the Node already installed instead of downloading one by @dastratakos in #2323
  • feat(desktop): what pops up plays its exit before it unmounts, and arrives on the pair by @dastratakos in #2321
  • feat(desktop): file tabs, pinned files, the side panel's +, and the Code tab's cards wear the file tree's icon for the file's type by @dastratakos in #2313
  • feat(web): the plan template keeps a version history, read a page at a time and restored as a revision by @dastratakos in #2315
  • List every plan holding an inbox item on the account's inbox read by @dastratakos in #2312
  • feat(desktop): coding agents wear one workflow glyph and never a terminal; a transcript's code-shown call wears the Code tab's brackets by @dastratakos in #2322
  • Pin the plan's Inbox tab to the sidebar by @dastratakos in #2288
  • fix(desktop): a starting subagent shows one working line, and a failed planning turn reads "Failed" by @dastratakos in #2302
  • feat(desktop): the window reads the plan template's history and restores a revision by @dastratakos in #2324
  • feat(desktop): the summary's rows hang the cards the rest of the window hangs for the same thing by @dastratakos in #2318
  • feat(desktop): Settings › Plan template is drawn and edited as a plan's own document by @dastratakos in #2320
  • feat(web): a coding agent is offered its repository's agent skills, and a /name loads one by @dastratakos in #2325
  • feat(web,database): retire a deleted plan's and account's eve sessions, and delete their sandboxes by @dastratakos in #2326
  • Align the Inbox board with the app's tooltips, glyphs, and control fills by @dastratakos in #2295
  • refactor(web,desktop): Linear becomes the first of provider-keyed integrations (integrations 1/5) by @dastratakos in #2319
  • feat(web): a finished eve run's history is deleted at once (Workflow retention 0) by @dastratakos in #2332
  • feat(desktop): a hover card's rows sit a menu's inset from its edge, and a pinned tab's card is a plan card by @dastratakos in #2314
  • feat(desktop): the plan template's version history is a plan's own, its actions on its title line, its words dissolving under its note by @dastratakos in #2331
  • feat(desktop): the desktop reads a plan's repository skills, and an agent's skill load reads as one by @dastratakos in #2334
  • feat(desktop): Settings › Integrations lists every integration, with Linear's row moved there (integrations 2/5) by @dastratakos in #2328
  • Add the window's Inbox: a sidebar row, a column of plans, and their items by @dastratakos in #2327
  • feat(desktop): a / in an agent's box lists the repository's skills, and the one chosen is a chip the agent loads by @dastratakos in #2337
  • docs(comments): comments stop describing a plan as fields, now that it is one document by @dastratakos in #2339
  • feat(web,desktop): Notion, connected in Settings › Integrations and used by every agent (integrations 3/5) by @dastratakos in #2333
  • fix(desktop): a sidebar row's card stands while the pointer is on the row's own buttons by @dastratakos in #2341
  • docs: PLANNING.md and the server README describe a plan as one document, not fields by @dastratakos in #2342
  • chore(desktop): drop CSS rules and tokens nothing draws, a shortcut key no chord uses, and stale knip entries by @dastratakos in #2343
  • feat(web,desktop): show an agent's pull request changes in a Changes tab by @luke-agent[bot] in #2307
  • docs(comments): comments and docs name moved database files by their new paths by @dastratakos in #2344
  • feat(database): every journaled agent note is named by its heading, so the reader of field notes can go by @dastratakos in #2345
  • feat(desktop): Settings › Coding agents holds the default model, API keys, and notifications as three groups; Feedback leaves Settings by @dastratakos in #2335
  • feat(web,desktop): Sentry, connected in Settings › Integrations and used by every agent (integrations 4/5) by @dastratakos in #2336
  • fix(desktop): a thumbnail's way off is a 24px target, the compose menu's switch takes its light value, and one monospace token by @dastratakos in #2297
  • feat(desktop): Settings pages name themselves in the page, under no top bar, and group their rows in cards (settings kit 1/6) by @dastratakos in #2340
  • fix(desktop): the File tab's code selects and copies, its line numbers left out by @dastratakos in #2330
  • feat(desktop,web): an MCP button in the coding agent's composer switches each server for that chat by @dastratakos in #2329
  • feat(desktop): Settings › Integrations rows sit in one card, a connected one's Disconnect behind its ⋯ and a right-click, asking in the confirm dialog (settings kit 2/6) by @dastratakos in #2346
  • feat(desktop): Settings › Keyboard shortcuts groups its rows in cards, a changeable key's chord is the field that records it, and its other acts sit behind its ⋯ (settings kit 3/6) by @dastratakos in #2347
  • feat(desktop): Settings › Coding agents' three groups sit in cards, and an API key's Edit and Remove sit behind its ⋯, Remove asking in the confirm dialog (settings kit 4/6) by @dastratakos in #2348
  • feat(desktop): Settings › General's Updates and Account sit in cards, Sign out and Delete account ask in the confirm dialog, and the in-row confirm goes (settings kit 5/6) by @dastratakos in #2349
  • docs(agents): the Testing section names the test checks main runs, not the unmerged testing plugin by @dastratakos in #2350
  • chore(database): stop declaring the dead tables and columns, ahead of the migration that drops them (cleanup round 2, 1/2) by @dastratakos in #2351
  • feat(desktop): any http(s) link a transcript or an Inbox item holds opens in the browser, not only GitHub's by @dastratakos in #2352
  • feat(desktop): a Settings row's ⋯ stands drawn at rest, muted, rather than only under the pointer by @dastratakos in #2355
  • feat(web,desktop): Slack, read-only, connected in Settings › Integrations and used by every agent (integrations 5/5) by @dastratakos in #2338
  • fix(desktop): one focus ring everywhere, whole on every row: the sidebar's plans, headers, and hover buttons, version history, tab strips, the file tree by @dastratakos in #2357
  • feat(desktop): Start and the plan's ⋯ menu stand only on the plan's own tab, its chords answering on every tab by @dastratakos in #2353
  • feat(web,desktop): the MCP popover counts each server's tools and lists them, and connects a server in place by @dastratakos in #2358
  • chore(database): drop the dead tables and columns (cleanup round 2, 2/2) by @dastratakos in #2356
  • docs(proposals): one agent runtime for the planning brain and coding agents (decided) by @dastratakos in #2361
  • feat(web): queue a shell command for the developer's Mac, held for a signed-in Mac to take and answer (mac commands 1/4) by @dastratakos in #2359
  • feat(web): one connection set: every agent is handed its integrations by one dynamic connection, its role deciding which (one runtime 1/n) by @dastratakos in #2363
  • feat(desktop): the Work tab draws Luke's turns with a coding agent's own transcript component (one runtime 3/n) by @dastratakos in #2365
  • feat(web): every inference on Luke's key is counted on the account's meter, a coding agent's and every title included (one runtime 6/n) by @dastratakos in #2367
  • feat(database,web): plans keep pages and their versions, read through two routes (pages 1/4) by @dastratakos in #2360
  • feat(desktop): one shortcut look everywhere: plain tight glyphs, Settings included, and the voice keys in a field by @dastratakos in #2371
  • fix(web,desktop): Fast runs on Luke's Anthropic key alone; an account's own key is refused before any request, and Anthropic refusing fast mode reads as that by @dastratakos in #2366
  • feat(web,hosted): a planning turn names the spoken lines it took as its ask, and a transcript line names its row (call tab 1/3) by @dastratakos in #2368
  • feat(web,desktop): the planning model is offered its plan's repository skills and loads one with load_skill (one runtime, Decision 4) by @dastratakos in #2375
  • feat(desktop,host): a page's version loads in a sandboxed luke-page: frame (pages 2/4) by @dastratakos in #2362
  • refactor(web): read who changed each section off the plan's revisions, and stop writing section_writers (section writers 1/2) by @dastratakos in #2373
  • feat(web,desktop): coding agents read the web through the planning model's own hosted search and page read (one runtime 4/n) by @dastratakos in #2372
  • feat(desktop): the call thread places each planning turn's work under the line that asked for it (call tab 2/3) by @dastratakos in #2369
  • feat(desktop,host): a plan's pages open in Page tabs in the side panel (pages 3/4) by @dastratakos in #2364
  • chore(database): drop plan.section_writers (section writers 2/2) by @dastratakos in #2383
  • feat(desktop): one Call tab, read as a coding agent's tab, Luke's work under the line that asked for it (call tab 3/3) by @dastratakos in #2378
  • feat(web): one tool registry: every tool names the roles it serves, and each root's offer and stored set derive from it (one runtime 2/n) by @dastratakos in #2386
  • feat(host): the Mac runs the commands agents queue for it, in the login shell from home, under a Settings switch on by default (mac commands 2/4) by @dastratakos in #2374
  • feat(web,desktop): Luke and coding agents show interactive pages with show_page (pages 4/4) by @dastratakos in #2370
  • feat(web,desktop): a coding agent's worker row says where the worker's own session stands, not its call (one runtime 5a/n) by @dastratakos in #2387
  • feat(voice): Luke hanging up leaves no "Luke ended the call." notice over the plan by @dastratakos in #2398
  • feat(desktop): Inbox plan rows are the sidebar's plan rows, Waiting is the one word, and the sidebar's Inbox counts every waiting item by @dastratakos in #2392
  • feat(desktop): chords sit on their row's line, ⌘K steps filters on ←/→, and integration rows lose their hint by @dastratakos in #2399
  • feat: run_on_mac, one tool every agent calls to run a shell command on the developer's Mac (mac commands 3/4) by @dastratakos in #2376
  • docs(web): set the Slack connector's user scopes when provisioning by @dastratakos in #2393
  • feat(web): one sandbox lifecycle: every role's sandbox is its profile's policy over one shared definition (one runtime 8/n) by @dastratakos in #2403
  • docs(proposals): the one agent runtime as built by @dastratakos in #2406
  • refactor(web): one edge kit: the doors both eve roots open onto the runtime are built once, over the edge's own runner (one runtime 7a/n) by @dastratakos in #2401
  • refactor(web): one host core: both agents' hosts admit sessions, claim their conversation, and find a worker's child the same way (one runtime 7b/n) by @dastratakos in #2405
  • fix(web,desktop): on a live call, Luke's work stands under the line that asked for it, his written answer is not drawn twice, and "Worked for" is set like "Working" by @dastratakos in #2404
  • feat(desktop): the Changes tab is reachable from the "+", the summary, and ⌘K, and is drawn as a File tab by @dastratakos in #2395
  • feat(desktop,hosted): every tool name an agent's transcript carries is declared once, and the agent tab reads the planning model's raw calls by it (one runtime 9a/n) by @dastratakos in #2397
  • feat(desktop,web): a skill named in a sent message is its chip, which opens the skill's SKILL.md in a File tab by @dastratakos in #2394
  • fix(web): a note fills a section still holding its template's guidance in place of it by @dastratakos in #2400
  • feat(web): one delegation: delegate is a resumable task in both roots, the coder choosing to wait and the planner always in the background (one runtime 5b/n) by @dastratakos in #2402
  • feat(desktop): a command an agent ran on the developer's Mac reads as a command row tagged On your Mac, on the Work and agent tabs (mac commands 4/4) by @dastratakos in #2388
  • feat(desktop): Settings › Updates names a development build by its commit, and a release shows its commit beside the version by @dastratakos in #2408
  • feat(desktop): the Call tab wears a phone, not a speech bubble by @dastratakos in #2410
  • feat(desktop): an action in the app's own menus is named without a trailing ellipsis by @dastratakos in #2416
  • fix(web,desktop): a running turn stays under the ask that opened it, a spoken turn folds like an agent's, and thoughts and subagents join a run of calls by @dastratakos in #2417
  • feat(desktop): the Inbox's Waiting filter answers its press, its sections fold under the sidebar's group header, and a settled item opens its agent by @dastratakos in #2422
  • fix(desktop,web): the Call tab's turn and call cards wear their model's provider mark, and a call's end line sits at the column's start by @dastratakos in #2423
  • chore(release): bump the workspace to 0.12.0 and write its changelog by @dastratakos in #2421
  • chore: cut the test suite and checks to an MVP's needs by @charleslpan in #2420
  • feat(web,desktop): the Call tab reads the planner's own journal and each worker where its own session stands (one runtime 9b/n) by @dastratakos in #2411
  • refactor(web,desktop): the Call tab reads the planner's own journal, the projection deleted (one runtime 9c/n) by @dastratakos in #2419

Full Changelog: v0.11.0...v0.12.0