The signed release showed only its background colour and never started the sidecar. Tauri's freezePrototype freezes Object.prototype before the bundle runs; d3-color and d3-format (under the visx charts) assign `constructor` / `toString` on plain objects while loading, which throws on a frozen prototype, so the bundle stopped before React drew anything. The saved state was not the cause. - build/freeze-safe.ts: Vite plugin that rewrites those assignments in dependencies into a helper that defines the property when the frozen prototype would refuse it - error boundaries for the window, each screen and each app tab (Copy details, Reload, Reset saved state with a backup); public/boot.js shows the same panel when the bundle fails or the window stays empty - logs/host.log (start, saved state, sidecar start/stop, panics) and logs/webview.log (log_webview), rotated, home as ~, keys, tokens and e-mail addresses replaced - state.json `version` 2 with an explicit 1 -> 2 migration (original kept as state.json.v1.bak), per-entry tolerant parsing, partial settings keep their fields, unreadable files kept aside - folders that are gone: "Folder not found" with Locate... (project_locate) / Remove; portfolio reads skip them - tools/desktop-boot-check.ts: the built window with the release CSP and the frozen prototype, a mocked host from the state fixtures (empty, D1 with folders gone, D3) and the real sidecar, through every screen; in bun run ci, the Forgejo CI workflow and the macOS release
57 lines
1.9 KiB
JSON
57 lines
1.9 KiB
JSON
{
|
|
"$schema": "../gen/schemas/desktop-schema.json",
|
|
"identifier": "main-window",
|
|
"description": "The main window with the app's own bundled pages only (no remote content). It may listen to app events (sidecar progress, tool downloads, deep links) and call the storebound app commands; every command re-checks the window label and page origin in Rust. No plugin API is granted to the webview: the sidecar is spawned from Rust with fixed arguments, dialogs, the opener, notifications, the updater and process control are driven from Rust only, and credentials never reach the page.",
|
|
"windows": [
|
|
"main"
|
|
],
|
|
"local": true,
|
|
"permissions": [
|
|
"core:event:allow-listen",
|
|
"core:event:allow-unlisten",
|
|
"allow-app-info",
|
|
"allow-sidecar-status",
|
|
"allow-sidecar-call",
|
|
"allow-cache-get",
|
|
"allow-cache-clear",
|
|
"allow-job-cancel",
|
|
"allow-write-with-confirm",
|
|
"allow-projects-list",
|
|
"allow-project-add",
|
|
"allow-project-init",
|
|
"allow-project-remove",
|
|
"allow-project-set-accounts",
|
|
"allow-accounts-list",
|
|
"allow-account-add-play",
|
|
"allow-account-add-apple",
|
|
"allow-account-remove",
|
|
"allow-portfolio-status",
|
|
"allow-open-external",
|
|
"allow-tools-info",
|
|
"allow-tools-install",
|
|
"allow-tools-uninstall",
|
|
"allow-workspace-get",
|
|
"allow-studio-save",
|
|
"allow-studio-remove",
|
|
"allow-studio-logo",
|
|
"allow-account-update",
|
|
"allow-account-check",
|
|
"allow-store-apps-refresh",
|
|
"allow-store-apps-cached",
|
|
"allow-overrides-set",
|
|
"allow-settings-set",
|
|
"allow-cache-info",
|
|
"allow-data-reveal",
|
|
"allow-notify",
|
|
"allow-app-reset",
|
|
"allow-update-check",
|
|
"allow-update-install",
|
|
"allow-project-import-fastlane",
|
|
"allow-export-save",
|
|
"allow-price-sheet-pick",
|
|
"allow-project-reveal",
|
|
"allow-project-locate",
|
|
"allow-state-reset",
|
|
"allow-log-webview"
|
|
]
|
|
}
|