Skip to content

fix(code): preserve Ctrl+D deletion in non-empty input - #4626

Merged
Mason Daugherty (mdrxy) merged 5 commits into
mainfrom
wbbradley/code/ctrl-d-non-empty-input
Jul 13, 2026
Merged

fix(code): preserve Ctrl+D deletion in non-empty input#4626
Mason Daugherty (mdrxy) merged 5 commits into
mainfrom
wbbradley/code/ctrl-d-non-empty-input

Conversation

@wbbradley

@wbbradley Will Bradley (wbbradley) commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Ctrl+D now deletes the character to the right in a non-empty prompt and only exits from an empty prompt.


A priority app binding intercepted Ctrl+D before the focused chat text area could apply its standard delete-right behavior. Delegate Ctrl+D to the focused text area while a draft exists, and retain quit behavior for an empty prompt and existing modal flows.

Made by Open SWE

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 size: S 50-199 LOC labels Jul 10, 2026

@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 found 1 potential issue.

Open in WebView Open SWE trace

Comment thread libs/code/deepagents_code/app.py Outdated
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
@wbbradley
Will Bradley (wbbradley) marked this pull request as ready for review July 10, 2026 05:30

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.

Just a couple new lines for readability, nbd either way. Thanks for submitting this!

Comment thread libs/code/deepagents_code/app.py
Comment thread libs/code/deepagents_code/app.py
@mdrxy Mason Daugherty (mdrxy) changed the title fix(code): preserve Ctrl+D deletion in non-empty input fix(code): preserve Ctrl+D deletion in non-empty input Jul 13, 2026
@mdrxy
Mason Daugherty (mdrxy) merged commit 306bd89 into main Jul 13, 2026
63 of 65 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the wbbradley/code/ctrl-d-non-empty-input branch July 13, 2026 06:19
Mason Daugherty (mdrxy) added a commit that referenced this pull request Jul 13, 2026
Follow-up to #4626.

`Ctrl+D` now quits Deep Agents Code when the cursor is at the end of the
prompt, including when the prompt contains text. It continues to delete
selected text or content to the right of the cursor.

---

After #4626, `Ctrl+D` preserves its delete-right behavior whenever the
prompt contains a draft. At the end of a non-empty prompt, however,
there is nothing to delete and the key does nothing.

Treat the end of the prompt like the empty-prompt case: `Ctrl+D` quits
when there is no selection and no content to the right. It continues to
delete selected text, delete the next character, or join multiline input
when the cursor is not at the true end of the prompt.
Mason Daugherty (mdrxy) added a commit that referenced this pull request Jul 13, 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.37](deepagents-code==0.1.36...deepagents-code==0.1.37)
(2026-07-13)

### Features

* Add Meta model provider
([#4650](#4650))
([70829c5](70829c5))
* Set `prompt_cache_key` for OpenAI models
([#4632](#4632))
([8cf57ac](8cf57ac))
* Support Fireworks `/routers` model ids
([#4591](#4591))
([1c08d27](1c08d27))
* `/model` Ctrl+N toggle for names vs raw specs
([#4592](#4592))
([518c322](518c322))
* `/tools` slash command
([#4649](#4649))
([b1600a8](b1600a8))
* Add `-s` alias for `--skill`
([#4620](#4620))
([c9b7ac2](c9b7ac2))
* Configurable chat cursor style
([#4687](#4687))
([a22484b](a22484b))
* Expand environment variables in MCP config
([#4681](#4681))
([4f5d7be](4f5d7be))
* Hide diff widget for credential files
([#4593](#4593))
([4c49a24](4c49a24))
* In-app Debug Console
([#4564](#4564))
([4f94a30](4f94a30))
* Offer abort in `/threads` cwd-switch prompt
([#4583](#4583))
([aaeac99](aaeac99))
* Resume threads in-TUI with `/threads -r [ID]`
([#4609](#4609))
([d442673](d442673))
* Show `(debug enabled)` on splash when `DEEPAGENTS_CODE_DEBUG` is set
([#4584](#4584))
([f10b877](f10b877))

### Bug Fixes

* Avoid repeated startup auto-update stalls
([#4648](#4648))
([12a9c9d](12a9c9d))
* Infer Fireworks provider from qualified model IDs
([#4594](#4594))
([4d2aa8a](4d2aa8a))
* Capture input typed before TUI startup
([#4684](#4684))
([ef9a4a8](ef9a4a8))
* Detach owned `langgraph dev` server from terminal
([#4642](#4642))
([d1f3afe](d1f3afe))
* Infer additional model providers
([#4675](#4675))
([4ceed24](4ceed24))
* Preserve `Ctrl+D` deletion in non-empty input
([#4626](#4626))
([306bd89](306bd89))
* Quit with `Ctrl+D` at end of prompt
([#4678](#4678))
([2f8c111](2f8c111))
* Reap langgraph dev server when startup is cancelled
([#4629](#4629))
([904ff05](904ff05))
* Reject `--auto-approve` in headless mode
([#4617](#4617))
([997be16](997be16))
* Route explicit `--stdin` + `--skill` to headless path
([#4611](#4611))
([724e24a](724e24a))
* Skip Esc prompt-restore once output generation begins
([#4582](#4582))
([14f384f](14f384f))
* Remove misleading agent names from help
([#4671](#4671))
([ac15732](ac15732))
* Support plain `exit` quit command
([#4543](#4543))
([e6f10a1](e6f10a1))
* Sync `ask_user` active-question highlight with focus
([#4599](#4599))
([e4c29b5](e4c29b5))
* Wrap MCP viewer navigation
([#4677](#4677))
([cffc732](cffc732))

### Performance Improvements

* Load MCP servers concurrently during graph build
([#4659](#4659))
([c5345cc](c5345cc))

---

_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: Mason Daugherty <github@mdrxy.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
…i#4626)

Ctrl+D now deletes the character to the right in a non-empty prompt and
only exits from an empty prompt.

---

A priority app binding intercepted Ctrl+D before the focused chat text
area could apply its standard delete-right behavior. Delegate Ctrl+D to
the focused text area while a draft exists, and retain quit behavior for
an empty prompt and existing modal flows.

Made by [Open
SWE](https://openswe.vercel.app/agents/9c524bf4-b1c3-5e11-d131-8d5d44be990b)

---------

Co-authored-by: Will Bradley <3030224+wbbradley@users.noreply.github.com>
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Co-authored-by: Mason Daugherty <mason@langchain.dev>
Co-authored-by: Mason Daugherty <github@mdrxy.com>
Marcelo5444 pushed a commit to Marcelo5444/deepagents that referenced this pull request Jul 30, 2026
Follow-up to langchain-ai#4626.

`Ctrl+D` now quits Deep Agents Code when the cursor is at the end of the
prompt, including when the prompt contains text. It continues to delete
selected text or content to the right of the cursor.

---

After langchain-ai#4626, `Ctrl+D` preserves its delete-right behavior whenever the
prompt contains a draft. At the end of a non-empty prompt, however,
there is nothing to delete and the key does nothing.

Treat the end of the prompt like the empty-prompt case: `Ctrl+D` quits
when there is no selection and no content to the right. It continues to
delete selected text, delete the next character, or join multiline input
when the cursor is not at the true end of the prompt.
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.37](langchain-ai/deepagents@deepagents-code==0.1.36...deepagents-code==0.1.37)
(2026-07-13)

### Features

* Add Meta model provider
([langchain-ai#4650](langchain-ai#4650))
([70829c5](langchain-ai@70829c5))
* Set `prompt_cache_key` for OpenAI models
([langchain-ai#4632](langchain-ai#4632))
([8cf57ac](langchain-ai@8cf57ac))
* Support Fireworks `/routers` model ids
([langchain-ai#4591](langchain-ai#4591))
([1c08d27](langchain-ai@1c08d27))
* `/model` Ctrl+N toggle for names vs raw specs
([langchain-ai#4592](langchain-ai#4592))
([518c322](langchain-ai@518c322))
* `/tools` slash command
([langchain-ai#4649](langchain-ai#4649))
([b1600a8](langchain-ai@b1600a8))
* Add `-s` alias for `--skill`
([langchain-ai#4620](langchain-ai#4620))
([c9b7ac2](langchain-ai@c9b7ac2))
* Configurable chat cursor style
([langchain-ai#4687](langchain-ai#4687))
([a22484b](langchain-ai@a22484b))
* Expand environment variables in MCP config
([langchain-ai#4681](langchain-ai#4681))
([4f5d7be](langchain-ai@4f5d7be))
* Hide diff widget for credential files
([langchain-ai#4593](langchain-ai#4593))
([4c49a24](langchain-ai@4c49a24))
* In-app Debug Console
([langchain-ai#4564](langchain-ai#4564))
([4f94a30](langchain-ai@4f94a30))
* Offer abort in `/threads` cwd-switch prompt
([langchain-ai#4583](langchain-ai#4583))
([aaeac99](langchain-ai@aaeac99))
* Resume threads in-TUI with `/threads -r [ID]`
([langchain-ai#4609](langchain-ai#4609))
([d442673](langchain-ai@d442673))
* Show `(debug enabled)` on splash when `DEEPAGENTS_CODE_DEBUG` is set
([langchain-ai#4584](langchain-ai#4584))
([f10b877](langchain-ai@f10b877))

### Bug Fixes

* Avoid repeated startup auto-update stalls
([langchain-ai#4648](langchain-ai#4648))
([12a9c9d](langchain-ai@12a9c9d))
* Infer Fireworks provider from qualified model IDs
([langchain-ai#4594](langchain-ai#4594))
([4d2aa8a](langchain-ai@4d2aa8a))
* Capture input typed before TUI startup
([langchain-ai#4684](langchain-ai#4684))
([ef9a4a8](langchain-ai@ef9a4a8))
* Detach owned `langgraph dev` server from terminal
([langchain-ai#4642](langchain-ai#4642))
([d1f3afe](langchain-ai@d1f3afe))
* Infer additional model providers
([langchain-ai#4675](langchain-ai#4675))
([4ceed24](langchain-ai@4ceed24))
* Preserve `Ctrl+D` deletion in non-empty input
([langchain-ai#4626](langchain-ai#4626))
([306bd89](langchain-ai@306bd89))
* Quit with `Ctrl+D` at end of prompt
([langchain-ai#4678](langchain-ai#4678))
([2f8c111](langchain-ai@2f8c111))
* Reap langgraph dev server when startup is cancelled
([langchain-ai#4629](langchain-ai#4629))
([904ff05](langchain-ai@904ff05))
* Reject `--auto-approve` in headless mode
([langchain-ai#4617](langchain-ai#4617))
([997be16](langchain-ai@997be16))
* Route explicit `--stdin` + `--skill` to headless path
([langchain-ai#4611](langchain-ai#4611))
([724e24a](langchain-ai@724e24a))
* Skip Esc prompt-restore once output generation begins
([langchain-ai#4582](langchain-ai#4582))
([14f384f](langchain-ai@14f384f))
* Remove misleading agent names from help
([langchain-ai#4671](langchain-ai#4671))
([ac15732](langchain-ai@ac15732))
* Support plain `exit` quit command
([langchain-ai#4543](langchain-ai#4543))
([e6f10a1](langchain-ai@e6f10a1))
* Sync `ask_user` active-question highlight with focus
([langchain-ai#4599](langchain-ai#4599))
([e4c29b5](langchain-ai@e4c29b5))
* Wrap MCP viewer navigation
([langchain-ai#4677](langchain-ai#4677))
([cffc732](langchain-ai@cffc732))

### Performance Improvements

* Load MCP servers concurrently during graph build
([langchain-ai#4659](langchain-ai#4659))
([c5345cc](langchain-ai@c5345cc))

---

_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: Mason Daugherty <github@mdrxy.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 size: S 50-199 LOC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants