From 352b8ed28efc263fff6fbf040890411c3b5ded43 Mon Sep 17 00:00:00 2001 From: Yannic Charlon <52761674+JustYannicc@users.noreply.github.com> Date: Fri, 3 Jul 2026 23:27:47 +0200 Subject: [PATCH] perf(camera): remove redundant mkdir subprocess --- scripts/test-camera-capture-single-encode.mjs | 35 +++++++++++++++++++ src/renderer/src/CameraExtension.tsx | 1 - 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 scripts/test-camera-capture-single-encode.mjs diff --git a/scripts/test-camera-capture-single-encode.mjs b/scripts/test-camera-capture-single-encode.mjs new file mode 100644 index 00000000..de49597b --- /dev/null +++ b/scripts/test-camera-capture-single-encode.mjs @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +import test from 'node:test'; +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..'); +const cameraExtensionPath = path.join(root, 'src/renderer/src/CameraExtension.tsx'); +const mainPath = path.join(root, 'src/main/main.ts'); + +test('Camera capture save path avoids redundant mkdir subprocess', async (t) => { + await t.test('camera capture writes image bytes without shelling out for mkdir', () => { + const source = fs.readFileSync(cameraExtensionPath, 'utf8'); + + assert.ok(!source.includes('/bin/mkdir')); + assert.ok(!source.includes("['-p', saveDir]")); + assert.ok(source.includes('const saveDir = homeDir ? `${homeDir}/Pictures/SuperCmd Captures` : \'/tmp/SuperCmd Captures\';')); + assert.ok(source.includes('const savePath = `${saveDir}/supercmd-capture-${timestamp}.png`;')); + assert.ok(source.includes('const bytes = new Uint8Array(await captureBlob.arrayBuffer());')); + assert.ok(source.includes('await window.electron.fsWriteBinaryFile(savePath, bytes);')); + }); + + await t.test('fsWriteBinaryFile IPC creates parent directories recursively', () => { + const source = fs.readFileSync(mainPath, 'utf8'); + const mkdirLine = 'await fs.promises.mkdir(nodePath.dirname(filePath), { recursive: true });'; + const writeLine = 'await fs.promises.writeFile(filePath, Buffer.from(data));'; + + assert.ok(source.includes("ipcMain.handle('fs-write-binary-file'")); + assert.ok(source.includes(mkdirLine)); + assert.ok(source.includes(writeLine)); + assert.ok(source.indexOf(mkdirLine) < source.indexOf(writeLine)); + }); +}); diff --git a/src/renderer/src/CameraExtension.tsx b/src/renderer/src/CameraExtension.tsx index 7de6a3f8..516bbc5a 100644 --- a/src/renderer/src/CameraExtension.tsx +++ b/src/renderer/src/CameraExtension.tsx @@ -323,7 +323,6 @@ const CameraExtension: React.FC = ({ onClose }) => { let savedToDisk = false; if (captureBlob) { try { - await window.electron.execCommand('/bin/mkdir', ['-p', saveDir], {}); const bytes = new Uint8Array(await captureBlob.arrayBuffer()); await window.electron.fsWriteBinaryFile(savePath, bytes); savedToDisk = true;