Skip to content

Bugfix/claude agent stop button#368

Merged
zomux merged 1 commit into
developfrom
bugfix/claude-agent-stop-button
May 4, 2026
Merged

Bugfix/claude agent stop button#368
zomux merged 1 commit into
developfrom
bugfix/claude-agent-stop-button

Conversation

@QuanCheng-QC
Copy link
Copy Markdown
Collaborator

Summary

Fixes Workspace Stop behavior for Claude Code agents.

  • Speeds up control-event polling while an agent is actively running
  • Makes Stop interrupt Claude Code more like Ctrl+C, with process cleanup fallback
  • Cleans up running Claude child processes more reliably
  • Adds immediate Stop UI feedback and disables repeated Stop clicks
  • Retries Stop once if no stopped/idle status is observed within 3 seconds
  • Stops showing active loading indicators after Execution stopped by user

Validation

  • Verified Claude Code agent can be stopped from Workspace UI during a long-running task
  • Confirmed the agent remains connected and can receive follow-up messages after Stop
  • Confirmed stopped status no longer keeps the UI in a “working” animation state
  • Ran agent connector stop-control tests locally

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openagents-workspace Ready Ready Preview, Comment Apr 30, 2026 10:10am

Request Review

@QuanCheng-QC QuanCheng-QC force-pushed the bugfix/claude-agent-stop-button branch from 52006e2 to 1fff9ce Compare April 30, 2026 10:10
@zomux zomux merged commit f47de36 into develop May 4, 2026
13 of 20 checks passed
nebukaga pushed a commit that referenced this pull request May 4, 2026
….2.0

Replaces the Electron + Next.js implementation under packages/go/ with a
native SwiftUI universal app (macOS + iOS) built around a 2-pane
iMessage layout. Same bundle id (com.openagents.go), drops in over the
previous build at the same /Applications slot. ~1MB on disk vs Electron
build's 207MB.

Layout:
- NavigationSplitView (auto push/pop on iPhone): thread list left, chat right
- WorkspaceSelectorView for first-launch + switch flow
- Recent chips + dropdown of all 10 history entries; Advanced disclosure
  for per-workspace API URL override

Per-workspace state:
- WorkspaceHistory persists (workspaceId, token, name, appURL, apiURL,
  lastUsed) per entry — (appURL, apiURL) stored together so self-hosted
  setups don't need a global flip
- WorkspaceStore (@observable, MainActor): adaptive 5s/15s discovery +
  1.5s/3s message poll, faster when an agent is working

Messages:
- Initial load: latest 50 (sort=desc) + scroll to bottom; ProgressView
  on top triggers loadOlderMessages (limit=30, prepend)
- Forward poll: after= cursor, loops while has_more
- Optimistic user bubble; reconciler drops placeholder when real event
  arrives within 30s

Intermediate steps: consecutive status/thinking collapse into indented
block matching workspace/frontend's intermediate-steps.tsx; StepParser
handles Claude + Codex formats; per-step icons.

App-level: macOS app menu (⌘N new thread, ⌘R refresh, ⌘⇧K switch
workspace, ⌘, settings), refresh-on-focus, in-app DebugLog with
filter/copy/clear.

Hardened: app-sandbox + network.client + files.user-selected.read-only
entitlements, Hardened Runtime, Swift 6 strict concurrency,
ITSAppUsesNonExemptEncryption=false.

Tooling: xcodegen-managed (project.yml is the source of truth),
.xcodeproj checked in for reproducibility. Both OpenAgentsGo_macOS and
OpenAgentsGo_iOS schemes build.

Out of scope for v0.2.0 (deferred, code preserved in git history):
Files / Browser / Monitor / Connect Agent view modes, settings/share
dialogs, agent profile sheet, OAuth, SSE, file attachments,
notifications.

Conflicts resolved: PRs #364 (URL host fix) and #368 (stop button)
modified the Electron files this PR deletes — accepted the deletions
matching the rewrite's intent.
nebukaga added a commit that referenced this pull request May 4, 2026
The npm publish workflow has been failing on every push since 0.2.114
(2026-04-30) because the version in package.json wasn't bumped — so
the Stop button fix from PR #368, the Gemini integration from PR #357,
the workspace-removal API from PR #359, and the env-var scrub from
d9f5449 are all on develop but not in users' local launcher installs.

Test fix: stop-control.test.js was written against the old sendStatus
path, but 6cfc575 (post chat reply on shutdown) had already changed
_stopAllProcesses to call sendResponse instead. The two PRs auto-merged
without conflict, leaving the test asserting against the wrong mock.
Updated the test to mock sendResponse and pass the message explicitly.
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.

2 participants