mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-09 16:19:25 -07:00
fix launcher runtime feedback
This commit is contained in:
5
changes/274-launcher-runtime-fixes.md
Normal file
5
changes/274-launcher-runtime-fixes.md
Normal file
@@ -0,0 +1,5 @@
|
||||
type: fixed
|
||||
area: launcher
|
||||
|
||||
- Kept the first-run setup window from navigating away on unexpected URLs.
|
||||
- Made Windows mpv honor an explicitly configured executable path instead of silently falling back to PATH.
|
||||
@@ -79,7 +79,7 @@ function createSmokeCase(name: string): SmokeCase {
|
||||
|
||||
writeExecutable(
|
||||
fakeMpvPath,
|
||||
`#!/usr/bin/env node
|
||||
`#!/usr/bin/env bun
|
||||
const fs = require('node:fs');
|
||||
const net = require('node:net');
|
||||
const path = require('node:path');
|
||||
@@ -118,7 +118,7 @@ process.on('SIGTERM', closeAndExit);
|
||||
|
||||
writeExecutable(
|
||||
fakeAppPath,
|
||||
`#!/usr/bin/env node
|
||||
`#!/usr/bin/env bun
|
||||
const fs = require('node:fs');
|
||||
|
||||
const logPath = ${JSON.stringify(fakeAppLogPath)};
|
||||
|
||||
@@ -17,7 +17,7 @@ async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
|
||||
function makeFakeYtDlpScript(dir: string, payload: string): void {
|
||||
const scriptPath = path.join(dir, 'yt-dlp');
|
||||
const script = process.platform === 'win32'
|
||||
? `#!/usr/bin/env node
|
||||
? `#!/usr/bin/env bun
|
||||
process.stdout.write(${JSON.stringify(payload)});
|
||||
`
|
||||
: `#!/usr/bin/env sh
|
||||
|
||||
@@ -17,7 +17,7 @@ async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
|
||||
function makeFakeYtDlpScript(dir: string, payload: string): void {
|
||||
const scriptPath = path.join(dir, 'yt-dlp');
|
||||
const script = process.platform === 'win32'
|
||||
? `#!/usr/bin/env node
|
||||
? `#!/usr/bin/env bun
|
||||
process.stdout.write(${JSON.stringify(payload)});
|
||||
`
|
||||
: `#!/usr/bin/env sh
|
||||
|
||||
@@ -16,7 +16,7 @@ async function withTempDir<T>(fn: (dir: string) => Promise<T>): Promise<T> {
|
||||
|
||||
function makeFakeYtDlpScript(dir: string): string {
|
||||
const scriptPath = path.join(dir, 'yt-dlp');
|
||||
const script = `#!/usr/bin/env node
|
||||
const script = `#!/usr/bin/env bun
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ function makeFakeYtDlpScript(dir: string, payload: unknown, rawScript = false):
|
||||
process.platform === 'win32'
|
||||
? rawScript
|
||||
? stdoutBody
|
||||
: `#!/usr/bin/env node
|
||||
: `#!/usr/bin/env bun
|
||||
process.stdout.write(${JSON.stringify(stdoutBody)});
|
||||
`
|
||||
: `#!/usr/bin/env sh
|
||||
|
||||
@@ -396,7 +396,8 @@ export function createHandleFirstRunSetupNavigationHandler(deps: {
|
||||
}) {
|
||||
return (params: { url: string; preventDefault: () => void }): boolean => {
|
||||
if (!params.url.startsWith('subminer://first-run-setup')) {
|
||||
return false;
|
||||
params.preventDefault();
|
||||
return true;
|
||||
}
|
||||
params.preventDefault();
|
||||
let submission: FirstRunSetupSubmission | null;
|
||||
|
||||
@@ -18,9 +18,12 @@ export function resolveWindowsMpvPath(
|
||||
configuredMpvPath = '',
|
||||
): string {
|
||||
const configPath = normalizeCandidate(configuredMpvPath);
|
||||
if (configPath && deps.fileExists(configPath)) {
|
||||
if (configPath) {
|
||||
if (deps.fileExists(configPath)) {
|
||||
return configPath;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
const envPath = normalizeCandidate(deps.getEnv('SUBMINER_MPV_PATH'));
|
||||
if (envPath && deps.fileExists(envPath)) {
|
||||
@@ -107,11 +110,14 @@ export function launchWindowsMpv(
|
||||
pluginEntrypointPath?: string,
|
||||
configuredMpvPath?: string,
|
||||
): { ok: boolean; mpvPath: string } {
|
||||
const mpvPath = resolveWindowsMpvPath(deps, configuredMpvPath);
|
||||
const normalizedConfiguredPath = normalizeCandidate(configuredMpvPath);
|
||||
const mpvPath = resolveWindowsMpvPath(deps, normalizedConfiguredPath);
|
||||
if (!mpvPath) {
|
||||
deps.showError(
|
||||
'SubMiner mpv launcher',
|
||||
'Could not find mpv.exe. Set mpv.executablePath, set SUBMINER_MPV_PATH, or add mpv.exe to PATH.',
|
||||
normalizedConfiguredPath
|
||||
? `Configured mpv.executablePath was not found: ${normalizedConfiguredPath}`
|
||||
: 'Could not find mpv.exe. Set mpv.executablePath, set SUBMINER_MPV_PATH, or add mpv.exe to PATH.',
|
||||
);
|
||||
return { ok: false, mpvPath: '' };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user