Skip to content

Merge master into v8-branch (brings #1410 tab-group chip re-drag fix)#1501

Merged
mathuo merged 5 commits into
v8-branchfrom
claude/merge-master-into-v8-branch-1410
Jul 21, 2026
Merged

Merge master into v8-branch (brings #1410 tab-group chip re-drag fix)#1501
mathuo merged 5 commits into
v8-branchfrom
claude/merge-master-into-v8-branch-1410

Conversation

@mathuo

@mathuo mathuo commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Description

Merges current master into v8-branch. The notable change master carries that v8-branch was missing is the #1410 fix — a tab group could not be dragged again after being moved once, because committing a within-group chip move disposed the chip's drag sources and _ensureChipForGroup never re-armed them.

Merge details:

  • One conflict, in tabGroups.ts — a doc comment on disposeChipDrag that both sides edited (v8 had a punctuation cleanup; master rewrote it to describe the new re-arm behavior). Resolved in favor of master's version, since the old "the subsequent update() will also dispose the sources" wording is no longer accurate.
  • Everything else auto-merged.

Fix verified in v8's structure: v8 moved the commit orchestration into tabReorderController.commitGroupMove, which still calls disposeChipDrag on a within-group moveTabGroup, so the merged fix (re-arming the sources in _ensureChipForGroup) applies unchanged. The #1410 unit tests fail against v8's pre-fix tabGroups.ts and pass after the merge.

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactor / cleanup
  • Build / CI / tooling

Affected packages

  • dockview-core
  • dockview (vanilla JS)
  • dockview-react
  • dockview-vue
  • dockview-angular
  • docs

How to test

  • Unit: within-group chip stays draggable across repeated moves (#1410) and the smooth-mode variant in dockviewComponent.spec.ts — both drive the real Tabs._commitGroupMove path and assert the chip re-drags. Full dockview-core suite: 1271 passing.
  • E2E (new): tab-group chip repeated moves (#1410) in e2e/tests/tab-group-chips.spec.ts drags a chip past another group and back in a real browser (pointer backend), asserting the chip stays draggable across both moves. Verified it fails against a pre-fix bundle and passes after the merge.

Both the unit and e2e #1410 tests were confirmed red on the pre-fix source and green after.

Checklist

  • yarn test passes (dockview-core: 1271)
  • New unit + e2e tests added
  • npm run gen — n/a to this change
  • Breaking changes are documented

Note: the pre-existing multi-row-tabs "vertical header" and vue-keep-alive e2e specs fail in my sandbox for environmental reasons (headless geometry / the dockview-vue UMD bundle not built locally); they fail identically without this change and are unrelated to it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Heh7Wst7u9Vu6QbYE5uGAK


Generated by Claude Code

mathuo and others added 5 commits July 20, 2026 21:54
…-group move (#1410)

Committing a group-chip move calls `disposeChipDrag`, which disposes the
chip's HTML5 + pointer drag sources to release the transfer payload and
iframe shield synchronously. A cross-group move dissolves the source chip
entirely, so this is harmless — but a within-group reorder keeps the same
chip element. Because `_ensureChipForGroup` early-returns when a renderer
entry already exists, the disposed sources were never rebuilt, so after its
first move a chip kept `draggable=true` (firing a native `dragstart`) but no
longer set a transfer payload — leaving the tab group undraggable.

Extract the drag-source wiring into `_createChipDragSources` and re-arm it
from `_ensureChipForGroup` when a surviving entry has no live sources.
`disposeChipDrag` now clears the source references so the following
`update()` re-wires them. The context-menu long-press cancel resolves the
pointer source from the entry so it targets the current (re-armed) source.

Adds a regression test that drives two consecutive chip drags across a
within-group move and asserts the transfer payload is set both times.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Heh7Wst7u9Vu6QbYE5uGAK
Drive the real production commit path (`Tabs._commitGroupMove`) instead of
simulating `disposeChipDrag` + `moveTabGroup`, cover repeated within-group
moves, assert both the HTML5 and pointer drag sources are re-armed, and add
a smooth-mode variant matching the reported example's config (the FLIP
branch of `_commitGroupMove`). All fail against the pre-fix source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Heh7Wst7u9Vu6QbYE5uGAK
fix(dockview-core): tab group can't be moved after its first move (#1410)
…-into-v8-branch-1410

# Conflicts:
#	packages/dockview-core/src/dockview/components/titlebar/tabGroups.ts
Add a Playwright regression test that drags a tab-group chip past another
group and then back, asserting the chip stays draggable across both moves —
the real-browser pointer-drag path the jsdom unit tests can't exercise.
Fails against the pre-fix bundle (the second drag is a no-op) and passes
with the re-arm fix. Adds a `setupTwoTabGroupChips` fixture helper (two
chips in one group) and a `chipLabels` reader.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Heh7Wst7u9Vu6QbYE5uGAK
@sonarqubecloud

Copy link
Copy Markdown

@mathuo
mathuo merged commit 37becfd into v8-branch Jul 21, 2026
9 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.

1 participant