Build 125. Reported from the desk: every language on the listener page can be
switched off except English.
Exactly right, and it was not subtle. renderFeatured() unshifted the SOURCE
language into the list on every render, whatever the operator had chosen:
if (list.indexOf(app.cfg.sourceLanguage) === -1)
list.unshift(app.cfg.sourceLanguage);
So English was not merely on, it was always FIRST — the leading button on the
page — on a desk whose saved list was ["spa_Latn","por_Latn","por_PT","spa_ES"]
with English deliberately off and allowAll false. The operator had turned it
off, the config recorded that it was off, and the page put it back anyway.
The reasoning behind it was sound: people do want the English captions for
accessibility rather than translation. But that is a choice for the desk, not
for this function, and the switch to make it is already there in Settings next
to every other language. English is in the catalogue (languages.js:19) and the
operator window reads that same file, so turning it back on is one click.
A control that silently refuses is worse than no control. The operator's list
is now the list.
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": 125,
|
|
"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": "125",
|
|
"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
|
|
}
|
|
}
|
|
}
|