siyuan-note/siyuan · error

unsupported version

Error message

unsupported version

What it means

Thrown during profile import when the file's version field fails isEntryVisibilityImportVersionSupported against ENTRY_VISIBILITY_VERSION — the JSON parsed fine but was written by an incompatible entry-visibility schema version, and importing it could corrupt persisted visibility/order configuration.

Solutions

  1. Re-export the profiles from a SiYuan version whose ENTRY_VISIBILITY_VERSION matches this build
  2. Manually adjust the file's version field only if the schema is known to be compatible
  3. Check for a SiYuan update that supports the file's version
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at app/src/config/entryVisibility/ui.ts:902 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/887f07efb3d78987. Report an issue: GitHub.

Appendix: source

Thrown at app/src/config/entryVisibility/ui.ts:902

            saveEntryVisibility(config);
            renderProfileCards(root);
            leaveEditor();
        }
    });
    const nameInput = view.querySelector<HTMLInputElement>("[data-profile-field='name']");
    if (creating && nameInput) {
        nameInput.select();
    }
};

const importProfiles = async (root: HTMLElement, file: File) => {
    if (!getHostCapabilities().importExport) {
        return;
    }
    try {
        const data = JSON.parse(await file.text()) as TImportFile;
        if (!isEntryVisibilityImportVersionSupported(data.version, ENTRY_VISIBILITY_VERSION)) {
            throw new Error("unsupported version");
        }
        let imported: TEntryVisibilityImportProfile[];
        if (data.type === "siyuan-entry-profile" && data.profile) {
            imported = [data.profile];
        } else if (data.type === "siyuan-entry-profile-bundle" && Array.isArray(data.profiles)) {
            imported = data.profiles;
        } else {
            throw new Error("invalid type");
        }
        const config = cloneConfig();
        let importedCount = 0;
        imported.forEach((item) => {
            const profile = normalizeEntryVisibilityImportProfile(item, data.version, createEntryOrderSnapshot());
            if (!profile) {
                return;
            }
            config.profiles.push({
                id: genUUID(),

View on GitHub (pinned to 9f775e8a12)