Repository navigation
feat(desktop): group-chat rounds get a real Stop — interrupts the live turn, holds the rest (#91868, #94569) - #96241
Merged
Merged
Conversation
stopGroupThread(group, thread, members?) is the room's first true cancellation primitive: it bumps the room epoch (the driving loop bails at its next member boundary), sets #93129 holds for every member (no future turns until an explicit release), records a 'stopped' activity event on the new epoch, and sends session.interrupt to the member currently on turn via its own route — previously the plugin issued zero interrupt RPCs, so 'stop' meant waiting out the in-flight model call. The runGroupChatMemberTurnLeased poll loop now abandons a turn whose dispatch epoch went stale WHILE its member is held — the stop signature. An ordinary newer-send epoch bump without a hold still polls to completion so late work keeps landing (#93127 commit check unchanged).
Salvaged from #94570 (@ShonnQ): the Activity bar gains a Stop button while a round is running (room.running), plus an inline Stop on the expanded 'working' activity row. Rewired from the original per-member session.interrupt spray onto the stopGroupThread primitive so the round loop actually stops (epoch bump + holds + on-turn interrupt) instead of marching to the next member; labels are plain English like the rest of the plugin's UI strings. Co-authored-by: Hermes Agent <agent@nousresearch.com>
…itive Source-contract tests (the group-room-ux pattern): the workspace renders the Stop button only while room.running, wires it to stopGroupThread (not the #94570 per-member interrupt spray), and carries no hardcoded CJK label.
teknium1
force-pushed
the
fix/s5-group-stop-primitive
branch
from
August 27, 2026 10:14
7c64172 to
13974e7
Compare
૮ >ﻌ< ა ci reviewran on 87b2f5c — chore: retrigger CI (zero-job dispatch failure, auto-heal)
|
This was referenced Aug 27, 2026
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
Group-chat rounds finally have a real stop path (#91868, #94569). Before this, the loop's only cancellation primitives were the epoch bump (checked ONLY at member boundaries) and holds (skip FUTURE turns) — zero
session.interruptcalls anywhere in the plugin, and no stop affordance in the room UI at all (live-verified on main: during an active round the composer offers only attach + New Thread).stopGroupThread(group, thread)primitive: bumps the room epoch, clears running/turn, mints [Bug] Bot Mode: a bot ignores an explicit 'stop' and autonomously resumes/plans its task work #93129-shaped holds for every member (all release gestures work unchanged), records astoppedactivity on the post-bump epoch, and best-effortsession.interrupts the member actually mid-turn viarequestForBot. The turn-lease poll loop gains a staleness check (epoch moved AND member held → stop polling; epoch churn alone still polls so late-delivery harvest [Bug] Bot Mode group chat posts the same bot reply 2-3x per send (duplicate delivery) #93127 is preserved).Validation
Live (real Electron, mid-round): baseline main has no stop control at all during a running round; on this branch the Stop button appears during the round, clicking it mid-essay interrupted the in-flight member (essay truncated, no further members took turns, no spinner survived) and the activity feed records "You stopped the room — remaining turns are held until resumed".
Fixes #91868, #94569. Source PR #94570 to be closed with credit after merge.
Infographic