Skip to content

upstream/2026-04-26 PR2: 単一ファイル競合 UI 系 3 commits 取り込み#436

Merged
MocA-Love merged 4 commits intomainfrom
upstream/batch-2026-04-26-pr-b
Apr 25, 2026
Merged

upstream/2026-04-26 PR2: 単一ファイル競合 UI 系 3 commits 取り込み#436
MocA-Love merged 4 commits intomainfrom
upstream/batch-2026-04-26-pr-b

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

Summary

upstream (superset-sh/superset) からの 9 commits 取り込みバッチの PR2(単一ファイル競合・UI 系 3 commits)。3 commits を cherry-pick で取り込み、merge-tree dry-run で予測した競合を fork 固有機能を保持する形で手動マージ。

取り込み内容

Commit upstream PR 概要
3012b5a57 superset-sh#3722 Optimistic Electric collection updates。tasks 系の status/priority/assignee 等を useOptimisticCollectionActions 経由の楽観更新に集約。
6a3be2d35 superset-sh#3739 v2 terminal resize 安定化。measureAndResize がスクロール状態を保持し、createResizeScheduler で debounce + dispose を提供。
8928ac62e superset-sh#3737 v2 pane header 応答性改善。アイコンサイズ縮小、isActive ベースの text-foreground / text-muted-foreground 切替、min-w-0 truncate レイアウト等。

Fork 側のコンフリクト解決

useDashboardSidebarWorkspaceItemActions.ts (3012b5a)

  • import 競合: fork の useCollectionshandleDeleted で使用)と upstream の useOptimisticCollectionActionssubmitRename で使用)を両方残す

terminal-runtime.ts (6a3be2d)

  • attachToContainer: fork の terminalRendererDebug.info ログを残しつつ、upstream の if (measureAndResize(runtime)) onResize?.() 戻り値判定を採用。runtime.terminal.refresh(0, ...) は新 measureAndResize 内に内包されるので削除。
  • detachFromContainer: fork の debug log を残しつつ、upstream の _disposeResizeObserver クリーンアップを末尾に追加。

FilePane.tsx / page.tsx (8928ac6)

  • getBaseName import を採用(fork の pathBasename.ts は既に Windows 対応済み /[/\\]/ 実装)。
  • インラインの filePath.split(/[/\\]/).pop()getBaseName(filePath) に置換。Windows 対応は維持。

useWorkspaceHotkeys.ts (8928ac6)

  • useMemo import を追加。upstream の visiblePresets filter(pinnedToBar !== false)を採用。
  • fork の useCollections ベースの sidebar 状態管理を維持し、upstream の useV2UserPreferences は不採用(fork は v2WorkspaceLocalState 経由で同等管理済み)。

usePaneRegistry.tsx (8928ac6、最大の競合 6 ブロック)

  • getFileNamegetBaseName ベースに統一(FORK NOTE で Windows 対応理由を残す)。
  • fork の FilePaneTabTitleFilePaneTabTitleStatic / FilePaneTabTitleWithDocument 二段構成(spreadsheet 分岐 + memo displayName)を維持しつつ、isActive プロパティを各層に伝播し、upstream の新スタイル(min-w-0 items-center gap-1.5 text-xs transition-colors duration-150size-3.5isActive ? text-foreground : text-muted-foregroundtitle={filePath} ホバー)を両方の Title コンポーネントに適用。
  • file.renderTitle の prop 渡しで displayNameisActive を併存。
  • file.onBeforeClose の name 計算を getFileName(data.filePath) に統一。

format fix

  • biome formatter による <FileIcon ... /> の多行整形のみを別 commit として記録(d3e31704d)。

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

  • 19 tRPC procedure: 全件健在
  • ansi_up=1, @vscode/ripgrep=2, @xyflow/react=2 健在
  • TERMINAL_OPTIONS / SUPERSET_WORKSPACE_NAME / moonshot-ai.kimi-code / MainWindowEffects / INCEPTION_AUTH_PROVIDER_ID / v1MigrationState / TiptapPromptEditor 全件健在
  • desktop 1.5.10、drizzle idx (db=0035 / local-db=0072) 維持

検証

  • bun install: ✅ (5757 packages, 154s)
  • bun run typecheck: ✅ (27/27 successful)
  • bun run lint: ✅ (Biome: 4323 files, no fixes applied; format fix は別 commit で吸収)
  • bun run --filter @superset/desktop compile:app: ✅ (electron-vite build, 6m 4s, exit 0)

bun run --filter @superset/desktop build (electron-builder の dmg 生成) は時間消費が大きいので省略。マージ後の CI / リリース時に確認。

後続 PR の予定

  • PR3(host-service restart、competing 領域に大幅 fork カスタマイズあり): 1f55c623a + 0fe65d230
  • PR4(remote ports 大物、78 files / 9 conflict): 7c0d22b77

Test plan

  • v2 ワークスペース: ファイルタブで isActive/non-active の文字色切替、ホバーで title 表示
  • v2 ワークスペース: スプレッドシートファイル(.xlsx 等)でも displayName + Static title が正常表示
  • v2 ワークスペース: メモタブで displayName が markdown 第1見出しに従う
  • v2 ワークスペース: ターミナルペインのリサイズ時にスクロール位置が保持される(preset 切替・split 切替)
  • v2 ワークスペース: ターミナル切替で _disposeResizeObserver がクリーンに走る(メモリリーク回帰なし)
  • v2 ワークスペース: tasks 系(status/priority/assignee 変更)で楽観更新の挙動
  • v2 ワークスペース: workspace rename が useOptimisticCollectionActions.renameWorkspace 経由で動く
  • v2 ワークスペース: visiblePresets フィルタで pinnedToBar=false のプリセットが hotkey 対象から外れる

Kitenite and others added 4 commits April 26, 2026 07:54
* Add optimistic Electric collection updates

* Centralize optimistic collection actions

* Update optimistic collection docs

* Address optimistic update review comments
* fix(desktop): stabilize v2 terminal resize

* fix(desktop): refresh terminal after scroll restore
* Improve v2 pane header responsiveness

* Tighten compact v2 pane chrome

* Align active tab close background

* Align active workspace and pane backgrounds

* Use workspace active background for pane chrome

* Remove tab bar bottom border

* Restore tab bar bottom border

* Move preset settings to end

* Show and hide existing presets

* Use visibility controls for presets

* Address pane UI review comments
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 25, 2026

Warning

Rate limit exceeded

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

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 3 minutes and 23 seconds.

⌛ 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: 6b9bbffc-fd2d-4f68-af2a-17eee77f80be

📥 Commits

Reviewing files that changed from the base of the PR and between 67da889 and d3e3170.

📒 Files selected for processing (54)
  • apps/desktop/docs/OPTIMISTIC_ELECTRIC_UPDATES.md
  • apps/desktop/src/renderer/lib/terminal/terminal-runtime.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarProjectSection/hooks/useDashboardSidebarProjectSectionActions/useDashboardSidebarProjectSectionActions.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarCollapsedWorkspaceButton/DashboardSidebarCollapsedWorkspaceButton.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/components/DashboardSidebarExpandedWorkspaceRow/DashboardSidebarExpandedWorkspaceRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/components/DashboardSidebarWorkspaceItem/hooks/useDashboardSidebarWorkspaceItemActions/useDashboardSidebarWorkspaceItemActions.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/$taskId/components/PropertiesSidebar/components/AssigneeProperty/AssigneeProperty.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/$taskId/components/PropertiesSidebar/components/PriorityProperty/PriorityProperty.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/$taskId/components/PropertiesSidebar/components/StatusProperty/StatusProperty.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/$taskId/components/TaskActionMenu/TaskActionMenu.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/$taskId/page.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/components/TasksBoardView/TasksBoardView.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/components/TasksTableView/TasksTableView.test.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/components/TasksTableView/components/TaskContextMenu/TaskContextMenu.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/hooks/useTasksTable/components/AssigneeCell/AssigneeCell.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/hooks/useTasksTable/components/PriorityCell/PriorityCell.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/hooks/useTasksTable/components/StatusCell/StatusCell.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/components/V2PresetsBar/V2PresetsBar.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/components/V2PresetsBar/components/V2PresetBarItem/V2PresetBarItem.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/BrowserPane/BrowserPane.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/BrowserPane/components/BrowserToolbar/BrowserToolbar.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/ChatPane/ChatPane.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/hooks/useWorkspaceChatController/useWorkspaceChatController.ts
  • 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/FilePane.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/FilePane/components/FilePaneHeaderExtras/FilePaneHeaderExtras.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/FilePane/components/FileViewToggle/FileViewToggle.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/FilePane/registry/views/ImageView/ImageView.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/components/TerminalPane/components/TerminalSessionDropdown/TerminalSessionDropdown.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/usePaneRegistry/usePaneRegistry.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/hooks/useWorkspaceHotkeys/useWorkspaceHotkeys.ts
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspace/$workspaceId/page.tsx
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/v2-workspaces/components/V2WorkspacesList/components/V2WorkspaceRow/V2WorkspaceRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/hooks/useOptimisticCollectionActions/index.ts
  • apps/desktop/src/renderer/routes/_authenticated/hooks/useOptimisticCollectionActions/useOptimisticCollectionActions.ts
  • apps/desktop/src/renderer/routes/_authenticated/providers/CollectionsProvider/collections.ts
  • apps/desktop/src/renderer/routes/_authenticated/settings/terminal/components/TerminalSettings/components/PresetRow/PresetRow.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/terminal/components/TerminalSettings/components/PresetsSection/PresetsSection.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/terminal/components/TerminalSettings/components/PresetsSection/components/PresetsTable/PresetsTable.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/terminal/components/TerminalSettings/components/V2PresetsSection/V2PresetsSection.tsx
  • apps/desktop/src/renderer/routes/_authenticated/settings/v2-project/$projectId/components/V2ProjectSettings/components/RepositorySection/RepositorySection.tsx
  • apps/desktop/src/renderer/screens/main/components/WorkspaceSidebar/WorkspaceListItem/CollapsedWorkspaceItem.tsx
  • apps/desktop/src/renderer/screens/main/components/WorkspaceSidebar/WorkspaceListItem/WorkspaceListItem.tsx
  • packages/panes/src/react/components/Workspace/components/Tab/Tab.tsx
  • packages/panes/src/react/components/Workspace/components/Tab/components/Pane/Pane.tsx
  • packages/panes/src/react/components/Workspace/components/Tab/components/Pane/components/PaneHeader/PaneHeader.tsx
  • packages/panes/src/react/components/Workspace/components/Tab/components/Pane/components/PaneHeader/components/DefaultHeaderContent/DefaultHeaderContent.tsx
  • packages/panes/src/react/components/Workspace/components/Tab/constants.ts
  • packages/panes/src/react/components/Workspace/components/TabBar/components/TabItem/TabItem.tsx
  • packages/trpc/src/router/chat/chat.ts
  • packages/trpc/src/router/v2-project/v2-project.ts
  • packages/trpc/src/router/v2-workspace/v2-workspace.ts
  • plans/20260425-v2-terminal-rendering-divergences.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upstream/batch-2026-04-26-pr-b

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 Apr 25, 2026

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

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

Thank you for your contribution! 🎉

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d3e31704d8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +104 to +107
const transaction = chatSessionActions.deleteSession(sessionIdToDelete);
if (!transaction && !isDesktopChatDevMode()) {
throw new Error("Failed to delete chat session");
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Await optimistic delete before resolving session deletion

handleDeleteSession now returns before the optimistic mutation is persisted, but SessionSelectorItem calls this through toast.promise, so the UI reports “Session deleted” immediately even if the backend delete later fails and rolls back. In non-dev mode (e.g., network/server error), this also records chat_session_deleted as a success path for a failed delete. Await transaction.isPersisted.promise (or propagate that promise) so callers only see success after persistence actually completes.

Useful? React with 👍 / 👎.

@MocA-Love MocA-Love merged commit 4089462 into main Apr 25, 2026
12 of 13 checks passed
MocA-Love added a commit that referenced this pull request Apr 26, 2026
PR1〜PR5 (#435 #436 #437 #438 #440) で 13 commits 全件 cherry-pick + 手動 conflict 解消で取り込み済み。
本コミットは git 履歴上 behind=0 とするための ours マージ記録。

取り込み済み 13 commits:
- 1f55c62 Fix host service restart adoption (superset-sh#3732)
- 0fe65d2 test(desktop): remove host-service-coordinator test (superset-sh#3734)
- 3012b5a Add optimistic Electric collection updates (superset-sh#3722)
- c272a51 fix(desktop): drop branch row from v2 sidebar workspace item (superset-sh#3733)
- c2f3fdc feat(desktop): add fade-edge mask utilities (superset-sh#3735)
- 682d07c fix v2 terminal osc links (superset-sh#3736)
- 7c0d22b feat(ports): surface remote host-service ports in the sidebar (superset-sh#3676)
- 6a3be2d [codex] Stabilize v2 terminal resize (superset-sh#3739)
- 8928ac6 [codex] Improve v2 pane header responsiveness (superset-sh#3737)
- 5fe3d22 refactor(desktop): tidy v2 terminal session dropdown (superset-sh#3743)
- 66c23d6 Fix automation timezone scheduling (superset-sh#3738)
- 16e270c [codex] Add terminal session titles (superset-sh#3740)
- 583fa5d fix(desktop): refit v2 terminal after font settle (superset-sh#3742)
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