siyuan-note/siyuan · error
invalid inline styles data: %w
Error message
invalid inline styles data: %w
What it means
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.
Source
Thrown at kernel/model/inline_style.go:478
data, err := filelock.ReadFile(inlineStylesPath())
if os.IsNotExist(err) {
return ret, nil
}
if err != nil {
return nil, fmt.Errorf("read inline styles failed: %w", err)
}
if maxInlineStylesFileSize < len(data) {
return nil, fmt.Errorf("inline styles file exceeds the %d byte limit", maxInlineStylesFileSize)
}
if err = gulu.JSON.UnmarshalJSON(data, ret); err != nil {
return nil, fmt.Errorf("unmarshal inline styles failed: %w", err)
}
if ret.Version != 1 && ret.Version != InlineStylesVersion {
return nil, fmt.Errorf("unsupported inline styles version [%d]", ret.Version)
}
ret.Styles, err = normalizeInlineStyles(ret.Styles, false)
if err != nil {
return nil, fmt.Errorf("invalid inline styles data: %w", err)
}
ret.Builtin, err = normalizeInlineStyleBuiltin(ret.Builtin)
if err != nil {
return nil, fmt.Errorf("invalid inline styles data: %w", err)
}
ret.Order = normalizeInlineStyleOrder(ret.Order, ret.Styles)
ret.AV, err = normalizeInlineStyleAV(ret.AV, false)
if err != nil {
return nil, fmt.Errorf("invalid inline styles data: %w", err)
}
ret.Version = InlineStylesVersion
return ret, nil
}
func newEmptyInlineStyles() *InlineStyles {
return &InlineStyles{
Version: InlineStylesVersion,
Styles: []*InlineStyle{},View on GitHub (pinned to 8641553a1f)
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
Example fix
// before: style entry without ID fails normalization
{"styles":[{"style":"color:red"}]}
// after: unique ID present
{"styles":[{"id":"20240101120000-abcdefg","style":"color:red"}]} Defensive patterns
Strategy: validation
Validate before calling
function stylesWellFormed(styles) {
const ids = new Set();
return Array.isArray(styles) && styles.every(s =>
s && typeof s.id === 'string' && /^[0-9]{14}-[a-z0-9]{7}$/.test(s.id) && !ids.has(s.id) && ids.add(s.id));
} Type guard
function isInlineStyle(s) {
return s !== null && typeof s === 'object' && typeof s.id === 'string' && s.id.length > 0 && typeof s.style === 'string';
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: Manual edits removing required fields, duplicate IDs introduced by copy-pasting style entries, or partially corrupted JSON that still parses but violates struct invariants.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- invalid frontend capability [%s]: %w
- invalid tool arguments: %w
- invalid capability arguments: %w
- incomplete bazaar index metadata
- invalid rating distribution length for package: %s
AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11).
Data as JSON: /api/errors/3dc9ccbbb34c44cf.
Report an issue: GitHub.