Stay up to date with all Zunario updates and improvements
"New version is not signed by the application owner: publisherNames: Zunario" because electron-updater verifies the publisher signature of the downloaded installer, and Zunario builds aren't code-signed yet. We now explicitly skip the publisher check on Windows (autoUpdater.verifyUpdateCodeSignature = () => null). SHA512 in latest.yml is still verified end-to-end and the channel is HTTPS, so a tampered installer still gets rejected — only the missing-cert false positive is gone.PHASE-A-CHECKLIST.md."Zunario v1.0.0" string for every release. It now reads the real app.getVersion() via the update:getVersion IPC bridge and shows the actual installed version. (This is also why earlier auto-updates *looked* like they hadn't taken effect — they had, but the UI lied.)build/icon.ico (multi-size 16 / 24 / 32 / 48 / 64 / 128 / 256) is now bundled with the NSIS installer and used as the window / taskbar / shortcut icon. Previously the default Electron diamond was shown.build/icon.png (1024 px) for marketing / store fallbacks, plus a 32 px tray version.public/zunario-logo.svg and zunario-webseite/website/images/zunario-logo.svg — vector source so the brand mark stays consistent between app and website.electron-builder.json win + nsis sections now reference build/icon.ico explicitly (was relying on the default lookup which failed silently in the previous builds, leaving installers without a custom icon).%APPDATA%/zunario/logs/main.log (Win) / ~/Library/Logs/zunario/main.log (mac), with 5 MB rotation. electron-updater events now flow into this log so failed updates can be diagnosed.Ctrl+Shift+L opens the logs folder directly from the running app.update:checkManual) returns { ok, currentVersion, latestVersion, error } so the UI can show the actual reason when a check fails (instead of silent no-op).electron-updater — errors (e.g. publisher-name mismatches on unsigned builds) were swallowed. Now every update step is logged and update:error carries the message + stack + code through to the renderer banner.signAndEditExecutable: false). That's the right long-term fix for silent update failures — tracked in PHASE-A-CHECKLIST.md.licenseService.canAppStart() was previously dead code).safeStorage (DPAPI / Keychain / libsecret) instead of plain text in SQLite. Existing rows are auto-migrated.shell.openExternal now validates URL protocol (only http, https, mailto allowed) - blocks javascript:, file:, smb:, ms-msdt: drive-by vectors.setWindowOpenHandler + will-navigate block in-window navigation away from the bundle; external links open in the OS browser.will-attach-webview forces secure preferences on every webview adapter.APP_SECRET for license cache encryption is no longer hardcoded; uses ZUNARIO_LICENSE_KEY env or a per-install random key.https://api.zunario.com).ADMIN_KEY and JWT_SECRET rotated on the live license server.Studio plan tier for cam studios / agencies (multi-seat, white-label, SLA).Bundles auto-update banner inside the app showing version, release notes and download progress (renderer UI). Previously updates were only surfaced via the native dialog.'trial' | 'pro' | 'ultimate' | 'lifetime' | 'studio'.getPlatformLimit('lifetime') correctly returns 12 (was falling back to trial = 1).getPlatformLimit('trial') raised to 3 to match the new "full Pro for 7 days" trial.pro|ultimate × monthly|yearly and lifetime as one-off. Previously Stripe/PayPal only accepted basic|pro|lifetime which broke Ultimate checkout entirely.processed_webhook_events table, preventing duplicate license issuance on retries.(host, port, password) → (url, password)) - WebSocket connection silently failed when UI passed url+password.declare global blocks against vite-env.d.ts). Window-bridge types are now centralized.api.request('/api/licenses/trial', 'POST') → { method: 'POST' }).<meta name="rating" content="adult"> removed from 21 pages - that tag was killing mainstream Google indexing.fonts.bunny.net (DSGVO-konform, Switzerland).chaturbate-adapter.ts / stripchat-adapter.ts / camsoda-adapter.ts (duplicates of the active subfolder adapters).zunario_ref) is only persisted with explicit marketing consent.datenschutz.html updated: Hetzner AVV, Stripe DPF (instead of pure SCC), Bunny Fonts, Mollie, Lovense local API.www.zunario.com → zunario.com 301-redirect (was returning 200 with duplicate content).<url> entry (was alternates only).noindex, nofollow and removed from sitemap.electron-updater (generic provider).