feat(delegation): calm "will resume" affordance for background delegate_task - #52756
Merged
Conversation
Contributor
🔎 Lint report:
|
Track top-level delegate_task work that dispatches in the background and
re-enters as a fresh turn. $backgroundResume returns {count, activity} for
the active session while idle — count of parked tasks plus the primary
child's latest stream line (tool/progress/thinking) when readable.
…te_task When idle with a top-level delegate_task still in flight, render a static, shimmering system-note at the transcript tail instead of a spinner (which reads as "stuck"). Reuses the shared steer / slash-status chrome (centered, 0.6875rem, muted, Codicon) so it sits in the thread like every other meta line, and mirrors the primary child's latest stream line, falling back to generic copy. i18n across en/ja/zh/zh-hant; markdown prose/heading rhythm tuned so a re-entered turn breathes.
… segment When idle with a background subagent still in flight, append a tail status segment spelling out that the agent resumes on its own. Width-budgeted like every tail segment, so it drops first on a tight terminal where the ⛓ count already carries the signal.
A top-level delegate_task dispatches in the background and re-enters as a fresh turn when done. Print a one-line dispatch-time note — no spinner, nothing to poll — so the idle prompt doesn't read as "nothing happened."
OutThisLife
force-pushed
the
bb/delegate-bg-resume-ux
branch
from
June 26, 2026 01:00
e9a72d0 to
985350d
Compare
OutThisLife
enabled auto-merge
June 26, 2026 01:02
1 task
waefrebeorn
pushed a commit
to waefrebeorn/slermes
that referenced
this pull request
Jul 2, 2026
…g-resume-ux feat(delegation): calm "will resume" affordance for background delegate_task
habarmc1223-sudo
pushed a commit
to habarmc1223-sudo/hermes-agent-fluxmem
that referenced
this pull request
Jul 8, 2026
…g-resume-ux feat(delegation): calm "will resume" affordance for background delegate_task
santhreal
pushed a commit
to santhreal/hermes-agent
that referenced
this pull request
Jul 13, 2026
…g-resume-ux feat(delegation): calm "will resume" affordance for background delegate_task
Closed
4 tasks
Gravezzz
pushed a commit
to Gravezzz/hermes-agent
that referenced
this pull request
Jul 21, 2026
…g-resume-ux feat(delegation): calm "will resume" affordance for background delegate_task
leewenjie
pushed a commit
to leewenjie/hermes-agent
that referenced
this pull request
Aug 7, 2026
…g-resume-ux feat(delegation): calm "will resume" affordance for background delegate_task
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A top-level
delegate_taskalready dispatches in the background and re-enters the conversation as a fresh turn when it finishes (tools/delegate_tool.py_model_background_value→ always background; result ridesprocess_registry.completion_queue). But while the subagent runs, the agent is genuinely idle yet every surface only showed an animated subagent indicator — which reads as "stuck, can't talk."This adds the Cursor-style "Will resume when the background task finishes" affordance: no spinner, nothing to poll, keep chatting. Same underlying signal — idle + background work in flight — on all three surfaces. Backend unchanged (already correct); this is purely presentation.
Changes
$backgroundResumePendingCount(running/queued subagents for the active session, zero while$busy) drives a staticBackgroundResumeNoticeat the transcript tail (the same slot as the response loader, so they never double up). i18n acrossen/ja/zh/zh-hant+ types.↩ resumes when subagent finishesstatus segment (drops first on a tight terminal where⛓ Nalready carries the signal)._on_tool_complete:↩ Background task running — I'll resume when it finishes. Keep chatting.Kept the composer status stack live-subagent rows (#44630) untouched — that's the deliberate watch/click-in surface, distinct from the main spinner that read as stuck.
Verifying the premise
Confirmed
delegate_taskis non-blocking onmain(so this is a UX gap, not a hang): existingtest_dispatch_returns_immediately_without_blocking,test_delegate_task_background_routes_async_and_does_not_block,test_run_agent_dispatch_forces_background, plus the desktop loader being gated onbusy.Test plan
tsctypecheck, eslint, vitest (background-delegation.test.ts, i18n parity, thread-loading)tsctypecheck, vitest (appChromeStatusRule.test.tsx, +4 new)test_async_delegation.py,test_cli_background_status_indicator.py, newtest_cli_delegate_background_notice.pydelegate_taskin the desktop app, confirm the idle "Will resume…" notice + usable composer, and that the result re-enters automatically