Repository navigation
Luke 0.21.0
What's Changed
- fix(agents): stop a native sandbox under the runner lease, and never start a command twice by @charleslpan in #4876
- feat(ui): move text inputs and forms onto shadcn/ui by @charleslpan in #4890
- perf(service): fewer serial reads on open, start, and send by @charleslpan in #4891
- feat(panel,ui): draw an Inbox row on three lines, one thing to a line by @dastratakos in #4913
- perf(database): index the hot reads and the sweep's scans by @charleslpan in #4860
- perf(host): push each window only what moved in the app document by @charleslpan in #4864
- feat(features): one words module for states, plurals and lists by @dastratakos in #4929
- feat(agents): keep a native agent's runner warm for ten minutes past its turn by @charleslpan in #4885
- test(panel): the mentions test draws on a registry of its own by @dastratakos in #4941
- perf(agents): write a message to a running runner without waiting out a read of its exit by @charleslpan in #4889
- fix(panel): chips read the live name of what they mention by @dastratakos in #4908
- fix(panel): one gap before the side panel's toggle by @dastratakos in #4931
- chore(lint): close the press guard's gaps and refuse stale disables by @dastratakos in #4927
- perf(agents): renew a running runner's credential after its message is written by @charleslpan in #4894
- feat(ui): type roles, tabular figures and spacing roles by @dastratakos in #4933
- feat(ui): motion through tokens only by @dastratakos in #4935
- fix(agents): keep a native runner's sandbox within Vercel's five tags by @charleslpan in #4943
- feat(agents): count how each message reached a Claude Code or Codex runner by @charleslpan in #4915
- test(ui): a theme's width and motion names merge in cn as Tailwind's do by @charleslpan in #4926
- feat(ui): one icon door, one glyph per meaning by @dastratakos in #4936
- feat(features): one time and number format by @dastratakos in #4939
- refactor(panel): one kind registry with no defaults by @dastratakos in #4945
- fix(copy): cut the slop copy that landed since the sixth sweep by @luke-agent[bot] in #4947
- feat(ui): one status tone and one palette by @dastratakos in #4934
- feat(panel): edit a pull request's description in place by @dastratakos in #4940
- feat(panel): write review comments on the plan's editor by @dastratakos in #4937
- feat(panel): one lead mark per kind through THING_MARK by @dastratakos in #4948
- refactor(features): one link grammar and one agent name by @dastratakos in #4944
- fix(panel): review replies and pending-comment edits keep words on Esc by @dastratakos in #4954
- fix(panel): edit-and-resend asks before cutting later messages by @dastratakos in #4952
- feat(panel): a press door that toasts the host's refusal by @dastratakos in #4958
- fix(voice): voice failures in words, as an alert, with a remedy by @dastratakos in #4955
- fix(panel): New thread keeps its draft, takes dropped files, finds @ by @dastratakos in #4956
- feat(panel): an opened pull request reads as its own line in the transcript by @dastratakos in #4959
- feat(ui): an error boundary instead of a blank window by @dastratakos in #4957
- fix(panel): Esc and IME keys never fall through to the window by @dastratakos in #4951
- feat(ui): move buttons and toggles onto shadcn/ui over Base UI by @charleslpan in #4905
- fix(host): the open task shows its live status, assignee and repository by @dastratakos in #4962
- feat(panel): every chip's card from its tab, with one loading state by @dastratakos in #4949
- fix(desktop): reload the panel renderer after a crash by @dastratakos in #4950
- feat(panel): the open PR tab re-reads as its pushed line moves by @dastratakos in #4961
- fix(panel): updates, System Settings and Mac terminals say when refused by @dastratakos in #4963
- fix(panel): link-open presses toast the host's refusal by @dastratakos in #4964
- chore(lint): add a style guard with shrink-only baselines by @dastratakos in #4930
- fix(panel): plan-comment drafts survive Esc, closing, and Cancel by @dastratakos in #4966
- feat(voice): a refused or unfunded OpenAI key says so by @dastratakos in #4965
- fix(panel): version history, Inbox and Chat say a failed read, with Retry by @dastratakos in #4968
- fix(panel): a plan save that fails as you leave is kept and said by @dastratakos in #4953
- feat(panel): every tool call has a kind, verb and glyph by @dastratakos in #4967
- feat(host): live updates say when they break and resync on wake by @dastratakos in #4960
- fix(panel): the model menu and automation choices show a failed read by @dastratakos in #4969
- fix(panel): ⌘K shows failed sources and offers only tabs that exist by @dastratakos in #4970
- fix(ui): settings switches flip at once and toast if refused by @dastratakos in #4972
- fix(panel): a failed refresh keeps the last good list by @dastratakos in #4971
- fix(call): the call window's shortcuts work and "Video ended" says why by @dastratakos in #4973
- feat(ui): move feedback and display components onto shadcn/ui by @charleslpan in #4946
- fix(panel): pickers say a failed read could not be read, with Retry by @dastratakos in #4976
- fix(panel): Edit and the chat ask's note keep their words on Esc by @dastratakos in #4974
- fix(panel): a failed refresh keeps the Board's columns by @dastratakos in #4981
- fix(features,service): a plan conflict names who wrote it by @dastratakos in #4977
- fix(panel): closing a draft agent's tab offers Undo by @dastratakos in #4978
- fix(panel): a task's Inbox counts only the items that wait on you by @dastratakos in #4982
- fix(panel): Esc in PR and Settings fields keeps words; Add skill holds by @dastratakos in #4983
- fix(voice): a dropped call, dead mic or lost voice window says so by @dastratakos in #4979
- fix(panel): the @ menu says skills could not be read, with Retry by @dastratakos in #4985
- fix(panel): GitHub dead ends name the owners and offer the next step by @dastratakos in #4984
- fix(panel): the task page's chips toast a refusal by @dastratakos in #4988
- fix(account): a failed sign-in says why, and answers at once offline by @dastratakos in #4975
- fix(panel): a paste past the length cap says it was cut by @dastratakos in #4987
- fix(panel): Close on a queued pull request asks first, and an ordinary Close offers Reopen by @dastratakos in #4989
- fix(panel): plan ticks queue and say when a tick or date doesn't save by @dastratakos in #4990
- fix(panel): Settings rows say a failed read failed, with Retry by @dastratakos in #4991
- fix(panel,ui): followed lists and plan comments recover from a broken stream by @dastratakos in #4992
- feat(host,service): a teammate's plan edit reaches an open editor by @dastratakos in #4995
- fix(ui,panel): dialogs scroll their middle, the welcome scrolls, find clears the file bar by @dastratakos in #4996
- fix(settings): zoom shortcuts only where the app zooms by @dastratakos in #4994
- fix(features): Keep mine rebases instead of overwriting by @dastratakos in #4993
- feat(desktop): ask before quit, update and sign-out while work would be lost by @dastratakos in #4980
- test(panel): Keep mine in the open editor lays in and saves both changes by @dastratakos in #4997
- fix(panel,web): ask before closing a tab with unsaved plan words by @dastratakos in #4986
- feat(panel): one undo toast and one set of toast holds by @dastratakos in #4998
- chore(lint): retired classes, glyphs and patterns stay gone by @dastratakos in #4999
- feat(ui): Comment by @dastratakos in #5000
- refactor(panel): one useAttachedFiles by @dastratakos in #5003
- feat(ui): one landed highlight that reduced motion keeps by @dastratakos in #5005
- feat(ui): GroupHeader, one head and fold for every list's groups by @dastratakos in #5001
- feat(ui): SearchableMenu joins @luke/ui with three widths by @dastratakos in #5002
- feat(ui): one busy shape for every button, its ring after 180ms by @dastratakos in #5007
- feat(ui): one roving-keys helper; List walks with arrows by @dastratakos in #5006
- feat(ui): FailureNote, and a test for NoteLine by @dastratakos in #5008
- refactor(panel): Inbox, chat ask and chat use Comment by @dastratakos in #5010
- feat(ui): PaneBar for the bar inside a tab or dock by @dastratakos in #5009
- feat(ui): ComposerFoot by @dastratakos in #5012
- feat(ui): a row's menu by ⋯, right-click and the menu key; MoreButton by @dastratakos in #5011
- refactor(panel): transcript and chat failures are FailureNotes by @dastratakos in #5013
- feat(panel): arrows walk version history, integration tools and the Settings pages by @dastratakos in #5014
- feat(ui): CommandDialog by @dastratakos in #5004
- fix(panel): Unarchive and chapters Refresh show they are working by @dastratakos in #5015
- refactor(panel): the sidebar's heads are GroupHeaders by @dastratakos in #5016
- feat(panel): Settings buttons that wait on the server show the busy ring by @dastratakos in #5017
- feat(ui): CopyButton by @dastratakos in #5018
- refactor(panel): pickers use the ui SearchableMenu by @dastratakos in #5020
- refactor(panel): plan, review and pull request comments use Comment by @dastratakos in #5022
- refactor(panel): File, Terminal, Page and Browser tabs draw PaneBar by @dastratakos in #5019
- feat(ui): OverPane slides in and out by @dastratakos in #5023
- feat(panel): Automations, runs, shells, Settings and chat rail rows get ⋯ by @dastratakos in #5025
- refactor(panel): ⌘K draws in CommandDialog by @dastratakos in #5021
- refactor(panel): error paragraphs and "Try again" buttons are FailureNotes by @dastratakos in #5027
- test(panel): split the Automations schedule test into one test per thing saved by @dastratakos in #5034
- refactor(ui): tabs, choices, menus, toolbar and combobox step through it by @dastratakos in #5024
- refactor(panel): the PR band, Chapters and shells draw PaneBar by @dastratakos in #5032
- feat(ui): optional fields, one error line, SecretField, one disabled look by @dastratakos in #5035
- refactor(ui,panel): @, / and file crumbs hang from the ui layers; one press-away by @dastratakos in #5030
- refactor(panel): one line under a message; retire the comment heads by @dastratakos in #5031
- feat(panel): sidebar rows get ⋯, right-click and the menu key from ListRow's menu by @dastratakos in #5026
- feat(ui): CodeCard by @dastratakos in #5028
- refactor(panel): header ⋯ buttons are MoreButton by @dastratakos in #5033
- refactor(panel): chat, Inbox answer, New thread and chat ask stand on one foot by @dastratakos in #5029
- fix(panel): pickers, row marks and plan comments show they are working by @dastratakos in #5039
- refactor(panel): empty and notice lines are NoteLines by @dastratakos in #5041
- feat(ui): call controls in @luke/ui by @dastratakos in #5040
- feat(panel,ui): useKept and ShowMoreRow by @dastratakos in #5036
- refactor(panel): Chat, Inbox and Comments tabs draw PaneBar by @dastratakos in #5037
- refactor(panel): the terminal picker and the @ score leave cmdk by @dastratakos in #5038
- refactor(panel): secrets and unlabelled fields get FormField by @dastratakos in #5042
- chore(anti-slop): retire cmdk outside @luke/ui/command by @dastratakos in #5047
- refactor(panel): one ReplyForm for GitHub boxes; ⌘ or Ctrl Enter by @dastratakos in #5045
- refactor(panel): fences, show_code, Inbox and Chat code are CodeCards by @dastratakos in #5044
- chore(panel): delete the hand-built notes and guard them by @dastratakos in #5049
- chore(lint): an async press says it is busy by @dastratakos in #5048
- chore(panel): delete the hand-built pane bars and guard them by @dastratakos in #5046
- feat(ui): a confirm says whether its act can be undone; one dialog foot by @dastratakos in #5051
- feat(ui): one PageHeader for documents by @dastratakos in #5053
- refactor(panel): file tree, shells and chapter rail float through OverPane by @dastratakos in #5043
- refactor(panel): one "Show more" row by @dastratakos in #5056
- feat(ui): select rows with ⌘ and ⇧, and a selection bar by @dastratakos in #5052
- fix(panel): Enter picks an Inbox option; ⌘Enter sends a form of several fields by @dastratakos in #5054
- feat(panel): Move up and down for every pointer, and ⇧⌘↑/↓ by @dastratakos in #5050
- refactor(panel): forms leave ConfirmDialog by @dastratakos in #5063
- refactor(panel,ui): voice notices ride the toast family by @dastratakos in #5057
- refactor(panel): Settings confirms and dialog foots by @dastratakos in #5061
- feat(ui): Toolbar owns the window bar by @dastratakos in #5058
- refactor(panel): the remaining copy buttons by @dastratakos in #5060
- refactor(panel): a call's input and answer have one cut by @dastratakos in #5062
- refactor(panel): the person page names its person once by @dastratakos in #5065
- refactor(panel): the plan's title is the page's h1 by @dastratakos in #5068
- refactor(panel): plan comments and the agent box stand on one foot by @dastratakos in #5055
- refactor(panel): links out are links; New thread's Subject is optional by @dastratakos in #5059
- feat(panel): select tasks; mark done, set status, move to section, with Undo by @dastratakos in #5067
- refactor(panel): Tasks, Automations and Admin draw Toolbar by @dastratakos in #5072
- chore(lint): only CopyButton copies by @dastratakos in #5073
- fix(ui,panel): transcript find reaches the lines a cut CodeCard hides by @dastratakos in #5066
- feat(ui): the toolbar picks up a document's name once its header scrolls away by @dastratakos in #5071
- refactor(panel): Settings and the plan template name themselves once by @dastratakos in #5070
- refactor(panel): agent, person, version history and the phone head draw Toolbar by @dastratakos in #5074
- refactor(panel): delete the floating panes' keyframes by @dastratakos in #5064
- feat(panel): one command list for ⌘K and the menus by @dastratakos in #5069
- refactor(panel): Inbox, Chat and New thread draw Toolbar by @dastratakos in #5075
- feat(panel): the composer shows a call's status; one End call by @dastratakos in #5076
- chore(lint): no literal picker widths or document click-away by @dastratakos in #5078
- feat(ui): menu, combobox and card heads use the Group role by @dastratakos in #5079
- refactor(panel): the seven Undo toasts use undoToast by @dastratakos in #5080
- feat(ui): BackButton and a crumbs lead for Toolbar by @dastratakos in #5082
- chore(lint): opening a page from a button is refused by @dastratakos in #5077
- feat(ui): dialogs, popovers and submenus animate out by @dastratakos in #5088
- test(panel): the floated shells tests run fast by @dastratakos in #5083
- refactor(panel): task, agent, PR and terminal confirms by @dastratakos in #5089
- refactor(ui,panel): drop the copied headers by @dastratakos in #5081
- chore(panel): the foot's parts are private by @dastratakos in #5087
- refactor(panel): headings through Text by @dastratakos in #5093
- test(panel): the task pane switcher test leaves nothing running by @dastratakos in #5094
- feat(panel): select Inbox items; mark read, resolve by @dastratakos in #5092
- test(catalog): every ui component has an example by @dastratakos in #5090
- refactor(panel): the agent, tab and view menus read the one command list by @dastratakos in #5091
- fix(panel): the tab switcher and find bar are modal and leave by @dastratakos in #5096
- refactor(panel): delete the toolbar's CSS patches by @dastratakos in #5095
- refactor(panel): Settings, Admin, Version history and the Inbox item go back one way by @dastratakos in #5097
- refactor(panel): the 6 popover owners pass open by @dastratakos in #5098
- feat(ui): one announcer by @dastratakos in #5084
- fix(panel): folds, filters and the Tasks scroll are remembered by @dastratakos in #5100
- refactor(panel): tasks.css insets from roles by @dastratakos in #5101
- test(ui): every selectable list honours ⌘A, ⇧-click and Esc by @dastratakos in #5102
- refactor(panel): desktop.css gaps and insets from roles by @dastratakos in #5103
- refactor(panel): the automation editor, Automations and the MCP popover go back one way by @dastratakos in #5104
- chore(lint): no raw headings or literal spacing by @dastratakos in #5105
- feat(panel): reversible acts happen at once and offer Undo by @dastratakos in #5099
- chore(lint): only BackButton draws the back arrow by @dastratakos in #5107
- refactor(panel): Inbox, chat rail, Tasks list and Board heads are GroupHeaders by @dastratakos in #5106
- refactor(panel): live words through announce by @dastratakos in #5108
- chore(lint): the back arrow's last callers go to BackButton, and its guard covers BackIcon and ArrowLeftIcon by @dastratakos in #5109
- refactor(panel): Inbox, Tasks list and Board rows use menu by @dastratakos in #5111
- refactor(panel): the 11 Dialog owners pass open by @dastratakos in #5110
- refactor(ui,panel): every confirm states its loss by @dastratakos in #5112
- fix(panel): a reply is read once it is whole; Inbox arrivals are said by @dastratakos in #5113
- chore(lint): rows wire menus one way by @dastratakos in #5114
- chore(lint): every overlay holds its exit by @dastratakos in #5116
- feat(panel): arrows in the sidebar, Inbox, chat rail, Tasks list and Board by @dastratakos in #5115
- chore(lint): no hand-written live regions by @dastratakos in #5117
- refactor(panel): Settings and person heads too; delete sidebar-group-header by @dastratakos in #5118
- chore(lint): arrow keys only through the roving helper by @dastratakos in #5119
- chore(lint): stored view choices only through useKept by @dastratakos in #5120
- docs(panel): the Confirms rule names its three losses by @dastratakos in #5121
- feat(ui): GLYPH names status, checks, section, to-dos, feedback and disconnect by @dastratakos in #5122
- feat(panel): right-clicking a chosen task acts on every chosen task by @dastratakos in #5124
- fix(panel): PR headings take the Group role, paths read in mono, inline code has one look by @dastratakos in #5130
- fix(panel): the agent page's icon buttons all have a hint that matches their name, one size and a reason when off by @dastratakos in #5125
- fix(database): purge deleted tasks' and agents' conversations after seven days by @dastratakos in #5132
- fix(features,panel): a missing agent key says Connect Claude or Connect Codex and lands on its row by @dastratakos in #5128
- fix(ui,panel): a pending task value yields to the service, times out, and leaves at sign-out by @dastratakos in #5129
- feat(panel,desktop): time first paint, first usable screen, and typing by @dastratakos in #5127
- fix(panel): nest the sheet's top-corner controls on one gap by @dastratakos in #5131
- fix(panel): Automations says Only you, Open, Reading, could not, and ends its empty lines by @dastratakos in #5123
- fix(ui): a sent message's time stands at the right, its actions before it by @dastratakos in #5135
- fix(panel): Settings and Admin glyphs mean one thing, and Edit key and the star show hints by @dastratakos in #5140
- fix(ui,panel): a refused rename keeps the name you typed by @dastratakos in #5139
- feat(panel): an automation's tile wears what fires it by @dastratakos in #5141
- fix(ui): fill tabs in a PaneBar's middle grow to its room by @dastratakos in #5136
- fix(ui,panel): end an Inbox row at its time, its dot level with its title by @dastratakos in #5137
- test(catalog): shoot every example at both profiles, both themes, wide and phone width by @dastratakos in #5143
- fix(panel): the agent page says patch, transcript, Open and Luke's GitHub App by @dastratakos in #5144
- fix(ui): ease a lit button's fill in with its ground by @dastratakos in #5142
- refactor(ui,panel): container queries from one scale, written width < N, read off one narrow signal by @dastratakos in #5147
- fix(panel): the automation editor says its problems at their fields and its switch the list's way by @dastratakos in #5146
- fix(panel,ui): every surface reads one integration status; an expired one says Sign-in expired with Reconnect by @dastratakos in #5148
- fix(panel): the sidebar's tasks hold still while you read by @dastratakos in #5150
- feat(panel,service): Reset Luke acts at once, with Undo by @dastratakos in #5149
- feat(panel,ui): Linear-style Board cards, per-part hover cards, and hover cards that list everything by @dastratakos in #4824
- feat(ui): let a hover row's title run to its time, its acts taking room in hand by @dastratakos in #5152
- fix(panel): the PR tab, Chapters, Changes and the file, page and terminal tabs draw through GLYPH by @dastratakos in #5153
- feat(host,panel): fixture profiles for an agent's tabs by @dastratakos in #5138
- fix(panel): the Inbox's asks, Status, To do, Close and automations wear their own glyphs by @dastratakos in #5145
- feat(desktop): reload the window with ⌘R by @dastratakos in #5133
- fix(panel): a Board card's issue tag is the issue's chip, with its state and card by @dastratakos in #5154
- fix(panel,ui): short windows keep a composer, a to-do list and ⌘K usable by @dastratakos in #5155
- feat(panel): head every phone page with one control a corner and its title centred by @dastratakos in #4914
- fix(ui,panel): a fold's preview gives way while its body is drawn by @dastratakos in #5126
- refactor(ui,panel): TextButton's link tone gives way to quiet and accent by @dastratakos in #5156
- feat(web): the web client mounts the panel on fixture data in development by @dastratakos in #5157
- feat(panel): Luke's, GitHub's, and other agents' lines stand at the transcript's left by @dastratakos in #5134
- fix(panel): agent page errors say could not and cannot; one irreversible line by @dastratakos in #5158
- fix(panel): Tasks and the sidebar draw a repository, a section, Status and Move through GLYPH, and the card's +N −N through linesCount by @dastratakos in #5161
- fix(panel): an automation's on/off switch flips at once and toasts if refused by @dastratakos in #5159
- refactor(panel): the file tree's reading, no-match, cut-short and failed states draw in React by @dastratakos in #5164
- fix(panel,web): Settings and Admin say Reading, Luke is he, inbox is lowercase, one signed-out line by @dastratakos in #5165
- feat(panel): head a phone's task tabs and the viewer with one control a corner by @dastratakos in #4907
- fix(panel): line comments in Files changed outlive the tab by @dastratakos in #5166
- fix(panel,database): only a thread's starter deletes the whole thread by @dastratakos in #5168
- perf(panel): typing in @ and ⌘K never waits on the search by @dastratakos in #5151
- feat(host,panel,desktop): fixture profiles for an agent's page and a call by @dastratakos in #5162
- fix(web): draw the public pages' buttons with the shared theme's utilities by @dastratakos in #5163
- fix(service): an uninstalled GitHub account can be linked to another workspace by @dastratakos in #5171
- fix(panel): the Tasks List and Columns hold still while you read by @dastratakos in #5170
- fix(features,panel): GitHub's install outcomes and the repository prompt say one thing each by @dastratakos in #5169
- feat(panel): head a phone's Settings, version history, and Admin with one control a corner by @dastratakos in #4912
- fix(panel): call rows say what a press does, and an Inbox post opens its item by @dastratakos in #5160
- feat(host,panel): fixture profiles for Settings, Admin and Automations by @dastratakos in #5167
- fix(ui,panel): a dialog whose opener is gone hands focus to its neighbour by @dastratakos in #5172
- fix(panel,features): Sentry says a failed read; an integration's own error stands quoted by @dastratakos in #5173
- fix(panel,web): Sign out acts at once, and its failure says sign out by @dastratakos in #5177
- fix(panel): draw a Board card's status, priority, and assignee as the List does by @dastratakos in #5178
- fix(panel): Settings and Admin headings take their roles; tool pages stand on the bar height by @dastratakos in #5179
- fix(panel): every view menu names Group by and Order by from the command list by @dastratakos in #5182
- feat(ui,panel): one tiered search scorer, and ⌘K and @ mark why a row matched by @dastratakos in #5176
- fix(panel): renaming or archiving an agent or shell draws at once and says a refusal by @dastratakos in #5185
- fix(panel): the agent page and its tabs read through their skeletons and say Reading by @dastratakos in #5183
- fix(ui,panel): a call's status says what Luke is doing, in one set of words and glyphs by @dastratakos in #5184
- fix(panel): marks stand at the icon seats; one stroke rule by @dastratakos in #5188
- fix(panel): composer placeholders name where the words go by @dastratakos in #5180
- refactor(panel,settings): Settings' groups say who owns a setting by @dastratakos in #5187
- fix(panel): the MCP popover and Mac terminal presses show they are working by @dastratakos in #5181
- fix(panel): every press a person makes goes through press by @dastratakos in #5186
- fix(panel): the agent sign-in and GitHub token dialogs open no modal over themselves by @dastratakos in #5174
- chore(tools): one polish capture over every scene, both themes, three widths by @dastratakos in #5189
- fix(panel): confirms and failure toasts outside Settings say one verb and could not by @dastratakos in #5193
- fix(panel): ⌘K's words, groups and command rows match the menus by @dastratakos in #5190
- fix(ui,panel): the @, / and block menus and the file crumb tree fade out as they close by @dastratakos in #5191
- fix(panel): ⌘-click in the Changes tree opens the file in a tab by @dastratakos in #5194
- fix(panel): Tasks' column view is Columns, and its waits say Reading by @dastratakos in #5195
- fix(panel): assignee groups, sections and Tasks list groups slide out as their rows do by @dastratakos in #5196
- fix(panel): starting a call while one stands acts at once, with Undo by @dastratakos in #5197
- fix(panel): Settings says repository, Only you, Open and Reset to defaults, and stops explaining itself by @dastratakos in #5175
- fix(panel): the Inbox names itself lowercase mid-sentence, an item's messages aren't a "Thread", and an untitled item says so by @dastratakos in #5192
- fix(panel): plan comments, pictures and version history draw through GLYPH by @dastratakos in #5199
- fix(panel,ui): the mic button drops ⇧⌘M while the chord is withheld by @dastratakos in #5200
- fix(features,panel): an automation run says Starting…, Failed and Couldn't start by @dastratakos in #5198
- fix(panel,ui): Back's history opens from the keyboard and a tab's × names its close by @dastratakos in #5201
- fix(panel): the token, credential and Add skill dialogs open on their field by @dastratakos in #5205
- fix(panel): one pull request word map; queued, unread and a full context differ by more than colour by @dastratakos in #5204
- fix(desktop,panel): the floating call window shows a refused press by @dastratakos in #5203
- fix(panel): a worker's transcript opens what its rows name by @dastratakos in #5206
- fix(tools): polish scenes open the sidebar first at small and zoomed sizes by @dastratakos in #5207
- fix(panel): a fixture task with no agents lands its column, not its skeleton by @dastratakos in #5208
- fix(panel): a group's bulk acts are worded one way by @dastratakos in #5210
- fix(panel): removing a skill and disconnecting ChatGPT say what they really cost by @dastratakos in #5209
- fix(panel): Tasks says members, could not and cannot by @dastratakos in #5211
- fix(panel): the sidebar's and Inbox's filter chips arrive and leave on ListMotion by @dastratakos in #5212
- fix(panel): Updates' links out are links; Settings hints match their names; Invite is the form's act by @dastratakos in #5214
- fix(voice,panel): a call is a call; the call card's title through Text; Dismiss, not Got it by @dastratakos in #5215
- fix(panel): a bundle that failed to load says so, with Retry by @dastratakos in #5216
- fix(panel,settings): each Settings page says where its settings are kept by @dastratakos in #5202
- feat(panel): ⌘K offers the open task's and agent's commands by the + menu's rules by @dastratakos in #5218
- fix(panel): a task dropped on a Status, Priority or Assignee group moves at once by @dastratakos in #5213
- fix(panel): Add skill searches word by word, says repository, and caps its description by @dastratakos in #5221
- fix(panel): Coding agents' rows say an act on the button and the state beside it by @dastratakos in #5220
- fix(panel): an automation wears Zap everywhere, and its Delete is ui's bin by @dastratakos in #5217
- fix(panel,ui): name a Settings page by a link, not a Settings › path by @dastratakos in #5223
- fix(panel): a model with no credential says how to connect it, and so does a default nobody can run by @dastratakos in #5219
- fix(panel): an Inbox row's mail button shows U only on the open item by @dastratakos in #5222
- fix(panel): the plan reads at one heading scale and one block gap by @dastratakos in #5224
- fix(panel): Settings, Automations, Tasks and Chapters load through lazyRoute by @dastratakos in #5227
- fix(ui): menus, tabs, combobox and virtual rows wire their relationships by @dastratakos in #5226
- feat(panel): delete an automation from its row; the list and runs glide by @dastratakos in #5228
- fix(copy): a token the deployment cannot open says so by @dastratakos in #5229
- fix(panel): the New task card keeps a refusal's remedy by @dastratakos in #5230
- fix(panel): one rename door for the open task, which ⋯, ⌘K and the phone head all go through by @dastratakos in #5231
- fix(panel): what a reader hears on the agent page matches what is shown by @dastratakos in #5225
- fix(panel): a side panel's transcript floors at the column's text inset by @dastratakos in #5232
- fix(panel): the Tasks list folds its properties by its own width by @dastratakos in #5233
- fix(panel): Replace token and Edit key say they replace what Luke holds by @dastratakos in #5236
- fix(ui): every icon button shows its hint by @dastratakos in #5235
- fix(ui,panel): the / and @ menus spell their keys through Shortcut and their no-match through the words module by @dastratakos in #5234
- refactor(ui): Tab drops quiet and anchored, which only the catalog sets by @dastratakos in #5237
- fix(panel): the Automations list says when a refresh failed by @dastratakos in #5238
- fix(panel): Copy invite link, and Copy link on a member by @dastratakos in #5240
- fix(panel,features): a failed turn says Failed and why, never Abandoned by @dastratakos in #5239
- fix(tools): the polish runner opens ⌘K with ⌘, keeps the voice scenes to the desktop, and waits out spinners by @dastratakos in #5241
- feat(panel): reviewers and labels change at once, and a failed read offers Retry by @dastratakos in #5242
- fix(panel): the task's Inbox and New thread's To say when a read fails by @dastratakos in #5243
- feat(panel): ⌘K lists the open thing's commands first, and open files first by @dastratakos in #5244
- fix(panel): a plan thread's reply takes the caret, and its failure stands under the box by @dastratakos in #5247
- fix(panel): a paid Claude or ChatGPT plan is a subscription by @dastratakos in #5245
- fix(panel): every list-and-item screen splits by its own width by @dastratakos in #5246
- fix(panel): the sidebar's filter is named Filter, and Unarchive shows it is working by @dastratakos in #5248
- fix(panel): a sidebar task's name fades where it is cut by @dastratakos in #5250
- fix(panel): transcript to-dos, issue lists and rewind wear their own glyphs by @dastratakos in #5253
- fix(panel): transcript find counts and reaches a call's line and answer in rows not yet drawn by @dastratakos in #5251
- fix(panel): stopping or closing a Mac terminal asks first by @dastratakos in #5252
- fix(panel): version history's Back rows name the key that steps back by @dastratakos in #5254
- fix(panel): a Board column that fits its cards never scrolls by @dastratakos in #5255
- fix(panel,ui): a board card's status and priority marks stand one size, on one column by @dastratakos in #5258
- fix(settings,panel,ui): on Windows and Linux the web's shortcuts answer Ctrl, and say Ctrl by @dastratakos in #5256
- fix(panel): an integration row keeps its ⋯ beside its name at phone width by @dastratakos in #5257
- fix(panel): each narrow effect answers one trigger by @dastratakos in #5261
- fix(web,panel): the web fixture stages the board, the call's transcript and a file's body by @dastratakos in #5260
- fix(panel,ui): a queued pull request wears the orange merge glyph again by @dastratakos in #5262
- fix(panel): Admin searches match each word, its star says a failed save, and it says no match and Reading one way by @dastratakos in #5259
- fix(panel): the plan's / and @ menus and the composer's @ speak as comboboxes by @dastratakos in #5249
- fix(panel): Settings confirms say one verb, no ellipsis, and what goes; failures say could not by @dastratakos in #5263
- fix(service,panel): name an unreadable API key when an agent will not start by @dastratakos in #4737
- fix(panel): the plan template resets at once with Undo, and says what it is in its header by @dastratakos in #5264
- fix(panel): New workspace and section dialogs label their field and mark a blank name on it by @dastratakos in #5266
- fix(panel,settings): Settings search finds every row, by labels unique across pages; Experimental is newest first by @dastratakos in #5265
- fix(panel): the MCP popover's servers glide between sections by @dastratakos in #5267
- fix(panel): pinned agent tabs, Back/Forward and ⌃Tab say the live name by @dastratakos in #5268
- fix(panel): chat's continued time is a caption, its glyph gap a role, and its words say Unarchive, Reading and chat by @dastratakos in #5271
- fix(panel): leaving Settings gives focus back to what held it by @dastratakos in #5269
- fix(panel): an integration glides between Connected and Not connected by @dastratakos in #5274
- fix(panel,ui): connected services are integrations in the agent box, @ menu and automation editor by @dastratakos in #5272
- refactor(ui): delete CONFIRM_LOSS.REVERSIBLE, which no act asks with now by @dastratakos in #5273
- fix(panel): GitHub token rows say what they are for when none is saved by @dastratakos in #5275
- fix(panel): Skills' workspace group says Follows your workspace by @dastratakos in #5276
- fix(panel): the default model and the chapters model tick Saved like every other row by @dastratakos in #5277
- fix(panel): the admin pages read the app's status words and tones by @dastratakos in #5270
- fix(panel): the chat rail's rows glide and its menu says the verb alone by @dastratakos in #5278
- fix(panel): the plan card at a transcript's head gets Copy by @dastratakos in #5280
- fix(panel): Add skill says a name or description problem on its field by @dastratakos in #5281
- fix(panel): an integration's tools unroll under a turning chevron by @dastratakos in #5283
- test(panel): a refused message lets the one queued behind it go by @dastratakos in #5284
- feat(panel): New task says that ⌘⏎ on an empty box starts a bare task by @dastratakos in #5285
- fix(panel,settings): Appearance › Diffs groups its rows as View settings does by @dastratakos in #5282
- fix(panel): the Inbox's harmless no is grey, closed items stand apart from answered, and its count is orange by @dastratakos in #5279
- refactor(web,ui): the site draws its marks from @luke/ui by @dastratakos in #5287
- fix(panel): Revert and edit-and-resend say whose messages they drop by @dastratakos in #5289
- fix(panel): "is using this tab" goes once the agent stops by @dastratakos in #5290
- fix(panel): integration rows read the one status word map by @dastratakos in #5291
- docs,test(panel): the desktop can be narrow when zoomed by @dastratakos in #5293
- fix(ui,panel): no control sits inside a summary by @dastratakos in #5288
- fix(ui): ⌘K fits a phone's width by @dastratakos in #5294
- fix(panel): the fixture's tasks carry real times, and its workspace has members by @dastratakos in #5295
- feat(ui,panel): pickers and Settings search rank and mark through the one scorer by @dastratakos in #5297
- fix(panel): Files changed draws its diff on fixture data, and its tree keeps its names by @dastratakos in #5298
- fix(panel): the GitHub token row fades its name and keeps its expiry on one line by @dastratakos in #5296
- feat(ui): a hover card opens and is entered from the keyboard by @dastratakos in #5286
- feat(panel): the published pull request's menu offers Copy link by @dastratakos in #5299
- fix(panel): an integration's tools fit the room, and the plan template resets quietly by @dastratakos in #5292
- fix(panel): a file mentioned in an Inbox item opens by @dastratakos in #5301
- feat(host,panel): fixture profiles for the Inbox and the person page by @dastratakos in #5300
- fix(panel): New task's head keeps one line at phone width, its repository chip fading where cut by @dastratakos in #5302
- fix(panel): Chapters' foot keeps "Chapter N of M" whole by @dastratakos in #5308
- fix(panel): a draft browser tab's Esc clears its address first, and a refused open says so by @dastratakos in #5306
- fix(panel): the chat box takes the caret when a chat opens by @dastratakos in #5305
- fix(panel): the Keyboard shortcuts page lists the keys in context, and Esc once by @dastratakos in #5309
- fix(features,panel): a replay draws its steps as the live transcript does by @dastratakos in #5304
- fix(panel): the sidebar foot's name keeps its room beside the Offline chip by @dastratakos in #5310
- fix(panel): Cancel in Send feedback keeps the note by @dastratakos in #5311
- fix(panel): the plan document gives back half its inset in a narrow room by @dastratakos in #5312
- docs: the desktop can be narrow when zoomed by @dastratakos in #5316
- fix(panel): a terminal on a phone says where its connection stands by @dastratakos in #5313
- fix(panel): the issue picker says Reading while it reads by @dastratakos in #5315
- fix(ui): a priority's mark keeps the room around it a status's does by @dastratakos in #5314
- refactor(panel,ui): show_image's pictures and an integration's pictures are one set of tiles by @dastratakos in #5303
- feat(panel): the person page's rows have menus and glide by @dastratakos in #5307
- fix(tools): the polish capture shoots the phone at one pixel per CSS pixel by @dastratakos in #5320
- feat(panel,settings): ⌘K groups tasks by assignee, as the view menu does by @dastratakos in #5317
- fix(panel): Admin's charts pair up by their column, not the browser window by @dastratakos in #5318
- refactor(panel): the composer's Video toggle is the call's VideoToggle by @dastratakos in #5319
- fix(panel): the chat ask's note offers chat's @ list by @dastratakos in #5322
- fix(ui,panel): rings show only from the keyboard, and never mean chosen by @dastratakos in #5323
- refactor(panel): an agent's Inbox form marks Optional through FormField by @dastratakos in #5326
- fix(ui): a fold's chevron after words stays on their line by @dastratakos in #5325
- fix(panel,ui): the Viewed mark has a name, and diffs and videos hold still under reduced motion by @dastratakos in #5327
- fix(panel): the person page's sidebar act is quiet and starts with its verb; it says Needs you and inbox items by @dastratakos in #5328
- fix(panel): the Changes tab's fold, hint and pencil move as the rest of the window does by @dastratakos in #5330
- refactor(features,credentials): the sign-in pages name their tones as STATUS_TONE does by @dastratakos in #5329
- fix(panel): a Terminal tab keeps its screen when the window's link opener changes by @dastratakos in #5321
- fix(service): the coding agent's prompt says worker and member, and plan notes show the [@…] mention by @dastratakos in #5335
- fix(voice,live): the voice calls the agent its backend and the developer the developer by @dastratakos in #5334
- fix(panel): the date picker's fields have labels and say when a date can't be read by @dastratakos in #5331
- feat(panel): a thread reply stands in the thread while it sends by @dastratakos in #5336
- feat(desktop): the menu bar offers ⌘K and Move Tab Left/Right, and items that open a window end in … by @dastratakos in #5338
- fix(panel): a refused plan comment keeps its words when the box holds newer ones by @dastratakos in #5333
- fix(panel): the file tree's open file looks like an open row, and the tree keeps its width by @dastratakos in #5339
- feat(panel): an empty plan at rest says to write the plan by @dastratakos in #5340
- feat(panel,ui): a page with tabs stands its tab rows on the frame by @dastratakos in #5324
- fix(panel): an act that failed in transport answers a fixed sentence, never its own text by @dastratakos in #5341
- fix(panel): a refused read mark says so by @dastratakos in #5343
- fix(ui): Dialog and PopoverPanel leave Safari's composing keys to the input method by @dastratakos in #5342
- feat(web): the site and a joined invitation open Luke on the web by @dastratakos in #5345
- fix(panel): the feedback box counts toward its cap by @dastratakos in #5344
- refactor(ui,panel): the date picker hangs from RectFloat by @dastratakos in #5346
- perf(panel): the plan editor maps comment anchors only while a thread is open by @dastratakos in #5347
- fix(ui): a hint describes its control from the moment focus lands by @dastratakos in #5337
- fix(catalog): the catalog rings as the app does and shows the app's chords by @dastratakos in #5348
- fix(panel): a task's Inbox takes the tab bar's height, and the automation editor's groups stand a page section apart by @dastratakos in #5349
- fix(panel): dictation's Transcribing word and ring appear together by @dastratakos in #5351
- fix(ui,panel): cut words read whole, and replay masks aria-valuetext by @dastratakos in #5352
- fix(ui): Tab into a list lands on its current row by @dastratakos in #5357
- fix(panel): chat stands at the reading width and its byline actions fade by @dastratakos in #5358
- fix(ui,panel): a picture that failed to read offers Retry, apart from one that is gone by @dastratakos in #5332
- refactor(panel): plan comments set their type from roles, and floating cards draw the menu shadow by @dastratakos in #5356
- fix(panel): the file viewer's Previous, Next and Close name ←, → and Esc by @dastratakos in #5350
- fix(panel): a refused zoom says so by @dastratakos in #5353
- fix(copy): cut the slop copy that landed since the seventh sweep by @luke-agent[bot] in #5361
- fix(panel,ui): the redraw tests wait out a slow first draw, and a comments read that changes nothing redraws no plan section by @dastratakos in #5365
- fix(ui,panel): a chip says its kind and whether it is gone, and takes focus when it has a card by @dastratakos in #5355
- fix(ui,panel): the media button, video player and Mermaid draw from the palette by @dastratakos in #5362
- perf(panel): drafts are kept as you type and written to storage after a pause by @dastratakos in #5359
- feat(polish): scenes for plan comment threads and transcript floating pills by @dastratakos in #5364
- fix(ui): the palette's leftover twins, a stale comment, and attention words on their tint by @dastratakos in #5363
- fix(panel): the plan editor's comment marks follow threads opened and closed while you edit by @dastratakos in #5354
- fix(ui,panel): InlineRef, a chip's ×, message actions and suggestion cards settle on the motion tokens by @dastratakos in #5366
- fix(panel): a missing picture, a diagram and a bad date say what they are by @dastratakos in #5367
- fix(panel): pending and not-sent lines in chat and plan comments survive the account learning its id by @dastratakos in #5369
- fix(panel): a PR or issue chip says #N until GitHub answers by @dastratakos in #5368
- docs: the window's own light colours are light-dark() pairs by @dastratakos in #5372
- docs(panel): Stop and Submit review act on the press, beside merge by @dastratakos in #5371
- docs: DESIGN.md says fields wear no ring and names the real ring tokens by @dastratakos in #5360
- perf(panel): leave grammar and theme sets out of the diff highlight worker by @charleslpan in #4870
- fix(agents,panel): relaunch past the answer on the image's build, and ask a Start once by @charleslpan in #4925
- perf(agents): sends and starts answer without waiting on Realtime by @charleslpan in #4895
- fix(panel): stand every page's top row on the frame and rest pane toggles unlit by @charleslpan in #4938
- docs(agents): rewrite the testing policy from scratch by @charleslpan in #5376
- feat(ui): move rows and navigation onto Tailwind over the theme by @charleslpan in #5377
- fix(database,service): hand a line or an ask over outside the held transaction by @charleslpan in #4928
- fix(ui): a compact mark-alone chip keeps its width in Safari 26 by @dastratakos in #5384
- fix(build): skip preview builds that change nothing deployed by @charleslpan in #5381
- test(ui,catalog): delete tests that break the testing policy by @charleslpan in #5383
- feat(service): open agent sandboxes at 2 vCPUs unless the repository asks for 4 by @charleslpan in #5378
- fix(service): let an unwatched browser live view idle out by @charleslpan in #5380
- fix(database,service): retire a deleted task's sessions before its transaction by @charleslpan in #4932
- fix(database): keep a long waiter live, take back servers on a deadline, and answer a purged conversation by @charleslpan in #5390
- test(panel): delete tests that break the testing policy by @charleslpan in #5389
- fix(panel): a sidebar task's row says its status to a screen reader by @luke-agent[bot] in #5370
- fix(ui,panel): no unassigned mark on a task row in a workspace of one by @dastratakos in #5373
- fix(panel): Pinned stands once used, or while a row is dragged by @dastratakos in #5375
- fix(panel): the sidebar foot's name fades beside the Restart pill instead of being cut by @dastratakos in #5397
- fix(tools): the polish capture shoots the desktop whole, at its size, opaque, and the voice window by @dastratakos in #5394
- fix(ui,panel): a composer's attachments stand above its words, as the sent message shows them by @dastratakos in #5401
- fix(panel): ⌘K's rows line up and its filter hint reads cleanly by @dastratakos in #5404
- feat(ui): move content and text components onto shadcn/ui by @charleslpan in #5379
- fix(panel): Memory renders code, Skills keeps its source apart, and Admin's cards match by @dastratakos in #5399
- fix(ui,panel): narrow windows keep breadcrumbs legible and a wrapped title tight to its chips by @dastratakos in #5402
- fix(panel): an open plan comment card stays inside the window by @dastratakos in #5395
- fix(panel): terminal notices read in dark, the grid keeps a right margin, and an exited shell says so by @dastratakos in #5403
- fix(panel): the side panel's top stands clean under its bar by @dastratakos in #5410
- fix(panel): a composer keeps its draft when a new message arrives by @dastratakos in #5406
- fix(panel): the diff keeps its room beside the file tree, and Chapters' foot stops overlapping by @dastratakos in #5398
- fix(tools): the polish web and catalog shots keep scroll fades as they rest by @dastratakos in #5413
- fix(panel): the Tasks heading's actions show on hover and focus by @dastratakos in #5374
- fix(panel): Chat's times line up and For you is current only while it is shown by @dastratakos in #5400
- fix(anti-slop): drop the lucide baseline's row for a test #5383 deleted by @charleslpan in #5421
- fix(panel): Automations' runs line up, say each thing once, and event triggers drop "Not scheduled" by @dastratakos in #5407
- fix(ui): the working mark reads as working at desktop size by @dastratakos in #5409
- fix(ui): list motion plays only the rows in sight by @dastratakos in #5396
- refactor(panel): move the shell's stylesheets onto @luke/ui and Tailwind by @charleslpan in #5392
- fix(ui,panel): toasts and the call card clear the composer and tabs; Live is working blue; the unmute toast shows a speaker by @dastratakos in #5405
- fix(panel): every top bar lines up with its content card by @dastratakos in #5423
- fix(panel): a chat thread's reply box keeps the caret as the thread above gets its first reply by @dastratakos in #5424
- refactor(ui): a searchable menu marks its matches with SearchMatch by @charleslpan in #5426
- feat(ui): move chips, media and the call card onto shadcn by @charleslpan in https://github.com/ReviewStage/luke/pull/5382
- refactor(panel): move the work column's rules in desktop.css onto Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5411
- feat(ui): simplify the Mac command ask by @charleslpan in https://github.com/ReviewStage/luke/pull/5386
- test: delete tests outside panel and ui that break the testing policy by @charleslpan in https://github.com/ReviewStage/luke/pull/5388
- feat(panel,service): add a Runs tab listing every automation's runs by @dastratakos in https://github.com/ReviewStage/luke/pull/5422
- fix(ui): a path's crumbs follow each other with one chevron gap by @dastratakos in https://github.com/ReviewStage/luke/pull/5432
- ci: give each large test suite jobs of its own by @charleslpan in https://github.com/ReviewStage/luke/pull/5385
- feat(ui): move the page patterns onto shadcn/ui and Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5393
- fix(ui): a row's time ends at its edge again, its ⋯ coming in on hover in its place by @dastratakos in https://github.com/ReviewStage/luke/pull/5433
- fix(tools,panel): the polish fixtures mark items read and open their menus by @dastratakos in https://github.com/ReviewStage/luke/pull/5438
- fix(ui,panel): toasts clear the tab bar, the newest message and the top by @dastratakos in https://github.com/ReviewStage/luke/pull/5439
- fix(panel): drop the calls-and-dictation line under Codex's row by @charleslpan in https://github.com/ReviewStage/luke/pull/5440
- refactor(ui): add the theme roles and merge names the tasks.css slices draw with by @charleslpan in https://github.com/ReviewStage/luke/pull/5437
- refactor(ui): add the theme roles the panel's Home and Tasks page read by @charleslpan in https://github.com/ReviewStage/luke/pull/5441
- fix(panel): Chapters keeps its footer and description at 760 and on a phone by @dastratakos in https://github.com/ReviewStage/luke/pull/5442
- fix(panel): the automation editor says Where it runs, and its heading mark stands at the page role by @dastratakos in https://github.com/ReviewStage/luke/pull/5444
- docs(service): say typecheck's memory, not oxlint, keeps luke's sandboxes at 4 vCPUs by @charleslpan in https://github.com/ReviewStage/luke/pull/5436
- fix(agent-runner): release a native agent's wakeup wait past the CLI's sandbox bridge by @charleslpan in https://github.com/ReviewStage/luke/pull/5428
- fix(ui,panel): one cursor rule, Mac arrow on desktop, hand on web by @dastratakos in https://github.com/ReviewStage/luke/pull/5429
- feat(anti-slop): move testing rules from review onto lint rules and repository checks by @charleslpan in https://github.com/ReviewStage/luke/pull/5434
- fix(panel): a phone's board fits between its toolbars and a comment count clears the scrollbar by @dastratakos in https://github.com/ReviewStage/luke/pull/5446
- fix(service): keep a dead idle auth db client from crashing the instance by @charleslpan in https://github.com/ReviewStage/luke/pull/5452
- fix(ui): menus and ⌘K fit a small window, and a cut list fades by @dastratakos in https://github.com/ReviewStage/luke/pull/5443
- fix(ui,panel): small reshoot polish: chips, New thread, New task, Settings rows by @dastratakos in https://github.com/ReviewStage/luke/pull/5449
- feat(panel): an automation's agent page leads with its path, its run, and arrows through its runs by @dastratakos in https://github.com/ReviewStage/luke/pull/5450
- refactor(panel): move the board's and the plan document's rules off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5408
- refactor(panel): move a pull request's conversation off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5417
- refactor(panel): move an agent's composer and what docks over it off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5418
- refactor(panel): move pictures in words and the plan's comments off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5420
- docs: credit vendored shadcn/ui and drop a named approval by @charleslpan in https://github.com/ReviewStage/luke/pull/5457
- fix(panel): Automations' Runs rows match the Automations rows by @dastratakos in https://github.com/ReviewStage/luke/pull/5459
- fix(panel): a phone's call card clears the PR's tabs and text, video on too by @dastratakos in https://github.com/ReviewStage/luke/pull/5451
- refactor(panel): move the transcript's rules off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5414
- refactor(panel): move the pull request tab's head and Chapters view off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5416
- fix(agents): open a fresh sandbox for an eve agent whose sandbox or snapshot is gone by @charleslpan in https://github.com/ReviewStage/luke/pull/5461
- fix(host,panel): no toast for agents, Inbox items, chat or failed runs by @dastratakos in https://github.com/ReviewStage/luke/pull/5454
- fix(panel): a phone's call card clears tabs a long title pushes down, and keeps Restart video by @dastratakos in https://github.com/ReviewStage/luke/pull/5462
- fix(panel): toasts are overlays and never move the layout by @dastratakos in https://github.com/ReviewStage/luke/pull/5463
- feat(panel): count running automation agents on the sidebar and the Runs tab by @dastratakos in https://github.com/ReviewStage/luke/pull/5448
- refactor(panel): move files, the viewer, the terminal and the composer's popovers off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5419
- refactor(panel,ui): move the code and diff views' rules off tasks.css onto utilities by @charleslpan in https://github.com/ReviewStage/luke/pull/5415
- fix(service): hold GitHub API requests while GitHub says we are rate limited by @charleslpan in https://github.com/ReviewStage/luke/pull/5460
- fix(ui,panel): a document's title sits a section gap under its bar on small windows by @dastratakos in https://github.com/ReviewStage/luke/pull/5466
- fix(ui,panel): menus, ⌘K and Runs rows sit right in a small window by @dastratakos in https://github.com/ReviewStage/luke/pull/5467
- fix(panel): the board refits its pane after a resize; comment counts centre on their line and clear the open thread by @dastratakos in https://github.com/ReviewStage/luke/pull/5465
- fix(panel): New thread's To and Subject read as one mail head by @dastratakos in https://github.com/ReviewStage/luke/pull/5468
- fix(panel): an unanswered message's note drops its Retry sentence by @dastratakos in https://github.com/ReviewStage/luke/pull/5469
- fix(panel): a log keeps its newest line when the layout, not the reader, scrolls it up by @dastratakos in https://github.com/ReviewStage/luke/pull/5470
- refactor(panel): move the Inbox's rules in desktop.css onto Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5412
- fix(service): answer an agent's pull request read from its row when GitHub need not be asked by @charleslpan in https://github.com/ReviewStage/luke/pull/5471
- refactor(panel): move the places' rules in desktop.css onto Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5425
- fix(panel): on a phone, a list screen opens on its list by @dastratakos in https://github.com/ReviewStage/luke/pull/5475
- fix(panel,ui,features): error messages lose the words their buttons already say by @dastratakos in https://github.com/ReviewStage/luke/pull/5476
- fix(panel): read a task's agents' pull requests four at once, archived ones last by @charleslpan in https://github.com/ReviewStage/luke/pull/5472
- feat(service): the inbox tools answer each thread's mention by @charleslpan in https://github.com/ReviewStage/luke/pull/5435
- fix(panel): an open Inbox item's header reads cleanly in a narrow pane by @dastratakos in https://github.com/ReviewStage/luke/pull/5458
- fix(panel,ui): every box sends on Enter, Shift+Enter adds a line by @dastratakos in https://github.com/ReviewStage/luke/pull/5477
- fix(service): let repository snapshots expire on their own by @charleslpan in https://github.com/ReviewStage/luke/pull/5447
- fix(service): a message reaches its agent while GitHub cannot be asked by @dastratakos in https://github.com/ReviewStage/luke/pull/5473
- fix(service): share GitHub rate holds across instances and space writes a second apart by @charleslpan in https://github.com/ReviewStage/luke/pull/5474
- fix(service): a context ring never reads against a guessed window by @dastratakos in https://github.com/ReviewStage/luke/pull/5456
- fix(panel): previews open in a modal as large as the window, clear of the traffic lights by @dastratakos in https://github.com/ReviewStage/luke/pull/5464
- feat(panel,host,ui): add a task in place from a Tasks page group's + by @dastratakos in https://github.com/ReviewStage/luke/pull/5391
- refactor(panel): move the sidebar's rules in desktop.css onto @luke/ui and Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5387
- fix(service): send GitHub one request at a time per identity, and a rate limit on checks is no answer by @charleslpan in https://github.com/ReviewStage/luke/pull/5481
- refactor(service): put the runner and doors behind AgentMachine by @charleslpan in https://github.com/ReviewStage/luke/pull/5483
- fix(panel): code and diffs read at code size on a phone by @dastratakos in https://github.com/ReviewStage/luke/pull/5482
- fix(panel,ui): a file tab's tree fills a phone, its failure at the rows' inset by @dastratakos in https://github.com/ReviewStage/luke/pull/5487
- fix(panel): the sidebar's page rows scroll with its tasks in every room by @dastratakos in https://github.com/ReviewStage/luke/pull/5430
- feat(database): give inbox threads a channel by @dastratakos in https://github.com/ReviewStage/luke/pull/5479
- fix(panel): the fixture task's version history shows real versions by @dastratakos in https://github.com/ReviewStage/luke/pull/5484
- feat(database): add machines, devices, and the Mac queues for local agents by @charleslpan in https://github.com/ReviewStage/luke/pull/5480
- fix(service): fetch Connect tokens only when an integration is used by @charleslpan in https://github.com/ReviewStage/luke/pull/5453
- fix(web): a tab left open across a deploy reloads onto the live build by @dastratakos in https://github.com/ReviewStage/luke/pull/5490
- fix(panel): a pull request's base branch stays whole when its row runs short by @dastratakos in https://github.com/ReviewStage/luke/pull/5491
- feat(service): channels and per-channel thread reads by @dastratakos in https://github.com/ReviewStage/luke/pull/5485
- fix(panel): Admin opens as a place in the app, like Automations and Chat by @dastratakos in https://github.com/ReviewStage/luke/pull/5478
- perf(agents): stop a native agent's sandbox as soon as its turn ends by @charleslpan in https://github.com/ReviewStage/luke/pull/5445
- fix(ui,panel): row menus and ⌘K fit a small window again by @dastratakos in https://github.com/ReviewStage/luke/pull/5493
- refactor(panel): move the side panel's rules in desktop.css onto Tailwind by @charleslpan in https://github.com/ReviewStage/luke/pull/5431
- fix(panel): New thread's head reads as one, and Runs rows and bars sit right by @dastratakos in https://github.com/ReviewStage/luke/pull/5496
- chore(release): bump the workspace to 0.21.0 and write its changelog by @charleslpan in https://github.com/ReviewStage/luke/pull/5497
Full Changelog: v0.20.0...v0.21.0