From 3df5d4d6a2cebcaa79f4e4c64b060e05a19361ab Mon Sep 17 00:00:00 2001 From: sudacode Date: Sat, 21 Mar 2026 19:43:49 -0700 Subject: [PATCH] fix(ci): export asCssColor and subtitle sidebar autoOpen typing --- src/config/definitions/defaults-subtitle.ts | 1 + src/config/definitions/options-subtitle.ts | 6 ++++ src/config/resolve/shared.ts | 40 +++++++++++++++++++++ src/core/services/ipc.test.ts | 1 + src/types.ts | 1 + 5 files changed, 49 insertions(+) diff --git a/src/config/definitions/defaults-subtitle.ts b/src/config/definitions/defaults-subtitle.ts index 717f1a9..25bbd0f 100644 --- a/src/config/definitions/defaults-subtitle.ts +++ b/src/config/definitions/defaults-subtitle.ts @@ -59,6 +59,7 @@ export const SUBTITLE_DEFAULT_CONFIG: Pick boolean } }) + .CSS; + return css?.supports?.('color', text) ?? false; +} export function asColor(value: unknown): string | undefined { if (typeof value !== 'string') return undefined; @@ -22,6 +38,30 @@ export function asColor(value: unknown): string | undefined { return hexColorPattern.test(text) ? text : undefined; } +export function asCssColor(value: unknown): string | undefined { + if (typeof value !== 'string') return undefined; + + const text = value.trim(); + if (text.length === 0) { + return undefined; + } + + if (supportsCssColor(text)) { + return text; + } + + const normalized = text.toLowerCase(); + if ( + hexColorPattern.test(text) || + cssColorKeywords.has(normalized) || + cssColorFunctionPattern.test(text) + ) { + return text; + } + + return undefined; +} + export function asFrequencyBandedColors( value: unknown, ): [string, string, string, string, string] | undefined { diff --git a/src/core/services/ipc.test.ts b/src/core/services/ipc.test.ts index 65e5da5..de8595f 100644 --- a/src/core/services/ipc.test.ts +++ b/src/core/services/ipc.test.ts @@ -84,6 +84,7 @@ function createSubtitleSidebarSnapshotFixture(): SubtitleSidebarSnapshot { currentSubtitle: { text: '', startTime: null, endTime: null }, config: { enabled: false, + autoOpen: false, layout: 'overlay', toggleKey: 'Backslash', pauseVideoOnHover: false, diff --git a/src/types.ts b/src/types.ts index cdde099..355f7f6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -374,6 +374,7 @@ export type SubtitleSidebarLayout = 'overlay' | 'embedded'; export interface SubtitleSidebarConfig { enabled?: boolean; + autoOpen?: boolean; layout?: SubtitleSidebarLayout; toggleKey?: string; pauseVideoOnHover?: boolean;