Repository navigation
Vespin 0.28.0
What's Changed
- feat(service): seed the vespin-cli first-party OAuth client by @dastratakos in #6957
- feat(service): map every member MCP tool to a hosted procedure by @dastratakos in #6961
- fix(panel): draw quotes and task boxes in the editor as the read view does by @dastratakos in #6932
- feat(cli): add the vespin command's core by @dastratakos in #6959
- test(panel): wait on the app state's first read in the unreachable toast case by @dastratakos in #6967
- feat(cli): add the inbox, workspace, models, and mcp install commands by @dastratakos in #6962
- feat(web): tunnel the web tab's Sentry reports through our own origin by @charleslpan in #6969
- fix(panel): list unread threads under the Inbox's Open by @dastratakos in #6968
- feat(cli): add the task, plan, and agent commands by @dastratakos in #6965
- fix(ui): draw the Vespin MCP settings mark at a line glyph's size by @dastratakos in #6970
- fix(web): hold the support access write to the person shown, under the Mac's session by @charleslpan in #6974
- ci(cli): release the vespin command to npm and the curl install by @dastratakos in #6964
- feat(panel): float the folded sidebar as an inset pane of glass by @dastratakos in #6975
- fix(panel): keep the inset float's peek dismissible from the edge by @dastratakos in #6978
- docs(cli): add a vespin agent skill that ships in the npm package by @dastratakos in #6979
- feat(features): point the curl install at vespin 0.1.0 by @dastratakos in #6983
- feat(panel): fold Workspace connections' integrations closed by default by @charleslpan in #6977
- chore: move the contact address to founders@vespin.dev by @charleslpan in #6976
- refactor(skills): drop the skill switch, share, hashes, and Update by @charleslpan in #6895
- feat(panel): mark the summary's Inbox row with the Draft pencil by @dastratakos in #6972
- fix(ui): keep a task item's line level beside a chip in brackets by @dastratakos in #6982
- feat(host): remove a host from either side by @dastratakos in #6981
- fix(service): stop listing retired first-party OAuth clients as connected agents by @dastratakos in #6971
- fix(features): count a same-agent automation's agent once among its runs by @dastratakos in #6987
- feat(ui): draw CopyField as a command block by @dastratakos in #6973
- fix(service): keep OpenAI's whole error and plan codes on a failed Codex turn by @vespin-agent[bot] in #6988
- fix(ui): center a mail-style row's marks on its title's line by @dastratakos in #6980
- fix(panel): drop an open ask's rows from the Inbox item's hover card by @dastratakos in #6991
- fix(inbox): keep a notice's last change when a member nods to it by @dastratakos in #6994
- fix(agent-runner): offer no Codex subagents on a ChatGPT plan by @dastratakos in #6995
- feat(panel,desktop): add a Vespin CLI page to Settings and install it from the Mac app by @dastratakos in #6966
- fix(inbox): keep withdrawn asks out of the Inbox's Open by @dastratakos in #6997
- fix(ui): square the corners of a page shown inline by @dastratakos in #6998
- feat(panel): offer GitHub as a row in an empty repository menu by @dastratakos in #6996
- feat(panel): draw onboarding's team fields in New workspace by @dastratakos in #6992
- fix(inbox): keep a notice nodded to in the settled window by @dastratakos in #6999
- docs: add the Mintlify docs site with its Get started pages by @dastratakos in #6993
- fix(cli): give vespin update's script download a 30 second deadline by @dastratakos in #7000
- fix(service): clear a woken source sandbox's firewall before the copy stops it by @charleslpan in #7002
- feat(agents): page the hosted workspace agent list and vespin agent list by @dastratakos in #7006
- refactor(service): run MCP task writes through the app's operations by @dastratakos in #7013
- fix(panel): keep a message that did not go where it was sent by @dastratakos in #7001
- fix(ui): keep an inline page's frame from showing its own scroll bar by @dastratakos in #7016
- fix(panel): offer Snooze on settled Inbox threads too by @dastratakos in #6990
- refactor(service): run MCP agent and memory writes through the app's operations by @dastratakos in #7012
- fix(panel): say a refusal for good in a toast when its tab is away by @dastratakos in #7017
- fix(panel): keep an Inbox thread's place while the Inbox is hidden by @dastratakos in #7018
- feat(inbox): keep read state apart from snooze by @dastratakos in #7019
- feat(service): relay a forwarded port's TCP connections into a cloud agent's sandbox by @charleslpan in #7015
- feat(desktop): run a login shell on the Mac in a folder, over the Terminal tab's port by @charleslpan in #7009
- refactor(inbox): rename Snooze to Remind me by @dastratakos in #7024
- docs: restyle the docs site after vespin.dev by @dastratakos in #7021
- feat(panel,service): generate chapters on Haiku alone, named on the button by @dastratakos in #7027
- fix(panel): keep a thread off its end when its lines shrink for a moment by @dastratakos in #7025
- refactor(panel): drop the files viewed count from Files changed's bar by @dastratakos in #7028
- feat(service): run an agent's Mac commands on its task assignee's Mac by @charleslpan in #6985
- feat(service): delete sandboxes through @vercel/sandbox by @charleslpan in #7011
- chore(host): start a removed box's uninstall and exit, and version 0.10.0 by @dastratakos in #7026
- docs(service): document Linear's connector and the scopes it never asks for by @dastratakos in #7033
- feat(service): connect a ChatGPT plan through Codex's device-code login by @charleslpan in #7032
- chore(host): serve host 0.10.0 by @dastratakos in #7034
- feat(panel,ui): connect a ChatGPT plan in a Connect Codex dialog by @charleslpan in #7036
- feat(service,agent-runner): run Codex on a device-code ChatGPT plan by @charleslpan in #7037
- feat(service): list the ports a server listens on in an agent's cloud sandbox by @charleslpan in #7007
- feat(service): keep a base drive per workspace repository by @charleslpan in #7038
- fix(ui): keep a checkbox row's height when it is ticked by @dastratakos in #7039
- fix(service): hold a device-code plan's swap to Codex's backend paths by @charleslpan in #7041
- feat(service): mirror a cloud agent's checkout to the Mac over the tunnel by @charleslpan in #7031
- fix(panel): color a streaming reply's code block once its fence closes, not once a word by @dastratakos in #7046
- fix(service): resume an idle agent's sandbox after the send answers by @charleslpan in #7010
- perf(panel): pause endless loops on a page hidden under the full-window panel by @dastratakos in #7044
- perf(ui): leave the working mark out of the screen recording by @dastratakos in #7047
- feat(panel): set up the TanStack Query client and provider by @charleslpan in #7050
- refactor(service,host,credentials): remove the third-party ChatGPT sign-in by @charleslpan in #7052
- fix(service): stop a cloud agent's sandbox at its turn's end, past the answer by @charleslpan in #7020
- feat(web): read and write the web app's own pages through TanStack Query by @charleslpan in #7054
- feat(panel): batch page comments into a review sent as one message by @dastratakos in #7030
- fix(service): hold a transcript poll on the parts the host follows by @dastratakos in #7059
- feat(service): start the repository's run command when forwarding turns on by @charleslpan in #7049
- feat(panel,desktop): mount TanStack Router with the full route tree by @charleslpan in #7051
- fix(features,service): glide the recording's pointer in before a click lands by @dastratakos in #7042
- fix(sandbox): fail fast when a sandbox's snapshot is gone by @charleslpan in #7014
- perf(ui,panel): slide the shimmer's light on the compositor by @dastratakos in #7064
- refactor(service): rebuild each sandbox firewall write from its sources by @charleslpan in #7023
- feat(ui): draw ComboboxList's options through VirtualRows by @charleslpan in #7063
- feat(panel): open a task on its agents with its details behind Details, and add the Plans experiment by @dastratakos in #6984
- feat(host): forward a cloud agent's ports to the Mac's localhost by @charleslpan in #7062
- feat(host,panel): turn This Mac on and off with Run agents on this Mac by @dastratakos in #7022
- feat(panel): read admin data through useQuery by @charleslpan in #7061
- fix(ui): set a shimmer's copy in the type a caller's style gives its words by @dastratakos in #7066
- feat(panel): search the long menus in SearchableMenu by @charleslpan in #7068
- fix(host): back off a pushed live read that publishes nothing by @dastratakos in #7073
- fix(panel): keep Back and Forward pressable over the floating sidebar by @dastratakos in #7074
- feat(web): serve the docs at vespin.dev/docs by @dastratakos in #7069
- feat(panel): open New workspace as onboarding's stepped cards over the window by @dastratakos in #7076
- feat(panel): draw Settings › Hosts like the pages beside it by @dastratakos in #7043
- style(service): cut slop comments in maintenance by @vespin-agent[bot] in #7078
- feat(host,panel): add a Forward chip that forwards a cloud agent's ports to localhost by @charleslpan in #7065
- fix(panel): put New workspace away on sign-out and ask a page's leave first by @dastratakos in #7079
- fix(panel): draw the commit author choices with the account's own face by @dastratakos in #7080
- fix(service): remove only seals the third-party sign-in wrote by @charleslpan in #7082
- refactor(ui,panel): draw DataTable on TanStack Table by @charleslpan in #7053
- feat(service,web): boot cloud agents from a custom image built in CI by @charleslpan in #7045
- fix(desktop): let the sidebar material follow the window's key state by @charleslpan in #7086
- fix(host): end a pushed read's backoff wait once the service answers again by @dastratakos in #7089
- feat(desktop): report each process kind's CPU to Sentry every five minutes by @charleslpan in #7077
- refactor(service): name the ChatGPT seal's flow values by @charleslpan in #7091
- perf(host): save the kept lists every 30 s, the waiting writes at once by @dastratakos in #7092
- fix(host): read the repository lists again before a saved token lands by @dastratakos in #7085
- perf(host): rebuild only the task-list rows that moved by @dastratakos in #7099
- refactor(panel,web,desktop): drive window history through the router's history by @charleslpan in #7083
- refactor(ui,panel): match VirtualRows and the conversation to TanStack Virtual's docs by @charleslpan in #7087
- feat(panel): name the account and say every sign-in state on setup's tools step by @dastratakos in #7093
- feat(panel): name the GitHub owners setup reached by @dastratakos in #7094
- feat(panel): hide Home's Inbox section while nothing waits by @dastratakos in #7102
- perf(ui): step the working mark without a React render, and leave the shimmer's copy out of replay by @charleslpan in #7103
- refactor(service,database): delete the eve sweep and retired sandbox upkeep by @charleslpan in #7067
- docs: add Vespin MCP, Automations, Slack, and Keyboard shortcuts pages by @dastratakos in #7101
- fix(ui,panel): draw the device-code connect dialog through Dialog's own head by @charleslpan in #7105
- feat(panel): read self-contained act-port reads through useQuery by @charleslpan in #7058
- test(host): close the entity store's test stores before their folder goes by @dastratakos in #7106
- refactor(service): remove the eve dependency by @charleslpan in #7107
- fix(ui): keep a ListRow where its virtual run places it by @charleslpan in #7109
- feat(desktop,features): profile a sample of desktop launches in Sentry by @charleslpan in #7084
- test(panel): hold Home's Inbox read failure with nothing waiting by @dastratakos in #7111
- feat(panel): say what each tool gives agents before it connects by @dastratakos in #7095
- feat(panel,ui): steer the settings search from its field, Linear-style by @dastratakos in #7108
- feat(host): mirror a cloud agent's files on the Mac by @charleslpan in #7035
- feat(ui): find an integration by the line its row says of what it gives agents by @dastratakos in #7112
- test(ui): pin where a run places each ListRow by @charleslpan in #7114
- refactor(service,host): forward only ports already listening by @charleslpan in #7113
- feat(ui,panel): draw Settings' memories and members through VirtualRows by @charleslpan in #7115
- fix(panel): require the team workspace once setup is for a team by @dastratakos in #7090
- feat(panel): send the panel root's and onboarding's acts through useMutation by @charleslpan in #7056
- feat(service): gate agents' plan tools, words, and context behind Plans by @dastratakos in #6989
- fix(host): refuse a mirror base that is not a full commit id by @charleslpan in #7119
- feat(ui,panel): draw Settings' repositories and MCP tools through VirtualRows by @charleslpan in #7120
- feat: call a task's plan its description wherever a person reads it by @dastratakos in #7096
- feat(panel): virtualize the pull request conversation, version history, and plan comments by @charleslpan in #7122
- feat(panel): quiet the task topbar, menus on right-click, tasks open on agents by @dastratakos in #7116
- feat(ui): virtualize the DataTable body by @charleslpan in #7118
- feat(panel): send task-surface writes through useMutation by @charleslpan in #7070
- test(panel): wait for the inbox item's @ list to land before reading it by @charleslpan in #7125
- feat(panel): send the agents' writes through useMutation by @charleslpan in #7081
- feat(panel): send desktop's acts through useMutation by @charleslpan in #7057
- feat(panel): hold the app-state document in the Query cache by @charleslpan in #7055
- feat(panel): send the tasks tab's writes through useMutation by @charleslpan in #7097
- feat(panel): send Settings' acts through useMutation by @charleslpan in #7071
- feat(ui,panel): draw the sidebar, person page agents, and related tasks through VirtualRows by @charleslpan in #7123
- feat(panel): read a repository's files, folders, and page sources through useQuery by @charleslpan in #7072
- feat(panel): ask an agent, an item, a task by number, a transcript page, skills, and terminals through fetchQuery by @charleslpan in #7128
- test(panel): refuse a test client nested in another by @charleslpan in #7126
- feat(panel): read a plan's version through useQuery, and a shell's list through fetchQuery by @charleslpan in #7131
- feat(panel): read a transcript block's colors through useQuery by @charleslpan in #7075
- fix(panel): stand a refused file, folder, or page-source read as its query's error by @charleslpan in #7132
- feat(panel): read app state through useQuery in task surfaces by @charleslpan in #7127
- feat(ui,panel): read pictures through useQuery by @charleslpan in #7134
- test(panel): wait out the app-state races #7127 left in two panel tests by @charleslpan in #7138
- test(panel): wait for the pull request tab's and queue dock's pictures to land by @charleslpan in #7140
- feat(panel): read an agent's changes through useQuery by @charleslpan in #7137
- feat(panel): read the core and account live reads through useQuery by @charleslpan in #7129
- feat(ui,panel): send settings rows' writes through their callers' useMutation by @charleslpan in #7135
- feat(ui,panel): give rename and the Viewing as strip their callers' mutation state by @charleslpan in #7142
- test(panel): wait on outcomes where a query or mutation hands its answer a moment late by @charleslpan in #7139
- feat(panel): write a plan's words through one scoped mutation per plan by @charleslpan in #7145
- refactor(panel): send the last act-port reads and writes off useAct by @charleslpan in #7144
- test(panel): wait for an agent's presence and an inbox form's @ list to land by @charleslpan in #7146
- feat(panel): read a comment's files, a copied picture, and an Inbox's images through pictureQuery by @charleslpan in #7147
- feat(panel): read the inbox, origin, and link standing reads through useQuery by @charleslpan in #7141
- test(panel): wait for a refused rename and a code card's lines to land by @charleslpan in #7148
- feat(panel): read the pages, browser tabs, plan, and comments reads through useQuery by @charleslpan in #7149
- feat(panel): read the pull request live reads through useQuery by @charleslpan in #7136
- feat(panel): hold each confirmed act's door as mutation options its question holds by @charleslpan in #7151
- test(panel): wait on outcomes in the Pull request tab's tests by @charleslpan in #7156
- feat(panel): read the transcript and plan history reads through useQuery by @charleslpan in #7157
- feat(panel): read the workspace and integration live reads through useQuery by @charleslpan in #7143
- test(panel): wait for the merge control before reading it, and draw each merge case afresh by @charleslpan in #7158
- feat(panel): read the automations live reads through useQuery by @charleslpan in #7150
- feat(panel): read app state through useQuery outside task surfaces by @charleslpan in #7133
- feat: rename the task's document from plan to description everywhere by @dastratakos in #7130
- fix(panel): let go of reads keyed by no account once the account changes by @charleslpan in #7164
- feat(features): point the curl install at vespin 0.2.0 by @dastratakos in #7168
- fix(ui): stack the landing hero's ball under its words below the pinned line by @dastratakos in #7160
- feat(panel): pick several repositories in one shared chip, graduate Several repositories, and drop the repository hover card by @dastratakos in #7117
- fix(panel): stand the Settings sidebar's page groups still rather than folding by @dastratakos in #7121
- feat(service): generate every title on our own Anthropic key by @dastratakos in #7008
- fix(ui,features): carry a picture read's call fault so a dropped network opens no issue by @vespin-agent[bot] in #7166
- fix(panel): draw no Back and Forward in a phone's drawer by @dastratakos in #7163
- docs(service): say chapters run on the asking member's key by @dastratakos in #7171
- refactor(panel): move Settings and Admin onto the router's routes by @charleslpan in #7124
- feat(panel): connect every credential in two steps that check off, saved on paste by @dastratakos in #6986
- feat(panel): add a Local tab with shells on the Mac in a cloud agent's mirror by @charleslpan in #7060
- test(panel): wait out Query's notify before reading the agent page by @charleslpan in #7177
- test(panel): wait for the repository listing before New task's default start by @charleslpan in #7178
- feat(panel,ui): invite a team as email chips, and edit the team workspace once made by @dastratakos in #7110
- fix(host): stop drawing an answer twice when the agent posts over it by @dastratakos in #7174
- test(panel): hand the members again before the pull request card's second draw by @charleslpan in #7180
- feat(panel): close the gap between the task's topbar and its tabs by @dastratakos in #7170
- fix(panel): read no state as the router is made, so the desktop window's first read stands by @dastratakos in #7181
- test(panel): wait out Query's notify before reading New task's Runs on by @charleslpan in #7183
- fix(panel): hang an automation's card and page on the lines it sends by @dastratakos in #7175
- test(panel): wait out Query's notify on Home and the wide pane's refused rename by @charleslpan in #7182
- test(panel): wait out Query's notify before acting on the tasks tab by @charleslpan in #7184
- fix(panel): let go of a description's kept words once another account signs in by @charleslpan in #7176
- feat(panel): delete a selection's tasks through one batch mutation by @charleslpan in #7165
- feat(panel): tick and date the description at rest through its scoped edit mutation by @charleslpan in #7167
- feat(panel): send a pull request's changes and the batched confirms through mutations of their own by @charleslpan in #7155
- feat(service,panel): name the model and key a pull request's chapters would run on by @dastratakos in #7179
- refactor(service): move every sandbox call onto @vercel/sandbox by @charleslpan in #7029
- fix(service): send a base drive's fill no snapshot expiration Vercel refuses by @charleslpan in #7191
- refactor(panel): move the Board and a person's page onto the router's routes by @charleslpan in #7154
- test(panel): wait out Query's notify on an agent's changes, chapters, and mentions by @charleslpan in #7195
- test(panel): wait out Query's notify on Automations, the sidebar's foot, and the Inbox's threads by @charleslpan in #7193
- test(panel): wait out Query's notify on a refused switch and GitHub's token picker by @charleslpan in #7194
- feat(panel): say on Home that an agent or the workspace's repositories are missing by @dastratakos in #7188
- test(panel): a review submitted while a merge is out is dropped, not queued behind it by @charleslpan in #7196
- refactor(service): keep a cloud runner's state in our database by @charleslpan in #7048
- test(panel): wait for the Conversation a thread's link chooses by @charleslpan in #7197
- test(panel): split the Inbox's settled-ask case by behavior by @charleslpan in #7198
- feat(panel): choose Inbox items from the list's head, act on all from a right-click, and show when a reminder is due by @dastratakos in #7189
- fix(panel): send a member whose token is unknown to Account, not the workspace by @dastratakos in #7199
- fix(ui): center the error screen and simplify it across desktop and web by @dastratakos in #7190
- fix(panel): list the account's own workspace again on setup's Just me by @dastratakos in #7192
- test(panel): send a member whose token read is still out to Account by @dastratakos in #7200
- refactor(panel): move the Automations pages onto the router's routes by @charleslpan in #7201
- test(panel): wait for the memory list after a delete, and give each merge control case its own budget by @charleslpan in #7206
- feat(panel,settings): keep a new account's place in setup on the account by @dastratakos in #7186
- fix(ui): size the product mark's glyph cut to its row's icon seat by @dastratakos in #7207
- feat(service): give each agent a drive forked from its repository's base drive by @charleslpan in #7205
- fix(service): let go of an opened sandbox on interruption only before its use begins by @charleslpan in #7210
- feat(ui,panel): read a confirm's act, busy and refusal from the caller's mutation by @charleslpan in #7204
- feat(service): fall back to a Preview's stand-in API key when the account's own is missing or unreadable by @charleslpan in #7218
- fix(ui,panel): let a plain click clear the sidebar's chosen tasks by @charleslpan in #7221
- refactor(panel): move a task's version history onto the router's routes by @charleslpan in #7219
- feat(panel): move port forwarding into the agent box's + menu by @charleslpan in #7216
- fix(host,panel): keep a Local shell's earlier lines across an attach by @charleslpan in #7222
- fix(ui): let a plain press on a row that cannot be chosen clear the sidebar's tasks by @charleslpan in #7224
- feat(service): open agent sandboxes with Vercel's getOrCreate under the session's name by @charleslpan in #7223
- perf(host): fetch a mirror's files from GitHub while its sandbox wakes by @charleslpan in #7225
- fix(service): spend a Preview's stand-in API key only for admins by @charleslpan in #7227
- feat(panel): give each Local terminal its own tab by @charleslpan in #7226
- fix(ui): align Settings' phone corner buttons with every other place by @dastratakos in #7215
- feat(service): resume an agent's sandbox through getOrCreate under its session's name by @charleslpan in #7231
- fix(panel): drop the development build's branch row from the sidebar by @dastratakos in #7232
- fix(ui): one title size and a centered title on every phone header by @dastratakos in #7228
- refactor(panel): move the Inbox onto the router's routes by @charleslpan in #7233
- feat(service): write agent checkouts group-writable, and drop the deepen and the per-launch chmod by @charleslpan in #7235
- refactor(panel): delete the old host-read hook and app-state slice atoms by @charleslpan in #7229
- fix(ui): hold a tagged phone title to its heading's width by @dastratakos in #7236
- feat(service): fork the source agent's drive for a continued or forked agent by @charleslpan in #7239
- fix(panel): draw the empty description's placeholder as the editor's own by @dastratakos in #7203
- fix(ui): hold a masked picked-up name or trail to a phone heading's width by @dastratakos in #7237
- feat(service): keep a cloud terminal connected until its tab closes by @charleslpan in #7245
- feat(ui): a Gmail-style select box and menu in the Inbox head by @dastratakos in #7243
- fix(panel): drop the waiting thread's title from a task's agent rows by @dastratakos in #7248
- test(panel): wait on the automation's name in the Automations runs fixture case by @charleslpan in #7249
- fix(panel): open New task over a routed place without leaving it by @dastratakos in #7244
- fix(service): write a terminal's first lease before its shell attaches by @charleslpan in #7250
- refactor(panel): one terminal session per tab that keeps its screen while hidden by @charleslpan in #7251
- feat(panel): open an agent's threads inside its card by @dastratakos in #7173
- feat(service): send the welcome email an hour after sign-up from a Resend template by @charleslpan in #7230
- fix(panel,ui): call the agent box's servers MCP servers by @dastratakos in #7254
- feat(panel): open a new agent from the column's "+" and list closed and archived agents in History by @dastratakos in #7252
- fix(panel): write a page's comment beside the Inbox in the box's editor by @dastratakos in #7240
- fix(panel): hand a terminal's size on as columns and rows alone by @charleslpan in #7259
- docs(design): name the public site's bar as a size-animation exception by @vespin-agent[bot] in #7169
- fix(panel): sleep the idle-tab tidy until the next tab falls due by @charleslpan in #7238
- fix(web): capitalize the landing card's title and give X every page's card by @dastratakos in #7208
- feat(service): put the Open in Vespin button on a thread's Slack title DM by @dastratakos in #7241
- feat(service): keep agents' CLI transcripts in the database by @charleslpan in #7253
- feat(panel): one tab per terminal, named Cloud 1 and Local 1 by @charleslpan in #7260
- feat(panel): name the Inbox's questions-only scope Questions by @dastratakos in #7269
- fix(panel): count a task's waiting threads on its ⌘K Inbox entry by @dastratakos in #7275
- fix(web): require FEEDBACK_FROM with no default sender by @charleslpan in #7268
- docs(panel): correct the inbox comments that describe behavior since removed by @dastratakos in #7242
- test(panel): wait on a saved checkbox tick after a refused save by @charleslpan in #7277
- feat(service): answer a thread's open ask from its Slack title DM by @dastratakos in #7266
- refactor(panel): read app state from the caller's QueryClient outside React by @charleslpan in #7234
- fix(panel): draw terminal tabs with the still terminal glyph, not their agent's by @charleslpan in #7270
- fix(panel): name the agent an automation's runs go to past the newest fifty by @dastratakos in #7172
- feat(panel): mark the show-sidebar button while something waits on you by @dastratakos in #7281
- feat(ui): cap a drawn count at 99+ by @dastratakos in #7271
- test(panel): settle a checkbox case's saves before reading either box by @charleslpan in #7282
- fix(panel): leave snoozed threads out of task and Home counts by @dastratakos in #7284
- fix(ui): balance the landing's headings where they wrap by @vespin-agent[bot] in #7152
- fix(web): head each changelog release with its version by @vespin-agent[bot] in #7153
- fix(ui): stand the site's footer links in a phone's 44px rows by @dastratakos in #7159
- feat(panel): drop the message preview and glyph from an inbox thread's hover card by @dastratakos in #7246
- feat(service): send sign-up and task activity to Resend for onboarding emails by @charleslpan in #7279
- feat(panel): count what waits on you in the orange figure, not the "!" by @dastratakos in #7276
- feat(host): count the Dock badge as Open lists it by @dastratakos in #7280
- feat(ui,panel): offer Reconnect and Retry as the row's button, as Connect is by @dastratakos in #7255
- fix(ui): stand the site's foot at the window's bottom on a short page by @dastratakos in #7286
- feat(panel): resolve an Inbox item at once with Undo, one word and one mark everywhere by @dastratakos in #7202
- feat(service): re-create an agent's sandbox from the Terminal and the browser through getOrCreate by @charleslpan in #7290
- refactor(ui): tag strip tabs with their kind by @charleslpan in #7294
- feat(features): add hostedCall and per-procedure refusals, proven on MCP clients by @charleslpan in #7296
- refactor(service): declare served tools once in a tool catalog with a gate table by @charleslpan in #7302
- feat(host): release a cloud terminal's sandbox after 10 idle minutes by @charleslpan in #7287
- refactor(panel): declare each strip tab kind's title, look, surface and link by @charleslpan in #7304
- refactor(panel): declare each routed place once in a places module by @charleslpan in #7306
- refactor(host): declare host acts and answer them in one hop by @charleslpan in #7298
- fix(service): clear a task's failed mark once a newer agent starts by @dastratakos in #7300
- fix(panel): drop Open on GitHub from the pull request's Files changed by @dastratakos in #7308
- refactor(service): let the machine deliver a runner's credentials by @charleslpan in #7291
- refactor(panel): declare each strip tab kind's lifecycle answers by @charleslpan in #7314
- refactor(host): declare the inbox's acts and answer them in one hop by @charleslpan in #7315
- refactor(service): one takeover module behind agent Start by @charleslpan in #7288
- fix(panel): draw a picture that shares its line with words inline, as GitHub does by @dastratakos in #7313
- fix(features): keep an undeclared refusal's status by @charleslpan in #7318
- fix(panel): ask again after an Inbox item a link finds missing by @charleslpan in #7320
- feat(panel): end a failed turn's line on Try again where a message carries the agent on by @dastratakos in #7264
- refactor(service): tell an agent each gated tool's words by its catalog offer by @charleslpan in #7324
- refactor(service): refuse a gated-off tool call at the catalog, once by @charleslpan in #7325
- refactor(host): declare the agents' acts and answer them in one hop by @charleslpan in #7316
- test(host): replay inbox writes queued under their old names by @charleslpan in #7329
- feat(panel): finish a page's review from a Review press, and edit pending comments in place by @dastratakos in #7261
- refactor(panel): let only a shell kind declare that its close ends a session by @charleslpan in #7330
- fix(panel): land the side panel at once when the window goes to another stop by @dastratakos in #7258
- fix(service): fork a base drive only once its fill is whole, and clone a checkout a relaunch finds missing by @dastratakos in #7262
- refactor(panel): switch exhaustively over strip tab kinds and retire the isXTab guards by @charleslpan in #7328
- refactor(service): let Codex declare its credentials by @charleslpan in #7299
- feat(panel): resume a cloud terminal's stopped sandbox as its tab is shown by @charleslpan in #7331
- feat(panel,ui): polish an agent's threads bars inside its card by @dastratakos in #7272
- feat(service): keep sandbox credentials on the firewall until the sandbox stops by @charleslpan in #7319
- refactor(service): let Claude Code declare its credential by @charleslpan in #7295
- test(service): call the agent tools through the catalog in their tests by @charleslpan in #7334
- refactor(host): declare the automation, skill, integration, and chapter acts by @charleslpan in #7309
- refactor(ui): draw an agent's turn end as a @repo/ui component, Connect Claude on its row by @dastratakos in #7301
- refactor(features): move the automations client onto hostedCall by @charleslpan in #7333
- refactor(features): move the task rows and tree onto hostedCall by @charleslpan in #7339
- fix(panel): list a person's agents from the live agents, in a task's own row by @dastratakos in #7256
- fix(service): report a refusal its procedure did not declare by @charleslpan in #7327
- refactor(features): move the agent client's account calls onto hostedCall by @charleslpan in #7341
- test(panel): name each tab in its own list of what the task draws by @charleslpan in #7342
- feat(panel): count what waits on you on a sidebar task's row by @dastratakos in #7278
- feat(service): count updates as well as questions in a task's to-do by @dastratakos in #7283
- feat(panel): offer a pending pull request comment's Edit and Delete in its ⋯, as every comment's by @dastratakos in #7307
- refactor(features): ask agent ports, terminals and Mac commands through hostedCall by @charleslpan in #7338
- refactor(host): declare the account and settings acts by @charleslpan in #7321
- perf(panel): look an agent up in the live list before asking the service by @dastratakos in #7345
- fix(panel): give Home's inbox rows the Inbox row's menu by @dastratakos in #7273
- refactor(features): ask installed skills and integrations through hostedCall by @charleslpan in #7335
- fix(panel): keep a review's comment safe through a pin press, a refused delete, and a folded card by @dastratakos in #7350
- refactor(panel): feed the app-state document straight into the Query cache by @charleslpan in #7274
- refactor(host): declare the workspace acts and answer them in one hop by @charleslpan in #7322
- refactor(service): renew a Codex plan's swap through the machine by @charleslpan in #7355
- refactor(features): move the workspace client onto hostedCall by @charleslpan in #7344
- fix(service): watch a mirror's new folders before telling its changes by @charleslpan in #7365
- feat(panel): show MCP servers, not their tools by @dastratakos in #7305
- refactor(host): declare the tasks acts and answer them in one hop by @charleslpan in #7323
- perf(host): follow the network from online and offline events instead of polling by @charleslpan in #7357
- feat(service)!: wake token agents on pull request activity only through the GitHub App by @charleslpan in #7354
- fix(features): flush usage counts once a minute rather than every two by @charleslpan in #7360
- perf(host): save the entity store's waiting writes when they move, not every 2 s by @charleslpan in #7371
- fix(database): delete a sandbox firewall row with its agent by @charleslpan in #7368
- feat(ui): play the Inbox at work in the landing's hero by @charleslpan in #7209
- refactor(features): ask the agent client's host and pairing calls through hostedCall by @charleslpan in #7377
- perf(host): follow This Mac's host on changes instead of every 5 seconds by @charleslpan in #7366
- fix(features): keep every workspace call's outcome as it shipped by @charleslpan in #7380
- perf(service): follow a live view's browser tab through Sync rather than a 5 s poll by @charleslpan in #7358
- feat(features,service): declare a live read once, proven on hosts by @charleslpan in #7348
- refactor(service): drop the browser bridge's redundant retry window by @charleslpan in #7384
- feat(panel): let a reply join a page's review by @dastratakos in #7265
- refactor(service,database,features): delete the eve leftovers by @charleslpan in #7378
- fix(service): stop the browser's resume retry from retrying an image still being prepared by @charleslpan in #7389
- fix(service): retire sessions within the deadlines of the clients that delete by @charleslpan in #7390
- fix(host): fail a live ask whose socket stalls instead of asking over HTTP by @charleslpan in #7388
- fix(host): settle a pending integration sign-in on demand by @charleslpan in #7383
- refactor(host): drop the missed Mac command sweep from the listening beat by @charleslpan in #7359
- fix(service): keep a queued Mac command claimable past the held read's deadline by @charleslpan in #7364
- refactor(service): renew a terminal's GitHub token at its deadline by @charleslpan in #7391
- refactor(database): clear lapsed host pairings on each start, not a sweep by @charleslpan in #7356
- refactor(ui): run timers on an Effect edge into TanStack stores, off atoms by @charleslpan in #7397
- feat(panel): forward a cloud agent's ports on their own, with a ports chip by @dastratakos in #7292
- refactor(features): move the task files, sections, pins and skills onto hostedCall by @charleslpan in #7375
- fix(database): require a sandbox firewall row's agent by @charleslpan in #7402
- refactor(features): move the device-agent client onto hostedCall by @charleslpan in #7332
- refactor(service): fold the tool path's aliases into @repo/features/agent-tools by @charleslpan in #7352
- refactor(host): shrink followedStream to its refcount by @charleslpan in #7403
- fix(panel): read GitHub's rendered HTML without a DOM parse by @dastratakos in #7404
- feat(panel): count waiting threads on the dock over an agent's box by @dastratakos in #7401
- feat(service,host,panel): pick the chapters model on the Chapters tab when both keys are saved by @dastratakos in #7187
- fix(host): back off the transcript follow's reseal and wake it on reconnect by @charleslpan in #7385
- feat(features,service): move task- and agent-scoped live reads onto the declaration by @charleslpan in #7372
- refactor(service): archive finished automation runs as they settle, not on the sweep by @charleslpan in #7353
- refactor(panel): read every task agent and pull request from the live list by @dastratakos in #7303
- chore(host): stop refetching the model catalog every hour by @charleslpan in #7382
- fix(ui,panel): open leaving links the same way on a middle-click and in admin by @dastratakos in #7407
- refactor(panel): run terminal, browser, and idle-tab timers into TanStack stores, off atoms by @charleslpan in #7409
- fix(host): ask a local agent's line claim once under the lock by @charleslpan in #7387
- fix(features): bound a hosted call's headers and body by one deadline by @charleslpan in #7396
- feat(database): drop the token agents' pull request poll table by @charleslpan in #7400
- refactor(features): move the GitHub connection client onto hostedCall and declare admin refusals narrowly by @charleslpan in #7374
- feat(service): boot agents from a per-repository base snapshot instead of drives by @charleslpan in #7373
- feat(ui): show a phone each landing moment, and overlap the devices as one set by @dastratakos in #7161
- feat(service): sign a sandbox's Codex in with host-supplied ChatGPT tokens by @charleslpan in #7337
- feat(service,database,features): store workspace environment variables and serve their API by @charleslpan in #7406
- fix(panel): keep the open Inbox thread's row when the Inbox is come back to by @dastratakos in #7419
- fix(panel): call off a hidden terminal tab's starting retry by @charleslpan in #7421
- test(web): bound the reload and hand-off plan draws by the panel's cold render by @charleslpan in #7423
- test(panel): give the threads dock's posted list its own order by @dastratakos in #7424
- fix(service): bound a send's runner lease wait under the dispatch deadline by @charleslpan in #7395
- refactor(panel): hold the shell, toasts, settings, and admin in TanStack stores, off atoms by @charleslpan in #7420
- docs(service): keep a key version while workspace variables are sealed under it by @charleslpan in #7425
- refactor(features): ask the agent client's rows and Starts through hostedCall by @charleslpan in #7405
- feat(service): hand cloud agents their workspace's environment variables by @charleslpan in #7415
- refactor(panel): hold description editing's words and pauses in TanStack stores by @charleslpan in #7426
- refactor(host): declare the port forward and Mac command acts, and narrow the operator by @charleslpan in #7413
- fix(panel): drop the Inbox count from sidebar task rows by @dastratakos in #7428
- fix(service): give a halted runner its whole bound to exit by @charleslpan in #7386
- refactor(database): delete stale withdrawn lines on the conversation's next line by @charleslpan in #7367
- refactor(service): drop the stale-firewall sweep, a launch deletes its agent's other rows by @charleslpan in #7349
- fix(ui): open an end-anchored run at its end once its scroller is laid out by @dastratakos in #7414
- feat(panel): take a long paste as a text file chip by @dastratakos in #7418
- refactor(features,service,host): declare the account- and workspace-scoped live reads once by @charleslpan in #7393
- fix(service): clear a reminder when it is canceled, rather than bring it due now by @dastratakos in #7410
- fix(settings): order the Mac command modes from least freedom to most by @dastratakos in #7432
- test(features): read a Start's and a choice's invalid request as a choice not offered by @charleslpan in #7435
- chore(release): bump the desktop to 0.28.0 and write its changelog by @dastratakos in #7436
Full Changelog: v0.27.0...v0.28.0