From 000599e1911a9745da80eb12474ad5653dc703ab Mon Sep 17 00:00:00 2001 From: Codinget Date: Fri, 22 May 2026 17:49:50 +0000 Subject: [PATCH] Fix series name for themes with a character subdir but no variant Three layout depths exist under definitions/: series/file.json (e.g. Megumin) series/character/file.json (e.g. Rem, Ram, Beatrice, Miku) series/character/variant/file.json (most themes) Counting from the end of the path produced wrong series names for the middle case. Always read the series as the first directory after 'definitions/' instead. Co-Authored-By: Claude Sonnet 4.6 --- src/palette.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/palette.ts b/src/palette.ts index 25fc1cd..0d1f890 100644 --- a/src/palette.ts +++ b/src/palette.ts @@ -47,8 +47,11 @@ export function loadTheme(definitionPath: string, dokiRepoRoot: string): ThemeCo const variant = hasVariant ? nameParts[nameParts.length - 1] : null; - // Series directory is 4 levels up when a variant dir exists, 2 levels up otherwise - const series = hasVariant ? parts[parts.length - 4] : parts[parts.length - 2]; + // Series is always the first directory after 'definitions/' regardless of depth. + // Counting from the end is fragile because definitions can be 2, 3 or 4 segments + // deep (series/file, series/char/file, series/char/variant/file). + const defsIdx = parts.lastIndexOf('definitions'); + const series = parts[defsIdx + 1]; const internalName = ['doki', sanitize(series), sanitize(def.displayName), variant ? sanitize(variant) : null] .filter(Boolean)