Build 121. Three things a single 16 s stall did that it should not have. captionOnlyFinals is a running total for the whole service, and the verdict tested it for more than zero — so one stale sentence pinned the light red until the next restart. MEASURED: a campus Mac stalled once at 14:25, recovered immediately to a 421 ms lag with an empty queue, and still showed red half an hour later, with the operator quite reasonably reporting it as behind. The totals still travel for the record; the verdict now asks when it last happened, inside a two-minute window. A light that cannot go back to green teaches the desk to ignore it. That sentence also had its translations skipped. Dropping them is how the app catches up — the listener has moved on and the time is better spent on what is behind it. But that reasoning needs a backlog, and the queue was EMPTY: the room lost a line of the sermon to a catch-up that had nothing to catch up on. It now skips only when something is actually waiting, and says plainly when it chooses to translate a late sentence anyway. The stall itself was not the app. Two Screen Sharing sessions were taking as much of the machine as the app was, with WindowServer on top — watching a campus Mac during a service measurably degrades it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
161 lines
4.1 KiB
JSON
161 lines
4.1 KiB
JSON
{
|
|
"name": "church-translate-engine",
|
|
"productName": "Church Translate",
|
|
"version": "3.23.2",
|
|
"buildNumber": 121,
|
|
"private": true,
|
|
"description": "Live sermon translation — self-contained: captures audio, transcribes, translates, and serves the congregation page itself",
|
|
"main": "main.js",
|
|
"scripts": {
|
|
"predist": "node tools/sync-build-version.js && node tools/check-packaged-files.js",
|
|
"start": "electron .",
|
|
"dist": "electron-builder --mac",
|
|
"dist:mac": "electron-builder --mac",
|
|
"dist:win": "electron-builder --win"
|
|
},
|
|
"devDependencies": {
|
|
"electron": "^33.2.0",
|
|
"electron-builder": "^25.1.8"
|
|
},
|
|
"dependencies": {
|
|
"@huggingface/transformers": "^3.8.1",
|
|
"espeak-ng": "^1.0.2",
|
|
"kokoro-js": "^1.2.1",
|
|
"qrcode": "^1.5.4",
|
|
"sherpa-onnx-node": "^1.13.6",
|
|
"tar-stream": "^3.2.1",
|
|
"unbzip2-stream": "^1.4.3",
|
|
"ws": "^8.18.0"
|
|
},
|
|
"build": {
|
|
"appId": "org.waterschurch.translate.engine",
|
|
"productName": "Church Translate",
|
|
"directories": {
|
|
"output": "dist"
|
|
},
|
|
"files": [
|
|
"main.js",
|
|
"preload.js",
|
|
"index.html",
|
|
"engine.css",
|
|
"engine.js",
|
|
"model-worker.js",
|
|
"mt-service.js",
|
|
"capture-worklet.js",
|
|
"selftest.html",
|
|
"selftest.js",
|
|
"selftest.wav",
|
|
"vendor/transformers.min.js",
|
|
"vendor/ort-wasm-simd-threaded.jsep.wasm",
|
|
"vendor/ort-wasm-simd-threaded.jsep.mjs",
|
|
"server/**/*",
|
|
"tts-service.js",
|
|
"kokoro-sidecar.js",
|
|
"voices.js",
|
|
"pt-variants.js",
|
|
"speech-text.js",
|
|
"tools/setup-local-voices.sh",
|
|
"voice-catalog.js",
|
|
"out-routing.js",
|
|
"mt-guard.js",
|
|
"liturgy.js",
|
|
"preach.js",
|
|
"spa-variants.js",
|
|
"bible-lexicon.js",
|
|
"app-log.js",
|
|
"sidecar-langs.js",
|
|
"short-questions.js",
|
|
"tools/verify-windows.js"
|
|
],
|
|
"mac": {
|
|
"target": [
|
|
{
|
|
"target": "dir",
|
|
"arch": [
|
|
"arm64"
|
|
]
|
|
},
|
|
{
|
|
"target": "dmg",
|
|
"arch": [
|
|
"arm64"
|
|
]
|
|
}
|
|
],
|
|
"category": "public.app-category.utilities",
|
|
"extendInfo": {
|
|
"NSMicrophoneUsageDescription": "Church Translate listens to the sermon audio you select so it can caption and translate it."
|
|
},
|
|
"identity": null,
|
|
"extraResources": [
|
|
{
|
|
"from": "vendor/node",
|
|
"to": "node"
|
|
},
|
|
{
|
|
"from": "vendor/cloudflared",
|
|
"to": "cloudflared"
|
|
}
|
|
],
|
|
"artifactName": "${productName}-${version}-${arch}.${ext}",
|
|
"files": [
|
|
"!node_modules/**/.cache${/*}",
|
|
"!node_modules/onnxruntime-node/bin/napi-v3/win32${/*}",
|
|
"!node_modules/onnxruntime-node/bin/napi-v3/linux${/*}",
|
|
"!node_modules/sherpa-onnx-win-x64${/*}"
|
|
]
|
|
},
|
|
"asar": false,
|
|
"buildVersion": "121",
|
|
"win": {
|
|
"target": [
|
|
{
|
|
"target": "nsis",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
},
|
|
{
|
|
"target": "zip",
|
|
"arch": [
|
|
"x64"
|
|
]
|
|
}
|
|
],
|
|
"artifactName": "${productName} Setup ${version}.${ext}",
|
|
"extraResources": [
|
|
{
|
|
"from": "vendor-win/node.exe",
|
|
"to": "node.exe"
|
|
},
|
|
{
|
|
"from": "vendor-win/cloudflared.exe",
|
|
"to": "cloudflared.exe"
|
|
},
|
|
{
|
|
"from": "vendor-win/ffmpeg.exe",
|
|
"to": "ffmpeg.exe"
|
|
},
|
|
{
|
|
"from": "vendor-win/FFMPEG-LICENSE.txt",
|
|
"to": "FFMPEG-LICENSE.txt"
|
|
}
|
|
],
|
|
"files": [
|
|
"!node_modules/**/.cache${/*}",
|
|
"!node_modules/onnxruntime-node/bin/napi-v3/darwin${/*}",
|
|
"!node_modules/onnxruntime-node/bin/napi-v3/linux${/*}",
|
|
"!node_modules/sherpa-onnx-darwin-arm64${/*}"
|
|
]
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"perMachine": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"createDesktopShortcut": true,
|
|
"createStartMenuShortcut": true,
|
|
"deleteAppDataOnUninstall": false
|
|
}
|
|
}
|
|
}
|