Add support for OpenSubsonic enhanced lyrics (#2208)

This commit is contained in:
Jeff
2026-07-09 21:32:05 -07:00
committed by GitHub
parent 0c89fea1ea
commit 355b19c1cb
55 changed files with 4213 additions and 480 deletions
+30 -1
View File
@@ -571,6 +571,8 @@ const LyricsDisplaySettingsSchema = z.object({
gap: z.number(),
gapUnsync: z.number(),
opacityNonActive: z.number(),
paddingLeft: z.number(),
paddingRight: z.number(),
scaleNonActive: z.number(),
});
@@ -583,6 +585,8 @@ const LyricsSettingsSchema = z.object({
enableRomaji: z.boolean().optional(),
fetch: z.boolean(),
follow: z.boolean(),
followScrollAlignment: z.number(),
lineLeadTimeMs: z.number(),
preferLocalLyrics: z.boolean(),
showMatch: z.boolean(),
showProvider: z.boolean(),
@@ -1857,6 +1861,8 @@ const initialState: SettingsState = {
enableRomaji: false,
fetch: true,
follow: true,
followScrollAlignment: 0,
lineLeadTimeMs: 800,
preferLocalLyrics: true,
showMatch: true,
showProvider: true,
@@ -1872,6 +1878,8 @@ const initialState: SettingsState = {
gap: 24,
gapUnsync: 24,
opacityNonActive: 0.2,
paddingLeft: 0,
paddingRight: 0,
scaleNonActive: 0.95,
},
},
@@ -2539,10 +2547,31 @@ export const useSettingsStore = createWithEqualityFn<SettingsSlice>()(
);
}
if (version < 30) {
for (const [key, displaySettings] of Object.entries(state.lyricsDisplay)) {
const legacySettings = displaySettings as typeof displaySettings & {
paddingX?: number;
};
const legacyPaddingX = legacySettings.paddingX ?? 0;
state.lyricsDisplay[key] = {
...displaySettings,
paddingLeft: displaySettings.paddingLeft ?? legacyPaddingX,
paddingRight: displaySettings.paddingRight ?? legacyPaddingX,
};
}
}
if (version < 31) {
if (state.lyrics.followScrollAlignment === undefined) {
state.lyrics.followScrollAlignment = 0;
}
}
return persistedState;
},
name: 'store_settings',
version: 28,
version: 31,
},
),
);