A theme definition is version 1 whatever color tokens it names, and collectModeIssues in packages/data-provider/src/theme.ts rejects any color token its reader does not know (Unknown color token). So every color role added to the registry (rgb-switch-thumb in LibreChat-AI#16486, rgb-table-header-text in LibreChat-AI#16489, the focus roles in LibreChat-AI#16478) makes a definition that names it unreadable to an older client or server: after a rollback, or on a stale client package, the whole stored or yaml theme is dropped instead of rendering with the older fallback for that one role.
Appearance tokens already degrade this way since LibreChat-AI#16462 (isFutureAppearance, reported as a warning). Treat a well-formed but unknown rgb-* color the same (warn and ignore), so roles added from then on stay forward compatible. Readers that shipped before that change stay strict; that part cannot be fixed from the new side.
A theme definition is version 1 whatever color tokens it names, and
collectModeIssuesinpackages/data-provider/src/theme.tsrejects any color token its reader does not know (Unknown color token). So every color role added to the registry (rgb-switch-thumbin LibreChat-AI#16486,rgb-table-header-textin LibreChat-AI#16489, the focus roles in LibreChat-AI#16478) makes a definition that names it unreadable to an older client or server: after a rollback, or on a stale client package, the whole stored or yaml theme is dropped instead of rendering with the older fallback for that one role.Appearance tokens already degrade this way since LibreChat-AI#16462 (
isFutureAppearance, reported as a warning). Treat a well-formed but unknownrgb-*color the same (warn and ignore), so roles added from then on stay forward compatible. Readers that shipped before that change stay strict; that part cannot be fixed from the new side.