{"record":{"id":"3dc9ccbbb34c44cf","repo":"siyuan-note/siyuan","slug":"invalid-inline-styles-data-w","errorCode":null,"errorMessage":"invalid inline styles data: %w","messagePattern":"invalid inline styles data: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kernel/model/inline_style.go","lineNumber":478,"sourceCode":"\tdata, err := filelock.ReadFile(inlineStylesPath())\n\tif os.IsNotExist(err) {\n\t\treturn ret, nil\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"read inline styles failed: %w\", err)\n\t}\n\tif maxInlineStylesFileSize < len(data) {\n\t\treturn nil, fmt.Errorf(\"inline styles file exceeds the %d byte limit\", maxInlineStylesFileSize)\n\t}\n\tif err = gulu.JSON.UnmarshalJSON(data, ret); err != nil {\n\t\treturn nil, fmt.Errorf(\"unmarshal inline styles failed: %w\", err)\n\t}\n\tif ret.Version != 1 && ret.Version != InlineStylesVersion {\n\t\treturn nil, fmt.Errorf(\"unsupported inline styles version [%d]\", ret.Version)\n\t}\n\tret.Styles, err = normalizeInlineStyles(ret.Styles, false)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid inline styles data: %w\", err)\n\t}\n\tret.Builtin, err = normalizeInlineStyleBuiltin(ret.Builtin)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid inline styles data: %w\", err)\n\t}\n\tret.Order = normalizeInlineStyleOrder(ret.Order, ret.Styles)\n\tret.AV, err = normalizeInlineStyleAV(ret.AV, false)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid inline styles data: %w\", err)\n\t}\n\tret.Version = InlineStylesVersion\n\treturn ret, nil\n}\n\nfunc newEmptyInlineStyles() *InlineStyles {\n\treturn &InlineStyles{\n\t\tVersion: InlineStylesVersion,\n\t\tStyles:  []*InlineStyle{},","sourceCodeStart":460,"sourceCodeEnd":496,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/8641553a1f07374001902d3ce773285db1292b2d/kernel/model/inline_style.go#L460-L496","documentation":"After version checks, loadInlineStyles runs normalizeInlineStyles over the Styles array to enforce IDs, limits, and field validity. Any violation (nil entry, empty/invalid ID, over-limit count, bad style data) surfaces as this generic 'invalid inline styles data' error for the Styles section.","triggerScenarios":"The loaded document's styles array contains null entries, entries with missing/duplicate/invalid IDs, or exceeds maxInlineStyles items when any loader-calling API is invoked.","commonSituations":"Manual edits removing required fields, duplicate IDs introduced by copy-pasting style entries, or partially corrupted JSON that still parses but violates struct invariants.","solutions":["Fix or remove the offending styles entries in the JSON (each needs a unique valid ID and style payload)","Restore the file from file history or backup","Delete the file to reset to defaults if the custom styles are expendable","Use the in-app inline-style editor rather than editing the file so invariants are maintained"],"exampleFix":"// before: style entry without ID fails normalization\n{\"styles\":[{\"style\":\"color:red\"}]}\n// after: unique ID present\n{\"styles\":[{\"id\":\"20240101120000-abcdefg\",\"style\":\"color:red\"}]}","handlingStrategy":"validation","validationCode":"function stylesWellFormed(styles) {\n  const ids = new Set();\n  return Array.isArray(styles) && styles.every(s =>\n    s && typeof s.id === 'string' && /^[0-9]{14}-[a-z0-9]{7}$/.test(s.id) && !ids.has(s.id) && ids.add(s.id));\n}","typeGuard":"function isInlineStyle(s) {\n  return s !== null && typeof s === 'object' && typeof s.id === 'string' && s.id.length > 0 && typeof s.style === 'string';\n}","tryCatchPattern":null,"preventionTips":["Give every custom style a unique, valid ID","Use the in-app editor instead of raw JSON edits","Check for duplicates after importing styles from another workspace"],"tags":["validation","inline-styles","schema"],"backgroundTag":"schema-validation-failed","analyzedSha":"8641553a1f07374001902d3ce773285db1292b2d","analyzedAt":"2026-09-11T16:08:28.414Z","contentChangedAt":"2026-09-11T16:08:28.414Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}