sanitize child app env and bump launcher to 1.0.14

This commit is contained in:
2026-07-06 11:02:18 +09:00
parent b6372e4113
commit 50b1cc7632
4 changed files with 37 additions and 11 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "autonomy-studio-launcher",
"version": "1.0.13",
"version": "1.0.14",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "autonomy-studio-launcher",
"version": "1.0.13",
"version": "1.0.14",
"hasInstallScript": true,
"dependencies": {
"@electron-toolkit/preload": "^3.0.1",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "autonomy-studio-launcher",
"version": "1.0.13",
"version": "1.0.14",
"description": "Autonomy Studio v2 Frontend",
"main": "./out/main/index.js",
"author": {
+32 -6
View File
@@ -297,12 +297,30 @@ function installDebPackage(debPath: string): Promise<void> {
function createCleanChildEnv(extraEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
const env = { ...process.env, ...extraEnv }
delete env.APPIMAGE
delete env.APPDIR
delete env.OWD
delete env.ARGV0
delete env.ELECTRON_RENDERER_URL
delete env.VITE_DEV_SERVER_URL
const blockedKeys = [
'APPIMAGE',
'APPDIR',
'OWD',
'ARGV0',
'ELECTRON_RUN_AS_NODE',
'ELECTRON_NO_ATTACH_CONSOLE',
'ELECTRON_ENABLE_LOGGING',
'ELECTRON_ENABLE_STACK_DUMPING',
'ELECTRON_OVERRIDE_DIST_PATH',
'ELECTRON_RENDERER_URL',
'NODE_OPTIONS',
'VITE_DEV_SERVER_URL',
]
for (const key of blockedKeys) {
delete env[key]
}
for (const key of Object.keys(env)) {
if (key.startsWith('npm_') || key.startsWith('npm_config_') || key.startsWith('npm_package_')) {
delete env[key]
}
}
return env
}
@@ -928,6 +946,14 @@ function createWindow(): void {
childEnv.ATNMY_AUDIENCE_APP = audienceApp
}
if (!useDevLauncher) {
try {
chmodSync(spawnPath, 0o755)
} catch {
// Launch will surface the actual executable error if chmod is not allowed.
}
}
const logPath = useDevLauncher ? join(app.getPath('temp'), `autonomy-studio-${appName.replace(/[^a-z0-9_-]+/gi, '-').toLowerCase()}.dev.log`) : undefined
const logFd = logPath ? openSync(logPath, 'a') : undefined
if (logPath) {
+2 -2
View File
@@ -160,7 +160,7 @@ function Login({ onLogin }: LoginProps): React.JSX.Element {
{/* 플랫폼 공지 배너 — absolute로 레이아웃 영향 없음 */}
{notice && !noticeDismissed && (
<div className="absolute top-0 left-0 right-0 z-[100] flex items-start gap-3 px-5 py-3 bg-[rgba(22,27,42,0.92)] border-b border-[rgba(59,127,250,0.15)]">
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="var(--accent)" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="shrink-0">
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="var(--accent)" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="mt-[3px] shrink-0">
<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>
</svg>
<p className="flex-1 whitespace-pre-line text-[11.5px] leading-[1.65] text-[var(--text-secondary)]">
@@ -197,6 +197,7 @@ function Login({ onLogin }: LoginProps): React.JSX.Element {
<div className="absolute inset-0 z-50 bg-[rgba(0,0,0,0.45)] pointer-events-none animate-[fadeIn_0.2s_ease]" />
)}
<div className="login-version-wrap">
<div className="version-label">v{version}</div>
{launcherStatus?.action === 'UPDATE' && (
<button
type="button"
@@ -207,7 +208,6 @@ function Login({ onLogin }: LoginProps): React.JSX.Element {
{updating ? `업데이트 ${updateProgress}%` : '업데이트'}
</button>
)}
<div className="version-label">v{version}</div>
</div>
{/* Left — 브랜딩 + 동영상 */}