mirror of
https://github.com/NeuralNomadsAI/CodeNomad.git
synced 2026-10-23 23:01:06 +00:00
## Summary - New logo: a hexagon framing a C and an n, in equal bands (ring, gap, strokes, counters share one width), readable down to 16 px. - **App icon**: white ring and letters over black gaps, transparent canvas, hexagon spanning top to bottom; one fixed icon for light and dark taskbars, docks and tabs. - **In the UI** (`components/brand-logo.tsx`): black hexagon with white gaps on light palettes, white version on dark ones, picked in CSS from `data-theme` (system appearance when unset), so it also works outside ThemeProvider (title bar). Loading screen (always dark) uses the white one. Sizes: 4rem beside a text-3xl title, 3.2rem narrow column, 5.3rem loading screen, 16px title bar. - **Icons rendered from the vector**: `scripts/generate-icons.mjs` draws every `.ico` entry (16-256 px), `.icns` slot, Linux size and the 1024 px master straight from `images/CodeNomad-Icon.svg` with Chromium, instead of shrinking one large PNG; it writes the containers itself, so Electron drops `png2icons`/`pngjs`. One command replaces BUILD.md's four manual steps. ## Validation - New `tests/browser/brand-logo.test.ts`: real title bar + home page; which hexagon each logo shows on light, dark and system (both ways) palettes, with heights; red without the logo stylesheet. - UI + Electron typechecks, Electron tests (283), `macos-titlebar` and `notification-icon-badge` browser tests, `npm run test:help`. - Icon checks: ICO entries 16-256 (DIB, PNG at 256), ICNS slots icp4-ic14; UI captures on porcelain, linen, mist and ember palettes.
163 lines
6.1 KiB
JSON
163 lines
6.1 KiB
JSON
{
|
|
"name": "@neuralnomads/codenomad-electron-app",
|
|
"version": "1.0.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/browser-controller.test.ts electron/main/browser-webview-security.test.ts 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/data-profile.test.ts electron/main/data-profile-cleanup.test.ts electron/main/data-profile-cleanup-ipc.test.ts electron/main/developer-mode.test.ts electron/main/local-window-registry.test.ts electron/main/menu-target.test.ts electron/main/multiwindow-lifecycle.test.ts electron/main/native-request.test.ts electron/main/native-service-start.test.ts electron/main/navigation-security.test.ts electron/main/notification-badge.test.ts electron/main/opener-startup-state.test.ts electron/main/preferences-ipc.test.ts electron/main/preferences-window.test.ts electron/main/process-exit.test.ts electron/main/profile-transition.test.ts electron/main/process-output.test.ts electron/main/process-stop.test.ts electron/main/remote-window-registry.test.ts electron/main/renderer-client-state-flush.test.ts electron/main/renderer-origin.test.ts electron/main/serialized-lifecycle.test.ts electron/main/startup.test.ts electron/main/user-shell.test.ts electron/main/window-state.test.ts electron/main/workspace-open.test.ts electron/preload/index.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",
|
|
"tsx": "^4.20.6",
|
|
"typescript": "^5.3.0",
|
|
"vite": "^5.0.0",
|
|
"vite-plugin-solid": "^2.10.0"
|
|
},
|
|
"build": {
|
|
"appId": "ai.neuralnomads.codenomad.client",
|
|
"publish": null,
|
|
"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"
|
|
]
|
|
}
|
|
],
|
|
"mac": {
|
|
"minimumSystemVersion": "13.5",
|
|
"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": "deb"
|
|
}
|
|
],
|
|
"artifactName": "CodeNomad-Electron-linux-${arch}-${version}.${ext}",
|
|
"category": "Development",
|
|
"icon": "electron/resources/icon.png"
|
|
},
|
|
"deb": {
|
|
"packageName": "codenomad",
|
|
"depends": [
|
|
"libgtk-3-0",
|
|
"libnotify4",
|
|
"libnss3",
|
|
"libxss1",
|
|
"libxtst6",
|
|
"xdg-utils",
|
|
"libatspi2.0-0",
|
|
"libuuid1",
|
|
"libsecret-1-0",
|
|
"libgbm1",
|
|
"libasound2t64 | libasound2"
|
|
],
|
|
"fpm": [
|
|
"--conflicts=code-nomad",
|
|
"--replaces=code-nomad"
|
|
]
|
|
}
|
|
},
|
|
"private": true
|
|
}
|