Repository navigation
Luke 0.20.0
What's Changed
- refactor(service): the AgentSessions interface over the eve client by @charleslpan in #4179
- feat(panel): an Admin row in the app sidebar, for admins alone by @dastratakos in #4145
- feat(service): an agent's session reopens with a seed and runs without a repository by @dastratakos in #4177
- fix(ui): a middle-cut chip name keeps its last characters at any width by @dastratakos in #4185
- feat(host): a live read polls while Realtime fails it by @charleslpan in #4172
- feat(panel): the inbox-first sidebar lists the Inbox, and its item opens in the plan's place by @dastratakos in #4157
- fix(panel): an Inbox thread draws a comment's files after its words, never as a strip by @dastratakos in #4186
- feat(panel,service): a head on a fork is named owner:branch, as GitHub names it by @dastratakos in #4165
- fix(panel): draw Video on round too, as the call's own controls are by @dastratakos in #4192
- feat(panel): say when GitHub refuses a member's own token, with what mends it by @charleslpan in #4164
- feat(panel): a stage-cli style merge control, a status chip, one direct press, and Queued in the pill by @dastratakos in #4159
- docs(changelog): add the PRs v0.19.0 shipped after its version PR by @charleslpan in #4189
- fix(panel): keep the Tasks head's status filter shown when the sidebar is unfocused by @dastratakos in #4190
- feat(accounts): the subscription row kind in the key store by @charleslpan in #4180
- build(sandbox): Claude Code, bubblewrap, the agent user and no runtime sudo in the image by @charleslpan in #4184
- feat(service,host): a running agent's transcript is held open on Neon Realtime rather than polled by @charleslpan in #3282
- feat(panel): find in a task page as drawn with ⌘F by @dastratakos in #4193
- feat(panel,ui): right-click any link to open or copy it by @dastratakos in #4191
- docs(panel): merging from the merge control is the one act that does not ask first by @dastratakos in #4197
- feat(panel): Review stands on a merged or closed pull request, as GitHub takes one by @dastratakos in #4200
- fix(inbox): keep an agent's notice in Needs you until acknowledged by @dastratakos in #4169
- feat(panel): Luke's video tile follows the room and draws the avatar whole by @dastratakos in #4178
- feat(service): spoken turns on the agent runtime by @dastratakos in #4183
- feat(database): runtime, native session, payer and runner-token columns; the cohort flag by @charleslpan in #4187
- refactor(accounts): the key store upserts on (user, provider, kind) by @charleslpan in #4205
- feat(panel): one annotation card for review threads, in Files changed and the Conversation by @dastratakos in #4203
- Make check:affected optional before a push; CI gates the PR by @charleslpan in #4206
- feat(service): a call speaks into an agent by @dastratakos in #4195
- feat(service,host): a held transcript read wakes at the edge only the clock reaches by @charleslpan in #3298
- feat(agent-runner): the runner package by @charleslpan in #4182
- fix(panel): ⌘F pressed inside a drawn page opens its find by @dastratakos in #4204
- chore: drop four docs-and-allowlist process checks by @charleslpan in #4207
- ci(release): stop running check.sh on the macOS release job by @charleslpan in #4210
- Add REVIEW.md so Devin Review reports real defects only by @charleslpan in #4211
- build(sandbox): Codex in the image by @charleslpan in #4208
- ci: run @luke/database's tests in a job of their own by @charleslpan in #4212
- feat(panel): Luke's File-tab notes on the annotation card, under the last line by @dastratakos in #4214
- chore(database): drop the expand-migrate-contract rule and its check by @charleslpan in #4216
- test: delete the merge queue's two flaky held-read cases by @charleslpan in #4218
- docs: cut per-PR paperwork and open PRs ready for review by @charleslpan in #4213
- feat(panel): an answered ask's card heads its reply with no head of its own by @dastratakos in #4224
- feat(service,panel): the repository picker lists only token repositories added to the workspace by @charleslpan in #4219
- feat(host): a window follows an agent's transcript as a stream of pushed pages by @charleslpan in #4175
- refactor(database): the key store's primary key includes kind by @charleslpan in #4217
- feat(panel): a comment under a changed line continues the line's band in Files changed by @dastratakos in #4225
- Warn instead of failing the build when a Sentry source-map upload fails by @charleslpan in #4226
- chore(lint): drop the anti-slop rules that only enforce type style by @charleslpan in #4233
- Drop the desktop and web bundle-size budgets by @charleslpan in #4215
- ci: cut the Postgres job to the migrations and the declared schema by @charleslpan in #4234
- Skip Vercel previews for coding agents' luke/** branches by @charleslpan in #4235
- ci: cut repository checks to the outage and skipped-test guards by @charleslpan in #4238
- feat(agent-runner): the Codex app-server mode by @charleslpan in #4196
- feat(panel): an Inbox ask's controls move into the draft reply at the thread's end by @dastratakos in #4194
- feat(service): one tool set by @dastratakos in #4202
- chore: keep JSON Schema goldens only for model tool inputs by @charleslpan in #4223
- feat(panel): the Inbox row says the ask itself, its card is the thread's, and a task's card leads with where it stands by @dastratakos in #4241
- feat(panel,host): a shown transcript tab hears its pages pushed, with no read loop by @charleslpan in #4181
- fix(agents): reply to an inbox thread on the thread, never in the transcript alone by @dastratakos in #4249
- fix(ui): filter and pull request chips stand on an opaque face, in ink by @dastratakos in #4198
- Drop format, knip and build from check.sh and CI by @charleslpan in #4237
- feat(panel): graduate the Tasks page out of the inbox-first experiment by @dastratakos in #4209
- fix(panel): hang the chip's hover card from pull request and page bars by @dastratakos in #4115
- fix(panel): the stage stays put when iOS Safari opens its keyboard by @dastratakos in #4171
- Draw a replaced Inbox ask as a quiet marker rather than a struck-through card by @dastratakos in #4252
- fix(panel): an agent with no task offers a task agent's actions, from one shared set by @dastratakos in #4152
- feat: tasks get an assignee by @dastratakos in #4126
- feat(agents): the Luke MCP server, its bearer and one tool by @charleslpan in #4236
- feat(accounts): ChatGPT credentials and refresh in the key store by @charleslpan in #4199
- feat(inbox): an agent's answer ask may recommend a select field's option by @dastratakos in #4242
- docs: the cloud browser's privacy line by @dastratakos in #4256
- revert: build Vercel previews for agent branches again by @charleslpan in #4261
- feat(panel): the diff bundle draws a whole file, and notes under one patch's lines by @dastratakos in #4262
- fix(service): an answer to a decide or answer ask always reaches the agent by @dastratakos in #4258
- feat(settings,panel): graduate Sections out of Experimental by @dastratakos in #4250
- feat(panel): point the Inbox's Next the way the reader last stepped by @dastratakos in #4266
- fix(panel): an agent's card says it works by its tile's mark, its corner only counting by @dastratakos in #4254
- feat(agents): launch, stop and relaunch the runner in the sandbox by @charleslpan in #4255
- feat(service): use Neon Realtime only where LUKE_REALTIME=on by @charleslpan in #4267
- docs: the Mac Browser tab's privacy line for agents driving it by @dastratakos in #4257
- Route a started agent's inbox posts through the agent that started it by @dastratakos in #4151
- feat(panel): an answered ask's controls stand in its reply with no card around them by @dastratakos in #4248
- feat(panel,ui): filter, group, order, and choose what the Tasks page draws by @dastratakos in #4222
- Show the Inbox item's title in its top bar once its heading scrolls away by @dastratakos in #4276
- feat(service,host): a Mac command carries a kind by @dastratakos in #4273
- feat(database,service): an agent's Browser tabs kept in the service by @dastratakos in #4265
- feat(inbox): acknowledge a notice as it is opened by @dastratakos in #4269
- Inbox to-do: every step ticked counts as Mark done, and ticked steps go with the reply by @dastratakos in #4275
- feat(agents): the events route and projection into the transcript store by @charleslpan in #4244
- feat(service): coding agents keep their own task's status by @dastratakos in #4144
- feat(service,host): hold a live read's poll until its rows move by @charleslpan in #4272
- fix(panel): agent call rows keep their preview and fold open on press by @dastratakos in #4155
- feat(service,features): a Mac command result can carry an image by @dastratakos in #4280
- feat(inbox): open a thread at its newest message, with the transcript's scroll-to-bottom button by @dastratakos in #4270
- feat(agents): the remaining Luke tools on the MCP server by @charleslpan in #4239
- fix(panel): let the agent's glyph say it works in the terminal picker, + menu and shells foot by @dastratakos in #4232
- feat(agents): launch Codex for ChatGPT-plan agents by @charleslpan in #4284
- fix(panel): an agent's sidebar row draws a task row's Pin, Archive, card, rename, and draft pencil by @dastratakos in #4278
- feat(panel,ui): assignee faces on the Board and sidebar, and an Assigned to filter by @dastratakos in #4142
- feat(desktop): Continue with ChatGPT by @charleslpan in #4243
- feat(comments): files on a plan's comments, kept in the shared attachment table by @dastratakos in #4281
- feat(panel): choose the Inbox's scope, To do or All, in its view menu by @dastratakos in #4264
- feat(service): a call joins an agent's running turn by @dastratakos in #4260
- feat(agents): Luke's own sandbox template for native agents by @charleslpan in #4286
- fix(agents): a Luke tool's pictures stay out of its stored answer by @charleslpan in #4288
- feat(service,features): an agent's calls are read with its transcript by @dastratakos in #4246
- Drop the inbox thread's "Waiting on you" marker by @dastratakos in #4289
- Keep a token repository picked in New task by @charleslpan in #4287
- feat(service,host): a live read names its account; another's session is signed out by @luke-agent[bot] in #4228
- feat(desktop): render Claude Code's tools on the existing transcript views by @charleslpan in #4271
- feat(service): an agent's sandbox runs a browser reached over CDP by @dastratakos in #4274
- feat(panel): keep the chosen Inbox row, gray, and hold the list's order while it is shown by @dastratakos in #4279
- refactor(panel): one + for every box that takes files, at a comment field's left by @dastratakos in #4291
- fix(agents): the sweep stops ended native sandboxes by @charleslpan in #4292
- feat(agents): integrations on the Luke MCP server by @charleslpan in #4294
- feat(settings): paste a Claude setup-token by @charleslpan in #4298
- feat(panel): Inbox thread heads are the writer's chip, its face on the thread's line by @dastratakos in #4297
- perf(panel,ui): stop forcing a whole-window layout on every draw and DOM change by @charleslpan in #4296
- feat(panel): a date chip opens its picker without opening an editor by @dastratakos in #4290
- feat(panel): tasks wear their status's mark everywhere, and the Plan tab is named for its task by @dastratakos in #4299
- feat(agents): project Codex's notifications into the transcript by @charleslpan in #4302
- feat(service,host): a task's pages and calls follow over the live layer by @charleslpan in #3757
- feat(panel): File tabs and page source on Pierre, Luke's notes as annotations with the minimized chip by @dastratakos in #4283
- feat(service,features): browser actions an agent takes over CDP by @dastratakos in #4282
- feat(inbox): an open ask is the composer, with no helper text by @dastratakos in #4301
- feat(panel): a text file opened over the window is drawn on Pierre, as every code is by @dastratakos in #4285
- feat(database): drop the attachments' old-name views and moved tables by @dastratakos in #4305
- Offer an added token repository in the picker only to members whose own token can push to it by @charleslpan in #4309
- feat(host,web): a browser tab whose session changes reloads by @luke-agent[bot] in #4229
- feat(panel): files stand over the words, in comments, the Inbox, and chat by @dastratakos in #4295
- feat(desktop): render Codex's items on the existing transcript views by @charleslpan in #4304
- feat(service): the Mac's commands are sealed for following over Neon Realtime, claimed by id by @charleslpan in #3274
- Copy a picture from the file viewer by @dastratakos in #4303
- feat(service): a person joins a workspace's chat once, and a read writes nothing by @charleslpan in #3906
- fix(agents): a Codex item's completed input replaces its started one by @charleslpan in #4312
- feat(panel): Code tab and inbox code cards on Pierre, Luke's note under the lines by @dastratakos in #4293
- Let the held Inbox row go once the Inbox is hidden by @dastratakos in #4316
- refactor(features,service): an agent's status is read by one pure rule the desktop can run by @charleslpan in #3265
- fix(credentials): a refresh records the service's id for an account stored without one by @charleslpan in #4315
- feat(service,web): live view and takeover of an agent's Browser tab by @dastratakos in #4314
- feat(service,host): a task's planning conversation is followed through the shared live layer by @charleslpan in #3267
- feat(service,features,host): continue and fork an agent with no task by @dastratakos in #4245
- refactor(host): answer a File tab's window as the service read it, and retire the host's file colouring by @dastratakos in #4320
- feat(voice,host,panel): calls are on agents by @dastratakos in #4300
- feat(host): the Mac follows its commands over Neon Realtime and says it listens on a slow timer by @charleslpan in #3285
- feat(service,host): a planning worker's transcript is followed through the shared live layer by @charleslpan in #3311
- feat(voice,service,host): type into a live call by @dastratakos in #4307
- fix(service): an agent's show_page takes a path by @dastratakos in #4268
- fix(copy): cut the slop copy that landed since the third sweep by @luke-agent[bot] in #4321
- perf(service): an agent's standing context rides as a turn message, so its history stays cached by @dastratakos in #4227
- feat(panel): continue and fork an agent with no task on its own page by @dastratakos in #4247
- feat(service,features,host): a plan's inbox and an agent's are read through the central live layer by @charleslpan in #3232
- feat(desktop,host): agents drive the Mac's Browser tabs over CDP by @dastratakos in #4319
- feat(host,panel): an agent's shown code is drawn from its record by @dastratakos in #4322
- fix(service): a call refuses a native agent, and a voice chat starts on eve by @dastratakos in #4327
- feat(service,database): scope agents' chat to their task and make it their team's Slack by @charleslpan in #3947
- feat(panel,host,desktop,web): watch and take over an agent's cloud Browser tab by @dastratakos in #4323
- feat(service): a workspace's chat is sealed for following over Neon Realtime by @charleslpan in #3916
- feat(service,dev,luke): the browser tool by @dastratakos in #4318
- feat(agents): route cohort Claude-plan agents to Claude Code by @charleslpan in #4313
- feat(desktop): the model chip and list_models on a Claude Code agent by @charleslpan in #4317
- feat(panel): the task's Chat stands in the side panel by @charleslpan in #4328
- feat(agents): route cohort ChatGPT-plan agents to Codex by @charleslpan in #4330
- feat(host): a workspace's chat is followed over Neon Realtime and streamed to the panels that draw it by @charleslpan in #3923
- feat(service): the browser tool reaches the Mac's Browser tabs by @dastratakos in #4329
- feat(panel): a native agent's tab offers no Call by @dastratakos in #4332
- refactor(chat): retire members' handles: nothing reads or writes them by @dastratakos in #4333
- feat(panel): Chat follows the workspace's chat on the central live layer, and its read loop and cursor are gone by @charleslpan in #3928
- feat(desktop): the payer at Start and the account default by @charleslpan in #4334
- fix(panel): the Inbox composer's note line stands above its button row by @dastratakos in #4336
- refactor(host,panel): the desktop's held chat read is retired by @charleslpan in #3933
- feat(panel): a call's agent work folds under what was said, and its divider is plain by @dastratakos in #4337
- feat(panel): call controls live in the composer, with a smaller video by @dastratakos in #4338
- feat(service,host,panel): the Inbox's pages of a task are pushed from the live layer by @charleslpan in #3919
- feat(service,host,panel): a task's version history is pushed from the live layer by @charleslpan in #3930
- feat(service,panel): every spoken reply folds under its turn by @dastratakos in #4340
- feat(service,features): the task list is a live read by @charleslpan in #3269
- feat(host,web): the task list is followed on the live layer rather than read again by @charleslpan in #3276
- refactor(host,desktop): the agent ledger is fed from the live task list, and lists nothing on a clock by @charleslpan in #3284
- feat(service,features): a workspace's automations and an automation's runs are live reads by @charleslpan in #3289
- feat(host,panel): the automations list and an automation's runs are pushed to the pages that draw them by @charleslpan in #3297
- fix(host): an agent archived off a plan the list still holds takes its unread dot with it by @charleslpan in #4341
- fix(host): a followed automation that is deleted is told not found at once by @charleslpan in #4342
- fix(panel): a write's late answer draws nothing over a list pushed since it was sent by @charleslpan in #4343
- feat(service): seal the account's workspaces for following over Neon Realtime by @charleslpan in #3915
- feat(host): follow the workspaces list over Neon Realtime by @charleslpan in #3924
- feat(service): seal a workspace's members and former members for following over Neon Realtime by @charleslpan in #3929
- fix(host): a workspaces follow refused as signed out mid-way stops, rather than sealing the old account again by @charleslpan in #4344
- feat(host,panel): stream a workspace's members to the windows that draw them by @charleslpan in #3942
- fix(host): a workspace write's late answer does not draw over a newer one by @charleslpan in #4345
- fix(host): a workspace's people stream opened as the last one closes keeps its follow by @charleslpan in #4346
- fix(host): a workspace's people seal that fails for now no longer empties the window's list by @charleslpan in #4347
- feat(service): seal a workspace's pending invitations for following over Neon Realtime by @charleslpan in #3948
- feat(host,panel): stream a workspace's pending invitations to owners' and admins' windows by @charleslpan in #3956
- feat(service,host): follow the sidebar's sections and pins over Neon Realtime by @charleslpan in #3960
- fix(panel): an invite's or a cancel's late answer does not draw over a newer invitations list by @charleslpan in #4348
- refactor(features): retire the held workspace, pin and section client reads by @charleslpan in #3964
- feat(host): a window follows a plan's or an agent's inbox as a stream of pushed changes by @charleslpan in #3264
- feat(panel,host): the windows' inbox reads become pushed follows, and the held inbox reads are retired by @charleslpan in #3306
- feat(database): drop the retired issue storage by @dastratakos in #4349
- refactor: delete the per-task Luke by @dastratakos in #4335
- feat(database): drop the per-task Luke's data by @dastratakos in #4339
- perf(panel): an empty toast stack measures nothing on every draw by @charleslpan in #4324
- perf(ui): a ChoiceBar measures only when what it measures changes, compared by structure by @charleslpan in #4325
- feat(agents): native agents reachable from the planner and eve agents by @charleslpan in #4331
- feat(panel): put Run in the Pull request tab's header by @charleslpan in #4326
- feat(host): the account inbox is followed on the shared live layer by @charleslpan in #4355
- feat(service): admit a page's terminal relay upgrade by its session cookie by @dastratakos in #4357
- feat(agents): ChatGPT payer at Start, statuses and "Using ChatGPT plan" by @charleslpan in #4356
- Keep the Inbox row's hover card contents inside the card by @dastratakos in #4358
- fix(panel): draw a terminal in its web font only once the font has loaded by @dastratakos in #4361
- feat(service,panel): a task with no agent opens a new agent tab, and Call starts a voice chat from its composer by @dastratakos in #4362
- fix(web,panel): the whiteboard's fonts name only the copies Luke serves by @dastratakos in #4363
- fix(panel): ⌘K and @-mentions match as cmdk's own filter does, with no score floor by @dastratakos in #4351
- feat(web,host): Terminal tab in the web app by @dastratakos in #4360
- fix(agents): let Codex agents write the checkout's .git by @charleslpan in #4365
- fix(agents): a Codex turn outlives its access token by @charleslpan in #4367
- fix(service): reopen an agent's Browser tabs whenever its browser lost them by @dastratakos in #4368
- fix(service): keep a Browser tab's restore safe when a read or a move fails by @dastratakos in #4369
- fix(service): a browser list keeps the titles it saw before a later move by @dastratakos in #4371
- fix(agents): run Claude Code's command sandbox without a fresh /proc by @charleslpan in #4366
- fix(service): an agent browser's bridge is tried again when it does not come up by @dastratakos in #4376
- fix(features): browser waits cover a click's navigation and first paint by @dastratakos in #4374
- fix(service): hold an agent browser's bridge attempts to one bound by @dastratakos in #4382
- feat(service,features): the agent's cursor moves on a cloud Browser tab by @dastratakos in #4380
- fix(features): a frame removed mid-load settles a navigating wait by @dastratakos in #4383
- feat(agents): plan statuses and "Using your Claude plan" by @charleslpan in #4385
- perf(host): colour code in a utility process, off main by @charleslpan in #4387
- feat(database,features,service,host,panel): linked-issue tags on the tasks Board's cards by @dastratakos in #4379
- feat(desktop): report panel freezes and time task open by @charleslpan in #4389
- perf(database): partial index for awaiting lines by @charleslpan in #4384
- fix(agents): a live Claude runner's message waits on its plan; a task's start keeps the limit's reset by @charleslpan in #4391
- fix(host): replace a colouring process that exited while idle before the next block by @charleslpan in #4394
- perf(database): index coding_agent.conversation_id by @charleslpan in #4386
- fix(service,features): a cursor's measure and write never cost the input, and never go back by @dastratakos in #4393
- fix(desktop): hand Sentry the panel's span times as dates by @charleslpan in #4396
- feat(service): read agent transcripts newest page first by @charleslpan in #4381
- feat(panel): the call video centered above the composer, labelled call markers, and no captions by @dastratakos in #4401
- fix(panel): a side panel's toolbar draws no hairline across the work column by @dastratakos in #4400
- Host: one shared Neon Realtime client per address for every live read by @charleslpan in #4403
- refactor(host): notices observe the account inbox's live follow, not a cursor loop by @charleslpan in #4402
- fix(panel): fit automation rows and the time field on a phone by @dastratakos in #4350
- feat(agents): plans for coding agents without a cohort gate by @charleslpan in #4405
- fix(panel): the volume hint leaves once answered, and touch screens always show the video's resize controls by @dastratakos in #4407
- Make coding agents write in the task chat like people in Slack by @charleslpan in #4354
- Make the task chat's messages look like Slack by @charleslpan in #4370
- fix(panel): Inbox row press opens the item pressed, not the first by @dastratakos in #4375
- Give every new coding agent a stored human name by @charleslpan in #4388
- feat(panel): keep a replaced ask's options in the inbox thread by @dastratakos in #4377
- Name every coding agent by its human name by @charleslpan in #4395
- fix(ui): draw the nav item's accent count in the accent ink by @luke-agent[bot] in #4352
- fix(panel): call an Inbox item a member closed resolved, as its action does by @luke-agent[bot] in #4353
- fix(ui): darken the light muted ink and the desktop's accent ink to AA by @dastratakos in #4372
- feat(settings): one row per agent with its plan or API key by @charleslpan in #4410
- fix(ui): keep a muted list row's words at full opacity by @dastratakos in #4373
- feat(tasks): record when a task was finished and show only recently finished tasks on the Tasks page by @dastratakos in #4414
- feat(panel): mark a task done where Archive stood by @dastratakos in #4416
- feat(tasks): settle a task done once its work is finished, and reopen it on new agent work by @dastratakos in #4415
- fix(panel): draw the Inbox row's card from the app's standard pieces by @dastratakos in #4418
- fix(panel): keep a pending task status apart from its pin, and undo only what is still done by @dastratakos in #4420
- feat(settings): say which command makes a Claude subscription token by @charleslpan in #4421
- perf(service): send tool output by reference in transcripts by @charleslpan in #4392
- refactor: agents drive only their own cloud browser by @dastratakos in #4417
- Give new coding agents a first name alone by @charleslpan in #4422
- feat(host): liveRows hands out a wait for a write's transaction on its followed read by @charleslpan in #4423
- feat(service,database): chat writes answer the transaction they committed in by @charleslpan in #4426
- feat(database,service,features): an automation's write answers the transaction it committed in by @charleslpan in #4427
- feat(service): a plan restore answers the txid its revision was written in by @charleslpan in #4430
- feat(service): a board save answers the transaction that moved its live row by @charleslpan in #4432
- feat(service): a sent message answers the transaction that wrote its row by @charleslpan in #4429
- feat(database,service,features): a task's and an agent's write answers the transaction it committed in by @charleslpan in #4431
- feat(database,service,features): a sidebar section's or repository pin's write answers the transaction it committed in by @charleslpan in #4434
- feat(panel): search the inbox from the command palette by @dastratakos in #4364
- fix(settings): quote the claude setup-token command in the hint by @charleslpan in #4438
- feat(service,features): an inbox mark, answer, or close answers the transaction it committed in by @charleslpan in #4437
- feat(desktop): bring the closed window back on a new task with ⌘N by @dastratakos in #4436
- feat(panel): tabs, Inbox items, and Chat channels are Back steps by @dastratakos in #4408
- fix(panel): the call video resizes by its corners alone by @dastratakos in #4447
- Tell agents to post only what the team would want to know by @charleslpan in #4440
- feat(panel): open agent transcripts newest first by @charleslpan in #4404
- feat(host): an automation's write is confirmed once its transaction arrives on a followed list or history by @charleslpan in #4443
- feat(host): a chat write is confirmed once its transaction reaches the followed chat by @charleslpan in #4444
- feat(service,features): live statements for a transcript's newest messages and their parts by @charleslpan in #4425
- feat(host): a plan restore is confirmed once its txid reaches the followed history by @charleslpan in #4445
- feat(host): a board save is answered once its follow sees the transaction by @charleslpan in #4446
- feat(tasks): record who made a task, its member, Luke on a call, or a coding agent by @dastratakos in #4397
- fix(panel): skip an Undo for a task given a status since, answered or not by @dastratakos in #4450
- feat(panel): search the inbox list from its head by @dastratakos in #4406
- feat(panel): Back and Forward list the steps along their way by @dastratakos in #4409
- feat(host): a sidebar pin or section write answers once the followed sidebar has its transaction by @charleslpan in #4451
- fix(service): a Start answers the last transaction it committed in by @charleslpan in #4453
- feat(agents): stop an agent's sandbox when it is archived and keep snapshots 7 days by @charleslpan in #4439
- feat(panel): add the ⌃Tab recent-tab switcher by @dastratakos in #4411
- feat(service): a call into an agent with no task by @dastratakos in #4455
- fix(agents): offer look_at_picture only to an agent on a task by @dastratakos in #4459
- feat(host): a task's and an agent's write is confirmed once its transaction arrives on the followed task list by @charleslpan in #4454
- fix(host): an automation's write waits only on the follows that show it by @charleslpan in #4460
- fix(scripts): skip preview builds whose deployed tree a rebased branch already built by @charleslpan in #4462
- feat(panel): Mark as unread / Mark as read on agent rows with no task by @dastratakos in #4456
- feat(panel): show who made a task, a person, Luke, or a coding agent, on every task surface by @dastratakos in #4398
- fix(panel): a skill's chip in the Inbox opens its SKILL.md in the panel beside it by @dastratakos in #4458
- feat(service,host,features,panel): a followed transcript draws its newest messages from the window's rows by @charleslpan in #4428
- perf(panel): draw only the agent transcript's rows near the view by @charleslpan in #4465
- fix(service): a taskless call counts no plan seed among its startup messages by @dastratakos in #4467
- fix(host): a board save waits only on the follow that stood as it was sent by @charleslpan in #4466
- Cap sandbox lifetime at an hour, kept alive while a turn is live by @charleslpan in #4461
- fix(scripts): preview-address passes over an earlier head that never served, and walks ancestors when pushes can't be read by @charleslpan in #4474
- chore: retire legacy stored provider keys and tidy stale references by @charleslpan in #4472
- fix(host): an automation a followed list drops is no longer waited on there by @charleslpan in #4470
- fix(panel): keep View options pressable as the sidebar's inbox search folds by @dastratakos in #4475
- feat(host): an inbox mark, answer, or close is answered once a followed inbox has its transaction by @charleslpan in #4449
- Chat: status colours, face shapes, and rail row ink by @dastratakos in #4481
- fix(panel): make Chat's composer behave like the agent and Inbox boxes by @dastratakos in #4482
- refactor(host,features): the host follows a transcript without the count of its messages by @charleslpan in #4435
- feat(panel): unfold the inbox list's search as it opens by @dastratakos in #4484
- feat(chat): stream messages in the shared conversation log by @dastratakos in #4485
- feat(agents): the selected credential pays, with no picker at Start by @charleslpan in #4473
- fix(host): a queued board save takes the follow standing as it goes out by @charleslpan in #4479
- fix(agents): keep the archive's sandbox stop awake past the answer, and fence it by @charleslpan in #4477
- fix(host): a task write waits for its transaction outside the serial lock, its answer drawn first by @charleslpan in #4478
- feat(host): a sent message waits for its row to reach the followed transcript by @charleslpan in #4452
- feat(chat): give the rail's rows cards, status marks, menus, and section heads by @dastratakos in #4480
- fix(panel): center the avatar picker's preview face on narrow settings rows by @dastratakos in #4488
- fix(scripts): preview-address reads every build of an earlier head, and refuses rather than guess when pushes can't be read by @charleslpan in #4489
- Keep a native run's sandbox alive through silence, and cap old sandboxes before resume by @charleslpan in #4492
- fix(agents): no Fast on any GPT model while the ChatGPT plan pays by @charleslpan in #4494
- feat(panel): Tasks List lines up, folds, drags, and acts like the Board; Board cards show PRs by @dastratakos in #4306
- feat(agents): stop a coding agent's sandbox through a long pause by @charleslpan in #4441
- perf(panel,host): a task opens through one skeleton, its agent's transcript followed at once by @charleslpan in #4497
- perf(panel): stop AppWindow redrawing the whole window on captions and agent activity by @charleslpan in #4498
- fix(chat): keep read cursors a stale push would set back by @dastratakos in #4499
- perf(host): reopen recent transcripts from what the host held by @charleslpan in #4486
- fix(chat): draw message bodies as the Inbox does by @dastratakos in #4487
- feat(host,panel): the agent's cursor over a cloud Browser tab by @dastratakos in #4399
- fix(agents): the native template sees its build finish by @charleslpan in #4506
- Bound each heartbeat, and cap an old sandbox before a copy wakes it by @charleslpan in #4507
- fix(chat): build chat asks on the Inbox's ask components by @dastratakos in #4501
- feat(panel): close tabs left unviewed for a day by @dastratakos in #4490
- feat(panel): make each ⌃Tab stop a whole screen, as a Back step is by @dastratakos in #4493
- feat(panel): a link opens its tab as the panel's preview, and ⌘-click goes there by @dastratakos in #4496
- refactor(features): declare the admin dashboard's answers and query vocabulary on the wire by @dastratakos in #4412
- feat(sidebar): keep agents with no task in sidebar sections by @dastratakos in #4464
- feat(panel): bring Chat's keys, find, narrow layout, toasts and marks in line with the Inbox by @dastratakos in #4491
- fix(host): a write's txid wait settles only once the caller has the rows it changed by @charleslpan in #4508
- fix(chat): keep held read cursors when a push carries none by @dastratakos in #4511
- chore: make main knip-clean by @dastratakos in #4502
- Draw every task key alike, as plain caption mono text by @dastratakos in #4510
- refactor(panel): move the admin screens into the panel behind the mount's doors by @dastratakos in #4413
- fix(host,panel): an open's late read never holds the document; early transcript status sticks; no tab guess from row order by @charleslpan in #4512
- feat(agents): release a native agent's wait on wakeups so its sandbox stops by @charleslpan in #4468
- Remove Home: the window rests on the Inbox with no task open by @dastratakos in #4311
- feat(chat): use the shared @ mention picker in Chat by @dastratakos in #4500
- fix(agents): read the newest sandbox of a native session's tag by @charleslpan in #4504
- feat(features,service): a select action chooses in a native dropdown by @dastratakos in #4517
- fix(chat): draw a person's /skill as its chip in the window Chat by @dastratakos in #4513
- feat(host): carry the admin dashboard's reads and star from the app's window to the service by @dastratakos in #4419
- fix(panel): Escape on a task steps back to the page it came from by @dastratakos in #4308
- fix(panel): open the next task in the sidebar when the open task is archived by @dastratakos in #4310
- feat: permanently delete a coding agent by @dastratakos in #4471
- perf(panel): mount a hover hint only once the pointer has rested by @charleslpan in #4515
- fix(sandbox): reap orphaned eve agent sandboxes by @charleslpan in #4442
- feat(agents): wake an agent at work when every check on its pull request's head finishes by @charleslpan in #4457
- fix(panel): draw chat's agents and people as the rest of Luke does by @dastratakos in #4483
- feat(voice,host,panel): call an agent with no task from its own page by @dastratakos in #4495
- fix(features): browser input that would land nowhere fails instead of answering done by @dastratakos in #4519
- feat(tasks): settle every archived task into a status, and archive none again by @dastratakos in #4448
- feat(panel): open the admin dashboard as a place in the app, drawn as the app draws its pages by @dastratakos in #4433
- feat(chat): match Chat's header, loading and closed states to the other pages by @dastratakos in #4505
- fix(panel): the sidebar's Inbox counts what To do lists by @dastratakos in #4516
- feat(chat): every agent has the chat, and messages any agent of its workspace in a DM by @dastratakos in #4520
- feat: let a coding agent with no task show and open Pages by @dastratakos in #4503
- feat(panel): give the Admin place a Luke link for each of its views by @dastratakos in #4518
- feat(panel): show every inbox item whatever its task's status, with a status chip on each row by @dastratakos in #4522
- Remove Factory and the code only it read by @dastratakos in #4514
- feat(chat): a mention steers the agent it names straight into its session by @charleslpan in #4469
- feat(agents): retire message_agent; one agent messages another in a chat DM by @dastratakos in #4521
- fix(agents): log which Vercel call failed a native launch by @charleslpan in #4523
- feat(agents): the browser tool for Claude Code and Codex agents by @charleslpan in #4524
- fix(agents): native harness error codes, limit resets, and plan standing by @charleslpan in #4528
- fix(agent-runner): keep the runner bearer out of the claude process's argv by @charleslpan in #4529
- fix(agents): read a sandbox command's real exit by @charleslpan in #4525
- fix(panel): stand an agent tab's skeleton lines on the reading column by @dastratakos in #4530
- fix(copy): cut the slop copy that landed since the fourth sweep by @luke-agent[bot] in #4531
- fix(panel): a Status filter naming Done or Canceled shows them in the List by @dastratakos in #4532
- fix(agents): one runner launch at a time per agent by @charleslpan in #4526
- fix(panel): Board columns stand one fixed width by @dastratakos in #4533
- feat(inbox): keep a withdrawn ask's options in its thread, as a replaced one's by @dastratakos in #4536
- fix(panel): let inbox rows fade out and the rows below glide up by @dastratakos in #4378
- feat(panel): offer Admin in ⌘K, and find in its views with ⌘F by @dastratakos in #4535
- feat(panel): hang a task-less agent's Page card from its link and chip by @dastratakos in #4538
- feat(panel): show an agent's Page in an inbox row's media strip by @dastratakos in #4540
- feat(panel): an agent an Inbox item names reads beside the item by @dastratakos in #4537
- fix(agents): rebuild a template whose snapshot is gone, one pins module, drop conversations.runner_token_hash by @charleslpan in #4527
- refactor(tasks): delete the task-archive guards from the service and the database by @dastratakos in #4542
- feat(service,panel): keep browser screenshots in the agent's transcript by @dastratakos in #4539
- refactor(panel): delete the client's task-archive code by @dastratakos in #4541
- Show the inbox-first Inbox full screen on narrow screens by @dastratakos in #4543
- Add a places bar at the foot of a phone's screen by @dastratakos in #4545
- Head a phone's task with Plan, Agents, and Activity in place of the panel's strip by @dastratakos in #4546
- feat(database,service): an operator agent, started blank with no task and no repository by @dastratakos in #4544
- feat(service): the operator's prompt, desk and Steward guards by @dastratakos in #4547
- feat(service): an operator is private to its member by @dastratakos in #4548
- feat(database,service): notices, and failures wake it by @dastratakos in #4549
- feat(host,panel): Luke pinned at the top of the sidebar by @dastratakos in #4550
- feat(service,panel): the operator's heartbeat by @dastratakos in #4552
- refactor(chat): drop chat_member.handle, and give v0.18.0 desktops the handle they require by @dastratakos in #4553
- docs(changelog): screenshots for 0.18.0 and 0.19.0 by @dastratakos in #4554
- fix(service): the operator relays a merge or close the developer asks for by @dastratakos in #4557
- Drop the task status words from the inbox row card by @dastratakos in #4558
- fix(host): steer a line with files typed during a call by @dastratakos in #4559
- fix(panel): offer Retry when earlier messages could not be read by @charleslpan in #4476
- fix(panel): square, borderless priority and status chips on the board and list by @dastratakos in #4556
- perf(ui,panel): lay a row's hover acts over its end, painting only by @charleslpan in #4563
- fix(sandbox): move the native sandbox sweep's window along the list by @charleslpan in #4564
- refactor(panel): build the taskless agent row's menu from the shared agent actions by @dastratakos in #4562
- perf(panel): read a pinned agent's pull request once per card, apart from the task's by @charleslpan in #4565
- perf(service): answer chat posts at commit and read members by key by @charleslpan in #4509
- fix(agents): name the operator Luke, never a persona by @dastratakos in #4571
- fix(agents): bound the snapshot retention of sandboxes opened before it was bounded by @charleslpan in #4573
- fix(sandbox): keep the default user's sudo; the capability drop is the boundary by @charleslpan in #4574
- refactor(agents): delete the native harnesses' API-key test mode by @charleslpan in #4576
- perf(panel): send an agent message optimistically, its row landing in the line's place by @charleslpan in #4566
- fix(agents): the sweep fails a native turn whose runner died mid-turn by @charleslpan in #4577
- perf(panel): post to chat optimistically, the posted message landing in the post's place by @charleslpan in #4569
- Keep an inbox draft when the agent posts on its item again by @dastratakos in #4579
- docs(agents): point the runtime edges at effect-edges.json by @charleslpan in #4580
- fix(service): bound a send's wait for its conversation's lock by @dastratakos in #4568
- fix(sandbox): read a native agent's files under the capability drop by @charleslpan in #4575
- feat(skills): parseSkillPaste reads what a member pastes into Add skill by @charleslpan in #4583
- perf(panel): draw only the chat rows a push moved, read once per answer by @charleslpan in #4567
- fix(database): release the conversation lock before dispatching to eve by @charleslpan in #4463
- Mark a queued pull request as queued everywhere, not only its tab by @dastratakos in #4584
- fix(agents): the sweep pre-builds the native template with no gate by @charleslpan in #4590
- feat(service): agents post no progress notes on inbox threads by @dastratakos in #4561
- feat(service): keep every image an agent receives and name it by id by @dastratakos in #4597
- fix(agents): make the image's sudo keep the runner's environment, as Vercel documents by @charleslpan in #4588
- feat(chat): hand a chat notice's pictures to the agent it steers by @dastratakos in #4594
- feat(panel): draw chat notices as a left bubble with a place card by @dastratakos in #4600
- feat(agents): show_image plays a WebM video an agent recorded by @dastratakos in #4589
- fix(maintenance): one failing sweep no longer stops the rest, and the template sweep says which template it holds by @charleslpan in #4604
- feat(agents): record the cloud browser as a video the transcript plays by @dastratakos in #4596
- Read app.notion.com links as Notion's by @dastratakos in #4602
- feat(service,database): start_agent hands the started agent pictures by attachment id by @dastratakos in #4591
- Say queued on pull request link chips and rows, not only agents' own by @dastratakos in #4607
- feat(panel): drop the plan label under an agent's composer by @charleslpan in #4606
- feat(service): name a line's kept image by id in the journal, not by its bytes by @dastratakos in #4603
- feat(service,features): post_chat hands on a picture by its attachment id by @dastratakos in #4595
- fix(panel): the date picker's Clear is a menu row, lit rather than underlined by @dastratakos in #4609
- Say queued in a pull request's stack menu and a chat's @ list by @dastratakos in #4611
- fix(panel): let a sideways swipe over a board column scroll the board by @dastratakos in #4614
- chore(service): drop the "Made with Luke" pull request footer by @dastratakos in #4612
- fix(agents): list each native agent the Luke tools eve would offer it by @charleslpan in #4616
- fix(agents): a native agent's first message shows in its transcript by @charleslpan in #4605
- feat(panel): the date picker picks the time zone its times are read in by @dastratakos in #4610
- fix(agents): a native agent reads a PDF its message carries by @charleslpan in #4619
- fix(panel): drop the merge chip's checks badges and center the Checks tab's glyph by @dastratakos in #4613
- feat(agents): fork and continue replay native calls by name by @charleslpan in #4622
- fix(agent-runner): give Codex as long as Luke runs a tool call by @charleslpan in #4615
- feat(agents): title native agents and keep their context ring by @charleslpan in #4618
- feat(panel): sign in with ChatGPT under OpenAI's mark by @charleslpan in #4628
- feat(automations): integration trigger foundation (Sentry wire, installations, store, config) by @charleslpan in #3754
- feat(agents): draw native subagents as delegation rows by @charleslpan in #4627
- fix(agents): let Claude Code take a Luke tool's result whole by @charleslpan in #4623
- fix(panel): keep dropdown menus inside their panel by @dastratakos in #4639
- perf(agents): a native agent's Start answers before its sandbox opens by @charleslpan in #4608
- Place every React component in @luke/ui by @charleslpan in #4640
- feat(ui): add Slider, move the image diff's range input onto it by @charleslpan in #4642
- refactor(panel): accounts table name press via TextButton/TextLink by @charleslpan in #4643
- Move the mobile bar's buttons onto a ui BarItem by @charleslpan in #4644
- refactor(panel): tasks list group fold uses FoldingButton by @charleslpan in #4641
- feat(agents): coding agents run on your own subscription or API key by @charleslpan in #4534
- Section icon picker: IconButton pressed and a ui Swatch by @charleslpan in #4645
- feat(ui): DisclosureAction, a summary's slot for controls that don't fold it by @charleslpan in #4647
- fix(panel): keep a submenu inside its room on both sides by @dastratakos in #4649
- feat(ui): add PictureTile and move picture presses onto it by @charleslpan in #4651
- Settings radios use @luke/ui ChoiceList (picture and card looks) by @charleslpan in #4648
- refactor(voice): a call's asks go through the routed sessions door by @charleslpan in #4578
- feat(panel): colour diffs with Pierre's Highlights by @dastratakos in #4653
- feat(agents): Claude Code on an Anthropic API key by @charleslpan in #4656
- feat(voice): calls and dictation run on the caller's own OpenAI key by @charleslpan in #4632
- feat(voice): a call's ask names its line, so a native harness's turn binds to it by @charleslpan in #4581
- feat(ui): add LineButton and move the transcript's line presses onto it by @charleslpan in #4657
- Add useFilePicker to @luke/ui and move every file input onto it by @charleslpan in #4646
- Fold a changed file's header with ui Disclosure (A1b) by @charleslpan in #4658
- feat(agents): titles, chapters and replay summaries on the account's own key by @charleslpan in #4636
- refactor(panel): draw the plain fields and task boxes with ui fields by @charleslpan in #4652
- feat(ui): add CardPress and move whole-card presses onto it by @charleslpan in #4654
- feat(panel): Call and Dictate send an account with no OpenAI key to Settings by @charleslpan in #4638
- feat(service): drop Luke's own OpenAI and Anthropic keys from the deployment by @charleslpan in #4661
- feat(ui): add Tabs and move the desktop tab strip and switcher cards onto it by @charleslpan in #4659
- fix(ui): keep inbox pills, choice badges, and board badges tidy in narrow columns by @dastratakos in #4633
- Move panel empty states onto @luke/ui EmptyState and NoteLine (D3) by @charleslpan in #4665
- Fold workspace and repository tiles into ui Avatar (D5) by @charleslpan in #4667
- refactor(ui): draw the panel's hung lists on a shared MenuSurface by @charleslpan in #4669
- feat(automations): receive Sentry deliveries and queue integration runs by @charleslpan in #3770
- Fold sign-in into one @luke/ui card and one social sign-in path by @charleslpan in #4650
- feat(agents): Codex on an OpenAI API key by @charleslpan in #4660
- feat(tasks): assign an unassigned task to whoever moves it into progress by @dastratakos in #4670
- fix(panel): align the side panel Inbox's reply box and give it the Inbox's search by @dastratakos in #4671
- D1: fold panel visually-hidden and ellipsis rules into @luke/ui by @charleslpan in #4666
- perf(tasks): open a new task's agent on its prompt at once by @dastratakos in #4637
- feat(agents): a native runner taking a call's line binds its ask to the turn by @charleslpan in https://github.com/ReviewStage/luke/pull/4582
- fix(panel): line up the task list's pull requests whether an agent works by @dastratakos in https://github.com/ReviewStage/luke/pull/4675
- fix(panel): wait for the call video's first frame in the app's own loading style by @dastratakos in https://github.com/ReviewStage/luke/pull/4555
- fix(ui): stick the Tasks List's group heads flush under the toolbar by @dastratakos in https://github.com/ReviewStage/luke/pull/4676
- feat(panel): show the Inbox's and Chat's waiting counts on a phone's places bar by @dastratakos in https://github.com/ReviewStage/luke/pull/4560
- feat(automations): install Luke's Sentry integration for a workspace by @charleslpan in https://github.com/ReviewStage/luke/pull/3769
- perf(tasks): open a new task's page as its agent start is pressed by @dastratakos in https://github.com/ReviewStage/luke/pull/4672
- feat(inbox): wait on the task's assignee rather than the agent's starter by @dastratakos in https://github.com/ReviewStage/luke/pull/4677
- refactor(ui): move the tooltip's behaviour and Shortcut into @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4668
- fix(ui): let the words of an ask's options and steps be selected by @dastratakos in https://github.com/ReviewStage/luke/pull/4683
- chore(database): drop the Mac command leftovers by @dastratakos in https://github.com/ReviewStage/luke/pull/4684
- feat(database): add installed skills schema and store by @charleslpan in https://github.com/ReviewStage/luke/pull/4585
- feat(voice): a call speaks into a Claude Code or Codex agent by @charleslpan in https://github.com/ReviewStage/luke/pull/4586
- fix(panel): hang the task's card on the Plan tab and other card-less places by @dastratakos in https://github.com/ReviewStage/luke/pull/4688
- fix(panel): lead the Tasks Filter's repositories with their owner's picture by @dastratakos in https://github.com/ReviewStage/luke/pull/4689
- feat(ui): move the panel's last hand-built press handlers into ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4662
- feat(desktop): edit, list, and show the runs of a Sentry automation trigger by @charleslpan in https://github.com/ReviewStage/luke/pull/3776
- Move the loading indicators into @luke/ui (D8) by @charleslpan in https://github.com/ReviewStage/luke/pull/4664
- feat(agents): offer a member's installed skills to a coding agent's session by @charleslpan in https://github.com/ReviewStage/luke/pull/4587
- feat(panel): show sidebar tasks by assignee, with a dashed unassigned mark by @dastratakos in https://github.com/ReviewStage/luke/pull/4673
- feat(service): add installed skills routes and client by @charleslpan in https://github.com/ReviewStage/luke/pull/4592
- feat(service): agents keep the workspace's automations with list_automations, create_automation, update_automation, and delete_automation by @dastratakos in https://github.com/ReviewStage/luke/pull/4692
- feat(ui): one Time component and a time-format module by @charleslpan in https://github.com/ReviewStage/luke/pull/4695
- refactor(ui): one set of motion keyframes and tokens by @charleslpan in https://github.com/ReviewStage/luke/pull/4697
- fix(service): a member's reconnecting socket drives the takeover they hold by @dastratakos in https://github.com/ReviewStage/luke/pull/4696
- feat(panel): add Settings › Skills page and Add skill dialog by @charleslpan in https://github.com/ReviewStage/luke/pull/4601
- feat(agents): hand a member's installed skills to Claude Code and Codex by @charleslpan in https://github.com/ReviewStage/luke/pull/4598
- feat(panel): offer installed skills in the / picker with source badges by @charleslpan in https://github.com/ReviewStage/luke/pull/4599
- refactor(panel): the call's task name, still face, and video resize corners come from @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4698
- feat(panel): show and organize the Tasks page by assignee by @dastratakos in https://github.com/ReviewStage/luke/pull/4679
- refactor(ui): draw the panel's filling columns on a ui Fill region by @charleslpan in https://github.com/ReviewStage/luke/pull/4699
- feat(panel): name a task's assignee first on its card, person page, and palette by @dastratakos in https://github.com/ReviewStage/luke/pull/4678
- Move the toast into @luke/ui (D10) by @charleslpan in https://github.com/ReviewStage/luke/pull/4663
- refactor(panel): settings draws its repeated shapes with @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4701
- refactor(panel): draw the inbox's pills, thumbs, stamp, asks and crumbs from @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4702
- refactor(ui): move the truncation leftovers onto ui (D1b) by @charleslpan in https://github.com/ReviewStage/luke/pull/4693
- fix(panel): line a phone's Activity tabs up with the offers under them by @luke-agent[bot] in https://github.com/ReviewStage/luke/pull/4551
- fix(panel): show archived agents' pull requests, merged ones among them, in the summary by @dastratakos in https://github.com/ReviewStage/luke/pull/4687
- chore(database): drop the unused preview_fork table by @dastratakos in https://github.com/ReviewStage/luke/pull/4690
- fix(agents): answer update_task as changed when only the repository's access changes by @dastratakos in https://github.com/ReviewStage/luke/pull/4691
- feat(ui): micro-interactions on the shared controls by @charleslpan in https://github.com/ReviewStage/luke/pull/4635
- feat(ui): toast countdown bar, working toast that settles in place, and swipe to dismiss by @charleslpan in https://github.com/ReviewStage/luke/pull/4703
- refactor(panel): the tasks and pull request panes draw their repeated shapes with @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4707
- feat(ui): micro-interactions on the dialogs by @charleslpan in https://github.com/ReviewStage/luke/pull/4682
- feat(agents): each integration as its own MCP server for native agents by @charleslpan in https://github.com/ReviewStage/luke/pull/4708
- fix(panel): write Pierre 1.6's diff markup through the panel's own writer by @dastratakos in https://github.com/ReviewStage/luke/pull/4706
- feat(brand): add a pure-black monochrome mark on transparency by @charleslpan in https://github.com/ReviewStage/luke/pull/4674
- feat(panel): draw Google Maps links as chips with the Maps pin by @dastratakos in https://github.com/ReviewStage/luke/pull/4704
- feat(panel): give the chat tools their own call kinds and icons by @dastratakos in https://github.com/ReviewStage/luke/pull/4711
- fix(skills): discover skill folders as the skills CLI does by @charleslpan in https://github.com/ReviewStage/luke/pull/4710
- feat(ui): micro-interactions for inputs and chips by @charleslpan in https://github.com/ReviewStage/luke/pull/4680
- feat(ui): add ListMotion and move list rows onto it by @charleslpan in https://github.com/ReviewStage/luke/pull/4686
- feat(panel): reply to an ask's words in the inbox, and to any message in chat by @dastratakos in https://github.com/ReviewStage/luke/pull/4713
- feat(panel): draw Google Workspace, YouTube, and X links as chips by @dastratakos in https://github.com/ReviewStage/luke/pull/4709
- fix(copy): cut the slop copy that landed since the fifth sweep by @luke-agent[bot] in https://github.com/ReviewStage/luke/pull/4717
- feat(agents): Sentry triggers in the agents' automation tools by @charleslpan in https://github.com/ReviewStage/luke/pull/4714
- feat(ui): press pulse on every shared pressable by @charleslpan in https://github.com/ReviewStage/luke/pull/4715
- test(skills): name the unlisted fixture skill so CodeQL reads no secret by @charleslpan in https://github.com/ReviewStage/luke/pull/4718
- refactor(ui): fold the task panes' pills, chips, and label fades onto @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4719
- feat(service): agents run an automation now with run_automation, write answers trim the prompt, and an unknown switched-off connection is refused by @dastratakos in https://github.com/ReviewStage/luke/pull/4716
- feat(ui): scale a composer's file chips in and out under ListMotion by @charleslpan in https://github.com/ReviewStage/luke/pull/4720
- feat(ui): spring todo checks, roll the dock's count, and show uploads on chips by @charleslpan in https://github.com/ReviewStage/luke/pull/4681
- feat(panel): scale the Tasks page's filter chips in and out under ListMotion by @charleslpan in https://github.com/ReviewStage/luke/pull/4722
- refactor(ui): fold the task panes' cards and the changes strip onto @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4724
- refactor(ui): draw the panel's lists on Stack and Inline, and its find bar on MenuSurface by @charleslpan in https://github.com/ReviewStage/luke/pull/4723
- test(panel): fix the admin-link and Run-in-the-header flakes by @charleslpan in https://github.com/ReviewStage/luke/pull/4725
- refactor(ui): draw the pressed task cards and the plan's comment card with Card by @charleslpan in https://github.com/ReviewStage/luke/pull/4726
- test(panel): load the highlighter before code-snippet's first card by @charleslpan in https://github.com/ReviewStage/luke/pull/4727
- refactor(ui): draw composers, floating toolbars, and the leftover lists on @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4728
- feat(panel): create an automation with an agent from the Automations page by @dastratakos in https://github.com/ReviewStage/luke/pull/4685
- refactor(ui): move the message tap, transcript folds, resize edge, and image zoom onto @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4730
- feat(service,panel): open a tab in a coding agent's cloud browser from the panel by @dastratakos in https://github.com/ReviewStage/luke/pull/4694
- refactor(ui): give the panel's last pointer handlers homes in @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4729
- refactor(panel): draw the inbox field and the selection popups on @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4732
- refactor(desktop,panel,host): retire the local Browser tab by @dastratakos in https://github.com/ReviewStage/luke/pull/4731
- chore(desktop,host): drop the retired Browser tab's one-shot clear by @dastratakos in https://github.com/ReviewStage/luke/pull/4735
- refactor(ui): fold the markdown renderers into one @luke/ui/markdown by @charleslpan in https://github.com/ReviewStage/luke/pull/4712
- fix(ui): keep list motion smooth while the inbox's reads land by @dastratakos in https://github.com/ReviewStage/luke/pull/4736
- feat(lint): refuse raw controls and press handlers outside @luke/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4739
- revert(agents): name coding agents by their titles again by @dastratakos in https://github.com/ReviewStage/luke/pull/4738
- chore(database): stop declaring coding_agent.persona_name by @dastratakos in https://github.com/ReviewStage/luke/pull/4741
- feat(panel): drop the key hints under the ⌃Tab switcher by @dastratakos in https://github.com/ReviewStage/luke/pull/4744
- fix(panel): scroll the Add skill dialog's found skills and keep its footer on screen by @charleslpan in https://github.com/ReviewStage/luke/pull/4743
- refactor(database): drop the deprecated task.archived_at column by @dastratakos in https://github.com/ReviewStage/luke/pull/4742
- chore(database): drop coding_agent.persona_name by @dastratakos in https://github.com/ReviewStage/luke/pull/4748
- feat(ui,panel): swipe a phone's drawer in from the screen's edge by @charleslpan in https://github.com/ReviewStage/luke/pull/4747
- feat(ui): unroll the rows a setting reveals, and roll them up as it turns off by @charleslpan in https://github.com/ReviewStage/luke/pull/4750
- feat(ui): land busy buttons on a check and turn refresh glyphs once by @charleslpan in https://github.com/ReviewStage/luke/pull/4749
- feat(installed-skills): share a personal skill with a workspace, and read one by @charleslpan in https://github.com/ReviewStage/luke/pull/4751
- feat(ui): grow a picture from its tile into the viewer and back by @charleslpan in https://github.com/ReviewStage/luke/pull/4746
- feat(installed-skills): say more of each previewed skill, and read one's SKILL.md by @charleslpan in https://github.com/ReviewStage/luke/pull/4752
- feat(skills): give each skill row a menu, and light what an install made by @charleslpan in https://github.com/ReviewStage/luke/pull/4754
- feat: Memory — a workspace's coding agents keep and recall one shared memory, behind the Memory experiment by @luke-agent[bot] in https://github.com/ReviewStage/luke/pull/2257
- feat(installed-skills): redesign the Add skill dialog to confirm or pick as npx skills add does by @charleslpan in https://github.com/ReviewStage/luke/pull/4757
- feat(database,service,panel): private memories by @dastratakos in https://github.com/ReviewStage/luke/pull/4759
- feat(service): a flush before compaction, a better seed, and the provenance gate by @dastratakos in https://github.com/ReviewStage/luke/pull/4761
- feat(ui,web): draw auth pages as C2 with Open Luke, worded from one table by @dastratakos in https://github.com/ReviewStage/luke/pull/4756
- feat(panel): offer the head's preview deployments from the PR tab's header by @dastratakos in https://github.com/ReviewStage/luke/pull/4758
- perf(agents): open a native agent's sandbox from its workspace's repository snapshot by @charleslpan in https://github.com/ReviewStage/luke/pull/4762
- feat(agents): draw the agent's pointer into a browser recording by @dastratakos in https://github.com/ReviewStage/luke/pull/4766
- feat(panel): the terminal picker's agent rows mark failed agents, hang their card, and say the sandbox as the panel does by @dastratakos in https://github.com/ReviewStage/luke/pull/4768
- feat(panel): hang the agent's card on a no-task agent's palette row and name it by the model catalog by @dastratakos in https://github.com/ReviewStage/luke/pull/4769
- feat(panel,ui): mark a failed agent in the tab switcher and on the person page, which hang the agent's card by @dastratakos in https://github.com/ReviewStage/luke/pull/4772
- docs: CONTRIBUTING, SECURITY scope and response target, Entire off by default by @charleslpan in https://github.com/ReviewStage/luke/pull/4778
- chore: add NOTICE, name Stage Inc. as copyright holder, ship NOTICE in the app by @charleslpan in https://github.com/ReviewStage/luke/pull/4779
- docs(agents): state the data carve-outs without naming who approved them by @charleslpan in https://github.com/ReviewStage/luke/pull/4780
- fix(panel): never fold the pictures and recordings an agent shows into a group by @dastratakos in https://github.com/ReviewStage/luke/pull/4773
- fix(web): say a sign-in with no provider could not continue by @dastratakos in https://github.com/ReviewStage/luke/pull/4740
- chore: stop vendoring LobeHub's agent skills by @charleslpan in https://github.com/ReviewStage/luke/pull/4776
- fix(ui): keep no room on an auth card for choices that are all absent by @luke-agent[bot] in https://github.com/ReviewStage/luke/pull/4733
- fix(ui): balance an auth card's title where it wraps by @luke-agent[bot] in https://github.com/ReviewStage/luke/pull/4734
- docs(readme): say what's open, what's hosted, and who pays by @charleslpan in https://github.com/ReviewStage/luke/pull/4781
- feat(ui,panel): step a withdrawn ask back to the muted ink, its why under a one-word pill by @dastratakos in https://github.com/ReviewStage/luke/pull/4771
- feat(ui): menu rows fade where cut and can hang a card by @dastratakos in https://github.com/ReviewStage/luke/pull/4782
- refactor(panel): Settings pop-ups use the one picker by @dastratakos in https://github.com/ReviewStage/luke/pull/4777
- feat(agents): revert a coding agent to an earlier message, and edit and resend a line by @dastratakos in https://github.com/ReviewStage/luke/pull/4721
- refactor(panel): one task row by @dastratakos in https://github.com/ReviewStage/luke/pull/4786
- feat(panel): drop "Open the full transcript" from the replay card by @dastratakos in https://github.com/ReviewStage/luke/pull/4790
- feat(panel): head a phone's task with back, its title, and one ⋯ by @dastratakos in https://github.com/ReviewStage/luke/pull/4570
- feat(service,panel,ui): agents post a recording to the inbox and the chat, which play it by @dastratakos in https://github.com/ReviewStage/luke/pull/4763
- fix(panel): stand the agent composer's skeleton in the composer's shape by @dastratakos in https://github.com/ReviewStage/luke/pull/4797
- feat(inbox): a member starts a new thread with an agent from the Inbox by @dastratakos in https://github.com/ReviewStage/luke/pull/4700
- fix(database): workspace agent search matches the name each place shows by @dastratakos in https://github.com/ReviewStage/luke/pull/4767
- feat(panel): the Inbox groups by nothing until a grouping is chosen by @dastratakos in https://github.com/ReviewStage/luke/pull/4804
- refactor(panel): one pull request label and mark by @dastratakos in https://github.com/ReviewStage/luke/pull/4785
- docs(readme): rewrap the Models bullet and restore the commands paragraph by @charleslpan in https://github.com/ReviewStage/luke/pull/4799
- refactor(database): drop the inbox item's fixed-kind columns and their trigger by @dastratakos in https://github.com/ReviewStage/luke/pull/4802
- test(panel): split the Inbox's answer-and-sort test into one test per grouping and sort by @dastratakos in https://github.com/ReviewStage/luke/pull/4806
- feat(panel): offer Run on every Pull request tab, running that pull request's branch by @charleslpan in https://github.com/ReviewStage/luke/pull/4791
- feat(settings): let the developer turn off product analytics by @charleslpan in https://github.com/ReviewStage/luke/pull/4796
- fix(ui): a press on a card hung from an item's card leaves the menu standing by @dastratakos in https://github.com/ReviewStage/luke/pull/4807
- fix(panel): a task's new agent draft opens no plan beside it by @dastratakos in https://github.com/ReviewStage/luke/pull/4809
- feat(panel): drop the Auto-merge on chip beside Disable auto-merge by @dastratakos in https://github.com/ReviewStage/luke/pull/4812
- fix(panel): menus share one reading state and one no-match phrase by @dastratakos in https://github.com/ReviewStage/luke/pull/4783
- fix(panel): a task's start leaves the side panel as it stood by @dastratakos in https://github.com/ReviewStage/luke/pull/4798
- fix(panel): hang a page's own card on every row that names it by @dastratakos in https://github.com/ReviewStage/luke/pull/4760
- fix(panel): draw the tasks area's skeletons through the boxes they stand for by @dastratakos in https://github.com/ReviewStage/luke/pull/4813
- style(panel): give the task list's rows and columns a little more room by @dastratakos in https://github.com/ReviewStage/luke/pull/4814
- fix(ui,panel): draw settings skeletons through the rows and sections they stand for by @dastratakos in https://github.com/ReviewStage/luke/pull/4815
- feat(panel,settings): open the Tasks page with ⇧⌘B by @dastratakos in https://github.com/ReviewStage/luke/pull/4816
- refactor(voice,panel): delete what only the Call tab drew, and reword its comments by @dastratakos in https://github.com/ReviewStage/luke/pull/4765
- fix(panel): draw each admin skeleton from its page's own sections by @dastratakos in https://github.com/ReviewStage/luke/pull/4817
- fix(panel,ui): draw Close pull request, Cancel task, and Cancel invitation red by @dastratakos in https://github.com/ReviewStage/luke/pull/4818
- fix(settings,panel): let a focused editor keep its writing chords by @dastratakos in https://github.com/ReviewStage/luke/pull/4819
- feat(panel): one agent row for every agent menu by @dastratakos in https://github.com/ReviewStage/luke/pull/4775
- feat(panel): head a phone's Inbox, Tasks page, and Chat with one control a corner by @dastratakos in https://github.com/ReviewStage/luke/pull/4593
- fix(service): keep model inputs and outputs out of Sentry by @charleslpan in https://github.com/ReviewStage/luke/pull/4792
- fix(panel): stand the Comments tab's placeholders in a thread's own card by @dastratakos in https://github.com/ReviewStage/luke/pull/4822
- refactor(panel): one automation mark and card in every row by @dastratakos in https://github.com/ReviewStage/luke/pull/4793
- feat(panel): the Board, Inbox task headers and pinned Plan tabs hang the task card by @dastratakos in https://github.com/ReviewStage/luke/pull/4810
- feat(panel): answer the writing chords in the pull request comment box by @dastratakos in https://github.com/ReviewStage/luke/pull/4820
- feat(ui): add the format toolbar, block menu, and link field by @dastratakos in https://github.com/ReviewStage/luke/pull/4821
- feat(panel): the @ menu draws agents as every agent menu does by @dastratakos in https://github.com/ReviewStage/luke/pull/4787
- feat(panel): the "+" menus draw every row's end mark and card by @dastratakos in https://github.com/ReviewStage/luke/pull/4794
- refactor(ui): delete Select, its last callers gone by @dastratakos in https://github.com/ReviewStage/luke/pull/4826
- feat(features,service,panel): let a multi-select ask recommend several options by @dastratakos in https://github.com/ReviewStage/luke/pull/4808
- fix(database): agent search matches each word across an agent's name and task by @dastratakos in https://github.com/ReviewStage/luke/pull/4827
- feat(panel): the automation editor's agent picker draws agents as every agent menu does by @dastratakos in https://github.com/ReviewStage/luke/pull/4789
- feat(panel): one repository row and a workspace card by @dastratakos in https://github.com/ReviewStage/luke/pull/4828
- feat(panel): chat rail in a dense list, comment time as chat reads it by @dastratakos in https://github.com/ReviewStage/luke/pull/4829
- fix(service): run_on_mac only in an agent no one else has messaged by @charleslpan in https://github.com/ReviewStage/luke/pull/4770
- docs: note Sentry leaves out model data and request bodies in AGENTS.md by @charleslpan in https://github.com/ReviewStage/luke/pull/4832
- feat(panel): format a plan from a selection toolbar by @dastratakos in https://github.com/ReviewStage/luke/pull/4831
- fix(panel): draw the desktop window's skeletons through the frames they stand for by @dastratakos in https://github.com/ReviewStage/luke/pull/4823
- feat(panel): one skill row, and MCP rows fade and hang ServerCard by @dastratakos in https://github.com/ReviewStage/luke/pull/4830
- feat(panel): @ files and pages hang their cards, diff headers get icons by @dastratakos in https://github.com/ReviewStage/luke/pull/4834
- fix(desktop): set Electron fuses on the packaged app by @charleslpan in https://github.com/ReviewStage/luke/pull/4784
- feat(panel): draw Inbox items as the Inbox's own row everywhere by @dastratakos in https://github.com/ReviewStage/luke/pull/4833
- refactor(panel): draw every tab's card through one tabCard by @dastratakos in https://github.com/ReviewStage/luke/pull/4774
- chore(lint): hold loading skeletons to the components their surface draws with by @dastratakos in https://github.com/ReviewStage/luke/pull/4836
- feat(panel): insert plan blocks from a slash menu by @dastratakos in https://github.com/ReviewStage/luke/pull/4835
- feat(panel): format words in the message composers by @dastratakos in https://github.com/ReviewStage/luke/pull/4838
- fix(panel): open an agent transcript at its newest line by @charleslpan in https://github.com/ReviewStage/luke/pull/4837
- feat(panel): a link to an agent's pull request hangs its Pull request tab's card by @dastratakos in https://github.com/ReviewStage/luke/pull/4795
- refactor(panel,ui): one people list for every people menu by @dastratakos in https://github.com/ReviewStage/luke/pull/4811
- fix(panel): escape marked words and fit pastes to the bound they would leave by @dastratakos in https://github.com/ReviewStage/luke/pull/4841
- feat(panel): drop File for later from New task by @charleslpan in https://github.com/ReviewStage/luke/pull/4843
- fix(panel,ui): draw a neutral Claude mark and name Claude Code's harness "Claude" by @charleslpan in https://github.com/ReviewStage/luke/pull/4803
- feat(ui): give the app a Scandinavian look by @charleslpan in https://github.com/ReviewStage/luke/pull/4705
- fix(panel): lay no block into a table cell by @dastratakos in https://github.com/ReviewStage/luke/pull/4844
- feat(panel): people rows hang PersonCard, reviewers and person tabs show their faces by @dastratakos in https://github.com/ReviewStage/luke/pull/4868
- feat(panel): a pinned Changes tab follows its live pull request by @dastratakos in https://github.com/ReviewStage/luke/pull/4869
- fix(ui): restore Clawd as Claude's harness mark by @charleslpan in https://github.com/ReviewStage/luke/pull/4867
- feat(desktop): frost the window's frame with the Mac's sidebar material by @charleslpan in https://github.com/ReviewStage/luke/pull/4745
- feat(ui): build @luke/ui on shadcn/ui over Base UI, starting with Switch by @charleslpan in https://github.com/ReviewStage/luke/pull/4753
- feat(desktop,settings): ask before an agent runs a command on this Mac by @charleslpan in https://github.com/ReviewStage/luke/pull/4862
- chore: drop stale config rows and the docs that named them by @charleslpan in https://github.com/ReviewStage/luke/pull/4840
- docs: fix stale file and symbol references in docs and comments by @charleslpan in https://github.com/ReviewStage/luke/pull/4845
- refactor(panel): fold small duplicates by @charleslpan in https://github.com/ReviewStage/luke/pull/4848
- refactor(web): fold duplicated mounts and route wrappers by @charleslpan in https://github.com/ReviewStage/luke/pull/4849
- refactor: tidy store failures, invitation roles, column selections, a frame decode, a heartbeat, and a live test by @charleslpan in https://github.com/ReviewStage/luke/pull/4850
- refactor(service): share copied helpers instead of re-declaring them by @charleslpan in https://github.com/ReviewStage/luke/pull/4851
- refactor(dev): fold repeated tool bodies and admit wrappers by @charleslpan in https://github.com/ReviewStage/luke/pull/4852
- refactor(scripts): trim workspace.sh and the release and preview scripts by @charleslpan in https://github.com/ReviewStage/luke/pull/4853
- refactor(features): declare each value set once by @charleslpan in https://github.com/ReviewStage/luke/pull/4854
- refactor(host): move the browser live procedures into the act port by @charleslpan in https://github.com/ReviewStage/luke/pull/4857
- refactor: drop declarations nothing reaches by @charleslpan in https://github.com/ReviewStage/luke/pull/4861
- refactor: share describeFailure, namedIn and the avatar environment by @charleslpan in https://github.com/ReviewStage/luke/pull/4863
- refactor(panel): share storage, file-drop, and refocus hooks by @charleslpan in https://github.com/ReviewStage/luke/pull/4865
- refactor(features,ui,settings): keep one copy of each shared helper by @charleslpan in https://github.com/ReviewStage/luke/pull/4866
- fix(service): tell a blank native agent what an eve one is told by @charleslpan in https://github.com/ReviewStage/luke/pull/4873
- feat(desktop): lay macOS 26's Liquid Glass behind the panel window by @charleslpan in https://github.com/ReviewStage/luke/pull/4877
- refactor(service): move the ChatGPT revoke retry and template poll onto Schedule by @charleslpan in https://github.com/ReviewStage/luke/pull/4880
- refactor(service): fold the duplicated relay, GitHub read, inbox, sweep and admin flows by @charleslpan in https://github.com/ReviewStage/luke/pull/4882
- chore: delete orphaned goldens and the CSS nothing draws by @charleslpan in https://github.com/ReviewStage/luke/pull/4842
- feat(ui): draw no assignee as a dashed seat by @dastratakos in https://github.com/ReviewStage/luke/pull/4886
- refactor(features,database): drop the brain turns' asked and askedAt by @dastratakos in https://github.com/ReviewStage/luke/pull/4825
- feat(panel): find tasks by their key in ⌘K and the @ list by @dastratakos in https://github.com/ReviewStage/luke/pull/4801
- refactor(host): fold the act port's copied stream, answer, live-row, and param readers into one each by @charleslpan in https://github.com/ReviewStage/luke/pull/4846
- refactor(ui,catalog): one label-fade token and constants in the catalog by @charleslpan in https://github.com/ReviewStage/luke/pull/4874
- refactor(features,gateway,wire): read three boundary values with Schemas by @charleslpan in https://github.com/ReviewStage/luke/pull/4871
- feat(ui,panel,desktop): play a recording in place under Luke's own controls, Expand it into the viewer, and let it go full screen by @dastratakos in https://github.com/ReviewStage/luke/pull/4788
- refactor(panel): type the admin views and fold its read states and daily charts by @charleslpan in https://github.com/ReviewStage/luke/pull/4872
- refactor(ui): drop FormSection and ChoiceBar's inset by @charleslpan in https://github.com/ReviewStage/luke/pull/4878
- docs: say run_on_mac asks the developer first by default by @charleslpan in https://github.com/ReviewStage/luke/pull/4893
- refactor(desktop): drop dead code and fold duplicated setup by @charleslpan in https://github.com/ReviewStage/luke/pull/4847
- chore: remove the code knip finds no caller for by @charleslpan in https://github.com/ReviewStage/luke/pull/4839
- refactor(service): name sandbox statuses once and read the clock through DateTime by @charleslpan in https://github.com/ReviewStage/luke/pull/4875
- refactor(host): restart follows on one Schedule, fold the refollowed streams, and type their keys and states by @charleslpan in https://github.com/ReviewStage/luke/pull/4855
- refactor(panel): draw repeated toolbar, retry, and picker shapes once by @charleslpan in https://github.com/ReviewStage/luke/pull/4879
- feat(panel): say a task's key in its ⌘K row by @dastratakos in https://github.com/ReviewStage/luke/pull/4900
- feat(panel): Inbox link blocks draw as chips by @dastratakos in https://github.com/ReviewStage/luke/pull/4903
- feat(service,panel,database): a plan holds and plays a recording an agent made by @dastratakos in https://github.com/ReviewStage/luke/pull/4883
- fix(panel): give Luke's chat the mention context a task's chat has by @dastratakos in https://github.com/ReviewStage/luke/pull/4904
- chore: stop exporting what the cleanup and the Mac command prompt left unread by @charleslpan in https://github.com/ReviewStage/luke/pull/4906
- feat(panel): one skill chip, with the book by @dastratakos in https://github.com/ReviewStage/luke/pull/4901
- feat(ui): inline refs fade where they are cut by @dastratakos in https://github.com/ReviewStage/luke/pull/4899
- fix(ui): keep a flush row's fill standing when a press pulses it by @dastratakos in https://github.com/ReviewStage/luke/pull/4800
- feat(ui,panel): stand the Inbox's search under its head and fold the sidebar's over its name by @dastratakos in https://github.com/ReviewStage/luke/pull/4909
- fix(panel,ui): settle the sheet layout on the Mac's frosted window by @charleslpan in https://github.com/ReviewStage/luke/pull/4888
- fix(ui): rest a swiping row clear on the frosted sidebar by @dastratakos in https://github.com/ReviewStage/luke/pull/4902
- feat(ui): move @luke/ui's overlays onto shadcn/ui over Base UI by @charleslpan in https://github.com/ReviewStage/luke/pull/4896
- fix(panel): PR and issue chips read #N title, one issue key by @dastratakos in https://github.com/ReviewStage/luke/pull/4911
- feat(database,service): write every inbox item from before version 5 as a thread by @dastratakos in https://github.com/ReviewStage/luke/pull/4805
- feat(service): write a pull request's description by @dastratakos in https://github.com/ReviewStage/luke/pull/4919
- fix(service): ask Vercel Connect only what its docs describe by @charleslpan in https://github.com/ReviewStage/luke/pull/4898
- feat(panel,ui): lay out ⌘K's task rows as the Tasks list's by @dastratakos in https://github.com/ReviewStage/luke/pull/4920
- feat(panel): draw a task's key written in words as its chip by @dastratakos in https://github.com/ReviewStage/luke/pull/4916
- feat(panel): hover cards where chips had a tooltip or nothing by @dastratakos in https://github.com/ReviewStage/luke/pull/4917
- refactor: an inbox item is its title and its thread; drop blocks, response, and answer by @dastratakos in https://github.com/ReviewStage/luke/pull/4910
- refactor(panel): let any Markdown document mount the plan's editor by @dastratakos in https://github.com/ReviewStage/luke/pull/4921
- feat(ui): move @luke/ui's menus and pickers onto shadcn/ui by @charleslpan in https://github.com/ReviewStage/luke/pull/4918
- fix(web): draw the site documents through one shared Vite server by @charleslpan in https://github.com/ReviewStage/luke/pull/4922
- perf(chat): tell mentioned agents after an agent's post answers by @charleslpan in https://github.com/ReviewStage/luke/pull/4881
- perf(panel): stop redraws and re-measures while agents work by @charleslpan in https://github.com/ReviewStage/luke/pull/4884
- perf(host): no Realtime waits under the tasks lock, no blocking terminal close by @charleslpan in https://github.com/ReviewStage/luke/pull/4856
- perf(host,panel): open a task without queueing behind a stale switch by @charleslpan in https://github.com/ReviewStage/luke/pull/4892
- perf(service): run independent request work at once and title after the answer by @charleslpan in https://github.com/ReviewStage/luke/pull/4859
- perf(agents): faster native agent launch and hand-over by @charleslpan in https://github.com/ReviewStage/luke/pull/4897
- fix(service,ui): wait on the image build's exit rather than a 10 s poll by @charleslpan in https://github.com/ReviewStage/luke/pull/4923
- chore(release): bump the workspace to 0.20.0 and write its changelog by @charleslpan in https://github.com/ReviewStage/luke/pull/4924
Full Changelog: v0.19.0...v0.20.0