dogfood 발견 — 앱 아이콘 클릭 시마다 새 process 가 떠서 트레이 아이콘 여러 개, SQLite 동시 접근 + AiWorker 중복 처리 + HealthChecker 중복 polling 등 **데이터 corruption 위험**. 원인: app.requestSingleInstanceLock() 호출 부재. Electron default 가 multi-instance 라 .exe 실행마다 별도 process. Fix: - app.requestSingleInstanceLock() 첫 줄에서 호출 - 두 번째 인스턴스 → app.quit() 즉시 종료 - 'second-instance' 이벤트 → 기존 inbox 창 restore + show + focus (사용자 의도는 "앱 보기" 라 가정) 게이트: typecheck 0 / 단위 413 / e2e 1 version: 0.2.4 → 0.2.5 (critical hotfix patch) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
89 lines
2.6 KiB
JSON
89 lines
2.6 KiB
JSON
{
|
|
"name": "inkling",
|
|
"version": "0.2.5",
|
|
"private": true,
|
|
"description": "Inkling — local-first 한 줄 보관 도구",
|
|
"author": "altair823 <dlsrks0734@gmail.com>",
|
|
"main": "out/main/index.js",
|
|
"scripts": {
|
|
"dev": "electron-vite dev",
|
|
"build": "electron-vite build",
|
|
"start": "electron-vite preview",
|
|
"rebuild:node": "cd node_modules/better-sqlite3 && prebuild-install",
|
|
"rebuild:electron": "cd node_modules/better-sqlite3 && prebuild-install --runtime=electron --target=41.3.0",
|
|
"pretest": "npm run rebuild:node",
|
|
"pretest:integration": "npm run rebuild:node",
|
|
"pretest:e2e": "npm run rebuild:electron && npm run build",
|
|
"prestart": "npm run rebuild:electron",
|
|
"predev": "npm run rebuild:electron",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:integration": "INKLING_INTEGRATION=1 vitest run tests/integration",
|
|
"test:e2e": "playwright test",
|
|
"typecheck": "tsc --noEmit",
|
|
"predist": "npm run rebuild:electron && npm run build",
|
|
"dist": "electron-builder",
|
|
"predist:dir": "npm run rebuild:electron && npm run build",
|
|
"dist:dir": "electron-builder --dir",
|
|
"predist:win": "npm run rebuild:electron && npm run build",
|
|
"dist:win": "electron-builder --win --x64",
|
|
"predist:mac": "npm run rebuild:electron && npm run build",
|
|
"dist:mac": "electron-builder --mac --arm64"
|
|
},
|
|
"build": {
|
|
"appId": "xyz.altair823.inkling",
|
|
"productName": "Inkling",
|
|
"publish": null,
|
|
"files": [
|
|
"out/**/*",
|
|
"package.json"
|
|
],
|
|
"asarUnpack": [
|
|
"**/*.node"
|
|
],
|
|
"win": {
|
|
"target": [
|
|
{ "target": "nsis", "arch": ["x64"] }
|
|
]
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"perMachine": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"deleteAppDataOnUninstall": false,
|
|
"shortcutName": "Inkling"
|
|
},
|
|
"mac": {
|
|
"target": [
|
|
{ "target": "dmg", "arch": ["arm64"] }
|
|
],
|
|
"category": "public.app-category.productivity",
|
|
"identity": null
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"better-sqlite3": "12.9.0",
|
|
"electron-log": "5.2.0",
|
|
"react": "19.2.5",
|
|
"react-dom": "19.2.5",
|
|
"uuid": "^14.0.0",
|
|
"zod": "4.3.6",
|
|
"zustand": "5.0.12"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "1.59.1",
|
|
"@types/better-sqlite3": "7.6.11",
|
|
"@types/node": "24.0.0",
|
|
"@types/react": "19.0.0",
|
|
"@types/react-dom": "19.0.0",
|
|
"@vitejs/plugin-react": "5.1.4",
|
|
"electron": "41.3.0",
|
|
"electron-builder": "26.8.1",
|
|
"electron-vite": "5.0.0",
|
|
"typescript": "6.0.3",
|
|
"undici": "8.1.0",
|
|
"vite": "7.3.2",
|
|
"vitest": "4.1.5"
|
|
}
|
|
}
|