f9e340dbec
App productName becomes Netralax (driving exe name and window title);
existing installs keep their %APPDATA%\ChatApp profile via an explicit
app.setPath('userData', appData/ChatApp) so no Login/Sounds/Secret store
data is lost.
The Windows taskbar overlay now renders a red bubble with the actual
unread count (Discord parity) instead of just a static red dot. Renderer
paints a 64×64 PNG via canvas — full-bleed red circle, white bold count
with a "99+" cap, no outer ring — and passes the data URL through the
existing setTrayUnread IPC. Main decodes via nativeImage and applies it
as the BrowserWindow overlay icon. Falls back to the static dot if the
renderer canvas pipeline is unavailable.
Also: app.setName('Netralax') + setAppUserModelId('cloud.netralax.desktop')
for Windows taskbar grouping and notification source attribution, and
release.mjs now reads productName dynamically from package.json so the
artifact lookup stays correct after the rename.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
99 lines
2.6 KiB
JSON
99 lines
2.6 KiB
JSON
{
|
|
"name": "@chat-app/desktop",
|
|
"version": "0.16.3",
|
|
"private": true,
|
|
"description": "Electron desktop client (Windows / macOS / Linux)",
|
|
"type": "module",
|
|
"main": "out/main/main.js",
|
|
"scripts": {
|
|
"dev": "pnpm build:native && electron-vite dev",
|
|
"build": "pnpm build:native && electron-vite build && electron-builder",
|
|
"build:win": "pnpm build:native && electron-vite build && electron-builder --win",
|
|
"build:native": "pnpm --filter @chatapp/audio-loopback-native run build",
|
|
"preview": "electron-vite preview",
|
|
"lint": "eslint src --ext .ts,.tsx",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"clean": "rimraf dist out .turbo *.tsbuildinfo"
|
|
},
|
|
"dependencies": {
|
|
"@chat-app/db-types": "workspace:*",
|
|
"@chat-app/shared": "workspace:*",
|
|
"@chat-app/ui-web": "workspace:*",
|
|
"@livekit/components-react": "^2.9.0",
|
|
"@livekit/track-processors": "^0.7.2",
|
|
"@supabase/supabase-js": "^2.46.0",
|
|
"better-sqlite3": "^11.3.0",
|
|
"electron-updater": "^6.3.0",
|
|
"i18next": "^23.16.4",
|
|
"libsodium-wrappers-sumo": "0.7.15",
|
|
"livekit-client": "^2.7.0",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-easy-crop": "^5.5.7",
|
|
"react-i18next": "^15.1.1",
|
|
"react-router-dom": "^6.28.0",
|
|
"zustand": "^5.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@types/better-sqlite3": "^7.6.0",
|
|
"@types/libsodium-wrappers": "^0.7.14",
|
|
"@types/libsodium-wrappers-sumo": "^0.8.2",
|
|
"@types/react": "^18.3.12",
|
|
"@types/react-dom": "^18.3.1",
|
|
"@vitejs/plugin-react": "^4.3.3",
|
|
"autoprefixer": "^10.4.20",
|
|
"electron": "^33.0.0",
|
|
"electron-builder": "^25.0.0",
|
|
"electron-vite": "^2.3.0",
|
|
"postcss": "^8.4.49",
|
|
"rimraf": "^6.0.0",
|
|
"tailwindcss": "^3.4.15",
|
|
"vite": "^5.4.11"
|
|
},
|
|
"build": {
|
|
"appId": "com.meinname.chatapp",
|
|
"productName": "Netralax",
|
|
"directories": {
|
|
"output": "release",
|
|
"buildResources": "resources"
|
|
},
|
|
"files": [
|
|
"out/**/*",
|
|
"package.json"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "native/audio-loopback/audio-loopback.win32-x64-msvc.node",
|
|
"to": "native/audio-loopback.node"
|
|
}
|
|
],
|
|
"win": {
|
|
"target": [
|
|
"nsis"
|
|
],
|
|
"icon": "resources/icon.ico"
|
|
},
|
|
"mac": {
|
|
"target": [
|
|
"dmg"
|
|
],
|
|
"icon": "resources/icon.icns",
|
|
"identity": null
|
|
},
|
|
"linux": {
|
|
"target": [
|
|
"AppImage"
|
|
],
|
|
"icon": "resources/icon.png"
|
|
},
|
|
"publish": [
|
|
{
|
|
"provider": "generic",
|
|
"url": "https://update.netralax.cloud/windows/"
|
|
}
|
|
]
|
|
}
|
|
}
|