f2ff7fb21c
R1 — Persisted wallpaper is now always the canonical /wallpapers/wallpaperN.jpg form, never the resolved file:// URL. Swatch clicks pass WALLPAPER_PATHS[i] (the relative path) to onWallpaperChange; the resolved URL stays in wallpaperPreviewUrls for rendering only. This prevents machine-specific paths from being written into project JSON and avoids break-on-upgrade / break-on-share regressions. Legacy projects carrying resolved file:// URLs are rewritten by a new normalizer in normalizeProjectEditor: file://…(/assets)?/wallpapers/wallpaperN.jpg → /wallpapers/wallpaperN.jpg. R2 — resolveImageWallpaperUrl now catches anything getAssetPath throws (UnsafeAssetPathError, AssetBaseUnavailableError) and rewraps as BackgroundLoadError with the original as cause. Callers (videoExporter retry loop, gifExporter catch, VideoEditor toast) only need one instanceof check and users always see the translated errors.exportBackgroundLoadFailed toast. R3 — src/vite-env.d.ts no longer duplicates Window.electronAPI. The interface had drifted — renderer declaration was missing readBinaryFile, getPlatform, revealInFolder, getShortcuts, saveShortcuts, hudOverlay*, countdown overlay methods that electron-env.d.ts already declares. Removed the duplicate and kept the triple-slash reference so the authoritative declaration is the one in electron/electron-env.d.ts. N1 — GRADIENT_RE accepts optional "repeating-" prefix so repeating-linear/radial/conic-gradient values classify as gradients instead of falling through to color. N2 — displayBasename returns "(unknown)" sentinel for URLs without a meaningful basename (file:///, bare /) instead of leaking the original string. N3 — electron-builder.json5 extraResources block gets an inline comment pointing at preload.ts:assetBaseDir so the bidirectional coupling is discoverable from either file. Tests: 54 unit tests pass (up from 35). New coverage for repeating gradients, displayBasename sentinels, BackgroundLoadError cause wrapping, legacy file:// wallpaper normalization (5 cases).
72 lines
2.0 KiB
Plaintext
72 lines
2.0 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"
|
|
],
|
|
// Asset layout contract: "wallpapers/" under resourcesPath must align with
|
|
// assetBaseDir in electron/preload.ts (packaged branch).
|
|
"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
|
|
}
|
|
}
|