Skip to content

1.2.0

Choose a tag to compare

@chiahsien chiahsien released this 12 Feb 15:18
· 12 commits to main since this release

ZenReader v1.2.0 Release Notes

This release significantly improves style fidelity in Focus Mode. Previously, many websites would lose their visual styling when viewed in ZenReader due to cross-origin stylesheet restrictions, missing web fonts, unresolved lazy-loaded images, and lost pseudo-elements. All of these have been addressed.

What's New

Cross-Origin CSS Support

  • Stylesheets hosted on external CDNs and third-party domains are now fetched and applied in Focus Mode via a background service worker proxy.
  • A two-phase injection approach shows content immediately with same-origin styles, then progressively applies cross-origin styles as they load.

CSS Custom Properties

  • CSS custom properties (--var) defined on :root, html, and body are now collected from all stylesheets and propagated into the Shadow DOM, so themes and design tokens render correctly.

@font-face Recovery

  • Web font declarations from both same-origin and cross-origin stylesheets are extracted and injected into the document and Shadow DOM, ensuring custom fonts display properly.

Pseudo-Element Materialization

  • ::before and ::after pseudo-elements are now converted into real DOM nodes with their computed styles preserved, so icons, decorative elements, and content generated via CSS appear as expected.

Lazy Image Resolution

  • Lazy-loaded images using data-src, data-srcset, <noscript> fallbacks, and placeholder data-URIs are resolved so all images display in Focus Mode.

Adaptive Clone Depth

  • The cloning depth is now determined dynamically based on the selected element's DOM tree size, balancing styling fidelity with performance on complex pages.

Infrastructure

  • Added host_permissions: ["<all_urls>"] to support cross-origin CSS fetching.
  • Background service worker now handles fetchCSS messages with a 3-second timeout via AbortController.