Skip to content

chore(upstream): mark upstream/main through 47efa7305 as merged (-s ours)#164

Merged
MocA-Love merged 10 commits intomainfrom
upstream-merge/mark-upstream-merged
Apr 14, 2026
Merged

chore(upstream): mark upstream/main through 47efa7305 as merged (-s ours)#164
MocA-Love merged 10 commits intomainfrom
upstream-merge/mark-upstream-merged

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

Upstream Merge - 監査用 -s ours マージ

upstream (superset-sh/superset) の 9 コミットを PR#159〜#163 で個別に cherry-pick 済み。git 履歴上も `upstream/main` が merge 済みとしてマークされるよう、`-s ours` で最後の upstream コミット `47efa7305` までを取り込みます。

このPRはコンテンツ変更なし(`-s ours` 戦略)、履歴上のマーク目的のみです。

取り込み対応表

Upstream Commit Upstream PR Our Fork PR 内容
`d656b7efa` superset-sh#3415 #159 (PR1/5) terminal clipboard handling
`31fcf191f` superset-sh#3416 #162 (PR4/5) v1 split pane startup sizing
`039edf21a` superset-sh#3403 #161 (PR3/5) Cmd+Alt+Arrow spatial pane focus
`b18a00c0b` superset-sh#3421 #159 (PR1/5) v2 right sidebar toggle reactive
`3dd1de2e8` superset-sh#3420 #161 (PR3/5) v2 diff viewer + tab title resolution
`b42a1143d` superset-sh#3418 #159 (PR1/5) CodeMirror hotkey enablement
`c925f4d4a` superset-sh#3422 #160 (PR2/5) unbound defaults + restore prev/next tab/workspace
`bb12c098f` superset-sh#3419 #163 (PR5/5) version bump 1.5.3
`47efa7305` superset-sh#3432 #159 (PR1/5) pending/update-required error selectable

検証

フォーク独自機能の維持確認

  • ✅ auto-updater (IS_FORK, GitHub Releases API ベース)
  • ✅ QuitMode / requestQuit / cleanupMainWindowResources ライフサイクル
  • ✅ GitHubSyncService
  • ✅ SpreadsheetViewer
  • ✅ BROWSER_RELOAD / BROWSER_HARD_RELOAD / SEARCH_IN_FILES ホットキー
  • ✅ HotkeyCategory "Browser"
  • ✅ v1 deep-link navigation (useSearch / WorkspaceSearchParams / useDeepLinkNavigationStore)
  • ✅ v1 tRPC ベースの PREV/NEXT_WORKSPACE ハンドラ
  • ✅ v1 CLOSE_TERMINAL / CLOSE_TAB ホットキーハンドラ
  • ✅ v2 追加 state (rightSidebarOpenViewWidth, showPresetsBar 等)

Kitenite and others added 10 commits April 13, 2026 08:59
…3415)

* Fix code TUI copy

* Handle more keyboard shortcuts

* fix(desktop): match VS Code terminal clipboard handling
* fix v1 split pane startup sizing

* Handle background
…h#3403)

* feat(desktop): directional pane focus via Cmd+Alt+Arrow (v2)

Adds spatial pane navigation to v2 workspaces: Cmd+Alt+Arrow jumps
focus to the visually adjacent pane in that direction (no wrap at
edges). Reclaims Cmd+Alt+Arrow from the retired PREV/NEXT_TAB and
PREV/NEXT_WORKSPACE shortcuts — tabs still cycle via Ctrl+Tab and
both tabs and workspaces keep Cmd+Alt+1..9 jump-to-N.

The spatial neighbor util walks up the LayoutNode path to find the
deepest ancestor split whose axis matches the arrow, then descends
into the sibling subtree picking the near-edge leaf.

* fix(panes): preserve cross-axis alignment during spatial neighbor descent

findEdgePaneId previously fell through to node.first on any
perpendicular split encountered while descending into the sibling
subtree, losing the source pane's row/column position. In a 2x2 grid
this caused the directional focus move to land on the wrong pane
depending on how the grid was grouped in the layout tree (e.g. in
a rows-first 2x2, down from top-right landed on bottom-left).

Track the source pane's path below the pivot ancestor as an alignment
path and consume one entry per perpendicular-split descent, so the
descent mirrors the source's cross-axis choices.

Adds unit tests for getSpatialNeighborPaneId covering single pane,
simple horizontal/vertical splits, edge no-wrap, and both groupings
of the 2x2 grid.

* refactor(desktop): drop linear PREV/NEXT_PANE now that directional nav exists

The 4-way FOCUS_PANE_{LEFT,RIGHT,UP,DOWN} shortcuts supersede linear
pane cycling. Removing PREV/NEXT_PANE also frees ctrl+shift+alt+Arrow
on Windows/Linux, which dodges the Intel HD Graphics screen-rotation
driver shortcut that steals ctrl+alt+Arrow at the OS level.

- Remove PREV_PANE/NEXT_PANE from the hotkey registry and both v1/v2
  handler sites.
- Remap FOCUS_PANE_{LEFT,RIGHT,UP,DOWN} on Windows/Linux from
  ctrl+alt+Arrow to ctrl+shift+alt+Arrow.
- Delete now-unused getNextPaneId/getPreviousPaneId helpers from
  renderer/stores/tabs/utils.ts.

Users who relied on linear cycling can re-add it via settings once
the unbound-default hotkey support lands as a follow-up.
…perset-sh#3421)

The hover icon swap was silently broken because isOpen was read via a
one-shot collections.get() call instead of a live query, so the component
never re-rendered when rightSidebarOpen changed.
…ne title resolution (superset-sh#3420)

* feat(desktop): v2 diff viewer opens in its own tab + pane-derived tab titles

openDiffPane now scans all tabs for an existing diff pane (focus + scroll)
and falls back to addTab, so clicking a file in the Changes sidebar never
hijacks the focused editor tab.

Collapses tab/pane title resolution onto a single canonical field:
PaneDefinition.getTitle is tightened to (pane) => string, file's rich JSX
moves into the existing renderTitle hook, and a new resolveTabTitle helper
powers both the tab bar and the "Move to Tab" context menu. tab.titleOverride
is reserved for user renames; every auto-default caller is stripped and
multi-pane tabs fall back to "Tab N" instead of "tab-<uuid>".

* feat(desktop): pane-derived tab titles reserve tab.titleOverride for user renames

Preset execution and workspace bootstrap were baking preset.name /
terminal.label onto tab.titleOverride, which meant those names persisted
misleadingly after a tab was split and couldn't be distinguished from a real
user rename. Move both to the pane's titleOverride instead, and teach
resolveTabTitle to read pane.titleOverride before falling through to
getTitle() for single-pane tabs. tab.titleOverride is now written only by
the tab-bar rename action; splitting a named tab flips the label to "Tab N"
while the pane keeps its name in its header, and user renames still win
over everything.

* fix(desktop): browser.getTitle falls back to "Browser" for about:blank

Unnavigated browser panes had their pane header fall through to pane.id
(a raw UUID) because getTitle returned undefined for about:blank and the
old titleOverride: "Browser" default was removed along with the other
auto-default titleOverride writes.

* fix(desktop): browser tab title uses URL.host to preserve port

URL.hostname drops the port, so localhost:3000 and localhost:4000 both
rendered as "localhost" in the tab bar. URL.host keeps the port when one
is explicitly set.
…ditor) (superset-sh#3418)

react-hotkeys-hook skips events whose target is contentEditable unless
enableOnContentEditable is set. CodeMirror 6 renders its editor as a
contenteditable element, so app chords like cmd+w stopped firing when
focus was in the v1 file editor — meta+w never reached the CLOSE_TERMINAL
handler that closes the focused pane.

Default enableOnContentEditable: true in useHotkey, mirroring the existing
enableOnFormTags default. Callers can still opt out via options.
…kspace (superset-sh#3422)

* feat(desktop/hotkeys): allow unbound defaults; restore PREV/NEXT tab+workspace

Widen PlatformKey and HotkeyDefinition so hotkey entries can register
with a null chord per platform. Downstream consumers were already
null-safe from superset-sh#3391 (useBinding, buildRegisteredAppChords,
formatHotkeyDisplay, sanitizeOverride, HotkeyMenuShortcut), so the
schema widening is the only structural change needed.

Re-introduce PREV_TAB, NEXT_TAB, PREV_WORKSPACE, NEXT_WORKSPACE as
registered-but-unbound entries so users who want tab/workspace neighbor
navigation can rebind them in Settings → Keyboard. PR superset-sh#3403 removed
these to free Cmd+Alt+Arrow for directional pane focus; this restores
the hotkey IDs (and their v1/v2 handlers) without claiming any default
chord. Users with pre-superset-sh#3403 overrides for these IDs will transparently
get their bindings back since the override is preserved in localStorage.

- Null-guard canonicalizeChord(defaultKey) in useRecordHotkeys so
  recording a new chord for an unbound hotkey no longer throws.
- Replace the force-cast in resolveHotkeyFromEvent.test.ts sample
  picker with a type predicate so sampleDef.key narrows to string
  honestly instead of lying about the widened schema.

* fix(desktop/hotkeys): restore prevIndex in v2 PREV_WORKSPACE handler
…rs selectable (superset-sh#3432)

Global `user-select: none` on body blocks copying error text on full-page error states. Matches the pattern already used by v1 WorkspaceInitializingView.
All 9 upstream commits have been individually cherry-picked via PR#159~#163:

| Upstream | Our PR | Description |
|---|---|---|
| d656b7e (superset-sh#3415) | #159 (PR#1) | terminal clipboard handling |
| 31fcf19 (superset-sh#3416) | #162 (PR#4) | v1 split pane startup sizing fix |
| 039edf2 (superset-sh#3403) | #161 (PR#3) | Cmd+Alt+Arrow spatial pane focus |
| b18a00c (superset-sh#3421) | #159 (PR#1) | v2 right sidebar toggle reactive |
| 3dd1de2 (superset-sh#3420) | #161 (PR#3) | v2 diff viewer + tab title resolution |
| b42a114 (superset-sh#3418) | #159 (PR#1) | CodeMirror hotkey enablement |
| c925f4d (superset-sh#3422) | #160 (PR#2) | unbound defaults + restore prev/next tab/workspace |
| bb12c09 (superset-sh#3419) | #163 (PR#5) | version bump 1.5.3 |
| 47efa73 (superset-sh#3432) | #159 (PR#1) | pending/update-required error selectable |

Fork-specific features preserved:
- auto-updater (IS_FORK, GitHub Releases API)
- QuitMode/cleanupMainWindowResources lifecycle
- GitHubSyncService, SpreadsheetViewer
- BROWSER_RELOAD / BROWSER_HARD_RELOAD / SEARCH_IN_FILES hotkeys
- HotkeyCategory "Browser"
- v1 deep-link navigation (useSearch/WorkspaceSearchParams)
- v1 tRPC-based PREV/NEXT_WORKSPACE handlers
- v1 CLOSE_TERMINAL/CLOSE_TAB hotkey handlers
- v2 extra state (rightSidebarOpenViewWidth, showPresetsBar)
@MocA-Love MocA-Love merged commit d75faea into main Apr 14, 2026
6 checks passed
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.

4 participants