Skip to content

Luke 0.13.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 20:06
· 1208 commits to main since this release
f11d4c9

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
  • docs(proposals): the one agent runtime's migration table names 9b and 9c's pull requests by @dastratakos in #2431
  • feat(desktop,host): an agent's GitHub error offers the GitHub sign-in, and the start or message goes through once it lands by @dastratakos in #2415
  • feat(desktop): the update pill shows only what there is to press, a failed check says so, and Luke's menu can check for updates by @dastratakos in #2428
  • feat(desktop): ⇧⌘T reopens the tabs closed, the latest first, each where it stood by @dastratakos in #2429
  • chore(database): hold a store test's layer hook to the web suite's timeout by @dastratakos in #2434
  • fix(web,desktop): the Call tab stands a call's first ask under its turn, folds a spoken turn's words and footer with its work, and a goodbye's turn settles rather than fails by @dastratakos in #2433
  • feat(web): a plan's planning conversation reads on the agent tab's held transcript wire, beside its work (one runtime §3.7 A) by @dastratakos in #2436
  • db: voice_avatar_sessions by @charleslpan in #2440
  • contracts: avatar frames and desktop avatar status by @charleslpan in #2441
  • feat(desktop,host): the open plan's conversation is read on the agent tab's held read, beside its work, for the Call tab to switch to (one runtime §3.7 B) by @dastratakos in #2437
  • feat(desktop): the Inbox reads one item at a time beside a list grouped by plan or newest first, and a settled item shows what it offered with the pick marked by @dastratakos in #2442
  • feat(desktop): the call's video tile, Luke's picture or his still frame with video off, restart, and hang up by @charleslpan in #2443
  • feat(web): a LiveAvatar client mints and stops a LITE avatar session on Luke's key by @charleslpan in #2445
  • fix(web): a planner page reads as running while a worker does, and one no journal moved says where every worker of a page of turns stands (one runtime §3.7 A2) by @dastratakos in #2449
  • revert: take the avatar PRs (#2440, #2441, #2443, #2445) off main until the stack is tested by @charleslpan in #2455
  • feat(desktop): the Call tab and a planning worker's tab read the plan's conversation on the agent tab's held read (one runtime §3.7 C) by @dastratakos in #2453
  • fix(web): the notetaker writes a correction in place of exactly what it names, and an add at its section's one level by @dastratakos in #2460
  • fix(web): the notetaker may write a point's parts as indented sub-bullets, never markers stacked on one line by @dastratakos in #2463
  • fix(desktop): the voice and call windows are sent no planning conversation, as they are sent no planning work by @dastratakos in #2464
  • docs(skills): orchestrate restacks a stack in one pass and asks before workers merge by @charleslpan in #2454
  • docs(changelog): screenshots for 0.12.0, each staged for its feature, and the skill that takes them by @dastratakos in #2435
  • docs(privacy): bring PRIVACY.md up to date with what shipped on 13 October by @dastratakos in #2462
  • ci: store tests run in CI's Postgres job by @charleslpan in #2466
  • feat(web): Better Auth 1.7.7 (better-auth 1.7 3/3) by @charleslpan in #2409
  • chore: Effect 4.0.4 stable by @charleslpan in #2412
  • feat(database): Drizzle v1 and its Effect driver replace the bridge by @charleslpan in #2424
  • feat(database): migrations apply by name and branches stop conflicting on the journal by @charleslpan in #2430
  • feat(desktop): a press on a skill's chip in the composer opens its SKILL.md, and a skill's hover card is the window's plan card by @dastratakos in #2473
  • fix(desktop): Settings pages draw at their final size on the first frame by @dastratakos in #2425
  • feat(desktop): the New plan page starts a document: the name as the plan's title, the repository as a labelled property, Create plan, and the template's sections faint beneath by @dastratakos in #2468
  • fix(desktop): the MCP popover's title sits as close to the top as to the side, and no menu scrolls sideways by @dastratakos in #2475
  • feat(desktop): Inbox head's Waiting only toggle, a resizable Inbox list, and the sidebar toggle at the window's edge in full screen by @dastratakos in #2465
  • build: Turborepo runs only affected tasks and shares a remote cache between CI and agents by @charleslpan in #2480
  • docs(workflow): agents run affected checks and push; check.sh is the full local run by @charleslpan in #2483
  • docs(web): Slack's connector is an OAuth connector against mcp.slack.com's own authorization server, with the app settings it needs by @dastratakos in #2407
  • feat(web,desktop): an integration reads Connected only when its MCP server answers with tools, and says the server's own reason when it does not by @dastratakos in #2479
  • docs(changelog): 0.7.0 through 0.11.0 screenshots retaken from each release's own build by @dastratakos in #2481
  • fix(desktop): the Inbox pane's crumbs are drawn as tabs, and the Inbox keeps the app's rhythm by @dastratakos in #2488
  • fix(desktop): the New plan page is drawn at full strength, its sections alone faint, with no dictation and no "Luke joins…" line by @dastratakos in #2485
  • fix(web,desktop): the Call tab stands a call's opening look-around at the call's top, by time among its lines, with its words folded as a spoken turn's by @dastratakos in #2486
  • feat(desktop): ⌘K lists the Settings pages, each opening Settings on its page by @dastratakos in #2489
  • feat(desktop): a tool row about a page, the board, an agent, code shown, the plan, or the Inbox opens it, and groups and agent lists wear fitting icons by @dastratakos in #2484
  • docs(changelog): the notch era gets eight screenshots from its own builds, and the framer lays out a panel or an overlay by @dastratakos in #2482
  • feat(desktop): a page tab's code toggle shows its version's HTML as a File tab draws a file by @dastratakos in #2487
  • docs(changelog): Usage data is 0.3.0's, where it first shipped, not 0.2.0's by @dastratakos in #2492
  • feat(web): offer an integration only to the accounts its allowlist variable names by @dastratakos in #2490
  • fix(desktop): the Inbox's name stands centred over its list while the sidebar is folded, in a window and in full screen by @dastratakos in #2493
  • refactor(hosted): the field-note reader is gone, and a note names its heading or does not read by @dastratakos in #2459
  • feat(desktop): ⌘K steps its filters on ←/→ only while the field is empty, and on ⌘[/⌘] always by @dastratakos in #2496
  • feat(desktop): New plan is a dialog over the window, its name, the repository chip, Cancel and Create plan, and with no plan open the window rests on a home page that offers it by @dastratakos in #2494
  • feat(web,desktop): Granola, Mercury, Neon, PostHog, Supabase, Vercel, and Y Combinator integrations, every tool offered, Slack's writes included by @dastratakos in #2495
  • feat(desktop): the Inbox marks what needs you with a dot and bold title, its toggle wears a ring and dot, and "Waiting" is "Needs you" by @dastratakos in #2497
  • feat(web): the changelog pages ten releases at a time, gives every release a page of its own, and publishes an RSS feed by @dastratakos in #2498
  • feat(web,desktop): GitHub as an integration, granted by the account's own GitHub sign-in through GitHub's MCP server by @dastratakos in #2499
  • build(desktop): the renderer ships as ES modules, and its bundle shrinks by @charleslpan in #2506
  • feat(web): Better Auth's organization plugin and its tables (workspaces 1/11) by @charleslpan in #2110
  • feat(web): every account has a personal workspace (workspaces 2/11) by @charleslpan in #2111
  • feat(web,hosted): a plan names its workspace (workspaces 3/11) by @charleslpan in #2122
  • feat(web): the changelog pages by number in a quiet monospace row, and its feed is a footer link by @dastratakos in #2507
  • feat(web): a plan is read and written by its workspace's members (workspaces 4/11) by @charleslpan in #2133
  • feat(web): a plan's coding agents belong to its workspace (workspaces 5/11) by @charleslpan in #2151
  • feat(web): the hosts and the voice admit a workspace member to a plan's conversation (workspaces 6/11) by @charleslpan in #2152
  • feat(web,hosted): a member creates a workspace, and an admin connects one GitHub installation to it (workspaces 7/17) by @charleslpan in #2124
  • feat(hosted,desktop): the host makes workspaces, connects their GitHub organization, and opens the invite page (workspaces 12/17) by @charleslpan in #2135
  • feat(desktop): the sidebar switches and creates workspaces, and Settings' Workspace page manages members and GitHub repositories (workspaces 13/17) by @charleslpan in #2153
  • feat(web,desktop): sign in with Google or GitHub again, and GitHub links to an existing account (workspaces 8/17) by @charleslpan in #2250
  • feat(web,hosted): a member reads a workspace's members (workspaces 9/17) by @charleslpan in #2268
  • feat(web,hosted): a plan's repository belongs to its workspace's installation (workspaces 10/17) by @charleslpan in #2274
  • feat(web,hosted): an owner or admin removes a member, and a member leaves (workspaces 11/17) by @charleslpan in #2396
  • feat(web,hosted): a signed-in account connects or disconnects GitHub through the browser (workspaces 14/17) by @charleslpan in #2414
  • feat(desktop): Settings shows whether GitHub is connected, and Open Settings mends every GitHub and integration refusal (workspaces 15/17) by @charleslpan in #2418
  • feat(web): owners and admins invite people to a workspace, and invitees accept on the web (workspaces 16/17) by @charleslpan in #2427
  • feat(web): a signed-in browser hands the Mac a Better Auth session of its own (workspaces 17a/17) by @charleslpan in #2500
  • feat(desktop): every setting has one home in Settings (workspaces 18) by @charleslpan in #2501
  • feat(credentials): the Mac signs in once and comes back holding a Better Auth session of its own (workspaces 17b/17) by @charleslpan in #2502
  • feat(web,hosted): removing a member and leaving a workspace are Better Auth's own calls under the Mac's session (workspaces 17c/17) by @charleslpan in #2503
  • feat(web,hosted): an owner or admin invites, lists, and cancels invitations from the Mac under its session (workspaces 17d/17) by @charleslpan in #2504
  • feat(desktop): Settings › Workspace › Members invites people, lists them pending with their links, and cancels; the web invite page goes (workspaces 17e/17) by @charleslpan in #2505
  • feat(web,desktop): the Mac disconnects its own GitHub under its session, and the web page's disconnect goes (workspaces 17f/17) by @charleslpan in #2508
  • feat(database,hosted): automations research, and the automation and automation_run tables with their store (automations 1/7) by @dastratakos in #2511
  • feat(web,hosted): the minute sweep fires due automation schedules, each once, read in their own time zone (automations 2/7) by @dastratakos in #2512
  • feat(desktop): switches turn on in the accent blue the primary button draws in, not a muted green by @dastratakos in #2518
  • fix(desktop,web): Granola's green logo, PostHog's full-colour mark on dark, and a test that every integration mark is well-formed by @dastratakos in #2519
  • feat(web): an automation's queued run starts its coding agent as the deployment acting for the owner, under its guards (automations 3/7) by @dastratakos in #2513
  • fix(desktop): the account menu, the in-place GitHub and integration remedies, and the dev-build tests come back after the workspaces merge by @dastratakos in #2517
  • fix(desktop): the workspace switcher, Settings › Workspace, New workspace, and Connected accounts follow the app's own kit by @dastratakos in #2520
  • feat(desktop): an agent's Changes tab is kept, pinned, and names its agent like the panel's other tabs by @luke-agent[bot] in #2439
  • feat(desktop): an agent named anywhere hangs its tab's card and opens its tab: the Inbox thread and list, transcript rows, ⌘K, and archived agents by @dastratakos in #2523
  • feat(desktop,web): an integration's sign-in waits with Reopen and Cancel, and says when it failed or didn't finish by @dastratakos in #2521
  • feat(web,hosted): the tools read keeps each tool's MCP annotations, exactly as its server sent them (MCP popover 1/2) by @dastratakos in #2527
  • fix(desktop): a pull request wears one mark wherever it is drawn: GitHub's glyph for where it stands, in one set of colours by @dastratakos in #2526
  • fix(desktop,web): Granola's mark is its green spiral on no tile by @dastratakos in #2529
  • fix(web): PostHog's MCP server in its tools mode, each tool by its own name by @dastratakos in #2532
  • feat(desktop): the MCP popover searches servers and tools, sections Connected from Not connected, and opens a server's tools in place (MCP popover 2/2) by @dastratakos in #2528
  • fix(desktop): working, failed, and unread each wear one mark wherever they are drawn by @dastratakos in #2530
  • fix(desktop): a read that did not land says so alike everywhere: one sentence in the fault red, then Retry by @dastratakos in #2534
  • fix(desktop): a time reads the same wherever it is drawn: one formatter, one locale, one "ago", and one with the window's tooltip by @dastratakos in #2535
  • docs(web): the Granola, PostHog, Supabase, and Y Combinator connector setup that connects, and the teamId a vercel api call on a connector needs by @dastratakos in #2533
  • feat(web,desktop): a fast step Anthropic refuses runs again at standard speed, and its turn's card says so by @dastratakos in #2544
  • feat(web,hosted): the automation routes: list, make, change, delete, Run now, and run history (automations 4/7) by @dastratakos in #2514
  • fix(desktop): every segmented control is one radio group and every switch one Switch, and Fast refuses like every other settings switch by @dastratakos in #2538
  • fix(desktop): the chips that stand side by side are one chip, in the look of the place it stands by @dastratakos in #2531
  • feat(desktop): a launch opens the plan the account last had open, its tabs and side panel as they were, and rests on the home page where it was deleted or archived since (launch 1/2) by @dastratakos in #2543
  • fix(desktop): every modal over the window stands in one shell, and each hands focus back however it closes by @dastratakos in #2549
  • fix(desktop): the Inbox's Needs you is its inbox glyph, wearing the rows' blue dot while anything needs you, its pressed fill alone saying the filter is on by @dastratakos in #2551
  • fix(desktop): every group that folds folds under one header, and the sidebar's and summary's headings each share one class by @dastratakos in #2536
  • feat(desktop): Settings › Integrations searches integrations and their tools, and a connected row opens in place onto its tools by @dastratakos in #2542
  • feat(database,web): saving an Anthropic key asks once whether its organization runs fast mode, and keeps the answer (fast per key 1/3) by @dastratakos in #2552
  • feat(web): GitHub events fire automations: pull requests and issues opened or labelled, failed checks, and pushes (automations 5/7) by @dastratakos in #2515
  • fix(desktop): every provider wears its one mark, and a connection shows Reconnect only once it needs mending by @dastratakos in #2546
  • feat(desktop): the home page greets the account with New plan, what needs it, and its recent plans, ↑↓ moving through them, and the sidebar's Home row and ⇧⌘H go there (launch 2/2) by @dastratakos in #2550
  • feat(web,hosted): Fast is offered on any key whose Anthropic organization runs it, Luke's own checked once an hour, and a fast step keeps what it showed on the account's key (fast per key 2/3) by @dastratakos in #2555
  • fix(desktop): every hover card heads itself alike: one head, one note, one rule, in one type scale by @dastratakos in #2558
  • fix(desktop,web): a tool in the MCP list opens in place onto its whole description, a press no longer closes the popover, and the list is one A–Z list by @dastratakos in #2554
  • feat(desktop,hosted): a resting Fast row says the key's Anthropic organization was never granted fast mode, and links the account's own key to ask for it (fast per key 3/3) by @dastratakos in #2556
  • fix(desktop): a coding agent's "Loaded skill" row names the skill as /name and hangs the skill's card, and the Code tab begins and ends each call as the Call tab does by @dastratakos in #2557
  • fix(desktop): a tab wears one look wherever it is offered, and the plan's tab hangs the plan's card by @dastratakos in #2553
  • feat(web): a workspace's repositories come only from its GitHub installation by @charleslpan in #2524
  • feat(desktop): GitHub repositories live only in Workspace settings, and the personal link moves to Integrations by @charleslpan in #2539
  • fix(desktop): the home page's waiting items stand under the Inbox's name by @dastratakos in #2562
  • fix(desktop): every menu stands on one surface with one row, and every ⋯ and right-click opens its menu through one door by @dastratakos in #2560
  • fix(desktop): a file is named one way wherever it stands, hangs its card there, and opens through the side panel's one door by @dastratakos in #2559
  • feat: a personal workspace is just the first workspace, the same as any other by @charleslpan in #2566
  • fix(copy): cut the lines that describe, reassure, or point at the screen by @charleslpan in #2567
  • docs(proposals): @-mentions with chips in the agent composer and the plan, as decided, with its design show by @dastratakos in #2568
  • refactor(desktop): the agent composer's field is a TipTap editor, with skills as chips in it by @dastratakos in #2578
  • feat(desktop): a plan section has a link: copy it from its heading's ⋯, and a mention of it in the plan opens it by @dastratakos in #2577
  • feat(desktop): the xterm surface, themed from the window's tokens, in a lazy bundle (terminal 5/9) by @dastratakos in #2581
  • chore(release): bump the workspace to 0.13.0 and write its changelog by @charleslpan in #2585

Full Changelog: v0.11.0...v0.13.0