Skip to content

fix(code): keep paste placeholder when backspacing newline below it - #4757

Merged
Mason Daugherty (mdrxy) merged 4 commits into
mainfrom
mdrxy/code/paste-placeholder-newline-backspace
Jul 17, 2026
Merged

fix(code): keep paste placeholder when backspacing newline below it#4757
Mason Daugherty (mdrxy) merged 4 commits into
mainfrom
mdrxy/code/paste-placeholder-newline-backspace

Conversation

@mdrxy

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

Copy link
Copy Markdown
Member

Fixed the dcode chat input deleting a collapsed [Pasted text #N] (or [image N]) placeholder when backspacing the line break on the line below it; the line break is now removed while the placeholder is preserved.


In the dcode chat input, pasting large text collapses it into a [Pasted text #N] placeholder. Pressing Enter to add a newline and then backspacing from the start of that new line deleted the entire placeholder instead of just rejoining the lines.

The cause is in _find_placeholder_span: its backwards-delete branch treats any whitespace immediately after a placeholder as an auto-inserted trailing separator and swallows the whole token with it. Since str.isspace() also matches a newline, backspacing a line break below a placeholder removed the placeholder. Restricting that branch to a literal space (the separator actually auto-inserted after media placeholders) lets a newline fall through to the default backspace, which removes only the line break and leaves the cursor at the end of the placeholder line. The same fix is applied to the shared base text area used by the inline prompts.

Made by Open SWE

Backspacing from the start of the line after a collapsed
`[Pasted text #N]` placeholder deleted the whole placeholder instead
of just joining the lines. `_find_placeholder_span` treated any
whitespace immediately following a token as an auto-inserted trailing
separator, but `str.isspace()` also matches a newline. Restrict that
branch to a literal space so a line break falls through to the default
backspace, which removes only the newline and leaves the cursor at the
end of the placeholder line.

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 15, 2026
@mdrxy
Mason Daugherty (mdrxy) marked this pull request as ready for review July 15, 2026 22:48
@mdrxy
Mason Daugherty (mdrxy) merged commit ea82538 into main Jul 17, 2026
54 checks passed
@mdrxy
Mason Daugherty (mdrxy) deleted the mdrxy/code/paste-placeholder-newline-backspace branch July 17, 2026 18:45
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
…angchain-ai#4757)

Fixed the `dcode` chat input deleting a collapsed `[Pasted text #N]` (or
`[image N]`) placeholder when backspacing the line break on the line
below it; the line break is now removed while the placeholder is
preserved.

---

In the `dcode` chat input, pasting large text collapses it into a
`[Pasted text #N]` placeholder. Pressing Enter to add a newline and then
backspacing from the start of that new line deleted the entire
placeholder instead of just rejoining the lines.

The cause is in `_find_placeholder_span`: its backwards-delete branch
treats any whitespace immediately after a placeholder as an
auto-inserted trailing separator and swallows the whole token with it.
Since `str.isspace()` also matches a newline, backspacing a line break
below a placeholder removed the placeholder. Restricting that branch to
a literal space (the separator actually auto-inserted after media
placeholders) lets a newline fall through to the default backspace,
which removes only the line break and leaves the cursor at the end of
the placeholder line. The same fix is applied to the shared base text
area used by the inline prompts.

Made by [Open
SWE](https://openswe.vercel.app/agents/79b11ee1-f326-668a-e659-c990811f4e29)

---------

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` 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.

1 participant