3fb4a9685f
Phase 4 of the 0.1.0 release prep: - tauri-plugin-log: rotating file log (5 MB, Info) in the app log dir plus stdout; all 54 backend println!/eprintln! sites migrated to log macros so release builds finally produce diagnostics - tauri-plugin-single-instance (registered first): second launches focus the existing window instead of racing the same SQLite DB with a second worker fleet; tauri-plugin-window-state persists window geometry - real CSP replacing null (scripts self-only, media/images via the asset protocol, IPC endpoints whitelisted, object-src none) with a devCsp variant for Vite HMR - asset protocol scope narrowed from '**' to thumbnails statically plus per-folder runtime grants (setup, add_folder, update_folder_path) Panic audit (plan item) concluded with no changes: worker loops already catch and log all Result errors; remaining unwraps are startup fail-fast, poisoned-lock convention, infallible-by-construction, or test code.
61 lines
2.3 KiB
JSON
61 lines
2.3 KiB
JSON
{
|
|
"$schema": "https://schema.tauri.app/config/2",
|
|
"productName": "Phokus",
|
|
"version": null,
|
|
"identifier": "wtf.jezz.phokus",
|
|
"build": {
|
|
"beforeDevCommand": "pnpm dev:vite",
|
|
"devUrl": "http://localhost:1420",
|
|
"beforeBuildCommand": "pnpm build:vite",
|
|
"frontendDist": "../dist"
|
|
},
|
|
"app": {
|
|
"windows": [
|
|
{
|
|
"title": "Phokus",
|
|
"width": 1280,
|
|
"height": 800,
|
|
"minWidth": 800,
|
|
"minHeight": 600,
|
|
"decorations": false,
|
|
"shadow": true
|
|
}
|
|
],
|
|
"security": {
|
|
"csp": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' asset: http://asset.localhost data: blob:; media-src 'self' asset: http://asset.localhost; connect-src 'self' ipc: http://ipc.localhost; font-src 'self' data:; object-src 'none'",
|
|
"devCsp": "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' asset: http://asset.localhost data: blob:; media-src 'self' asset: http://asset.localhost; connect-src 'self' ipc: http://ipc.localhost ws://localhost:1420 http://localhost:1420; font-src 'self' data:; object-src 'none'",
|
|
"assetProtocol": {
|
|
"enable": true,
|
|
"scope": [
|
|
"$APPDATA/thumbnails/**"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"plugins": {
|
|
"updater": {
|
|
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDYyMDVBQzkyOENENjYzOTUKUldTVlk5YU1rcXdGWW9JRklYdHpOVXA1MDNMVEpyell6cVlma0VGS3pYaUVBLzJydy9nNUtJdlUK",
|
|
"endpoints": [
|
|
"https://github.com/JezzWTF/phokus/releases/latest/download/latest.json"
|
|
]
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": ["nsis"],
|
|
"createUpdaterArtifacts": true,
|
|
"publisher": "JezzWTF",
|
|
"license": "MIT",
|
|
"copyright": "Copyright © 2026 JezzWTF",
|
|
"shortDescription": "Local-first desktop media library",
|
|
"longDescription": "A local-first desktop media library for browsing, filtering, and curating image and video folders, with AI tagging, semantic search, and duplicate detection — all processed on-device.",
|
|
"homepage": "https://git.jezz.wtf/jezzwtf/phokus",
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/128x128@2x.png",
|
|
"icons/icon.icns",
|
|
"icons/icon.ico"
|
|
]
|
|
}
|
|
} |