Skip to content

Add agent preset commands, ESC interrupt handling, and macOS menu cleanup#61

Merged
amandal0903 merged 11 commits intomainfrom
feat-upgrade-branch
Apr 3, 2026
Merged

Add agent preset commands, ESC interrupt handling, and macOS menu cleanup#61
amandal0903 merged 11 commits intomainfrom
feat-upgrade-branch

Conversation

@amandal0903
Copy link
Copy Markdown
Collaborator

Summary

  • Agent preset commands: Users can now configure custom startup commands per agent (e.g. a custom path to claude) via a new preset panel in the "Add Worktree" modal. Commands persist across sessions via application storage.
  • ESC interrupt state handling: Worktree session state now correctly transitions from Working/Permission back to Idle when the user presses ESC to interrupt Claude. Covers three cases: xterm ESC keypress detection, PostToolUseFailure with
    is_interrupt: true (mapped to a synthetic PostToolUseInterrupt event), and terminal disposal while still in an active state.
  • macOS menu bar cleanup: On macOS, only the Application menu ("Workstreams") is shown — all other menu bar items (File, Edit, View, etc.) are hidden.
  • Build rebranding: Renamed build artifacts from VSCode/Code-OSS to Workstreams, updated applicationName in product.json, and added build output patterns to .gitignore.
  • Bug fixes: Fixed Uint8Array/BlobPart type mismatch in image thumbnail Blob creation; added Notification to hooked Claude events; review comments now use the configured agent command instead of hardcoded 'claude'.
Screenshot 2026-04-03 at 6 17 14 PM

Avijit Mandal added 11 commits April 3, 2026 18:14
Rename app, DMG, and build output folders so the packaged macOS
artifact is Workstreams-darwin-{arch}.dmg containing Workstreams.app.
Clicking the gear icon next to an agent in the creation modal now opens
a panel on the right side where users can customize the startup command.
Commands persist across restarts via application-level storage and are
used when opening terminals during worktree creation.
Use image.data.buffer instead of image.data directly, since newer
TypeScript does not consider Uint8Array<ArrayBufferLike> assignable
to BlobPart.
Move from side-by-side flex layout to absolute positioning below the
modal card, matching the intended design.
The preset panel now lives inside agentContainer (beside the dropdown),
positioned to its right. Closing the dropdown also closes the panel.
Clicks inside the preset panel were bubbling to the card handler which
closed the dropdown (and the panel with it). Stop propagation on the
panel so interactions inside it are isolated.
@amandal0903 amandal0903 merged commit 8d79992 into main Apr 3, 2026
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.

1 participant