Files
kandev/apps/web/lib/state/layout-manager/index.ts
T
José Almeida 61723934b9 fix: isolate saved layouts from stale sessions (#1649)
* fix: isolate saved layouts from stale sessions

* fix: preserve session tabs in saved layouts

* fix: handle materialized saved layout visibility

* fix: preserve sibling sessions on env switch

* fix: load task sessions before saved layouts

* fix: preserve sibling tabs on layout fast paths

* test: cover layout session id deduplication
2026-07-10 11:18:36 +01:00

92 lines
1.8 KiB
TypeScript

// Types
export type {
LayoutState,
LayoutColumn,
LayoutGroup,
LayoutPanel,
LayoutNode,
LayoutLeafNode,
LayoutBranchNode,
LayoutIntent,
LayoutIntentPanel,
} from "./types";
// Constants
export {
LAYOUT_SIDEBAR_RATIO,
LAYOUT_RIGHT_RATIO,
SIDEBAR_GROUP,
CENTER_GROUP,
RIGHT_TOP_GROUP,
RIGHT_BOTTOM_GROUP,
TERMINAL_DEFAULT_ID,
SIDEBAR_LOCK,
KNOWN_PANEL_IDS,
PANEL_REGISTRY,
panel,
} from "./constants";
// Runtime caps for pinned columns
export {
computeSidebarMaxPx,
computeRightMaxPx,
computePinnedMaxPxFor,
LAYOUT_PINNED_MIN_PX,
} from "./caps";
// Pinned-column target widths (enforced after every layout-change)
export {
setPinnedTarget,
getPinnedTarget,
clearPinnedTarget,
clearAllPinnedTargets,
} from "./pinned-targets";
// Presets
export {
defaultLayout,
compactLayout,
planLayout,
previewLayout,
getPresetLayout,
} from "./presets";
export type { BuiltInPreset } from "./presets";
// Sizing
export { computeColumnWidths, computeGroupHeights, getPinnedWidth } from "./sizing";
// Serializer
export { toSerializedDockview, fromDockviewApi, filterEphemeral } from "./serializer";
// Session panel normalization for reusable saved layouts
export {
isSessionChatPanel,
normalizeReusableSessionPanels,
materializeReusableChatPanel,
} from "./session-panels";
// Applier
export {
applyLayout,
getRootSplitview,
resolveGroupIds,
isCenterCandidateGroupId,
} from "./applier";
export type { LayoutGroupIds } from "./applier";
// Merger
export { mergeCurrentPanelsIntoPreset } from "./merger";
// Comparator
export { layoutStructuresMatch, savedLayoutMatchesLive } from "./comparator";
// Intent
export {
INTENT_COMPACT,
INTENT_PLAN,
INTENT_PR_REVIEW,
injectIntentPanels,
applyActivePanelOverrides,
resolveNamedIntent,
} from "./intent";