feat(config): unify mpv plugin options under main config and add CSS/Ani

- Replace subminer.conf plugin config with mpv.* fields in config.jsonc
- Add socketPath, backend, autoStartSubMiner, pauseUntilOverlayReady, aniskipEnabled/buttonKey, subminerBinaryPath to mpv config
- Add subtitleSidebar.css field; migrate legacy sidebar appearance fields
- Add paintOrder and WebkitTextStroke to subtitle style options
- Update default subtitle/sidebar fontFamily to CJK-first stack
- Fix overlay visible state surviving mpv y-r restart
- Fix live config saves applying subtitle CSS immediately to open overlays
- Migrate legacy primary/secondary subtitle appearance into subtitleStyle.css on load
- Switch AniSkip button key setting to click-to-learn key capture
This commit is contained in:
2026-05-17 18:01:39 -07:00
parent a9f66329ce
commit d673de75f6
92 changed files with 2241 additions and 742 deletions
+37
View File
@@ -0,0 +1,37 @@
import type { MpvBackend } from '../types/config';
export interface SubminerPluginRuntimeScriptOptConfig {
socketPath: string;
binaryPath?: string;
backend: MpvBackend;
autoStart: boolean;
autoStartVisibleOverlay: boolean;
autoStartPauseUntilReady: boolean;
texthookerEnabled: boolean;
aniskipEnabled: boolean;
aniskipButtonKey: string;
}
function boolScriptOpt(value: boolean): 'yes' | 'no' {
return value ? 'yes' : 'no';
}
export function buildSubminerPluginRuntimeScriptOptParts(
runtimeConfig: SubminerPluginRuntimeScriptOptConfig,
fallbackAppPath: string,
): string[] {
const binaryPath = runtimeConfig.binaryPath?.trim() || fallbackAppPath;
return [
`subminer-binary_path=${binaryPath}`,
`subminer-socket_path=${runtimeConfig.socketPath}`,
`subminer-backend=${runtimeConfig.backend}`,
`subminer-auto_start=${boolScriptOpt(runtimeConfig.autoStart)}`,
`subminer-auto_start_visible_overlay=${boolScriptOpt(runtimeConfig.autoStartVisibleOverlay)}`,
`subminer-auto_start_pause_until_ready=${boolScriptOpt(
runtimeConfig.autoStartPauseUntilReady,
)}`,
`subminer-texthooker_enabled=${boolScriptOpt(runtimeConfig.texthookerEnabled)}`,
`subminer-aniskip_enabled=${boolScriptOpt(runtimeConfig.aniskipEnabled)}`,
`subminer-aniskip_button_key=${runtimeConfig.aniskipButtonKey}`,
];
}