Skip to content

v0.8.19: desktop app upgrade flow improvements, monday.com OAuth fix - #7400

Merged
waleedlatif1 merged 12 commits into
mainfrom
staging
Sep 2, 2026
Merged

v0.8.19: desktop app upgrade flow improvements, monday.com OAuth fix#7400
waleedlatif1 merged 12 commits into
mainfrom
staging

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

icecrasher321 and others added 12 commits September 1, 2026 20:00
…7382)

* fix(execution): keep terminal reconnect off runs a Sim run tool owns

The terminal's reconnect effect treated "execution pointer present and the
current execution id matches" as an orphaned run and claimed it. A Chat run
tool creates exactly that state before the server has acknowledged the run,
and opening the workflow tab in Chat re-runs the effect mid-run, so the
reconnect GET raced the execute POST's buffer init, got a 404, and logged
"Execution state is no longer available after reconnect" as a Run Error on a
run that succeeded. It also tore down the live run's store state and cleared
the pointer the tool keeps for reload recovery.

The run tool now exposes its ownership (isRunToolActiveForWorkflow) and the
reconnect effect skips a workflow whose run it owns, leaving the pointer in
place. When the tool gives up an interrupted run it notifies
subscribeToRunToolRelease subscribers and the hook re-arms its reconnect, so
the terminal re-attaches from the last persisted event the way the manual
run path already does on interruption. Runs the tool observed to completion
never notify, so a failed completion report still leaves the pointer for
bindRunToolToExecution to re-report after a reload.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(execution): classify Chat stream drops and stop async launches writing a terminal pointer

Only useExecutionStream.execute wrapped a transport failure as
SSEStreamInterruptedError; executeWorkflowWithFullLogging rethrew the raw
TypeError, so a mid-run network drop on the Chat run-tool path took the
generic branch: the tool reported "error" to Sim, the confirm route marked
the row failed, and the pointer was cleared while the server kept running
the workflow. The classifier is now one exported helper
(toStreamInterruptedError) used by both execute paths and by the shared
executor's post-acknowledgement catch, so the run tool reaches its
recoverable branch, reports "background", keeps the pointer, and releases
the run to the terminal reconnect.

Async launches wrote the terminal execution pointer only so
bindRunToolToExecution would find something after a reload, but an async
run has no reconnectable stream, so any reconnect against that pointer
404'd into the same synthetic Run Error. The tab-local pending completion
report already carries the execution id, so async launches no longer touch
the pointer and recovery answers from the pending report first, falling
back to the pointer only for a live run this tab was observing. The legacy
clearExecutionPointerAfterReport flag is still honoured for pointers older
clients left behind.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* test(copilot): type the run-tool execution mocks with the real options contract

Greptile flagged the new mock's `options: any`; the sibling abort test had the
same shape. Export WorkflowExecutionOptions from the shared executor and use it
in both, with a helper that fails the test if the run tool ever stops passing
an abort signal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(execution): recognise Firefox's NetworkError form as a stream drop

The transport-failure matcher only knew Chrome's "network error" with a
space, so Firefox's "NetworkError when attempting to fetch resource."
fell through as a plain failure. Now that every live stream shares this
classifier, match the browsers' known messages as patterns and cover each
form in the executor test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(execution): keep the stream-error predicates safe for nullish rejections

isClientDisconnectError read error.name unguarded, so a stream that rejected
with null or undefined would throw inside the catch and mask the original
failure. Both predicates now take unknown and bail on non-object values; the
executor test covers a nullish body-reader rejection.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(execution): never classify the stream layer's own errors as transport drops

An ExecutionStreamHttpError or SSEEventHandlerError whose message happened to
contain a browser transport phrase ("Failed to fetch workflow state") would
have been re-wrapped as a stream interruption, losing the HTTP status and
taking the recovery path for a run that never started. The predicate now
excludes the stream layer's typed errors before looking at message text.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
* fix(monday): support OAuth 2.1

* fix(monday): address OAuth review feedback

---------

Co-authored-by: Bill Leoutsakos <billleoutsakos@Bills-MacBook-Pro.local>
…andbox bundle (#7386)

* fix(files): index generated docs without compiling and fix the docx sandbox bundle

* fix(files): surface download aborts and sync the copilot artifact bucket to workers
* feat(credential-groups): add personal MCP OAuth connections

* fix(credential-groups): update managed MCP test fixtures

* fix(credential-groups): harden managed MCP lifecycle

* chore(db): squash managed MCP migration

* feat(mcp): add credential-scoped agent tools

* feat(credential-groups): add managed MCP connector presets

* chore: refresh PR merge state

* test(openapi): include advanced MCP agent tool

* test(mcp): align mocks with scoped execution

* test(mcp): update managed connector fixtures
* feat(workflows): expose authenticated run subjects

* fix(tests): use typed chat auth requests

* fix(auth): harden subject delegation and cookies

* fix(workflows): remove duplicate run email metadata
* fix(chat-deploy): restore output picker interactions

* fix(pickers): restore modal interactions and surface workflows

* fix(chat-deploy): surface child workflow outputs

* fix(chat-deploy): distinguish subworkflow output navigation

* fix(chat-deploy): keep selected outputs in place
* fix(desktop): harden update and quit flows

* fix(desktop): fall back from invalid releases

* fix(desktop): reject incomplete update feeds

* fix(desktop): classify invalid release feeds
#7398)

* chore(skills): remove dated patterns and redundancy from skill prompts

* chore(skills): correct provider matrix and repo-specific claims from review
…ng (#7399)

* fix(billing): coerce COST_MULTIPLIER to a number before sandbox pricing

* fix(config): treat whitespace-only numeric env values as unset in envNumber
@greptile-apps

greptile-apps Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review (273 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
docs Skipped Skipped Sep 2, 2026 6:09pm UTC

Request Review

@waleedlatif1
waleedlatif1 merged commit 82ee2e6 into main Sep 2, 2026
62 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants