d145f80041
Three independent defects plus one SSOT violation caused reported symptom of image wallpapers rendering solid black in exported MP4/GIF while appearing correctly in the editor preview. Bug A — Dev-mode IPC handler returned <appPath>/public/assets/, but wallpapers live at public/wallpapers/. No assets/ subdirectory exists in source. Bug B — FrameRenderer.setupBackground bypassed getAssetPath and did window.location.origin + wallpaper, producing file:///wallpapers/*.jpg 404s in packaged Electron. Bug C — setupBackground silently caught any background-load error and filled black. Masked Bug B from the export pipeline; why the bug shipped. Smell D — Asset layout asymmetric: public/wallpapers/ (dev) vs resources/assets/wallpapers/ (packaged). assets/ subdirectory had no other consumers. Fixes: - Unify asset layout. electron-builder extraResources now copies to resources/wallpapers/ (no assets/). Main handler returns <resourcesPath>/ packaged and <appPath>/public/ unpackaged. Same convention in both modes: /wallpapers/x.jpg maps to <base>/wallpapers/x.jpg. Nix package.nix mirror updated. - New src/lib/wallpaper.ts module owns the wallpaper contract: DEFAULT_WALLPAPER, classifyWallpaper (color/gradient/image), and resolveImageWallpaperUrl (pure URL resolver, wraps getAssetPath). BackgroundLoadError typed error for short-circuit detection. - FrameRenderer.setupBackground uses the new helpers. Silent black fallback removed; rethrows as BackgroundLoadError. Export pipeline (VideoExporter + GifExporter) short-circuits encoder-retry loop on BackgroundLoadError. VideoEditor catch site dispatches to translated exportBackgroundLoadFailed toast. - VideoPlayback editor preview consolidated onto the same helpers. Three default-wallpaper path literals (useEditorHistory, projectPersistence, VideoPlayback) collapsed onto DEFAULT_WALLPAPER. - i18n: new errors.exportBackgroundLoadFailed key added to all seven locales (en, zh-CN, zh-TW, es, fr, tr, ko-KR). - Tests: 20 unit tests for wallpaper module (classifyWallpaper + resolveImageWallpaperUrl branches + BackgroundLoadError). videoExporter.browser.test.ts and gifExporter.browser.test.ts extended with image-wallpaper happy path and BackgroundLoadError failure path. Migration note: packaged users upgrading in place may retain an empty resources/assets/ directory from the prior layout. Unreferenced at runtime; cosmetic only. DMG/AppImage fresh installs get the new layout directly.
70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
// @see - https://www.electron.build/configuration/configuration
|
|
{
|
|
"$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/master/packages/app-builder-lib/scheme.json",
|
|
"appId": "com.siddharthvaddem.openscreen",
|
|
"asar": true,
|
|
"productName": "Openscreen",
|
|
"npmRebuild": true,
|
|
"buildDependenciesFromSource": true,
|
|
"compression": "normal",
|
|
"directories": {
|
|
"output": "release/${version}"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"dist-electron",
|
|
"!*.png",
|
|
"!preview*.png",
|
|
"!*.md",
|
|
"!README.md",
|
|
"!CONTRIBUTING.md",
|
|
"!LICENSE"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "public/wallpapers",
|
|
"to": "wallpapers"
|
|
}
|
|
],
|
|
|
|
"mac": {
|
|
"notarize": false,
|
|
"hardenedRuntime": true,
|
|
"entitlements": "macos.entitlements",
|
|
"entitlementsInherit": "macos.entitlements",
|
|
"target": [
|
|
{
|
|
"target": "dmg",
|
|
"arch": ["x64", "arm64"]
|
|
}
|
|
],
|
|
"icon": "icons/icons/mac/icon.icns",
|
|
"artifactName": "${productName}-Mac-${arch}-${version}-Installer.${ext}",
|
|
"extendInfo": {
|
|
"NSAudioCaptureUsageDescription": "OpenScreen needs audio capture permission to record system audio.",
|
|
"NSMicrophoneUsageDescription": "OpenScreen needs microphone access to record voice audio.",
|
|
"NSCameraUsageDescription": "OpenScreen needs camera access to record webcam video.",
|
|
"NSCameraUseContinuityCameraDeviceType": true,
|
|
"com.apple.security.device.audio-input": true
|
|
}
|
|
},
|
|
"linux": {
|
|
"target": [
|
|
"AppImage"
|
|
],
|
|
"icon": "icons/icons/png",
|
|
"artifactName": "${productName}-Linux-${version}.${ext}",
|
|
"category": "AudioVideo"
|
|
},
|
|
"win": {
|
|
"target": [
|
|
"nsis"
|
|
],
|
|
"icon": "icons/icons/win/icon.ico"
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"allowToChangeInstallationDirectory": true
|
|
}
|
|
}
|