mirror of
https://github.com/NeuralNomadsAI/CodeNomad.git
synced 2026-08-11 01:13:39 +00:00
## Summary - Follow up #578 by consolidating desktop persistence, restore reconciliation, lifecycle coordination, and regression coverage. - Preserve active drafts and attachments, request-scoped workspace ownership, deletion tombstones, renderer authority, and bounded shutdown behavior. - Fix the reported macOS cleanup failure with targeted BSD process queries and random-token-guarded process-group cleanup, without an unverified PID fallback. ## Platform hardening - Ignore development renderer origins in packaged Electron builds. - Preserve staged Tauri navigation authority and handle confirmed Windows session-end shutdown on the UI thread. - Bound workspace launch preflight, runtime startup, and health readiness. - Retain cleanup ownership after unexpected leaders exit and verify portable POSIX descendants by immutable identity or inherited launch token. - Add real Darwin-only process-group integration tests for macOS CI. ## Scope - 96 files changed. - 6,295 additions and 12,167 deletions, a net reduction of 5,872 lines from the merged implementation. - Consolidated duplicated tests while retaining focused race, durability, cleanup, and platform contracts. ## Validation - pm run typecheck - pm run typecheck --workspace @neuralnomads/codenomad - Electron native suite: 60 passed - Tauri suite: 49 passed - Focused server lifecycle/identity suite: 31 passed, 2 Darwin-only skipped on Windows - Focused UI restore/codec/reconciliation suite: 36 passed - Broader server suite: 59 passed, 3 platform skips - Broader UI suite: 97 passed, 1 skip; 2 Node 25 solid-toast loader failures reproduced on the merged baseline - git diff --check - Final limited gatekeeper: PASS for server/macOS, UI restore, and Electron/Tauri
147 lines
4.9 KiB
JSON
147 lines
4.9 KiB
JSON
{
|
|
"name": "@neuralnomads/codenomad-electron-app",
|
|
"version": "0.18.0",
|
|
"description": "CodeNomad - AI coding assistant",
|
|
"license": "MIT",
|
|
"author": {
|
|
"name": "Neural Nomads",
|
|
"email": "codenomad@neuralnomads.ai"
|
|
},
|
|
"type": "module",
|
|
"main": "dist/main/main.js",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/NeuralNomadsAI/CodeNomad.git"
|
|
},
|
|
"homepage": "https://github.com/NeuralNomadsAI/CodeNomad",
|
|
"scripts": {
|
|
"dev": "npm run dev:info",
|
|
"dev:info": "cross-env CLI_LOG_LEVEL=info electron-vite dev",
|
|
"dev:debug": "cross-env CLI_LOG_LEVEL=debug electron-vite dev",
|
|
"dev:trace": "cross-env CLI_LOG_LEVEL=trace electron-vite dev",
|
|
"dev:electron": "NODE_ENV=development ELECTRON_ENABLE_LOGGING=1 NODE_OPTIONS=\"--import tsx\" electron electron/main/main.ts",
|
|
"prepare:resources": "node scripts/prepare-resources.js",
|
|
"prebuild": "npm run prepare:resources",
|
|
"build": "electron-vite build",
|
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
"test:native": "node --import tsx --test electron/main/client-state-cross-host.test.ts electron/main/client-state-process.test.ts electron/main/client-state.test.ts electron/main/client-state-ipc.test.ts electron/main/client-state-navigation.test.ts electron/main/client-state-lifecycle.test.ts electron/main/process-stop.test.ts electron/main/renderer-client-state-flush.test.ts electron/main/renderer-origin.test.ts electron/main/serialized-lifecycle.test.ts electron/main/window-state.test.ts",
|
|
"preview": "electron-vite preview",
|
|
"build:binaries": "node scripts/build.js",
|
|
"build:mac": "node scripts/build.js mac",
|
|
"build:mac-x64": "node scripts/build.js mac-x64",
|
|
"build:mac-arm64": "node scripts/build.js mac-arm64",
|
|
"build:win": "node scripts/build.js win",
|
|
"build:win-arm64": "node scripts/build.js win-arm64",
|
|
"build:linux": "node scripts/build.js linux",
|
|
"build:linux-arm64": "node scripts/build.js linux-arm64",
|
|
"build:linux-rpm": "node scripts/build.js linux-rpm",
|
|
"build:all": "node scripts/build.js all",
|
|
"package:mac": "node scripts/build.js mac",
|
|
"package:win": "node scripts/build.js win",
|
|
"package:linux": "node scripts/build.js linux",
|
|
"smoke:resources": "node ../../scripts/smoke-packaged-resources.cjs --resources electron/resources --loading dist/renderer"
|
|
},
|
|
"dependencies": {
|
|
"yaml": "^2.4.2"
|
|
},
|
|
"devDependencies": {
|
|
"7zip-bin": "^5.2.0",
|
|
"app-builder-bin": "^4.2.0",
|
|
"cross-env": "^7.0.3",
|
|
"electron": "39.0.0",
|
|
"electron-builder": "^24.0.0",
|
|
"electron-vite": "4.0.1",
|
|
"png2icons": "^2.0.1",
|
|
"pngjs": "^7.0.0",
|
|
"tsx": "^4.20.6",
|
|
"typescript": "^5.3.0",
|
|
"vite": "^5.0.0",
|
|
"vite-plugin-solid": "^2.10.0"
|
|
},
|
|
"build": {
|
|
"appId": "ai.neuralnomads.codenomad.client",
|
|
"productName": "CodeNomad",
|
|
"directories": {
|
|
"output": "release",
|
|
"buildResources": "electron/resources"
|
|
},
|
|
"files": [
|
|
"dist/main/**/*",
|
|
"dist/preload/**/*",
|
|
"dist/renderer/loading.html",
|
|
"dist/renderer/assets/**/*",
|
|
"package.json"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "electron/resources",
|
|
"to": "",
|
|
"filter": [
|
|
"!icon.icns",
|
|
"!icon.ico"
|
|
]
|
|
},
|
|
{
|
|
"from": "../server/dist/opencode-plugin",
|
|
"to": "opencode-plugin"
|
|
}
|
|
],
|
|
"mac": {
|
|
"entitlements": "electron/resources/entitlements.mac.plist",
|
|
"entitlementsInherit": "electron/resources/entitlements.mac.plist",
|
|
"extendInfo": {
|
|
"NSMicrophoneUsageDescription": "CodeNomad needs microphone access for speech-to-text prompt input.",
|
|
"NSLocalNetworkUsageDescription": "CodeNomad needs local network access to connect to locally hosted AI and speech services."
|
|
},
|
|
"category": "public.app-category.developer-tools",
|
|
"target": [
|
|
{
|
|
"target": "zip"
|
|
}
|
|
],
|
|
"artifactName": "CodeNomad-Electron-macos-${arch}-${version}.${ext}",
|
|
"icon": "electron/resources/icon.icns"
|
|
},
|
|
"dmg": {
|
|
"contents": [
|
|
{
|
|
"x": 130,
|
|
"y": 220
|
|
},
|
|
{
|
|
"x": 410,
|
|
"y": 220,
|
|
"type": "link",
|
|
"path": "/Applications"
|
|
}
|
|
]
|
|
},
|
|
"win": {
|
|
"target": [
|
|
{
|
|
"target": "zip"
|
|
}
|
|
],
|
|
"artifactName": "CodeNomad-Electron-windows-${arch}-${version}.${ext}",
|
|
"icon": "electron/resources/icon.ico"
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"createDesktopShortcut": true,
|
|
"createStartMenuShortcut": true
|
|
},
|
|
"linux": {
|
|
"executableName": "CodeNomad",
|
|
"target": [
|
|
{
|
|
"target": "tar.gz"
|
|
}
|
|
],
|
|
"artifactName": "CodeNomad-Electron-linux-${arch}-${version}.${ext}",
|
|
"category": "Development",
|
|
"icon": "electron/resources/icon.png"
|
|
}
|
|
},
|
|
"private": true
|
|
}
|