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

  1. Reset the dock layout in 设置 - 外观
  2. Remove or fix the offending entry in the workspace layout config
  3. 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)