Every prior distributable DMG this session was built with plain `npx electron-builder`, never `--config electron-builder.config.js`. electron- builder does not auto-detect a file named electron-builder.config.js (its search list is .yml/.yaml/.json/.json5/.js/.cjs/.mjs/.ts, not .config.js), so the config - correct productName/appId/icon and all - was silently ignored on every build. Caught only by actually launching the packaged .app: it booted to "Bulwark Webmail Setup" demanding a token from container logs, default Electron atom icon, output in dist/ instead of dist-electron-builds/. Fixes, each verified against the packaged .app (Playwright _electron.launch, not the build log): - Add dist:mac/win/linux/dir scripts that pass --config explicitly, so this can't recur. - Dedicated 1024x1024 app icon (build-resources/app-icon.png, SRC symbol on #09090b) instead of reusing the web PWA manifest icon. Verified: icns ships at 1024x1024, pixel-identical to the source (mean diff 0.0/255). - electron/main.ts: getDesktopDefaults() sets JMAP_SERVER_URL to the sandbox (the ONLY thing that puts the server into "env-managed" mode and skips the setup wizard - see lib/setup/state.ts), plus APP_NAME/login logo/ favicon/company-name env vars, spread before ...process.env so a real deployment still overrides. Verified: packaged app now opens straight to a login screen with the JMAP endpoint field pre-filled https://stalwart.sandbox.vnc.de, title "VNCmail+", SRC logo. - LOGIN_SHOW_SUBTITLE=false: the subtitle falls back to the login.title i18n string ("Webmail") whenever it differs from APP_NAME - a check written for the original Bulwark pairing where they matched. Hiding it avoids touching that shared string for every other deployment.
132 lines
4.5 KiB
JSON
132 lines
4.5 KiB
JSON
{
|
|
"name": "vncmail-plus",
|
|
"version": "1.7.8",
|
|
"main": "dist-electron/main.js",
|
|
"description": "Bulwark Webmail - a modern webmail client built for Stalwart Mail Server",
|
|
"author": "Bulwark Webmail <bulwark@rbm.systems>",
|
|
"license": "AGPL-3.0-only",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/bulwarkmail/webmail.git"
|
|
},
|
|
"homepage": "https://github.com/bulwarkmail/webmail",
|
|
"bugs": {
|
|
"url": "https://github.com/bulwarkmail/webmail/issues"
|
|
},
|
|
"keywords": [
|
|
"jmap",
|
|
"webmail",
|
|
"stalwart",
|
|
"email",
|
|
"nextjs",
|
|
"react",
|
|
"typescript"
|
|
],
|
|
"scripts": {
|
|
"dev": "npm run build:plugins && next dev --turbopack",
|
|
"build": "npm run build:plugins && next build --turbopack",
|
|
"start": "next start",
|
|
"build:plugins": "node scripts/build-plugins.mjs",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"test:translations": "vitest run --no-isolate lib/__tests__/translations.test.ts",
|
|
"test:integration": "bash integration/run-tests.sh",
|
|
"prepare": "husky",
|
|
"typecheck": "tsc --noEmit",
|
|
"build:standalone": "npm run build:plugins && next build --webpack && node scripts/assemble-standalone.mjs",
|
|
"build:electron": "node scripts/build-electron.mjs",
|
|
"electron:dev": "npm run build:standalone && npm run build:electron && electron .",
|
|
"dist:prepare": "npm run build:standalone && npm run build:electron",
|
|
"dist:dir": "npm run dist:prepare && electron-builder --config electron-builder.config.js --dir",
|
|
"dist:mac": "npm run dist:prepare && electron-builder --config electron-builder.config.js --mac",
|
|
"dist:win": "npm run dist:prepare && electron-builder --config electron-builder.config.js --win",
|
|
"dist:linux": "npm run dist:prepare && electron-builder --config electron-builder.config.js --linux",
|
|
"test:electron": "playwright test -c playwright.electron.config.ts",
|
|
"test:integration:electron": "npm run build:standalone && npm run build:electron && playwright test -c playwright.integration-electron.config.ts"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@tanstack/react-virtual": "^3.13.24",
|
|
"@tiptap/extension-color": "^3.22.4",
|
|
"@tiptap/extension-image": "^3.22.4",
|
|
"@tiptap/extension-link": "^3.22.4",
|
|
"@tiptap/extension-placeholder": "^3.22.4",
|
|
"@tiptap/extension-table": "^3.22.4",
|
|
"@tiptap/extension-table-cell": "^3.22.4",
|
|
"@tiptap/extension-table-header": "^3.22.4",
|
|
"@tiptap/extension-table-row": "^3.22.4",
|
|
"@tiptap/extension-text-align": "^3.22.4",
|
|
"@tiptap/extension-text-style": "^3.22.4",
|
|
"@tiptap/extension-underline": "^3.22.4",
|
|
"@tiptap/pm": "^3.22.4",
|
|
"@tiptap/react": "^3.22.4",
|
|
"@tiptap/starter-kit": "^3.22.4",
|
|
"asn1js": "^3.0.10",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.1.0",
|
|
"dompurify": "^3.4.12",
|
|
"electron-updater": "^6.8.9",
|
|
"jalaali-js": "^2.0.0",
|
|
"jszip": "^3.10.1",
|
|
"lucide-react": "^1.8.0",
|
|
"next": "^16.2.6",
|
|
"next-intl": "^4.13.3",
|
|
"otpauth": "^9.5.0",
|
|
"pdfjs-dist": "^6.0.227",
|
|
"pkijs": "^3.4.0",
|
|
"postal-mime": "^2.7.4",
|
|
"pvtsutils": "^1.3.6",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.2.5",
|
|
"react-dom": "^19.2.5",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.4.0",
|
|
"webcrypto-liner": "^1.4.3",
|
|
"zustand": "^5.0.12"
|
|
},
|
|
"optionalDependencies": {
|
|
"@signalapp/sqlcipher": "^4.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.4",
|
|
"@playwright/test": "^1.59.1",
|
|
"@tailwindcss/postcss": "^4.2.4",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.1",
|
|
"@types/node": "^25.6.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19.2.7",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@typescript-eslint/eslint-plugin": "^8.59.0",
|
|
"@typescript-eslint/parser": "^8.59.0",
|
|
"@vitejs/plugin-react": "^6.0.1",
|
|
"@vitest/ui": "^4.1.5",
|
|
"electron": "^43.2.0",
|
|
"electron-builder": "^26.15.3",
|
|
"esbuild": "^0.28.0",
|
|
"eslint": "^9.39.4",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"fake-indexeddb": "^6.2.5",
|
|
"globals": "^17.5.0",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^28.1.0",
|
|
"tailwindcss": "^4.2.4",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^5.9.3",
|
|
"vitest": "^4.1.5"
|
|
},
|
|
"overrides": {
|
|
"elliptic": {
|
|
".": "^6.6.1",
|
|
"webcrypto-liner": "$elliptic"
|
|
},
|
|
"flatted": "^3.4.2",
|
|
"picomatch": "^4.0.4",
|
|
"undici": "^7.24.0"
|
|
}
|
|
}
|