• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive-studio / 25808404938 / 1
70%
main: 70%

Build:
DEFAULT BRANCH: main
Ran 13 May 2026 03:21PM UTC
Files 512
Run time 29s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 May 2026 03:17PM UTC coverage: 70.125% (+1.5%) from 68.673%
25808404938.1

push

github

web-flow
feat(playground): edit/resend a previous user message (#2241)

* feat(playground): edit/resend a previous user message

Adds an Edit button to the per-message actions slot (user messages
only). Clicking it pre-fills the composer with the message text and
focuses the textarea with the cursor at the end. The user can then
tweak and submit normally — the edited text is sent as a new message;
history is not rewritten.

Plumbing: a small ChatComposerContext exposes setDraftText and
focusComposer from ChatInputPrompt up to the message rows.

* feat(playground): rewind-and-retry when editing the streaming message

When the user clicks Edit on the last user message while the assistant
is currently streaming a response, the submit button switches to a
Resend action. Clicking it cancels the active stream, drops the partial
assistant response and the original user message, and sends the new
text as a fresh message — replacing the in-flight turn with the edited
one. A small chip above the composer surfaces the mode and offers a
cancel.

Persists the trimmed messages via the existing
`chat:update-thread-messages` IPC handler so a navigation mid-stop
can't resurrect the partial state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(playground): catch async rejection on the normal send path

Address PR review: the normal-send path wrapped `onSendMessage` in a
synchronous try/catch, but the callee returns a Promise. Async
rejections escaped as unhandled, and `onClearEdit()` + `setText('')`
ran unconditionally — so a failed send still cleared the composer,
leaving the user with no way to retry. Mirror the rewind path's
`Promise.resolve(...).catch(...)` pattern and restore the text on
rejection. Regression test added.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

4971 of 7685 branches covered (64.68%)

7441 of 10611 relevant lines covered (70.13%)

118.29 hits per line

Source Files on job 25808404938.1
  • Tree
  • List 512
  • Changed 10
  • Source Changed 5
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 25808404938
  • 401dc494 on github
  • Prev Job for on main (#25792633745.1)
  • Next Job for on main (#25815270982.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc