fix texthooker gate, overlay fallback, and control server byte limit

- gate --texthooker flag on both CLI useTexthooker arg and plugin texthookerEnabled
- remove erroneous return that blocked legacy app startup fallback after control command failure
- fix open-config-settings to only skipRender when window actually opened
- track raw byte count for accurate 64KB limit in app control server
This commit is contained in:
2026-05-21 03:11:23 -07:00
parent a53237f1ce
commit 661e54144d
8 changed files with 144 additions and 7 deletions
+6 -2
View File
@@ -3077,10 +3077,14 @@ const openFirstRunSetupWindowHandler = createOpenFirstRunSetupWindowHandler({
return;
}
if (submission.action === 'open-config-settings') {
firstRunSetupMessage = openConfigSettingsWindow()
const opened = openConfigSettingsWindow();
firstRunSetupMessage = opened
? 'Opened SubMiner settings.'
: 'SubMiner settings are unavailable.';
return { skipRender: true };
if (opened) {
return { skipRender: true };
}
return;
}
if (submission.action === 'refresh') {
const snapshot = await firstRunSetupService.refreshStatus('Status refreshed.');
@@ -45,3 +45,31 @@ test('app control server dispatches argv requests and replies ok', async () => {
fs.rmSync(dir, { recursive: true, force: true });
}
});
test('app control server rejects requests larger than 64KB by UTF-8 byte length', async () => {
if (process.platform === 'win32') return;
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'subminer-control-test-'));
const socketPath = path.join(dir, 'control.sock');
const received: string[][] = [];
const server = startAppControlServer({
socketPath,
platform: 'linux',
handleArgv: (argv) => {
received.push(argv);
},
});
try {
await waitForSocketPath(socketPath);
const result = await sendAppControlCommand(Array.from({ length: 4 }, () => 'あ'.repeat(6000)), {
socketPath,
});
assert.deepEqual(result, { ok: false, error: 'App control request too large' });
assert.deepEqual(received, []);
} finally {
server.close();
fs.rmSync(dir, { recursive: true, force: true });
}
});
+3 -1
View File
@@ -44,12 +44,14 @@ export function startAppControlServer(options: AppControlServerOptions): AppCont
const server = net.createServer((socket) => {
let buffer = '';
let byteCount = 0;
let handled = false;
socket.on('data', (chunk) => {
if (handled) return;
byteCount += chunk.length;
buffer += chunk.toString('utf8');
if (buffer.length > 65536) {
if (byteCount > 65536) {
handled = true;
writeResponse(socket, { ok: false, error: 'App control request too large' });
return;