{ "name": "reticulum-meshchatx", "version": "4.8.4", "description": "A simple mesh network communications app powered by the Reticulum Network Stack", "homepage": "https://github.com/Quad4-Software/MeshChatX", "desktopName": "reticulum-meshchatx.desktop", "author": { "name": "Quad4" }, "main": "electron/main.js", "scripts": { "dev": "vite dev", "watch": "pnpm run build-frontend -- --watch", "prebuild-frontend": "node scripts/fetch-micron-wasm.mjs && node scripts/build-visualiser-wasm.mjs && node scripts/sync-meshchatx-docs.js", "predev": "node scripts/sync-meshchatx-docs.js", "build-frontend": "vite build", "build-backend": "node scripts/build-backend.js", "build-docs": "python3 scripts/build/fetch_reticulum_manual.py --force", "build-docs:rns": "python3 scripts/build/fetch_reticulum_manual.py --force --via-rns", "build-repository-wheels": "python3 scripts/build/fetch_repository_wheels.py", "version:sync": "node scripts/sync_version.js", "build-meta:bake": "node scripts/bake_build_meta.js", "build": "pnpm run version:sync && pnpm run build-frontend && pnpm run build-docs && pnpm run build-repository-wheels && pnpm run build-backend", "build:offline": "cross-env MESHCHATX_OFFLINE_BUILD=1 pnpm run build", "bundle:offline": "bash scripts/create-offline-bundle.sh", "lint": "eslint .", "lint:fix": "eslint . --fix", "typecheck": "vue-tsc --noEmit -p tsconfig.json", "knip": "knip", "format": "prettier --write .", "test": "vitest run --exclude tests/frontend/LoadTimePerformance.test.js && vitest run --config vitest.electron.config.js", "test:coverage": "vitest run --coverage --exclude tests/frontend/LoadTimePerformance.test.js && vitest run --config vitest.electron.config.js --coverage", "test:fuzz": "vitest run -t fuzzing", "test:watch": "vitest --exclude tests/frontend/LoadTimePerformance.test.js", "test:i18n": "vitest run tests/frontend/i18n.test.js", "test:loadtime": "vitest run tests/frontend/LoadTimePerformance.test.js", "test:ui": "vitest --ui --open --exclude tests/frontend/LoadTimePerformance.test.js", "pretest:e2e": "playwright install chromium", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:install": "playwright install chromium", "test:mutation:frontend": "node scripts/mutation/run.mjs", "test:mutation:frontend:sample": "node scripts/mutation/run.mjs --source meshchatx/src/frontend/js/rnode/Capabilities.js --max-per-file 20", "electron-postinstall": "electron-builder install-app-deps && node scripts/ensure-micron-parser-package.js && node scripts/patch-electron-builder-fs.cjs && node scripts/patch-electron-installer-common.cjs && node scripts/bundle-electron-preload.cjs", "electron": "pnpm run electron-postinstall && pnpm run build && electron .", "dist": "pnpm run electron-postinstall && pnpm run build && electron-builder --publish=never", "dist:linux": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run build && electron-builder --linux AppImage deb --publish=never", "dist:linux:offline": "cross-env MESHCHATX_OFFLINE_BUILD=1 pnpm run dist:linux", "dist:linux-x64": "pnpm run electron-postinstall && cross-env PLATFORM=linux ARCH=x64 pnpm run build && electron-builder --linux AppImage deb --x64 --publish=never", "dist:linux-x64:offline": "cross-env MESHCHATX_OFFLINE_BUILD=1 pnpm run dist:linux-x64", "dist:linux-arm64": "pnpm run electron-postinstall && cross-env PLATFORM=linux ARCH=arm64 pnpm run build && electron-builder --linux AppImage deb --arm64 --publish=never", "dist:linux-arm64:offline": "cross-env MESHCHATX_OFFLINE_BUILD=1 pnpm run dist:linux-arm64", "dist:rpm": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run build && electron-builder --linux rpm --publish=never", "dist:apk": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run build && electron-builder --linux apk --publish=never", "dist:flatpak": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run build && electron-builder --linux flatpak --publish=never", "dist:flatpak-prebuilt": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run version:sync && cross-env PLATFORM=linux pnpm run build-backend && electron-builder --linux flatpak --x64 --publish=never", "dist:windows": "pnpm run electron-postinstall && cross-env PLATFORM=win32 pnpm run build && electron-builder --win portable nsis --publish=never", "dist:win-x64": "pnpm run electron-postinstall && cross-env PLATFORM=win32 ARCH=x64 pnpm run build && electron-builder --win portable nsis --x64 --publish=never", "dist:win-arm64": "pnpm run electron-postinstall && cross-env PLATFORM=win32 ARCH=arm64 pnpm run build && electron-builder --win portable nsis --arm64 --publish=never", "dist:zip": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run build && electron-builder --linux zip --publish=never", "dist-prebuilt": "pnpm run electron-postinstall && pnpm run build-backend && electron-builder --publish=never", "dist:windows-prebuilt": "pnpm run electron-postinstall && cross-env PLATFORM=win32 pnpm run version:sync && cross-env PLATFORM=win32 pnpm run build-backend && electron-builder --win portable nsis --publish=never", "dist:linux-prebuilt": "pnpm run electron-postinstall && cross-env PLATFORM=linux pnpm run version:sync && cross-env PLATFORM=linux pnpm run build-backend && electron-builder --linux AppImage deb --publish=never", "dist:mac-arm64": "pnpm run electron-postinstall && pnpm run build && electron-builder --mac --arm64 --publish=never", "dist:mac-universal": "bash scripts/build-macos-universal.sh", "start": "pnpm run electron" }, "license": "0BSD AND MIT", "engines": { "node": ">=24" }, "packageManager": "pnpm@11.1.2", "devDependencies": { "@electron/fuses": "^1.8.0", "@eslint/js": "^9.39.5", "@playwright/test": "^1.61.1", "@tailwindcss/vite": "^4.3.3", "@vitejs/plugin-vue": "^6.0.8", "@vitest/coverage-v8": "^4.1.10", "@vitest/ui": "^4.1.10", "@vue/test-utils": "^2.4.11", "cross-env": "^10.1.0", "dayjs": "^1.11.21", "electron": "42.4.0", "electron-builder": "^26.15.3", "electron-builder-squirrel-windows": "^26.15.3", "eslint": "^9.39.5", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-security": "^3.0.1", "eslint-plugin-vue": "^10.10.0", "fake-indexeddb": "^6.2.5", "globals": "^17.7.0", "jsdom": "^29.1.1", "knip": "^6.29.0", "micron-parser": "github:RFnexus/micron-parser-js#33feb1054c8b2cb3f5f05abbb8903360d3f0c098", "prettier": "^3.9.6", "tailwindcss": "^4.3.3", "terser": "^5.49.0", "typescript": "^6.0.3", "vite": "^8.1.5", "vite-plugin-vue-devtools": "^8.2.1", "vite-plugin-vuetify": "^2.1.3", "vitest": "^4.1.10", "vue-eslint-parser": "^10.4.1", "vue-tsc": "^3.3.7" }, "build": { "appId": "com.quad4.meshchatx", "productName": "Reticulum MeshChatX", "electronLanguages": [ "en-US" ], "asar": true, "electronFuses": { "runAsNode": false, "enableCookieEncryption": true, "enableNodeOptionsEnvironmentVariable": false, "enableNodeCliInspectArguments": false, "enableEmbeddedAsarIntegrityValidation": true, "onlyLoadAppFromAsar": true }, "toolsets": { "appimage": "1.0.2" }, "files": [ "package.json", "electron/", "electron/**" ], "directories": { "buildResources": "electron/build" }, "mac": { "target": [ { "target": "dmg", "arch": [ "universal" ] } ], "identity": "-", "artifactName": "ReticulumMeshChatX-v${version}-mac-${arch}.${ext}", "entitlements": "electron/build/entitlements.mac.plist", "entitlementsInherit": "electron/build/entitlements.mac.plist", "extendInfo": { "NSMicrophoneUsageDescription": "Microphone access is only needed for audio calls and voice messages" }, "x64ArchFiles": "Contents/Resources/backend{/**,/**/.*/**}", "extraResources": [ { "from": "build/exe/darwin-${arch}", "to": "backend", "filter": [ "**/*", "!backend-manifest.json" ] } ] }, "win": { "artifactName": "ReticulumMeshChat-v${version}-${os}-${arch}.${ext}", "target": [ { "target": "portable", "arch": [ "x64", "arm64" ] }, { "target": "nsis", "arch": [ "x64", "arm64" ] } ], "extraResources": [ { "from": "build/exe/win32-${arch}", "to": "backend", "filter": [ "**/*" ] } ] }, "linux": { "artifactName": "ReticulumMeshChatX-v${version}-${os}-${arch}.${ext}", "target": [ { "target": "AppImage", "arch": [ "x64", "arm64" ] }, { "target": "deb", "arch": [ "x64", "arm64" ] } ], "maintainer": "Quad4", "vendor": "Quad4", "category": "Network", "synopsis": "Mesh networking chat client", "description": "A simple mesh network communications app powered by the Reticulum Network Stack", "desktop": { "entry": { "StartupWMClass": "reticulum-meshchatx" } }, "extraResources": [ { "from": "build/exe/linux-${arch}", "to": "backend", "filter": [ "**/*" ] } ] }, "deb": { "maintainer": "Quad4", "vendor": "Quad4", "packageCategory": "network", "synopsis": "Mesh networking chat client", "description": "A simple mesh network communications app powered by the Reticulum Network Stack" }, "rpm": { "maintainer": "Quad4", "vendor": "Quad4", "packageCategory": "Network", "synopsis": "Mesh networking chat client", "description": "A simple mesh network communications app powered by the Reticulum Network Stack" }, "apk": { "artifactName": "ReticulumMeshChatX-v${version}-${os}-alpine-${arch}.${ext}" }, "flatpak": { "runtime": "org.freedesktop.Platform", "runtimeVersion": "25.08", "sdk": "org.freedesktop.Sdk", "base": "org.electronjs.Electron2.BaseApp", "baseVersion": "25.08", "category": "Network", "useWaylandFlags": true, "modules": [ { "name": "zypak", "sources": [ { "type": "git", "url": "https://github.com/refi64/zypak", "tag": "v2025.09", "commit": "693a71c5ffa80ec9c9ce2ae03b1ccc493c698e53" } ] } ], "finishArgs": [ "--share=ipc", "--share=network", "--socket=x11", "--socket=wayland", "--device=dri", "--allow=bluetooth", "--filesystem=home", "--talk-name=org.freedesktop.Notifications", "--talk-name=org.freedesktop.DBus", "--talk-name=org.freedesktop.portal.Desktop", "--own-name=com.quad4.meshchatx", "--env=TMPDIR=/var/tmp", "--socket=pulseaudio", "--filesystem=xdg-run/pipewire-0" ] }, "dmg": { "writeUpdateInfo": false }, "portable": { "artifactName": "ReticulumMeshChatX-v${version}-${os}-portable.${ext}" }, "nsis": { "artifactName": "ReticulumMeshChatX-v${version}-${os}-installer.${ext}", "oneClick": false, "allowToChangeInstallationDirectory": true } }, "dependencies": { "@fontsource/noto-sans": "^5.3.0", "@mdi/font": "^7.4.47", "@mdi/js": "^7.4.47", "@tailwindcss/forms": "^0.5.11", "@tanstack/vue-virtual": "^3.13.34", "altcha": "3.2.1", "compressorjs": "^1.3.0", "dompurify": "^3.4.13", "electron-prompt": "^1.7.0", "emoji-picker-element": "^1.29.1", "emoji-picker-element-data": "^1.8.0", "jsqr": "^1.4.0", "jszip": "^3.10.1", "marked": "^18.0.7", "ol": "^10.9.0", "ol-mapbox-style": "^13.4.1", "qrcode": "^1.5.4", "vis-data": "^7.1.10", "vis-network": "^9.1.13", "vue": "^3.5.40", "vue-i18n": "^11.4.7", "vue-router": "^4.6.4", "vuetify": "^3.12.10" } }