fix launcher runtime feedback

This commit is contained in:
2026-04-03 12:42:56 -07:00
parent 3203713fd5
commit 3c7995afb7
8 changed files with 23 additions and 11 deletions

View 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.

View File

@@ -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)};

View File

@@ -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

View File

@@ -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

View File

@@ -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');

View File

@@ -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

View File

@@ -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;

View File

@@ -18,8 +18,11 @@ export function resolveWindowsMpvPath(
configuredMpvPath = '',
): string {
const configPath = normalizeCandidate(configuredMpvPath);
if (configPath && deps.fileExists(configPath)) {
return configPath;
if (configPath) {
if (deps.fileExists(configPath)) {
return configPath;
}
return '';
}
const envPath = normalizeCandidate(deps.getEnv('SUBMINER_MPV_PATH'));
@@ -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: '' };
}