siyuan-note/siyuan · error
Invalid dock configuration
Error message
Invalid dock configuration
What it means
Generic validation guard in systemConfigCollections: a persisted dock entry fails structural checks — its instance is not one of Tab/Editor/Asset/Custom/Bookmark/Files/Tag, or its type/config sub-shape is invalid — indicating corrupt or version-mismatched dock configuration that cannot be safely restored.
Solutions
- Reset the dock layout in 设置 - 外观
- Remove or fix the offending entry in the workspace layout config
- Restore layout.json from a backup
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at app/src/config/systemConfig.ts:163 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19).
Data as JSON: /api/errors/cdfe25eb83a92763.
Report an issue: GitHub.
Appendix: source
Thrown at app/src/config/systemConfig.ts:163
}
if (value.instance === "Graph") {
return value.type == null || value.type === "pin" || value.type === "local" || value.type === "global";
}
if (value.instance === "Search") {
return isSearchConfig(value.config);
}
return typeof value.instance === "string" && ["Tab", "Editor", "Asset", "Custom", "Bookmark", "Files", "Tag"].includes(value.instance);
};
export const systemConfigCollections = (value: Pick<SystemAppConf, "keymap" | "uiLayout">,
defaultLayout?: () => Config.IUiLayout): Pick<Config.IConf, "keymap" | "uiLayout"> => {
const keymap = isObject(value.keymap) ? repairFalsyKeymapGroups(value.keymap) : value.keymap;
if (!isKeymap(keymap)) {
throw new Error("Invalid shortcut configuration");
}
const uiLayout = defaultLayout && (!isObject(value.uiLayout) || !value.uiLayout.left) ? defaultLayout() : value.uiLayout;
if (!isUILayout(uiLayout)) {
throw new Error("Invalid dock configuration");
}
return {keymap, uiLayout};
};
export const systemConfig = (value: SystemAppConf, defaultLayout?: () => Config.IUiLayout): Config.IConf =>
({...value, ...systemConfigCollections(value, defaultLayout)});
View on GitHub (pinned to 9f775e8a12)