Skip to content

upstream merge 2026-05-08 PR 2: v2/host-service polish 中盤#456

Merged
MocA-Love merged 12 commits intomainfrom
upstream/batch-2026-05-pr2-keyboard-terminal
May 8, 2026
Merged

upstream merge 2026-05-08 PR 2: v2/host-service polish 中盤#456
MocA-Love merged 12 commits intomainfrom
upstream/batch-2026-05-pr2-keyboard-terminal

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

Summary

upstream 同期バッチ第 2 弾。v2/host-service polish 中盤の安全セット (12 commits) を取り込みます。

PR 1 (#455) の続き。223 commits behind の進捗: 9 + 12 = 21 / 223 取り込み済み。

取り込み内容

upstream PR SHA 概要
superset-sh#3859 d6815bd v2 chat pane を full width に
superset-sh#3858 6cb2099 diff file header items を wrap 時左寄せに
superset-sh#3860 382ac7f markdown ファイルの既定ビューを preview に
superset-sh#3861 4de08b5 host-service tunnel connect エラーを catch して DNS 失敗時 crash 防止
superset-sh#3867 f723bf2 desktop / marketing の pricing 比較表を揃える
superset-sh#3876 71f8eed machineId を host-service 接続から分離(device router 新設)
superset-sh#3879 52515a9 host-service tRPC client の unbatch(perf)
superset-sh#3880 24a07cd marketing trust strip ロゴ tweak
superset-sh#3883 9bf4f9b dev mode 既定で v2 を有効化
superset-sh#3878 2e9494f account dropdown に Pro バッジ
superset-sh#3856 533e00f workspace delete 時に exited terminals をクリーンアップ
superset-sh#3869 f5cf3f1 copilot flag order 修正 + mastracode prompt mode

Fork 側のコンフリクト解決

除外した commits

upstream PR 理由
superset-sh#3843 (version 1.7.2) fork は独自 versioning
superset-sh#3839 (40 files keyboard shortcuts dual-mode) 大規模、別 PR で評価予定
superset-sh#3850 (25 files paywall gate) 中規模、レビュー surface 確保のため別 PR
superset-sh#3841 (Electric SQLite persist) DB 関連、PR 4 周辺で精査予定
superset-sh#3811 (host-service crash isolation) PR 4 (host-service バッチ) でまとめる
superset-sh#3840 (terminal pane removal at store) fork terminal-host と衝突可能性、別途
superset-sh#3847 (terminal attach latency) 同上
superset-sh#3852 (34 files v2 workspaces list filters) 別 PR で精査
superset-sh#3882 (TERM_PROGRAM=kitty in v1 terminal) terminal-host と関連、別途

Fork 固有機能ヘルスチェック

  • 19 tRPC githubExtended procedure: 健在
  • 依存・マーカー: 全て残存
  • migration max idx: db=0039, local-db=0072 (変動なし)

Test plan

  • bun install 成功
  • bun run typecheck 全 task green
  • bun run lint exit 0
  • CI green (Lint / Typecheck / Test / Sherif / Build)
  • CodeRabbit レビューへの対応

次の PR

PR 3: sidebar/PR-related polish (superset-sh#3892, superset-sh#3899 等)

saddlepaddle and others added 12 commits May 8, 2026 13:31
The v2 ChatPaneInterface root sat inside PaneContent's row-direction
flex with no width directive, so it sized to its intrinsic content and
the chat appeared smushed. Add w-full to match every other v2 pane;
also restore w-full on the SessionSelector trigger button.
…set-sh#3858)

The v2 diff file header used `justify-between` with `flex-wrap`, so when
the action cluster wrapped to a second row at narrow widths, the
remaining chevron, status indicator, and file badge spread out across
the first row with large gaps between them. Removing `justify-between`
keeps those items tight on the left while `ml-auto` on the action div
still anchors it to the right when it wraps.
…S failure (superset-sh#3861)

When the laptop wakes from sleep and DNS hasn't recovered, the tunnel's
auto-reconnect path calls getAuthToken() which fetches api.superset.sh.
The fetch throws ENOTFOUND, the rejection escapes via `void this.connect()`,
and the host-service process crashes — orphaning every PTY. The coordinator
respawns on a new port, but the renderer keeps reconnecting to the dead
port until it gives up.

Wrap connect()'s body in try/catch and route any throw back through
scheduleReconnect, so transient network failures behave the same as
WebSocket socket-level errors.
…t-sh#3867)

Renames Cloud → Remote workspaces, swaps the (Coming Soon) text for
proper Beta/Coming-soon Badges, adds an Automations row (Pro+),
and reorders Features so they read top-to-bottom by surface
(workspaces → automations → mobile → integrations → collab).
The marketing /pricing page mirrors the desktop billing comparison.
…et-sh#3876)

Previously, machineId was sourced from `hostServiceCoordinator.getConnection`,
which returns null whenever no host-service instance is running. After macOS
sleep killed the detached host-service child, every v2 workspace failed the
`workspace.hostId === machineId` check and got routed through the relay as
if it were remote, causing data not to load until app restart.

machineId is a deterministic per-device value (`getHostId()`), so expose it
via a dedicated `device.getMachineId` tRPC query and gate provider render
on it so the context value is non-nullable.

Note: this only fixes the misclassification. Reviving the host-service on
wake (e.g. via `powerMonitor`) is a separate change.
Switch host-service-client from httpBatchLink to httpLink so calls
to the local host service no longer wait on the slowest procedure
in a batch.
* feat(web): show Pro badge in account dropdown

Adds a `billing.activePlan` tRPC query and renders a Pro/Enterprise
badge next to the user's name in the AgentsHeader dropdown and mobile
drawer when the active org has a paid subscription.

* feat(desktop): show Pro badge in OrganizationDropdown

Renders a Pro/Enterprise badge next to the org name in the desktop
OrganizationDropdown trigger (topbar and expanded sidebar variants),
using the existing useCurrentPlan hook.

* fix: address PR review comments

- billing.activePlan: drop redundant status check; the WHERE clause
  already restricts to ACTIVE_SUBSCRIPTION_STATUSES.
- AgentsHeader: derive planLabel only when on a paid tier so a stale
  "Pro" string can't surface if loading-state logic changes.
…erset-sh#3856)

`disposeSessionsByWorkspaceId` filtered by `status = "active"`, so any
session whose row had drifted to `exited` (e.g. via `pty.onExit`) was
skipped on workspace deletion — leaving the in-memory `sessions` Map
entry behind. Widen to `status != "disposed"` so zombie rows get
disposed too. `disposeSession` is already idempotent against a dead PTY.
…uperset-sh#3869)

* fix(agents): correct copilot flag order and mastracode prompt mode

- copilot: reorder `promptCommand` from `copilot -i --allow-tool=write` to
  `copilot --allow-tool=write -i`. With the old order, the rendered shell
  command landed as `copilot -i --allow-tool=write "PROMPT"`, which
  commander.js parsed as `-i=--allow-tool=write` and rejected the prompt
  with `error: too many arguments`.
- mastracode: add `promptCommand: "mastracode --prompt"`. The previous
  default-from-`command` rendered `mastracode "PROMPT"`, but mastracode's
  TUI silently drops positional args (only the headless `--prompt`/`-p`
  path actually executes the input). Trade-off: prompt-mode now runs
  headless since upstream has no `interactive + auto-execute` flag like
  copilot's `-i` or gemini's `--prompt-interactive`.
- bump `mastracode` desktop dep `0.15.0-alpha.3` → `0.16.0` to match the
  current published release.

* fix(agents): keep mastracode interactive after handling prompt

Chain headless prompt execution with a TUI relaunch so the user lands
in an interactive session on the same thread the prompt seeded. Without
the suffix, `mastracode --prompt` executed and exited, breaking the
expected "interactive + handles prompt" UX.

The TUI auto-resumes the most recent thread (per mastracode 0.13+
behavior), so chaining `; mastracode` after the headless run drops
the user back into the conversation populated by the prompt.

* fix(agents): fix copilot flag order in legacy permissions migration

The migration backfill restored `copilot -i --allow-all` for users
seeded before superset-sh#3546, which has the same flag-ordering bug as the
registry: `-i` consumes `--allow-all` as its prompt value and the
real prompt heredoc errors with `too many arguments`. Reorder to
`copilot --allow-all -i` so the prompt lands directly after `-i`.
The yolo permissions intent is preserved via the unchanged suffix.

* fix(desktop): revert internal mastracode bump to align workspace versions

sherif flagged the workspace mismatch — packages/chat and
packages/host-service still pin 0.15.0-alpha.3, so bumping desktop
alone broke multi-version consistency. The runtime upgrade is
already covered by the user-installed CLI; the internal dep just
needs to track the rest of the workspace.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 8, 2026

Warning

Rate limit exceeded

@MocA-Love has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 28 minutes and 53 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b1d93caf-7481-49d4-89f0-c71890d70417

📥 Commits

Reviewing files that changed from the base of the PR and between 473492a and d19d9a0.

⛔ Files ignored due to path filters (1)
  • apps/marketing/public/logos/runway-wordmark.svg is excluded by !**/*.svg
📒 Files selected for processing (21)
  • apps/desktop/src/lib/trpc/routers/device.ts
  • apps/desktop/src/lib/trpc/routers/index.ts
  • apps/desktop/src/renderer/hooks/useIsV2CloudEnabled.ts
  • apps/desktop/src/renderer/lib/host-service-client.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/TopBar/components/OrganizationDropdown/OrganizationDropdown.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/ChatPane/components/SessionSelector/SessionSelector.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/ChatPane/components/WorkspaceChatInterface/ChatPaneInterface.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/DiffPane/components/DiffFileHeader/DiffFileHeader.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/FilePane/registry/views/MarkdownPreviewView/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/providers/LocalHostServiceProvider/LocalHostServiceProvider.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/billing/plans/page.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/v2-project/$projectId/components/V2ProjectSettings/components/ProjectLocationSection/ProjectLocationSection.tsx
  • apps/marketing/src/app/components/TrustedBySection/TrustedBySection.tsx
  • apps/marketing/src/app/pricing/components/ComparisonTable/ComparisonTable.tsx
  • apps/marketing/src/app/pricing/constants.ts
  • apps/web/src/app/(agents)/components/AgentsHeader/AgentsHeader.tsx
  • packages/host-service/src/terminal/terminal.ts
  • packages/host-service/src/tunnel/tunnel-client.ts
  • packages/shared/src/agent-permissions-migration.ts
  • packages/shared/src/builtin-terminal-agents.ts
  • packages/trpc/src/router/billing/billing.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upstream/batch-2026-05-pr2-keyboard-terminal

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ⚠️ Neon database branch
  • ⚠️ Electric Fly.io app

Thank you for your contribution! 🎉

@MocA-Love MocA-Love merged commit d78d128 into main May 8, 2026
16 of 18 checks passed
MocA-Love pushed a commit that referenced this pull request May 8, 2026
Recorded as integrated via -s ours after batch PRs #455-#464.

Taken via individual PRs:
- PR  1 (#455): v2 polish 前半 safe set (9 commits)
- PR  2 (#456): v2/host-service polish 中盤 (12 commits)
- PR  3 (#457): sidebar polish + jwt API (5 commits)
- PR  4 (#458): host-service tRPC retry/cache/timeout (3 commits)
- PR  5 (#459): v2 diff pane / file pane polish (2 commits)
- PR  7 (#462): host-service v2 canonical workspace.create + attachment store (PR1 superset-sh#3893 + PR2 superset-sh#3916)
- PR 11 (#463): agents API + onboarding (7 commits + 1 cleanup)
- PR 12 (#464): v1→v2 import flow rewrite (11 commits + 2 follow-ups)
- PR 13 (#460): host-service shell env probe + typo (2 commits)
- PR 16 (#461): marketplace 19 themes (1 commit)

Skipped / deferred (recorded as integrated for behind=0):
- PR  6: CLI v1 launch (superset-sh#3898 + 30+ CLI/SDK followups) — defer to dedicated migration
- PR  9: v2 PR3 (superset-sh#3940) + revert (superset-sh#4017) — net-zero pair
- PR 10: pty-daemon (superset-sh#3896, superset-sh#3971, superset-sh#4054) — fork keeps its terminal-host
- PR 14: Slack MCP-v2 (superset-sh#4197, superset-sh#4208) — depends on mcp-v2/sdk divergence
- PR 15: onboarding remaining (superset-sh#4115, superset-sh#4125, superset-sh#4214, superset-sh#4213, superset-sh#4222, superset-sh#4225) — depends on fork's deleted setup pages

Behind: 0 after this merge.
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.

3 participants