@tutti-os/workbench-surface 0.0.147 → 0.0.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -61,6 +61,13 @@ Entries may also provide host-owned popup metadata through
61
61
  `resolvePopupItem(...)` and `capturePopupItemPreview(...)`, plus custom badge
62
62
  content when the default count or status shapes are not enough.
63
63
 
64
+ Presentation-only changes to merged Dock entries belong in
65
+ `dockEntryPresentationOverrides`. `WorkbenchHost` applies these overrides by
66
+ entry id after contributions and explicit entries are merged, preserving Dock
67
+ order without changing contribution nodes or rebuilding the host session. Use
68
+ this seam for host-owned visibility and retention presentation; keep product
69
+ preference persistence in the consuming host.
70
+
64
71
  Dock, shortcut, and command opens flow through `launchNode(...)` and the
65
72
  optional `onLaunchRequest(...)` callback. The host may create a business
66
73
  instance asynchronously, then return the shell identity, title, default frame,
package/dist/index.d.ts CHANGED
@@ -622,6 +622,8 @@ interface WorkbenchHostDockEntry {
622
622
  typeId: string;
623
623
  visibility?: WorkbenchHostDockEntryVisibility;
624
624
  }
625
+ type WorkbenchHostDockEntryPresentationOverride = Readonly<Partial<Pick<WorkbenchHostDockEntry, "dockRetention" | "visibility">>>;
626
+ type WorkbenchHostDockEntryPresentationOverrides = Readonly<Record<string, WorkbenchHostDockEntryPresentationOverride>>;
625
627
  type WorkbenchHostDockEntryDynamicState = Partial<Pick<WorkbenchHostDockEntry, "attentionToken" | "badge" | "diagnostics" | "dockRetention" | "hoverActions" | "launchBehavior" | "order" | "state" | "visibility">>;
626
628
  interface WorkbenchHostDockEntryStateSource {
627
629
  getEntryState(entryId: string): WorkbenchHostDockEntryDynamicState | null | undefined;
@@ -812,6 +814,7 @@ interface WorkbenchHostProps {
812
814
  dockPreviewCache?: WorkbenchDockPreviewCache;
813
815
  dockPlacement?: WorkbenchDockPlacement;
814
816
  dockEntries?: readonly WorkbenchHostDockEntry[];
817
+ dockEntryPresentationOverrides?: WorkbenchHostDockEntryPresentationOverrides;
815
818
  dockStateSource?: WorkbenchHostDockEntryStateSource;
816
819
  externalStateSource?: WorkbenchHostExternalStateSource;
817
820
  i18n?: I18nRuntime<string>;
@@ -844,7 +847,7 @@ interface WorkbenchHostProps {
844
847
  workspaceId: string;
845
848
  }
846
849
 
847
- declare function WorkbenchHost({ captureNodePreviewImage, className, contributions, debugDiagnostics, dockPreviewCache, dockPlacement, dockEntries, dockStateSource, externalStateSource, i18n, layoutConstraints, missionControl, minimizeAnimation, nodes, onDockEntryAction, onDockEntryClick, onHandleReady, onLaunchRequest, onMissionControlAdapterReady, onMissionControlRequestOpen, onNodeCloseRequest, projectedNodes, renderBottomChrome, renderTopChrome, snapshotRepository, shortcutsEnabled, wallpaper, windowManagement, workspaceId }: WorkbenchHostProps): react_jsx_runtime.JSX.Element;
850
+ declare function WorkbenchHost({ captureNodePreviewImage, className, contributions, debugDiagnostics, dockPreviewCache, dockPlacement, dockEntryPresentationOverrides, dockEntries, dockStateSource, externalStateSource, i18n, layoutConstraints, missionControl, minimizeAnimation, nodes, onDockEntryAction, onDockEntryClick, onHandleReady, onLaunchRequest, onMissionControlAdapterReady, onMissionControlRequestOpen, onNodeCloseRequest, projectedNodes, renderBottomChrome, renderTopChrome, snapshotRepository, shortcutsEnabled, wallpaper, windowManagement, workspaceId }: WorkbenchHostProps): react_jsx_runtime.JSX.Element;
848
851
 
849
852
  declare function resolveWorkbenchHostPrepareClose(contributions: readonly WorkbenchContribution[]): WorkbenchHostClosePreparer | undefined;
850
853
 
@@ -885,4 +888,4 @@ declare function getWorkbenchLayoutFrame(surfaceSize: WorkbenchSize, constraints
885
888
 
886
889
  declare function selectFocusedWorkbenchNode<TData>(state: WorkbenchState<TData>): WorkbenchNode<TData> | null;
887
890
 
888
- export { type CreateWorkbenchNodeInput, type CreateWorkbenchSnapshotFromStateOptions, type WorkbenchContribution, type WorkbenchController, type WorkbenchDebugDiagnostics, type WorkbenchDisplayMode, type WorkbenchDockContext, type WorkbenchDockPlacement, type WorkbenchDockPreviewCache, type WorkbenchDockPreviewCacheKey, type WorkbenchDockPreviewCacheKeyResolver, type WorkbenchDockPreviewContent, type WorkbenchFrame, type WorkbenchFullscreenHeaderMode, WorkbenchHost, type WorkbenchHostActivation, type WorkbenchHostActivationTarget, type WorkbenchHostChromeRenderContext, type WorkbenchHostCloseDialogRequest, type WorkbenchHostCloseDialogScope, type WorkbenchHostCloseDialogVariant, type WorkbenchHostCloseEffect, type WorkbenchHostClosePreparationContext, type WorkbenchHostClosePreparer, type WorkbenchHostDockEntry, type WorkbenchHostDockEntryAction, type WorkbenchHostDockEntryBadge, type WorkbenchHostDockEntryDynamicState, type WorkbenchHostDockEntryLaunchBehavior, type WorkbenchHostDockEntryState, type WorkbenchHostDockEntryStateKind, type WorkbenchHostDockEntryStateSource, type WorkbenchHostDockEntryVisibility, type WorkbenchHostDockPopupItemDescriptor, type WorkbenchHostDockPopupItemInput, type WorkbenchHostExternalStateLookupInput, type WorkbenchHostExternalStateSource, type WorkbenchHostHandle, type WorkbenchHostLaunchFramePolicy, type WorkbenchHostLaunchInput, type WorkbenchHostLaunchReason, type WorkbenchHostLaunchRequest, type WorkbenchHostLaunchResult, type WorkbenchHostMissionControlMode, type WorkbenchHostMissionControlProps, type WorkbenchHostMultiInstanceStrategy, type WorkbenchHostNodeBodyContext, type WorkbenchHostNodeCloseDecision, type WorkbenchHostNodeCloseRequest, type WorkbenchHostNodeData, type WorkbenchHostNodeDefinition, type WorkbenchHostNodeHeaderContext, type WorkbenchHostNodeHeaderWindowActions, type WorkbenchHostNodeIdentityInput, type WorkbenchHostNodeInstanceStrategy, type WorkbenchHostNodeMinimizedDockCapability, type WorkbenchHostNodeWindowCapabilities, type WorkbenchHostProjectedNode, type WorkbenchHostProjectedNodeSubject, type WorkbenchHostProps, type WorkbenchHostSingleInstanceStrategy, type WorkbenchHostSnapshotRepository, type WorkbenchHostWindowCloseEffectContext, type WorkbenchLayoutConstraints, type WorkbenchLayoutConstraintsInput, type WorkbenchLayoutPreset, type WorkbenchMissionControlAdapter, type WorkbenchMissionControlMode, type WorkbenchMissionControlSnapshot, type WorkbenchNode, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowManagementConfig, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, useWorkbenchSelector, workbenchFocusInputActivationType };
891
+ export { type CreateWorkbenchNodeInput, type CreateWorkbenchSnapshotFromStateOptions, type WorkbenchContribution, type WorkbenchController, type WorkbenchDebugDiagnostics, type WorkbenchDisplayMode, type WorkbenchDockContext, type WorkbenchDockPlacement, type WorkbenchDockPreviewCache, type WorkbenchDockPreviewCacheKey, type WorkbenchDockPreviewCacheKeyResolver, type WorkbenchDockPreviewContent, type WorkbenchFrame, type WorkbenchFullscreenHeaderMode, WorkbenchHost, type WorkbenchHostActivation, type WorkbenchHostActivationTarget, type WorkbenchHostChromeRenderContext, type WorkbenchHostCloseDialogRequest, type WorkbenchHostCloseDialogScope, type WorkbenchHostCloseDialogVariant, type WorkbenchHostCloseEffect, type WorkbenchHostClosePreparationContext, type WorkbenchHostClosePreparer, type WorkbenchHostDockEntry, type WorkbenchHostDockEntryAction, type WorkbenchHostDockEntryBadge, type WorkbenchHostDockEntryDynamicState, type WorkbenchHostDockEntryLaunchBehavior, type WorkbenchHostDockEntryPresentationOverride, type WorkbenchHostDockEntryPresentationOverrides, type WorkbenchHostDockEntryState, type WorkbenchHostDockEntryStateKind, type WorkbenchHostDockEntryStateSource, type WorkbenchHostDockEntryVisibility, type WorkbenchHostDockPopupItemDescriptor, type WorkbenchHostDockPopupItemInput, type WorkbenchHostExternalStateLookupInput, type WorkbenchHostExternalStateSource, type WorkbenchHostHandle, type WorkbenchHostLaunchFramePolicy, type WorkbenchHostLaunchInput, type WorkbenchHostLaunchReason, type WorkbenchHostLaunchRequest, type WorkbenchHostLaunchResult, type WorkbenchHostMissionControlMode, type WorkbenchHostMissionControlProps, type WorkbenchHostMultiInstanceStrategy, type WorkbenchHostNodeBodyContext, type WorkbenchHostNodeCloseDecision, type WorkbenchHostNodeCloseRequest, type WorkbenchHostNodeData, type WorkbenchHostNodeDefinition, type WorkbenchHostNodeHeaderContext, type WorkbenchHostNodeHeaderWindowActions, type WorkbenchHostNodeIdentityInput, type WorkbenchHostNodeInstanceStrategy, type WorkbenchHostNodeMinimizedDockCapability, type WorkbenchHostNodeWindowCapabilities, type WorkbenchHostProjectedNode, type WorkbenchHostProjectedNodeSubject, type WorkbenchHostProps, type WorkbenchHostSingleInstanceStrategy, type WorkbenchHostSnapshotRepository, type WorkbenchHostWindowCloseEffectContext, type WorkbenchLayoutConstraints, type WorkbenchLayoutConstraintsInput, type WorkbenchLayoutPreset, type WorkbenchMissionControlAdapter, type WorkbenchMissionControlMode, type WorkbenchMissionControlSnapshot, type WorkbenchNode, type WorkbenchNodeRenderFrame, type WorkbenchNodeSizeConstraints, type WorkbenchQuickLayoutTarget, type WorkbenchRenderNode, type WorkbenchRenderNodeContext, type WorkbenchRenderWindowActions, type WorkbenchRenderWindowHeader, type WorkbenchResolveFullscreenHeaderMode, type WorkbenchResolveWindowChromeMode, type WorkbenchResolveWindowChromeModeContext, type WorkbenchSafeArea, type WorkbenchSize, type WorkbenchState, WorkbenchSurface, type WorkbenchSurfacePresentation, type WorkbenchSurfaceProps, type WorkbenchSurfaceWallpaper, type WorkbenchSurfaceWallpaperFit, type WorkbenchWindowActionContext, WorkbenchWindowChromeI18nRuntime, type WorkbenchWindowChromeMode, type WorkbenchWindowHeaderContext, type WorkbenchWindowManagementConfig, createWorkbenchController, createWorkbenchHostLaunchedNodeId, createWorkbenchHostProjectedNodeId, createWorkbenchNode, createWorkbenchNodeFromSnapshot, createWorkbenchSnapshotFromState, createWorkbenchStateFromSnapshot, getWorkbenchLayoutFrame, isEditableShortcutTarget, resolveWorkbenchHostPrepareClose, selectFocusedWorkbenchNode, useWorkbenchSelector, workbenchFocusInputActivationType };
package/dist/index.js CHANGED
@@ -5644,11 +5644,19 @@ function resolveWorkbenchSurfaceWallpaperBackgroundSize(fit) {
5644
5644
  // src/host/hostConfig.ts
5645
5645
  function resolveWorkbenchHostDockEntries(props) {
5646
5646
  const contributions = props.contributions ?? [];
5647
- return mergeByKey(
5647
+ const mergedEntries = mergeByKey(
5648
5648
  contributions.flatMap((contribution) => contribution.dockEntries ?? []),
5649
5649
  props.dockEntries ?? [],
5650
5650
  (entry) => entry.id
5651
5651
  );
5652
+ const presentationOverrides = props.dockEntryPresentationOverrides;
5653
+ if (!presentationOverrides) {
5654
+ return mergedEntries;
5655
+ }
5656
+ return mergedEntries.map((entry) => {
5657
+ const presentationOverride = presentationOverrides[entry.id];
5658
+ return presentationOverride ? { ...entry, ...presentationOverride } : entry;
5659
+ });
5652
5660
  }
5653
5661
  function resolveWorkbenchHostRuntimeConfig(props) {
5654
5662
  const contributions = props.contributions ?? [];
@@ -13846,6 +13854,7 @@ function WorkbenchHost({
13846
13854
  debugDiagnostics,
13847
13855
  dockPreviewCache,
13848
13856
  dockPlacement,
13857
+ dockEntryPresentationOverrides,
13849
13858
  dockEntries,
13850
13859
  dockStateSource,
13851
13860
  externalStateSource,
@@ -13889,9 +13898,10 @@ function WorkbenchHost({
13889
13898
  const hostDockEntries = useMemo8(
13890
13899
  () => resolveWorkbenchHostDockEntries({
13891
13900
  contributions,
13901
+ dockEntryPresentationOverrides,
13892
13902
  dockEntries
13893
13903
  }),
13894
- [contributions, dockEntries]
13904
+ [contributions, dockEntries, dockEntryPresentationOverrides]
13895
13905
  );
13896
13906
  const missionControlMode = missionControl?.mode ?? null;
13897
13907
  const missionControlNodeIds = missionControl?.nodeIds;