Skip to content

fix(code): keep chat input responsive during MCP viewer Ctrl+R reconnect - #4753

Merged
Mason Daugherty (mdrxy) merged 2 commits into
mainfrom
open-swe/mcp-viewer-reconnect-focus
Jul 15, 2026
Merged

fix(code): keep chat input responsive during MCP viewer Ctrl+R reconnect#4753
Mason Daugherty (mdrxy) merged 2 commits into
mainfrom
open-swe/mcp-viewer-reconnect-focus

Conversation

@mdrxy

@mdrxy Mason Daugherty (mdrxy) commented Jul 15, 2026

Copy link
Copy Markdown
Member

Fixed the /mcp viewer Ctrl+R reconnect blocking keyboard input until the server finished reconnecting.


Pressing Ctrl+R inside the /mcp viewer to reconnect froze the chat input until the reconnect finished. The handler scheduled _reconnect_from_viewer_safe with call_later, which awaits the coroutine inside the Textual app message pump; the multi-second server_proc.restart() then stalled the pump so key events were no longer forwarded. Running the reconnect as a detached asyncio.create_task (mirroring the force-reconnect confirm path) keeps the pump free, so input stays responsive and typed messages queue and drain once the server is ready.

Made by Open SWE

The Ctrl+R reconnect in the MCP viewer scheduled `_reconnect_from_viewer_safe`
with `call_later`, which awaits the coroutine inside the app message pump. The
multi-second `server_proc.restart()` then stalled the pump, so key events were
not forwarded and the chat input was blocked until reconnection completed.

Run the reconnect as a detached `asyncio.create_task` (mirroring the
force-reconnect confirm path) so the pump stays free and input stays responsive
during the reconnect.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@github-actions github-actions Bot added dcode Related to `deepagents-code` fix A bug fix (PATCH) internal User is a member of the `langchain-ai` GitHub organization open-swe size: S 50-199 LOC labels Jul 15, 2026
@mdrxy Mason Daugherty (mdrxy) changed the title fix(code): keep chat input responsive during MCP viewer Ctrl+R reconnect fix(code): keep chat input responsive during MCP viewer Ctrl+R reconnect Jul 15, 2026
@mdrxy
Mason Daugherty (mdrxy) marked this pull request as ready for review July 15, 2026 17:54

@open-swe open-swe Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Open SWE Review: No issues found

Open SWE reviewed this PR and found no potential bugs to report.

Open in WebView Open SWE trace

@mdrxy
Mason Daugherty (mdrxy) merged commit 28dc96d into main Jul 15, 2026
51 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the open-swe/mcp-viewer-reconnect-focus branch July 15, 2026 18:21
Mason Daugherty (mdrxy) pushed a commit that referenced this pull request Jul 16, 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.40](deepagents-code==0.1.39...deepagents-code==0.1.40)
(2026-07-16)

### Features

- Added plugin marketplace support
([#4554](#4554)).
- Added an “always allow” option to the project MCP approval prompt
([#4562](#4562)).
- Improved `/goal` workflows: criteria generation now runs server-side,
YOLO mode auto-accepts criteria, goals complete after satisfied grading,
and goal review editing now supports `Ctrl+X`
([#4754](#4754),
[#4784](#4784),
[#4781](#4781),
[#4780](#4780)).
- Reasoning effort now persists across restarts
([#4728](#4728)).
- Added a toast prompting you to re-paste when a chat paste collapses
([#4742](#4742)).

### Bug Fixes

- Tool calls awaiting approval are now surfaced correctly
([#4739](#4739)).
- Fixed transcript tail hydration when scrolled to the bottom edge
([#4733](#4733)).
- Kept chat input responsive during MCP viewer `Ctrl+R` reconnects
([#4753](#4753)).
- Improved inline free-text prompts by sharing paste handling and
matching primary-input `Ctrl+D` behavior
([#4736](#4736),
[#4729](#4729)).
- Fixed local offloaded tool results to use the real filesystem
([#4740](#4740)).
- Cleaned offloaded history when deleting a thread
([#4751](#4751)).
- Removed duplicated content from the system prompt by overwriting the
base prompt
([#4516](#4516)).
- Closed subprocess transport during install teardown
([#4735](#4735)).
- Added targeted `uv` constraints for prerelease dependencies
([#4744](#4744)).

_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>
Mason Daugherty (mdrxy) added a commit that referenced this pull request Jul 17, 2026
Typing in the chat input is no longer blocked while the `/restart`
command respawns the server.

---

Running `/restart` froze the chat input until the server finished
respawning. `_handle_restart_command` awaited the multi-second
`_restart_server_manual` (`server_proc.restart()`) directly on the
Textual message pump, so key events stopped being forwarded and the chat
input was "blocked". This is the same class of bug fixed for the MCP
viewer `Ctrl+R` reconnect path in #4753 — the fix runs the respawn as a
detached `asyncio.create_task` (mirroring the MCP viewer/force-reconnect
paths), keeping the pump free so keystrokes stay live and queued
messages drain once `ServerReady` fires.

Made by [Open
SWE](https://openswe.vercel.app/agents/a27e2ef4-b392-c236-f410-c1b9ebc533aa)

---------

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
…nnect (langchain-ai#4753)

Fixed the `/mcp` viewer Ctrl+R reconnect blocking keyboard input until
the server finished reconnecting.

---

Pressing Ctrl+R inside the `/mcp` viewer to reconnect froze the chat
input until the reconnect finished. The handler scheduled
`_reconnect_from_viewer_safe` with `call_later`, which awaits the
coroutine inside the Textual app message pump; the multi-second
`server_proc.restart()` then stalled the pump so key events were no
longer forwarded. Running the reconnect as a detached
`asyncio.create_task` (mirroring the force-reconnect confirm path) keeps
the pump free, so input stays responsive and typed messages queue and
drain once the server is ready.

Made by [Open
SWE](https://openswe.vercel.app/agents/b1d98f23-e279-dc41-4f4f-ce0818900274)

---------

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.40](langchain-ai/deepagents@deepagents-code==0.1.39...deepagents-code==0.1.40)
(2026-07-16)

### Features

- Added plugin marketplace support
([langchain-ai#4554](langchain-ai#4554)).
- Added an “always allow” option to the project MCP approval prompt
([langchain-ai#4562](langchain-ai#4562)).
- Improved `/goal` workflows: criteria generation now runs server-side,
YOLO mode auto-accepts criteria, goals complete after satisfied grading,
and goal review editing now supports `Ctrl+X`
([langchain-ai#4754](langchain-ai#4754),
[langchain-ai#4784](langchain-ai#4784),
[langchain-ai#4781](langchain-ai#4781),
[langchain-ai#4780](langchain-ai#4780)).
- Reasoning effort now persists across restarts
([langchain-ai#4728](langchain-ai#4728)).
- Added a toast prompting you to re-paste when a chat paste collapses
([langchain-ai#4742](langchain-ai#4742)).

### Bug Fixes

- Tool calls awaiting approval are now surfaced correctly
([langchain-ai#4739](langchain-ai#4739)).
- Fixed transcript tail hydration when scrolled to the bottom edge
([langchain-ai#4733](langchain-ai#4733)).
- Kept chat input responsive during MCP viewer `Ctrl+R` reconnects
([langchain-ai#4753](langchain-ai#4753)).
- Improved inline free-text prompts by sharing paste handling and
matching primary-input `Ctrl+D` behavior
([langchain-ai#4736](langchain-ai#4736),
[langchain-ai#4729](langchain-ai#4729)).
- Fixed local offloaded tool results to use the real filesystem
([langchain-ai#4740](langchain-ai#4740)).
- Cleaned offloaded history when deleting a thread
([langchain-ai#4751](langchain-ai#4751)).
- Removed duplicated content from the system prompt by overwriting the
base prompt
([langchain-ai#4516](langchain-ai#4516)).
- Closed subprocess transport during install teardown
([langchain-ai#4735](langchain-ai#4735)).
- Added targeted `uv` constraints for prerelease dependencies
([langchain-ai#4744](langchain-ai#4744)).

_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
…#4808)

Typing in the chat input is no longer blocked while the `/restart`
command respawns the server.

---

Running `/restart` froze the chat input until the server finished
respawning. `_handle_restart_command` awaited the multi-second
`_restart_server_manual` (`server_proc.restart()`) directly on the
Textual message pump, so key events stopped being forwarded and the chat
input was "blocked". This is the same class of bug fixed for the MCP
viewer `Ctrl+R` reconnect path in langchain-ai#4753 — the fix runs the respawn as a
detached `asyncio.create_task` (mirroring the MCP viewer/force-reconnect
paths), keeping the pump free so keystrokes stay live and queued
messages drain once `ServerReady` fires.

Made by [Open
SWE](https://openswe.vercel.app/agents/a27e2ef4-b392-c236-f410-c1b9ebc533aa)

---------

Co-authored-by: open-swe[bot] <open-swe@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` fix A bug fix (PATCH) internal User is a member of the `langchain-ai` GitHub organization open-swe size: S 50-199 LOC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant