From 8fe23fbb0b66dd9bec148dc4d5720eca6ae193e5 Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Tue, 7 Jul 2026 22:18:58 +0100 Subject: [PATCH 1/2] refactor(modules): move TabGroupChipsModule to dockview-core (free tier) TabGroupChipsModule is now a free, core module rather than part of the paid dockview-enterprise bundle. The group-tab chip strip is table-stakes multi-group navigation, so gating it behind the licence watermark reads as hostile rather than an upsell. - add tabGroupChipsService.ts to dockview-core and register it in allModules.ts so it auto-registers (and fires the tab-group lifecycle events) for every component, no enterprise package required - export TabGroupChipsModule / TabGroupChipsService from dockview-core - drop it from dockview-enterprise's Modules array and explicit re-export; it stays in the enterprise public surface via `export * from 'dockview'`, so dockview-enterprise remains a drop-in superset - move the tab-group events spec into dockview-core ContextMenuModule stays enterprise (the built-in menu builder is the paid value); free users needing a tab context menu use a custom tab renderer. core 1150 / enterprise 283 green. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/__tests__/dockview}/tabGroupChips.spec.ts | 8 +++----- packages/dockview-core/src/dockview/allModules.ts | 2 ++ .../src/dockview}/tabGroupChipsService.ts | 11 ++++------- packages/dockview-core/src/index.ts | 4 ++++ packages/dockview-enterprise/src/index.ts | 9 +++------ 5 files changed, 16 insertions(+), 18 deletions(-) rename packages/{dockview-enterprise/src/__tests__ => dockview-core/src/__tests__/dockview}/tabGroupChips.spec.ts (98%) rename packages/{dockview-enterprise/src => dockview-core/src/dockview}/tabGroupChipsService.ts (89%) diff --git a/packages/dockview-enterprise/src/__tests__/tabGroupChips.spec.ts b/packages/dockview-core/src/__tests__/dockview/tabGroupChips.spec.ts similarity index 98% rename from packages/dockview-enterprise/src/__tests__/tabGroupChips.spec.ts rename to packages/dockview-core/src/__tests__/dockview/tabGroupChips.spec.ts index 8af6c7fd8..e4553c946 100644 --- a/packages/dockview-enterprise/src/__tests__/tabGroupChips.spec.ts +++ b/packages/dockview-core/src/__tests__/dockview/tabGroupChips.spec.ts @@ -1,8 +1,6 @@ -import { - DockviewComponent, - IContentRenderer, - DockviewCompositeDisposable as CompositeDisposable, -} from 'dockview-core'; +import { DockviewComponent } from '../../dockview/dockviewComponent'; +import { IContentRenderer } from '../../dockview/types'; +import { CompositeDisposable } from '../../lifecycle'; class TestPanel implements IContentRenderer { element = document.createElement('div'); diff --git a/packages/dockview-core/src/dockview/allModules.ts b/packages/dockview-core/src/dockview/allModules.ts index 400d719c2..070eb9f5d 100644 --- a/packages/dockview-core/src/dockview/allModules.ts +++ b/packages/dockview-core/src/dockview/allModules.ts @@ -7,6 +7,7 @@ import { RootDropTargetModule } from './rootDropTargetService'; import { HeaderActionsModule } from './headerActionsService'; import { LiveRegionModule } from './liveRegionService'; import { AdvancedDnDModule } from './advancedDnDService'; +import { TabGroupChipsModule } from './tabGroupChipsService'; /** * Internal list of the built-in modules that ship with the core. Registered @@ -23,4 +24,5 @@ export const AllModules: DockviewModule[] = [ HeaderActionsModule, LiveRegionModule, AdvancedDnDModule, + TabGroupChipsModule, ]; diff --git a/packages/dockview-enterprise/src/tabGroupChipsService.ts b/packages/dockview-core/src/dockview/tabGroupChipsService.ts similarity index 89% rename from packages/dockview-enterprise/src/tabGroupChipsService.ts rename to packages/dockview-core/src/dockview/tabGroupChipsService.ts index b853e469d..52b055d2a 100644 --- a/packages/dockview-enterprise/src/tabGroupChipsService.ts +++ b/packages/dockview-core/src/dockview/tabGroupChipsService.ts @@ -1,10 +1,7 @@ -import { - DockviewCompositeDisposable as CompositeDisposable, - DockviewIDisposable as IDisposable, -} from 'dockview'; -import { DockviewGroupPanel } from 'dockview'; -import { defineModule } from 'dockview'; -import { ITabGroupChipsHost, ITabGroupChipsService } from 'dockview'; +import { CompositeDisposable, IDisposable } from '../lifecycle'; +import { DockviewGroupPanel } from './dockviewGroupPanel'; +import { defineModule } from './modules'; +import { ITabGroupChipsHost, ITabGroupChipsService } from './moduleContracts'; export class TabGroupChipsService implements ITabGroupChipsService { private readonly _host: ITabGroupChipsHost; diff --git a/packages/dockview-core/src/index.ts b/packages/dockview-core/src/index.ts index 99c19c7da..f87b37ef4 100644 --- a/packages/dockview-core/src/index.ts +++ b/packages/dockview-core/src/index.ts @@ -241,6 +241,10 @@ export { AdvancedDnDModule, AdvancedDnDService, } from './dockview/advancedDnDService'; +export { + TabGroupChipsModule, + TabGroupChipsService, +} from './dockview/tabGroupChipsService'; export { FloatingGroupModule } from './dockview/floatingGroupService'; export { EdgeGroupModule } from './dockview/edgeGroupService'; export { createCloseButton, createPinButton } from './svg'; diff --git a/packages/dockview-enterprise/src/index.ts b/packages/dockview-enterprise/src/index.ts index ac2936c6f..d7c738829 100644 --- a/packages/dockview-enterprise/src/index.ts +++ b/packages/dockview-enterprise/src/index.ts @@ -1,5 +1,4 @@ import { DockviewModule, registerModules } from 'dockview'; -import { TabGroupChipsModule } from './tabGroupChipsService'; import { ContextMenuModule } from './contextMenu'; import { KeyboardNavigationModule } from './keyboardNavigationService'; import { LayoutHistoryModule } from './layoutHistoryService'; @@ -17,10 +16,9 @@ import { LicenseModule } from './licenseService'; // (e.g. markDockviewPackageLoaded) via the re-exported module. export * from 'dockview'; -export { - TabGroupChipsService, - TabGroupChipsModule, -} from './tabGroupChipsService'; +// TabGroupChipsModule / TabGroupChipsService are now FREE and live in +// dockview-core; they remain re-exported here via `export * from 'dockview'` +// above so `dockview-enterprise` stays a drop-in superset. export { ContextMenuController, ContextMenuModule } from './contextMenu'; export { KeyboardNavigationService, @@ -66,7 +64,6 @@ export type { LicenseState } from './licenseValidator'; * for every component in the process. */ export const Modules: DockviewModule[] = [ - TabGroupChipsModule, ContextMenuModule, KeyboardNavigationModule, LayoutHistoryModule, From 9c3fbbca6bb8b70d3b69f756637f0118500cd422 Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Tue, 7 Jul 2026 22:23:45 +0100 Subject: [PATCH 2/2] chore(gen): regenerate dockview-core exports for TabGroupChips move Co-Authored-By: Claude Opus 4.8 (1M context) --- __generated__/dockview-core-exports.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/__generated__/dockview-core-exports.txt b/__generated__/dockview-core-exports.txt index 8076345bd..d8bf17591 100644 --- a/__generated__/dockview-core-exports.txt +++ b/__generated__/dockview-core-exports.txt @@ -286,6 +286,8 @@ SplitviewPanelApi Tab TabAnimation TabDragEvent +TabGroupChipsModule +TabGroupChipsService TabGroupColorPalette TabGroupOptions TabPartInitParameters