Skip to content

Luke 0.24.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 03:46
· 507 commits to main since this release
95ebd19

What's Changed

  • fix(service): agents write every pull request they name as a mention by @dastratakos in #5857
  • fix(database,service): read agents and Inbox items under one visibility rule each by @dastratakos in #5812
  • fix(ui): a menu row not checked keeps no check room, so its end marks reach the edge by @dastratakos in #5856
  • docs(changelog): link #5838 from 0.23.0's "didn't hear back" fix by @charleslpan in #5859
  • refactor(panel,features): draw the Inbox from the account's feed alone by @dastratakos in #5860
  • fix(panel): the Inbox's rows sort anew once the pointer leaves the list by @dastratakos in #5753
  • fix(panel): one wording for hover card notes by @dastratakos in #5861
  • feat(panel): every hover card wears its subject's glyph by @dastratakos in #5864
  • refactor(ui,panel): one hover card skeleton in the loaded card's slot by @dastratakos in #5866
  • refactor(ui,panel): list rows hang their cards beside the row by @dastratakos in #5868
  • refactor(features,database): "coding agent" becomes "agent" in their TypeScript names by @dastratakos in #5820
  • refactor(panel): the corner holds only age or state by @dastratakos in #5863
  • feat(panel): task card leads with its name and board marks by @dastratakos in #5870
  • refactor(service,host,gateway): "coding agent" becomes "agent" in their TypeScript names by @dastratakos in #5877
  • refactor(panel): server, +N faces and Inbox item cards on the shared parts by @dastratakos in #5871
  • fix(ui,panel): keyboard reaches a server card's tool descriptions by @dastratakos in #5878
  • feat(panel): an agent's own page has its Inbox tab by @dastratakos in #5874
  • feat(service,host,panel): keep an agent with no task holding its Inbox items, settled ones included by @dastratakos in #5872
  • feat(ui,panel): compact figures on the turn card by @dastratakos in #5865
  • refactor(panel): one provenance row and one time format by @dastratakos in #5869
  • feat: pin every agent through agent_pin, and key tab pins by holder by @dastratakos in #5875
  • feat(panel): show Luke's built-in tools and run_on_mac's standing in the MCP popover by @dastratakos in #5846
  • feat(panel): one pull request card wherever a PR hangs by @dastratakos in #5876
  • refactor(panel,ui,settings): "coding agent" becomes "agent" in names and words by @dastratakos in #5879
  • feat(panel,service): mentions and pull request links work for an agent with no task by @dastratakos in #5873
  • fix(copy): cut the slop copy that landed since the eleventh sweep by @luke-agent[bot] in #5881
  • refactor(service,features): the words every model reads say "agent" where they said "coding agent" by @dastratakos in #5884
  • refactor: "coding agent" wire values become "agent", and automations read both action kinds by @dastratakos in #5882
  • feat(host,panel,service): the open task's agents drawn from the live task list, their writes in the host by @charleslpan in #5885
  • refactor(database): drop the operator notice's task column by @dastratakos in #5862
  • fix(host): queue an app-state write made while another is announced by @luke-agent[bot] in #5883
  • fix(service): read public skill sources on a token, not anonymously by @charleslpan in #5837
  • fix(panel): the channels keep one shared filter when the reader switches away by @dastratakos in #5699
  • chore: remove the LUKE_SYNC flag by @charleslpan in #5887
  • feat(database,service,panel): the task list's agents carry their harness, Mac, and continues, so the tabs read nothing else by @charleslpan in #5888
  • fix(ui): show a control's hover card over the pills inside it by @dastratakos in #5777
  • feat(service): read a skill source from one archive of its commit by @charleslpan in #5886
  • refactor: automations store their action kind as "agent", still reading "coding-agent" by @dastratakos in #5889
  • docs(panel): hover card comments and data attributes match the code by @dastratakos in #5880
  • fix(panel,host): starting a task leaves no draft behind and never turns the window back by @dastratakos in #5714
  • refactor(database): name the agent's tables "agent", leaving a view under each old name by @dastratakos in #5890
  • refactor(ui,panel,settings): drop Show details and the ⌥↓ hover card entry by @dastratakos in #5893
  • revert: name the agent's tables "agent" (#5890), whose migration deadlocks in production by @dastratakos in #5898
  • refactor(database): name the agent's tables "agent", taking their locks with retries by @dastratakos in #5902
  • fix(host): remake a stopped agent VM made from an earlier sandbox image by @dastratakos in #5899
  • fix(host): close four small cleanup leaks by @dastratakos in #5901
  • refactor(database): the coding_agent* columns become agent_*, mirrored for the deploy's overlap by @dastratakos in #5897
  • refactor(host,panel): the Inbox feed reaches the panel on app state through useHostRead by @dastratakos in #5894
  • feat(service): a device reads which of its agents should still stand by @dastratakos in #5900
  • refactor: automations read their action kind as "agent" alone by @dastratakos in #5895
  • refactor(database): agents' conversations are stored as kind "agent" by @dastratakos in #5905
  • refactor(database): drop the "coding agent" overlap: views, mirrored columns, and the old kind by @dastratakos in #5906
  • refactor(database): the foreign keys other tables hold to agent drop "coding_agent" from their names by @dastratakos in #5907
  • feat(panel): ⌘K lists the workspace's automations under Automations by @dastratakos in #5912
  • fix(features): the Add hosts agent prompt installs wherever the install command does by @charleslpan in #5892
  • feat(panel,features): Add hosts shows only the install command, run on each host by @charleslpan in #5914
  • feat(host): a Mac's install command runs beside the app's This Mac by @charleslpan in #5915
  • fix(panel): an unanswered Inbox reply says to try again by @luke-agent[bot] in #5908
  • fix(ui): a choice list's row keys say nothing to a finger by @luke-agent[bot] in #5909
  • fix(panel): the Inbox pager's arrows keep the keyboard at the list's ends by @luke-agent[bot] in #5910
  • fix(panel): agent composers ask for changes and follow ups again by @dastratakos in #5911
  • feat(host): a Mac's uninstall removes exactly its own agents by @charleslpan in #5921
  • fix(panel): an Inbox row's hover shows only its ⋯, its mark and resolve in the menu by @dastratakos in #5920
  • feat(panel): a host's Remove shows the command that takes Luke off it by @charleslpan in #5923
  • fix(service,panel): read a pull request's chapters from the store by @dastratakos in #5858
  • fix(host): a VM mounts a runner folder whose path holds a space where smolvm finds it by @charleslpan in #5927
  • chore(host): version 0.2.1 by @charleslpan in #5928
  • feat(agent-runner): per-agent switched-off tools by @charleslpan in #5930
  • feat(settings): the Pilot experiment by @charleslpan in #5929
  • feat(database): tasks gain a parent task by @charleslpan in #5931
  • feat(features): the pilot agent kind by @charleslpan in #5932
  • feat(host): serve install.sh for host 0.2.1 by @charleslpan in #5935
  • feat(database): tasks gain a mode by @charleslpan in #5933
  • feat(service): the pilot can't open PRs or apply patches by @charleslpan in #5942
  • feat(service): the pilot runs without Edit and Write by @charleslpan in #5943
  • feat(service): agents under a pilot post no threads by @charleslpan in #5946
  • feat(service): the pilot's GitHub credential is read-only by @charleslpan in #5936
  • feat(panel): no New agent, Fork, or Continue under a pilot by @charleslpan in #5950
  • feat(database): tasks gain a merge policy by @charleslpan in #5938
  • fix(host): a Mac's upgrade waits for its luke-host to stop before it swaps the release by @charleslpan in #5956
  • feat(panel): New task offers Pilot by @charleslpan in #5953
  • feat(panel): child tasks nest under their parent in the sidebar by @charleslpan in #5944
  • feat(database): tasks can block other tasks by @charleslpan in #5934
  • feat(panel): only the top pilot has a composer by @charleslpan in #5954
  • feat(panel): Approve a pilot's breakdown by @charleslpan in #5940
  • feat(service): the pilot's instructions by @charleslpan in #5949
  • fix(panel): the Inbox's empty item pane says how to choose an item by @dastratakos in #5922
  • feat(panel): a parent's sidebar row counts its done child tasks by @charleslpan in #5951
  • feat(service): a task can be created with a parent by @charleslpan in #5937
  • feat(panel): a blocked task's sidebar row is marked by @charleslpan in #5945
  • feat(database): a task can't block its own blocker by @charleslpan in #5939
  • feat(service): Continue on a pilot takes over its agents by @charleslpan in #5947
  • feat(panel): a pilot task's merge-policy switch by @charleslpan in #5961
  • feat(service): a pilot task starts with a pilot by @charleslpan in #5962
  • feat(panel): New child task in the task menu by @charleslpan in #5952
  • feat(service): agents set blocks and blocked-by by @charleslpan in #5941
  • feat(service): a message to a taken-over pilot reaches the pilot that took it over by @charleslpan in #5965
  • feat(panel): a task shows and edits what blocks it by @charleslpan in #5957
  • feat(service): a continued sub-pilot keeps its starter by @charleslpan in #5955
  • feat(service): an agent can't continue the pilot that started it by @charleslpan in #5964
  • fix(panel): no Start in the terminal picker, nor Continue on an agent's page, under a pilot by @charleslpan in #5958
  • feat(service): a pilot can make a child task a pilot task by @charleslpan in #5960
  • fix(panel): the Inbox says each idea one way by @dastratakos in #5918
  • feat(service): a child task's repository can't change by @charleslpan in #5948
  • chore(service): one skills warning per session, store failures name their code by @charleslpan in #5966
  • fix(service): a Claude Code or Codex error keeps its words by @charleslpan in #5969
  • feat(service): a task's merge policy is its top task's by @charleslpan in #5963
  • test(service): split agents-app.test.ts under CI's per-file cap by @charleslpan in #5970
  • feat(ui): a streaming reply's words fade in as they land by @charleslpan in #5891
  • fix(service): Effect log annotations and report ids reach Sentry by @charleslpan in #5968
  • fix(service): an eve agent's failure keeps its cause by @charleslpan in #5971
  • fix(service): a coding agent's failed start or launch keeps why by @charleslpan in #5972
  • feat(panel): every unexpected error the app shows is reported by @charleslpan in #5973
  • feat(panel): the merge-policy switch is one Auto-merge toggle by @charleslpan in #5974
  • fix(service): a lost runner's turn keeps why it stopped by @charleslpan in #5967
  • feat(service): a hosted call continues its caller's trace by @charleslpan in #5975
  • feat: Sentry reports name the Luke account by @charleslpan in #5976
  • feat(panel): an error toast copies its details by @charleslpan in #5977
  • fix(panel): child tasks stand only under their parent in the sidebar by @charleslpan in #5980
  • fix(host): cap smolvm's seed folder so an earlier pin's seed goes by @charleslpan in #5981
  • feat(host): chat failures keep their cause up to the panel by @charleslpan in #5979
  • fix(panel): a pinned child task stands once, and a hidden one is not chosen by @charleslpan in #5982
  • feat(database): tasks gain a running switch by @charleslpan in #5985
  • feat(host): a device agent's VM lives for one turn by @charleslpan in #5984
  • feat(service): a top pilot task's running switch is set through the task route by @charleslpan in #5987
  • feat(ui): inline failure states report what they show by @charleslpan in #5986
  • feat(agent-runner): pack, verify and restore an agent's state by @charleslpan in #5988
  • feat(database): keep a device agent's saved state by @charleslpan in #5983
  • feat(service): the pilot follows Running instead of Approve by @charleslpan in #5989
  • feat(panel): the Running toggle replaces Approve and Request changes by @charleslpan in #5991
  • feat(service): Running off stops a pilot tree's agents, and on resumes them by @charleslpan in #5990
  • fix(ui): centre a list row's fold chevron on its leading mark by @charleslpan in #5993
  • feat(service): keep device agents' saved state in a private blob store by @charleslpan in #5994
  • feat(panel): a pilot task's Start and Stop button replaces the Running toggle by @charleslpan in #5995
  • feat(service): nothing wakes an agent in a stopped pilot tree by @charleslpan in #5992
  • feat(service): Stop halts a pilot tree's top pilot too by @charleslpan in #5997
  • feat(host): save an agent's state at its turn's end by @charleslpan in #5996
  • feat(host): restore an agent's saved state at a cold launch by @charleslpan in #5999
  • refactor(service): the words agents read say Start and Stop, not Running by @charleslpan in #6001
  • feat(panel): remove the Inbox's media previews by @dastratakos in #6000
  • feat(panel): inbox rows read task line, title, then preview by @dastratakos in #6003
  • feat(ui,panel): one failed mark, said beside what failed by @dastratakos in #6008
  • refactor(service): Start's words read as the developer's instruction by @charleslpan in #6009
  • fix(ui,panel): a chat opened mid-turn fades only the words that arrive after by @charleslpan in #5998
  • feat(host): keep nothing of an agent's past its warm window by @charleslpan in #6002
  • fix(panel): an unpicked model chip runs on the account default by @charleslpan in #6017
  • feat(ui,panel): code blocks headed by their language's name and file icon by @dastratakos in #6007
  • feat: graduate Local agents out of Experimental by @charleslpan in #6014
  • feat(panel): lines from others stand left under their sender by @dastratakos in #6011
  • fix(panel,service): Fast never picks a model nothing pays for by @charleslpan in #6018
  • fix(ui,panel): one dock surface, a neutral dark code ground, a failure's own words by @dastratakos in #6006
  • feat(service,wire): GitHub check lines carry each check's name, result and link by @dastratakos in #6012
  • fix(panel): words sent to another agent read as a quote by @dastratakos in #6005
  • feat(panel): tool calls read as words, not JSON by @dastratakos in #6010
  • feat(panel): pull request chips name their number alone by @dastratakos in #6016
  • feat(panel): file and website chips in tool rows and prose by @dastratakos in #6013
  • fix(service,panel): a Codex-only account defaults to GPT-6.1 Sol by @charleslpan in #6020
  • feat(ui): searchable menus rise as a sheet on a phone by @charleslpan in #6022
  • fix(ui): settings row drops its controls wherever they would squeeze its words by @charleslpan in #6023
  • feat(panel): GitHub lines as folding cards by @dastratakos in #6021
  • chore: drop an unused workspace config and trim the orchestrate skill by @charleslpan in #6024
  • feat(host): save agents' folders from before saves, one a pass by @charleslpan in #6004
  • refactor(service): the pilot runs with Edit and Write by @charleslpan in #6026
  • feat(service): a pilot can open PRs and apply patches by @charleslpan in #6027
  • refactor(service): the pilot's GitHub credential writes as any agent's does by @charleslpan in #6025
  • feat(service): a pilot does a task too small to split itself by @charleslpan in #6029
  • feat(panel): opening calls fold and name what they made by its chip by @dastratakos in #6015
  • fix(ui,panel): a reopened chat's catch-up stands, fading only text that streams live by @charleslpan in #6028
  • refactor(ui,panel): quiet notes on NoteLine, glyphs through GlyphSlot by @dastratakos in #6030
  • fix(copy): cut the slop copy that landed since the twelfth sweep by @luke-agent[bot] in #6031
  • fix(service): hold the account inbox's poll for released desktops by @charleslpan in #6033
  • feat(panel): time the Inbox's open, its items, and its answer box in Sentry by @charleslpan in #6032
  • perf(panel,ui): draw a long Inbox's rows again only where they changed by @charleslpan in #6034
  • revert: the streaming reply word fade (#5891, #5998, #6028) by @charleslpan in #6035
  • fix(host): adopt the agents an install already ran as its own by @charleslpan in #6037
  • refactor(host,panel): a chosen holder's inbox reaches the panel on app state through useHostRead by @charleslpan in #6036
  • perf(panel): draw the Inbox page again only for what it draws by @charleslpan in #6038
  • perf(panel): keep the Inbox drawn, hidden, between visits by @charleslpan in #6040
  • fix(panel): the Inbox's empty and done words say each thing one way by @luke-agent[bot] in #6041
  • fix(panel): an Inbox answer box that could not load offers Retry by @luke-agent[bot] in #6042
  • feat(panel): count which surface people open by @dastratakos in #6048
  • fix(ui): name the Mac command prompt's allow-all answer and where it is undone by @dastratakos in #6043
  • fix(ui): draw the muted robot for an agent whose harness is not known by @dastratakos in #6045
  • fix(panel): an empty Inbox says "Nothing needs you" once beside the pane by @dastratakos in #6044
  • feat(ui,panel): draw no ⋯ on Inbox rows under a coarse pointer by @dastratakos in #6047
  • fix(panel): the format toolbar stands by the words the editor shows by @dastratakos in #5978
  • feat(service): count the agent loop past its start by @dastratakos in #6049
  • feat(panel,host): record session replay only while signed in, and name the person by @dastratakos in #6050
  • fix(ui,panel): make the Inbox list read well to a screen reader by @dastratakos in #6052
  • feat: put Skills behind its experiment by @charleslpan in #6053
  • refactor(ui,panel): remove the Inbox rows' swipe, and ListRow's with it by @dastratakos in #5903
  • feat(analytics): label every product event with its platform by @dastratakos in #6046
  • feat(service): count collaboration and setup on the server by @dastratakos in #6051
  • feat(ui): inbox rows lead with a Mail-style first line by @dastratakos in #6019
  • fix(ui,panel): a finished turn's line stands flush with the agent's words by @dastratakos in #6055
  • refactor(panel,features,ui): remove the plan's live typing by @charleslpan in #6056
  • feat: put hosts behind the Bring your own host experiment by @charleslpan in #6058
  • perf(host): inbox writes stand as an overlay that neither queues nor holds back arrivals by @charleslpan in #6061
  • feat(ui,panel): say a member resolved an Inbox thread in a line of the thread by @dastratakos in #6064
  • feat: remove the pilot task's Auto-merge switch and Start/Stop button by @charleslpan in #6054
  • perf(panel): draw a chosen Inbox item first, and start what it asks for after the paint by @charleslpan in #6068
  • perf(ui,panel): draw only the Inbox rows in view, and play no motion on a channel switch by @charleslpan in #6067
  • refactor(database): drop the pilot tree's switch columns by @charleslpan in #6071
  • refactor(service,host,panel): the Inbox's channels reach the panel on app state through useHostRead by @charleslpan in #6070
  • perf(host): patch the Inbox feed by the holders a change moved by @charleslpan in #6073
  • refactor(host,panel): a chosen Inbox item's side reads come from held reads by @charleslpan in #6069
  • feat(features): leave Drizzle's migration snapshots out of chapters by default by @dastratakos in #6075
  • feat(service): drop the chapters input cap by @dastratakos in #6079
  • fix(database): keep notices open when their task or agent settles by @dastratakos in #6082
  • feat(ui,panel): fill the Inbox's open row with the accent's tint by @dastratakos in #6083
  • fix(panel): keep a parent task in the sidebar while a child task is open by @dastratakos in #6084
  • feat(panel): cut the Inbox's view options to Show and Addressed to by @dastratakos in #6086
  • feat(service): a child task takes its parent's assignee by default by @dastratakos in #6085
  • fix(ui): submenus stay open while the pointer heads for them by @dastratakos in #6087
  • feat(service,panel): let any agent edit any task's plan by its id by @charleslpan in #6088
  • feat(panel,service,features): every host row shows its setup states by @charleslpan in #6091
  • feat(agents): queue messages behind an agent's running turn by @dastratakos in #5854
  • fix(ui): pictures walked through keep their size instead of flashing large by @dastratakos in #6098
  • fix(service,features,panel): an inbox reply that landed unanswered lets go of its error by @dastratakos in #6062
  • feat(ui,panel,features): chapter rail rows that read at a glance by @dastratakos in #6102
  • feat(panel): simplify the sidebar's Tasks view options by @dastratakos in #6089
  • fix(web): serve install.sh with the origin it was fetched from by @charleslpan in #6092
  • feat(panel): move Mark all as read to the right-click menus and drop channel and task scopes by @dastratakos in #6093
  • feat(host): every host keeps its own pinned Claude Code, Codex, and gh by @charleslpan in #6097
  • feat(service,panel): let any agent see pictures and answer comments on any task by @charleslpan in #6099
  • fix(panel): no drag handle on a lone queued message by @dastratakos in #6107
  • feat(ui,panel): share the Tasks List row with a standalone related-tasks list by @dastratakos in #6106
  • feat(service,database,features): pair a host with a code by @charleslpan in #6103
  • feat(panel): remove the Inbox's Next bar and its J/K hint by @dastratakos in #6105
  • feat(service,host,panel): set a task's parent after creation, and move a relation's kind in one call by @dastratakos in #6110
  • feat(panel): the new-thread checkbox's chips open what they name by @dastratakos in #6115
  • feat(features,service,ui): Stripe as an integration, every tool offered by @charleslpan in #6112
  • feat(ui,panel): show sub-tasks and blocked state in the task card and the Tasks list by @dastratakos in #6116
  • feat(panel): queue Inbox thread replies like the agent composer by @dastratakos in #6095
  • feat(panel,ui): fold the Inbox's channels and move Add channel into its ⋯ by @dastratakos in #6109
  • feat(ui,panel): step chapters from a pager in the chapter header by @dastratakos in #6101
  • fix(ui): a task's row icon shows a queued pull request as queued by @dastratakos in #6111
  • feat(panel): approve a host's code from its link by @charleslpan in #6117
  • feat(panel,settings): remove the send-options menu beside an agent's Send by @dastratakos in #6121
  • feat(panel): split the task head into identity, properties, and work by @dastratakos in #6104
  • feat(panel): queue plan comment replies like the agent composer by @dastratakos in #6100
  • feat(panel): hold a chapter's brief to the reading width and let it fold by @dastratakos in #6096
  • feat(host): connect with a code, and uninstall from the account by @charleslpan in #6114
  • feat(panel): a New section button on the Tasks head in place of its ⋯ by @dastratakos in #6123
  • feat(panel): leave GitHub cards in the transcript collapsed by @dastratakos in #6128
  • feat(ui,panel,settings): hold Send on a touch screen to send the other way by @dastratakos in #6124
  • feat(panel): one chapter header over a chapter's list by @dastratakos in #6108
  • fix(panel): no menu row ends in "…" by @dastratakos in #6126
  • fix(panel): draw a sent line's time, count, and place at the press by @dastratakos in #6127
  • fix(ui,panel): line up the sidebar's trailing controls on shared columns by @dastratakos in #6129
  • chore(host): version 0.3.0 by @charleslpan in #6133
  • feat(panel): move a pull request's Run into the tab's ⋯ menu by @dastratakos in #6130
  • fix(agent-runner): a result naming no prompt answers nothing by @charleslpan in #6132
  • ci: run the database package's real-Postgres store tests by @dastratakos in #6119
  • fix(panel): draw Generate chapters without the sparkle icon by @dastratakos in #6137
  • feat(panel): add relations from the task menu, right-click, and ⌘K by @dastratakos in #6118
  • fix(panel): say Queued in the pull request pill while its read is out by @dastratakos in #6134
  • feat(panel,ui): show sub-tasks and relations as groups on the task head by @dastratakos in #6141
  • fix(service): an agent's Done waits on its task's open asks by @dastratakos in #6138
  • fix(panel,ui): draw the chapters rail, its loading, and its brief as the app does by @dastratakos in #6144
  • feat(host): run every host's agents straight on the box by @charleslpan in #6120
  • feat(host): clear an idle agent's folder after 7 days unused by @charleslpan in #6125
  • feat(service): marking a task Done archives its agents by @charleslpan in #6145
  • refactor(host,agent-runner): remove the host's state save and the runner's state command by @charleslpan in #6146
  • feat(host): install the host into the account that runs the script by @charleslpan in #6136
  • fix(panel,ui): stand pane toggles at the bar's edges and line the brief up with the chapter's bar by @dastratakos in #6148
  • refactor(service,features,database): remove device agents' state saves and undeclare their tables by @charleslpan in #6151
  • fix(panel,ui): inset file headers' chevrons as their ends are, and name key change files by their type's icon by @dastratakos in #6153
  • refactor(host,agent-runner): remove smolvm and the host's VM code by @charleslpan in #6157
  • feat(panel,features,service): Add hosts shows the public command and waits for the host by @charleslpan in #6113
  • feat(panel,ui): name sections in place and pick their icon from a popover by @dastratakos in #6155
  • feat(database): drop the agent-state tables by @charleslpan in #6156
  • refactor(service): remove the sandbox image's build chain by @charleslpan in #6158
  • fix(service): only an explicit Done archives a task's agents by @charleslpan in #6154
  • refactor(features,service,host,database): remove the lkh_ install token and its enroll by @charleslpan in #6160
  • refactor(panel): remove redundant Open on GitHub doors by @dastratakos in #6152
  • feat(ui,panel): show sub-task progress as a ring everywhere by @dastratakos in #6163
  • feat(panel,ui): collapse relation items and show a task row's ⋯ on hover by @dastratakos in #6164
  • feat(features,service,panel,ui): start a task related to another in one transaction by @dastratakos in #6165
  • fix(copy): cut the slop copy that landed since the thirteenth sweep by @luke-agent[bot] in #6166
  • feat(database): drop host_install_token and the install token's AGENTS.md carve-out by @charleslpan in #6161
  • feat(features,service,database,panel): tell hosts of a newer release and show their update on the row by @charleslpan in #6167
  • feat(host): switch an account install's host to a newer release once idle by @charleslpan in #6168
  • chore(host): version 0.4.0 by @charleslpan in #6169
  • feat(host): serve install.sh for host 0.4.0 by @charleslpan in #6170
  • fix(features,panel): a fold of tool calls no longer says how many failed by @charleslpan in #6173
  • fix(copy): cut the slop copy that landed since the fourteenth sweep by @luke-agent[bot] in #6174
  • chore(release): bump the workspace to 0.24.0 and write its changelog by @charleslpan in #6175

Full Changelog: v0.23.0...v0.24.0