Skip to content

feat(launch): choose the host and worktree base - #10

Open
alessandrocornacchia wants to merge 3 commits into
alysnnix:mainfrom
alessandrocornacchia:feat/remote-host-launch
Open

alessandrocornacchia wants to merge 3 commits into
alysnnix:mainfrom
alessandrocornacchia:feat/remote-host-launch

Conversation

@alessandrocornacchia

Copy link
Copy Markdown

What this changes

The send dialog can now launch the agent on any connected Paseo host, not only the board's own, and a New worktree can start from a chosen branch or, for a pull request, from the PR's own branch. The last host, and the last base per repository, are remembered. It also fixes the plugin failing to load on current Paseo apps (Unknown Lucide icon: Github).

  • Host chip. Shown only when more than one host is connected. The board's own host still launches through board.send-to-chat. Any other online host is reached with getPaseoClient(serverId), and the project there is the one whose key is the card's repository. Workspace, agent and timeline-row creation moved into shared/launch.ts (launchCard), which both paths use. After launch, openAgent gets the serverId.
  • Base chip. Lists the repository's branches from GitHub (gh, default first, then the 100 most recently committed), plus "PR #N branch" on pull requests. That option sends action: "checkout" with a change_request checkout source. A branch is sent as refs/remotes/<remote>/<branch>, which the daemon fetches before branching, so the agent starts at the remote tip rather than at a stale local default branch. On the board's own host, the plugin picks the remote that points at the card's repository (a fork's upstream) and fetches the branch first. On a remote host that remote is origin, which is what Paseo derives the project key from.
  • Remembered choices. hostId joins the launch defaults. Bases are stored per repository in settings.json under bases, keyed separately for pull requests (…#pr) and for issues and discussions.
  • Limitation, documented in the README. On a host other than the board's, the project's origin must be the card's repository, and the base branch must have been fetched there at least once. Otherwise the dialog says to run git fetch.

Checks

  • npm run typecheck passes
  • npm run lint passes, including the project rules in scripts/
  • npm test passes (61 tests; new shared/launch.test.ts)
  • paseo plugin reload github-integration loads cleanly against a real daemon (0.11.1)

The server pieces were also exercised against real GitHub and git: branch listing, picking upstream and fetching an unseen branch in a fork-style clone, and saving and reading back remembered bases. Workspace creation with the new action/refName/checkoutSource options was checked against the 0.11.1 daemon source and unit tests, not with a live send.

UI

  • Not applicable
  • Checked on desktop (web export, V8)
  • Checked on iOS / Android (Hermes)

Not checked visually yet. The host and base chips sit in the dialog's first control row, next to the isolation chip, and reuse ControlChip and ChoicePopover.

Paseo version

  • Host picker: useHosts / getPaseoClient first appear in Paseo 0.9.0. They are read off the SDK module object, so on 0.8 the chip is absent and everything else works. paseo-plugin.json stays at >=0.8.0.
  • Base branch and PR checkout: the worktree action, refName and checkoutSource fields are already in the 0.8.0 protocol.
  • Dev dependencies move to @getpaseo/* 0.11.1 for the typings.

🤖 Generated with Claude Code

alessandrocornacchia and others added 3 commits October 12, 2026 09:17
- Newer Paseo apps ship a Lucide set without brand icons, so the plugin
  failed to load with "Unknown Lucide icon: Github"
- Use GitBranch for the sidebar item, settings screen, command and
  timeline row

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The multi-host client API (useHosts, getPaseoClient) is not in the
  0.8 typings

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Add a host chip to the launch dialog when more than one host is
  connected; other hosts are reached with getPaseoClient and matched
  by project key, falling back gracefully on Paseo before 0.9.0
- Move workspace and agent creation into shared launchCard, used by
  the daemon handler and by the dialog for remote hosts
- Add a base chip for new worktrees: a branch read from GitHub, or a
  pull request's own branch checked out by the daemon
- Request the base as a remote-tracking ref so it is fetched first;
  on the board's host, fetch it from the remote for the card's repo
- Remember the last host, and the last base per repository
- Document both in the README and CHANGELOG

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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