[codex] Replace mpv fullscreen toggle with launch mode config (#48)

Co-authored-by: bee <autumn@skerritt.blog>
This commit is contained in:
Autumn (Bee)
2026-04-07 16:38:15 +09:00
committed by GitHub
parent 7a64488ed5
commit bc7dde3b02
31 changed files with 305 additions and 31 deletions

View File

@@ -13,6 +13,17 @@ test('resolveConfig trims configured mpv executable path', () => {
assert.deepEqual(warnings, []);
});
test('resolveConfig parses configured mpv launch mode', () => {
const { resolved, warnings } = resolveConfig({
mpv: {
launchMode: 'maximized',
},
});
assert.equal(resolved.mpv.launchMode, 'maximized');
assert.deepEqual(warnings, []);
});
test('resolveConfig warns for invalid mpv executable path type', () => {
const { resolved, warnings } = resolveConfig({
mpv: {
@@ -29,3 +40,20 @@ test('resolveConfig warns for invalid mpv executable path type', () => {
message: 'Expected string.',
});
});
test('resolveConfig warns for invalid mpv launch mode', () => {
const { resolved, warnings } = resolveConfig({
mpv: {
launchMode: 'cinema' as never,
},
});
assert.equal(resolved.mpv.launchMode, 'normal');
assert.equal(warnings.length, 1);
assert.deepEqual(warnings[0], {
path: 'mpv.launchMode',
value: 'cinema',
fallback: 'normal',
message: "Expected one of: 'normal', 'maximized', 'fullscreen'.",
});
});

View File

@@ -1,5 +1,6 @@
import * as os from 'node:os';
import * as path from 'node:path';
import { MPV_LAUNCH_MODE_VALUES, parseMpvLaunchMode } from '../../shared/mpv-launch-mode';
import { ResolveContext } from './context';
import { asBoolean, asNumber, asString, isObject } from './shared';
@@ -240,6 +241,18 @@ export function applyIntegrationConfig(context: ResolveContext): void {
'Expected string.',
);
}
const launchMode = parseMpvLaunchMode(src.mpv.launchMode);
if (launchMode !== undefined) {
resolved.mpv.launchMode = launchMode;
} else if (src.mpv.launchMode !== undefined) {
warn(
'mpv.launchMode',
src.mpv.launchMode,
resolved.mpv.launchMode,
`Expected one of: ${MPV_LAUNCH_MODE_VALUES.map((value) => `'${value}'`).join(', ')}.`,
);
}
} else if (src.mpv !== undefined) {
warn('mpv', src.mpv, resolved.mpv, 'Expected object.');
}