Skip to content

Feat/module system#1179

Open
mathuo wants to merge 2 commits intomasterfrom
feat/module-system
Open

Feat/module system#1179
mathuo wants to merge 2 commits intomasterfrom
feat/module-system

Conversation

@mathuo
Copy link
Copy Markdown
Owner

@mathuo mathuo commented Apr 12, 2026

Description

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

Checklist

  • yarn lint:fix passes
  • yarn format passes
  • npm run gen has been run and generated files are up to date
  • yarn test passes
  • I have added or updated tests where applicable
  • Breaking changes are documented

mathuo and others added 2 commits April 12, 2026 21:33
Introduce DockviewModule interface, ModuleRegistry, and ServiceCollection
as the foundation for decomposing dockview-core into independent feature
modules. This enables future tree-shaking and community/enterprise split.

- New modules.ts with DockviewModule type, ModuleRegistry class
- modules option added to DockviewOptions and PROPERTY_KEYS_DOCKVIEW
- DockviewComponent creates and exposes ModuleRegistry
- Framework wrappers (React, Vue, Angular) forward modules option
- No features moved, all 998 tests pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move floating group management into a dedicated FloatingGroupService
behind the module system. This validates the module extraction pattern
that will be used for all 16 planned modules.

- New IFloatingGroupService interface and FloatingGroupService class
  managing the floating groups array, lifecycle, bounds, serialization
- New FloatingGroupModule that registers the service via factory
- ModuleRegistry gains initialize(host) for service instantiation
- DockviewComponent delegates all 15 floating group touchpoints to
  the service via optional chaining
- Auto-registers FloatingGroupModule when no explicit modules option
  is provided, preserving full backward compatibility
- All 998 tests pass unchanged across all packages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codesandbox-ci
Copy link
Copy Markdown

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit 732117e:

Sandbox Source
dockview-app Configuration
editor-gridview Configuration
externaldnd-dockview Configuration
fullwidthtab-dockview Configuration
iframe-dockview Configuration
keyboard-dockview Configuration
nativeapp-dockview Configuration
rendering-dockview Configuration

@github-actions
Copy link
Copy Markdown

⚠️ Generated files are out of date

Run npm run gen and commit the result.

Diff
diff --git a/__generated__/dockview-core-exports.txt b/__generated__/dockview-core-exports.txt
index 856ebd3..f4c046a 100644
--- a/__generated__/dockview-core-exports.txt
+++ b/__generated__/dockview-core-exports.txt
@@ -46,6 +46,7 @@ DockviewHeaderDirection
 DockviewHeaderPosition
 DockviewIDisposable
 DockviewMaximizedGroupChanged
+DockviewModule
 DockviewMutableDisposable
 DockviewOptions
 DockviewPanel
@@ -69,6 +70,7 @@ DroptargetOverlayModel
 EdgeGroupOptions
 EdgeGroupPosition
 ExpansionEvent
+FloatingGroupModule
 FloatingGroupOptions
 FocusEvent
 GetTabContextMenuItemsParams
@@ -104,6 +106,8 @@ IDockviewHeaderActionsProps
 IDockviewPanel
 IDockviewPanelHeaderProps
 IDockviewPanelProps
+IFloatingGroupHost
+IFloatingGroupService
 IFrameworkPart
 IGridPanelComponentView
 IGridPanelView
@@ -141,6 +145,7 @@ LayoutPriority
 MaximizedChanged
 MaximizedViewChanged
 MeasuredValue
+ModuleRegistry
 MovePanelEvent
 MovementOptions
 MovementOptions2
@@ -195,6 +200,7 @@ SerializedSplitview
 SerializedSplitviewPanel
 SerializedSplitviewPanelData
 SerializedTabGroup
+ServiceCollection
 SizeEvent
 Sizing
 SplitSizing

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