Skip to content

Conversation

@roomote
Copy link
Contributor

@roomote roomote bot commented Jan 16, 2026

Fixes issue where Continue button does not work after stopping a task via Roomote Control.

Problem

After stopping a task via Roomote Control, clicking Continue or sending messages does not work. The root cause was that Task.dispose() unconditionally unsubscribed the extension from the task Socket.IO room, so subsequent commands sent to that room were never received.

Solution

Added a _shouldUnsubscribeOnDispose flag that captures the intent synchronously when abortTask() is called, before any async operations can allow external code to modify state. This prevents a race condition where the abandoned flag was set after abortTask() yielded.

Changes

  • Added _shouldUnsubscribeOnDispose private property to Task class
  • Updated abortTask() to set flag before any async operations
  • Updated dispose() to check flag before unsubscribing from task room

Testing

  • All existing Task tests pass (39 passed)
  • TypeScript compilation succeeds with no errors
  • Linting passes

View task on Roo Code Cloud


Important

Fixes Roomote Control Continue button issue by adding a flag to manage task room subscription during disposal in the Task class.

  • Behavior:
    • Fixes issue where Continue button in Roomote Control doesn't work after stopping a task.
    • Adds _shouldUnsubscribeOnDispose flag to Task class to manage subscription behavior.
  • Functions:
    • Updates abortTask() to set _shouldUnsubscribeOnDispose flag before async operations.
    • Updates dispose() to check _shouldUnsubscribeOnDispose flag before unsubscribing from task room.
  • Testing:
    • All existing Task tests pass (39 passed).
    • TypeScript compilation succeeds with no errors.
    • Linting passes.

This description was created by Ellipsis for 9e476d9. You can customize this summary. It will automatically update as commits are pushed.

…ssage

- Add _shouldUnsubscribeOnDispose flag to capture intent synchronously
- Update abortTask() to set flag before any async operations
- Update dispose() to check flag before unsubscribing from task room
- Fixes race condition where abandoned flag was set after abortTask() yielded
- Ensures Continue and Send Message work after stopping via Roomote Control

This prevents the extension from leaving the Socket.IO task room when a task
is stopped via Roomote Control, allowing subsequent Continue or Message
commands to be received properly.
@roomote
Copy link
Contributor Author

roomote bot commented Jan 16, 2026

Rooviewer Clock   See task on Roo Cloud

Reviewed the changes. No issues found.

The implementation correctly addresses the race condition by capturing the isAbandoned intent synchronously before any async operations in abortTask(), and the dispose() method properly checks this flag while maintaining backward compatibility.

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

2 participants