- Sec-CH-UA / Sec-CH-UA-Mobile / Sec-CH-UA-Platform header overrides on
every request in 1.0.4 broke page rendering (all views white). Reverted
to image-Referer-only behavior from 1.0.3. The Google "embedded browser"
fix in 1.0.4 came primarily from the adblock whitelist (which IS kept)
— Sec-CH-UA spoofing was the suspect for the regression.
- Ctrl+Shift+I and F12 now open DevTools on the main shell and on every
in-app browser view. Always-on so kiosk machines can be debugged
without leaving kiosk mode.
- Restore session sequenced (await 150ms between tabs) to avoid concurrent
create-view races where multiple setLoader/addChild interleaved.
- Update banner now shows error state with a "Повторить" button instead
of hiding it, so install-update failures are visible to the user.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- electron-updater wired with Gitea API discovery: setFeedURL dynamically
per release (Gitea 1.24.7 lacks /releases/latest/download/ shortcut).
Differential download via .blockmap saves ~70 MB per patch. Renderer
banner shows states: available → downloading X% → ready. User clicks
"Установить и перезапустить" → quitAndInstall replaces files + relaunches.
- Multi-select filters per user spec: genres AND (TMDB with_genres comma-
joined), countries OR (pipe-joined into with_origin_country /
with_original_language), years OR (fan-out one request per year, merge
by id since TMDB has no discrete-year OR). Rating stays single threshold.
- Session persistence: openedSession {tabs, activeName} saved to config
on tab create/show/hide/remove/in-app navigation, plus before-quit.
Restored after did-finish-load via ipcMain.emit('create-view',...) per
tab. Survives auto-update relaunch — bring user back to the same page.
- electron-builder publish config (generic provider) so latest.yml is
generated during build.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- main.js: app.userAgentFallback cleaned of Electron/X.X and ESH-Media/X.X
tokens at startup; applied to default/proxy/direct sessions. Google's
accounts page blocked Electron UA with "Поддержка JavaScript отключена".
- Header.tsx: subscribe currentUrl to updateWebButtons (already fired on
each in-app navigation). Bookmark star now updates as user clicks
between movies inside the same opened site, not only on app switch.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- main.js: trusted-domains list with default Google/Yandex/GitHub/etc.;
cross-domain confirmation skipped for trusted; setWindowOpenHandler
returns action:'allow' for trusted so OAuth popups work (postMessage
back to opener, popup self-closes). Fixes YouTube/Google login reset.
- main.js: get-page-meta IPC extracts og:image / twitter:image / JSON-LD
image from current view; HDRezka also tries .b-sidecover img for hi-res.
- Header: bookmark button pulls og:image as poster and the page's title;
duplicate detection switched from hostname to full URL so multiple
movies from same site can coexist.
- BookmarksBar: site icon rendered next to source domain when distinct
from poster; img onerror falls back to placeholder.
- Settings: trusted domains chip list with add/remove/reset.
- Updater: proper semver compare (only show if latest > current),
direct installer URL detection per platform, hourly re-check.
Bookmark schema gains optional siteIcon; existing bookmarks remain valid.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>