Skip to content

Commit a23b833

Browse files
fix(desktop): mac start:desktop crash from rewritten framework symlinks (pingdotgg#3058)
1 parent ce90563 commit a23b833

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

apps/desktop/scripts/electron-launcher.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export const APP_BUNDLE_ID = isDevelopment
3030
? `com.t3tools.t3code.dev.${devBundleIdSuffix || "local"}`
3131
: "com.t3tools.t3code";
3232
const APP_PROTOCOL_SCHEMES = isDevelopment ? ["t3code-dev"] : ["t3code"];
33-
const LAUNCHER_VERSION = 10;
33+
const LAUNCHER_VERSION = 11;
3434
const defaultIconPath = join(desktopDir, "resources", "icon.icns");
3535
const developmentMacIconPngPath = join(repoRoot, "assets", "dev", "blueprint-macos-1024.png");
3636

@@ -295,7 +295,11 @@ function buildMacLauncher(electronBinaryPath) {
295295
}
296296

297297
rmSync(targetAppBundlePath, { recursive: true, force: true });
298-
cpSync(sourceAppBundlePath, targetAppBundlePath, { recursive: true });
298+
// verbatimSymlinks keeps the framework's relative symlinks intact
299+
// (e.g. Resources -> Versions/Current/Resources). Without it cpSync
300+
// rewrites them to absolute paths into node_modules, which escape the
301+
// bundle and crash sandboxed helper processes (icudtl.dat not found).
302+
cpSync(sourceAppBundlePath, targetAppBundlePath, { recursive: true, verbatimSymlinks: true });
299303
patchMainBundleInfoPlist(targetAppBundlePath, iconPath);
300304
patchHelperBundleInfoPlists(targetAppBundlePath);
301305
if (isDevelopment) {

0 commit comments

Comments
 (0)