Skip to content

Vespin 0.28.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 00:49
· 950 commits to main since this release
50c357b

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