Skip to content

fix(decopilot): default to "ephemeral" branch + rename laptop → desktop#3432

Merged
tlgimenes merged 1 commit into
mainfrom
tlgimenes/debug-ci-check-failure
May 21, 2026
Merged

fix(decopilot): default to "ephemeral" branch + rename laptop → desktop#3432
tlgimenes merged 1 commit into
mainfrom
tlgimenes/debug-ci-check-failure

Conversation

@tlgimenes
Copy link
Copy Markdown
Contributor

@tlgimenes tlgimenes commented May 21, 2026

What is this contribution about?

Fixes the multi-pod attach-cross-pod CI failure and the default Decopilot chat 400 (thread has no branch pinned) introduced by #3417 — when neither the thread row nor the request body pins a branch, default to the "ephemeral" synthetic branch (already recognized by isSyntheticBranch in packages/sandbox/daemon/constants.ts and never git checkout'd) and persist it onto the thread row so subsequent messages share the same vmMap entry. Also renames the "laptop-CLI" concept to "desktop-CLI" across the codebase — types (LaptopSandboxProvider, LaptopCli…, ConnectLaptop…), file renames, AgentOption literals (claude-code-laptopclaude-code-desktop, same for codex), the laptop:<harness> credential sentinel, the Laptop01 icon (→ Monitor01), and prose mentions in comments / READMEs / helm YAML (migrations 084/088 left untouched as shipped history). Finally, constrains the merged chat-model popover to max-h-[var(--radix-popover-content-available-height)] overflow-y-auto so it scrolls when the viewport can't fit all three sections × three tiers.

Screenshots/Demonstration

Before: popover overflowed the top of the viewport on small screens (Fast/Smart unreachable). After: the picker fits the available space and scrolls when needed.

How to Test

  1. Open a Decopilot chat on an agent with no GitHub repo connected (e.g. the default Decopilot) and send a message — it should dispatch without 400 thread has no branch pinned; the thread row should end up with branch = "ephemeral".
  2. Shrink the browser window vertically and click the model trigger pill — the popover should render Decopilot + Claude Code + Codex sections with an inner scrollbar instead of clipping off-screen.
  3. Re-run the multi-pod CI job — tests/multi-pod/scenarios/attach-cross-pod.test.ts should pass.

Migration Notes

None — "ephemeral" is already a first-class synthetic branch on the daemon side. The AgentOption localStorage rename will silently migrate any stored claude-code-laptop / codex-laptop value to null on next load (same pattern PR #3417 used when it removed decopilot-laptop).

Review Checklist

  • PR title is clear and descriptive
  • Changes are tested and working
  • Documentation is updated (if needed)
  • No breaking changes

🤖 Generated with Claude Code


Summary by cubic

Default Decopilot threads to the synthetic "ephemeral" branch when no branch is pinned, fixing 400s on first message and the multi‑pod attach‑cross‑pod CI failure. Also rename the laptop‑CLI concept to desktop‑CLI across the codebase and make the merged model picker scroll on small screens.

  • Bug Fixes

    • POST /decopilot/threads/:id/messages: fall back to "ephemeral" when neither the thread nor request pins a branch; persist it to the thread so subsequent messages hit the same vmMap entry.
    • Model picker: constrain height with max-h-[var(--radix-popover-content-available-height)] and overflow-y-auto to prevent off‑screen overflow.
  • Refactors

    • Rename laptop → desktop throughout: LaptopSandboxProviderDesktopSandboxProvider, ConnectLaptopDialogConnectDesktopDialog, icon Laptop01Monitor01, CLI/help/docs/tests.
    • Update agent options and credential sentinels: claude-code-laptopclaude-code-desktop, codex-laptopcodex-desktop; credentialId from laptop:<harness>desktop:<harness>.

Written for commit ae2ccd7. Summary will update on new commits. Review in cubic

POST /decopilot/threads/:id/messages was throwing 400 "thread has no
branch pinned" whenever the thread row and request body both omitted a
branch — broke the multi-pod attach-cross-pod CI test and the default
Decopilot chat for agents without a connected repo. Fall back to the
"ephemeral" synthetic branch (already recognized by isSyntheticBranch
in packages/sandbox/daemon/constants.ts, never git-checked-out) and
persist it onto the thread row so subsequent messages hit the same
vmMap entry.

Also rename the laptop-CLI concept to desktop-CLI across the codebase:
LaptopSandboxProvider -> DesktopSandboxProvider, LaptopCli/
ConnectLaptop components + file renames, claude-code-laptop /
codex-laptop AgentOption literals -> -desktop, laptop:<harness>
credential sentinel -> desktop:<harness>, Laptop01 icon ->
Monitor01, and all prose mentions in comments/docs/READMEs/helm
YAML. Migrations 084/088 left untouched (shipped history).

Finally, constrain the merged chat-model popover height to
var(--radix-popover-content-available-height) with overflow-y-auto
so the picker scrolls when the viewport can't fit all three sections
(Decopilot/Claude Code/Codex × 3 tiers each).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Benchmark

Should we run the Virtual MCP strategy benchmark for this PR?

React with 👍 to run the benchmark.

Reaction Action
👍 Run quick benchmark (10 & 128 tools)

Benchmark will run on the next push after you react.

@github-actions
Copy link
Copy Markdown
Contributor

Release Options

Suggested: Patch (2.339.9) — based on fix: prefix

React with an emoji to override the release type:

Reaction Type Next Version
👍 Prerelease 2.339.9-alpha.1
🎉 Patch 2.339.9
❤️ Minor 2.340.0
🚀 Major 3.0.0

Current version: 2.339.8

Note: If multiple reactions exist, the smallest bump wins. If no reactions, the suggested bump is used (default: patch).

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 47 files

Re-trigger cubic

@tlgimenes tlgimenes merged commit 37d85af into main May 21, 2026
19 of 20 checks passed
@tlgimenes tlgimenes deleted the tlgimenes/debug-ci-check-failure branch May 21, 2026 23:55
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