Skip to content

Fix shellv2 multi-line code paste parsing#2092

Merged
KCarretto merged 4 commits intomainfrom
fix-shellv2-paste-multiline-16086420678191050824
Mar 16, 2026
Merged

Fix shellv2 multi-line code paste parsing#2092
KCarretto merged 4 commits intomainfrom
fix-shellv2-paste-multiline-16086420678191050824

Conversation

@KCarretto
Copy link
Collaborator

Fixes a bug where pasting multiline code into shellv2 prematurely evaluated logic due to empty lines exiting the current BrowserRepl block. Instead of handling pastes character-by-character, it now delegates the full string block to BrowserWasmAdapter.


PR created automatically by Jules for task 16086420678191050824 started by @KCarretto

When users pasted multiline string blocks (e.g. from Python code),
the BrowserRepl was evaluating each line individually with `\n` mapped to Enter.
Consequently, double newlines representing empty lines within blocks prematurely triggered
the REPL to end execution contexts, preventing entire copy-paste sequences from loading correctly.

This commit updates the `BrowserWasmAdapter` to process pasted blocks via a single method
(`paste_input`), sequentially submitting and managing completion buffers.
In the frontend hook, paste multi-character sequences containing linebreaks are now captured
and passed as a solid chunk, while simple append logic remains unmodified.

Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Pasting multi-line Python snippets containing empty lines caused the
frontend `BrowserRepl` loop to misinterpret the empty lines as end-of-block signals when processed line-by-line. This caused premature submission and subsequently threw errors or split logic into disconnected blocks.

This fix modifies `BrowserWasmAdapter`'s `paste_input()` handler to send the entire clipboard payload buffer straight to `BrowserRepl.input(textToInput)` in one piece, correctly preserving the block logic without prematurely submitting execution on intermediate blank lines.

Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com>
@github-actions
Copy link
Contributor

github-actions bot commented Mar 16, 2026

Summary

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
2820    ±0 2820    ±0 0    ±0 0    ±0 0    ±0 0    ±0 1ms    ±0

Previous Results

Build 🏗️ Result 🧪 Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Other ❓ Flaky 🍂 Duration ⏱️
#1742 2820 2820 0 0 0 0 39.1s

Insights

Average Tests per Run Total Flaky Tests Total Failed Slowest Test (p95)
2820 0 0 5.7s

Slowest Tests

Test 📝 Results 📊 Duration (avg) ⏱️ Duration (p95) ⏱️
TestDockerExecutor_Build_ContextCancellation 1 5.7s 5.7s
eldritch-libsys: std::dll_inject_impl::tests::test_dll_inject_simple 1 5.1s 5.1s
TestInteractiveShell 1 5.0s 5.0s
TestOtherStreamOutput 1 5.0s 5.0s
imix::bin/imix: install::tests::test_install_execution 3 1.8s 5.0s
imix::bin/imix: install::tests::test_install_execution 3 1.8s 5.0s
imix::bin/imix: install::tests::test_install_execution 3 1.8s 5.0s
imix::bin/imix: tests::task_tests::test_task_eprint_behavior 3 3.0s 3.0s
imix::bin/imix: tests::task_tests::test_task_eprint_behavior 3 3.0s 3.0s
imix::bin/imix: tests::task_tests::test_task_eprint_behavior 3 3.0s 3.0s

🎉 No failed tests in this run. | 🍂 No flaky tests in this run.

Github Test Reporter by CTRF 💚

🔄 This comment has been updated

@KCarretto KCarretto marked this pull request as ready for review March 16, 2026 02:08
@KCarretto KCarretto merged commit 293d661 into main Mar 16, 2026
7 of 8 checks passed
@KCarretto KCarretto deleted the fix-shellv2-paste-multiline-16086420678191050824 branch March 16, 2026 02:09
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.

1 participant