Skip to content

feat(code): shutdown toast for deferred exits - #4830

Merged
Mason Daugherty (mdrxy) merged 4 commits into
mainfrom
mdrxy/code/shutdown-toast-deferred-exit
Jul 17, 2026
Merged

feat(code): shutdown toast for deferred exits#4830
Mason Daugherty (mdrxy) merged 4 commits into
mainfrom
mdrxy/code/shutdown-toast-deferred-exit

Conversation

@mdrxy

Copy link
Copy Markdown
Member

When quitting waits for unfinished work, deepagents-code now shows a brief "Finishing pending work before exit…" toast so the pause reads as intentional rather than a hang.


DeepAgentsApp.exit() only defers teardown when it must wait for an in-flight agent worker or pending fire-and-forget hooks. That wait was previously silent, so a user pressing quit could think the app had frozen. This adds a single toast on exactly that deferred path.

The notification is emitted before scheduling the _graceful_exit coroutine. Because scheduling returns control to the event loop and teardown is deferred behind at least one await, Textual's message pump gets an opportunity to render the toast before super().exit() runs. Immediate/idle exits skip this branch entirely, no delay is introduced, and the existing two-second grace period is untouched. A repeated/forced exit hits the existing force-quit guard before reaching the notify, so the toast is never duplicated (including when both wait conditions apply).

Made by Open SWE

Show a single "Finishing pending work before exit…" toast when
`DeepAgentsApp.exit()` defers teardown to wait for an unfinished agent
worker or pending hooks, so the wait reads as intentional rather than a
hang. Immediate/idle exits stay toast-free, no delay is added, the 2s
grace period is unchanged, and repeated presses hit the force-quit guard
before re-notifying.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@github-actions github-actions Bot added dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: S 50-199 LOC labels Jul 17, 2026
@mdrxy
Mason Daugherty (mdrxy) marked this pull request as ready for review July 17, 2026 19:32
@github-actions github-actions Bot added size: M 200-499 LOC and removed size: S 50-199 LOC labels Jul 17, 2026
@mdrxy
Mason Daugherty (mdrxy) merged commit a8a05f5 into main Jul 17, 2026
53 of 54 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the mdrxy/code/shutdown-toast-deferred-exit branch July 17, 2026 19:57
Mason Daugherty (mdrxy) pushed a commit that referenced this pull request Jul 17, 2026
> [!CAUTION]
> Merging this PR will automatically publish to **PyPI** and create a
**GitHub release**.

For the full release process, see
[`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md).

---

_Release notes preview: keep this section in sync with the package
`CHANGELOG.md`. The published GitHub release body is extracted from the
merged `CHANGELOG.md` by `release.yml`, not from this PR description._

---


##
[0.1.43](deepagents-code==0.1.42...deepagents-code==0.1.43)
(2026-07-17)

### Features

- Added classifier-backed Auto approval mode behind
`DEEPAGENTS_CODE_EXPERIMENTAL=1`
([#4804](#4804)).
- Added a shutdown toast for deferred exits
([#4830](#4830)).
- Task descriptions that were truncated can now be expanded by clicking
or pressing `Ctrl+O`
([#4811](#4811)).
- Debug Console clears with `Ctrl+L` now persist after reopening
([#4812](#4812)).
- Added debug logging for skill-name override collisions
([#4772](#4772)).

### Bug Fixes

- Keep chat input responsive during `/restart`
([#4808](#4808)).
- Fixed paste placeholders disappearing when backspacing a newline below
them ([#4757](#4757)).
- Made markdown `AppMessage` output selectable
([#4814](#4814)).
- Fixed live tool-group counts to include only running tools
([#4809](#4809)).
- Kept `task` timers monotonic across nested subagent human-in-the-loop
flows ([#4771](#4771)).
- Preserved goal criteria proposals when marker clearing fails
([#4785](#4785)).
- Reduced repeated probing of an unreachable Ollama daemon to once per
reload
([#4806](#4806)).
- Quieted MCP auth-skip debug logging for known patterns
([#4805](#4805)).
- Improved `/version` diagnostics for editable installs and core
dependency reporting, including surfacing `langchain-quickjs`
([#4816](#4816),
[#4813](#4813)).
- Removed the `uv install` tip from the `/version` update hint
([#4822](#4822)).

_End release notes preview._

---

> [!NOTE]
> A **New Contributors** section is appended to the GitHub release notes
automatically at publish time (see [Release
Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline),
step 2).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: langchain-oss-automated-triage[bot] <248757908+langchain-oss-automated-triage[bot]@users.noreply.github.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
When quitting waits for unfinished work, `deepagents-code` now shows a
brief "Finishing pending work before exit…" toast so the pause reads as
intentional rather than a hang.

---

`DeepAgentsApp.exit()` only defers teardown when it must wait for an
in-flight agent worker or pending fire-and-forget hooks. That wait was
previously silent, so a user pressing quit could think the app had
frozen. This adds a single toast on exactly that deferred path.

The notification is emitted before scheduling the `_graceful_exit`
coroutine. Because scheduling returns control to the event loop and
teardown is deferred behind at least one `await`, Textual's message pump
gets an opportunity to render the toast before `super().exit()` runs.
Immediate/idle exits skip this branch entirely, no delay is introduced,
and the existing two-second grace period is untouched. A repeated/forced
exit hits the existing force-quit guard before reaching the notify, so
the toast is never duplicated (including when both wait conditions
apply).

Made by [Open
SWE](https://openswe.vercel.app/agents/26e6d24a-3180-4334-b655-4075767ae45b)

---------

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
> [!CAUTION]
> Merging this PR will automatically publish to **PyPI** and create a
**GitHub release**.

For the full release process, see
[`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md).

---

_Release notes preview: keep this section in sync with the package
`CHANGELOG.md`. The published GitHub release body is extracted from the
merged `CHANGELOG.md` by `release.yml`, not from this PR description._

---


##
[0.1.43](langchain-ai/deepagents@deepagents-code==0.1.42...deepagents-code==0.1.43)
(2026-07-17)

### Features

- Added classifier-backed Auto approval mode behind
`DEEPAGENTS_CODE_EXPERIMENTAL=1`
([langchain-ai#4804](langchain-ai#4804)).
- Added a shutdown toast for deferred exits
([langchain-ai#4830](langchain-ai#4830)).
- Task descriptions that were truncated can now be expanded by clicking
or pressing `Ctrl+O`
([langchain-ai#4811](langchain-ai#4811)).
- Debug Console clears with `Ctrl+L` now persist after reopening
([langchain-ai#4812](langchain-ai#4812)).
- Added debug logging for skill-name override collisions
([langchain-ai#4772](langchain-ai#4772)).

### Bug Fixes

- Keep chat input responsive during `/restart`
([langchain-ai#4808](langchain-ai#4808)).
- Fixed paste placeholders disappearing when backspacing a newline below
them ([langchain-ai#4757](langchain-ai#4757)).
- Made markdown `AppMessage` output selectable
([langchain-ai#4814](langchain-ai#4814)).
- Fixed live tool-group counts to include only running tools
([langchain-ai#4809](langchain-ai#4809)).
- Kept `task` timers monotonic across nested subagent human-in-the-loop
flows ([langchain-ai#4771](langchain-ai#4771)).
- Preserved goal criteria proposals when marker clearing fails
([langchain-ai#4785](langchain-ai#4785)).
- Reduced repeated probing of an unreachable Ollama daemon to once per
reload
([langchain-ai#4806](langchain-ai#4806)).
- Quieted MCP auth-skip debug logging for known patterns
([langchain-ai#4805](langchain-ai#4805)).
- Improved `/version` diagnostics for editable installs and core
dependency reporting, including surfacing `langchain-quickjs`
([langchain-ai#4816](langchain-ai#4816),
[langchain-ai#4813](langchain-ai#4813)).
- Removed the `uv install` tip from the `/version` update hint
([langchain-ai#4822](langchain-ai#4822)).

_End release notes preview._

---

> [!NOTE]
> A **New Contributors** section is appended to the GitHub release notes
automatically at publish time (see [Release
Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline),
step 2).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: langchain-oss-automated-triage[bot] <248757908+langchain-oss-automated-triage[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dcode Related to `deepagents-code` feature New feature/enhancement or request for one internal User is a member of the `langchain-ai` GitHub organization size: M 200-499 LOC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant