zumerlab/snapdom
 Watch   
 Star   
 Fork   
5 days ago
snapdom

v3.3.0

What's Changed

✨ feat
  • feat: add editable vector export and enhance PDF capabilities 019603a
  • feat(docs): refresh navigation and live demos bbc59da
  • feat(plugins): add open-source vector export 299c561
  • feat: improve plugin export contracts b828762
  • feat: replace pdf-image with full PDF export 8acda94
🛠 fix
  • fix: one [SnapDOM] prefix and plain-language console messages bbde42f
  • fix: center checkbox and radio replacements in a stretched box #516
  • fix: halve Firefox grid rasters before the dpr 1 downscale #516
  • fix: rasterize Firefox exports below the layout grid at the grid (#516) 817390e
  • fix: keep one-line boxes from wrapping in the capture (#516) 575537e
  • fix: capture text at its inflated size in Firefox for Android (#516) 5213172
  • fix: size form control replacement SVGs with CSS under layout zoom (#516) 2d6d41d
  • fix: resolve var() in SVG gradient stops (#515) b13ed28
  • fix: emit the placeholder rule only when a placeholder was cloned eb26e15
  • fix: keep placeholder color CSS off void inputs (#512) #514
  • fix(capture): drop xmlns attributes set through setAttribute (#511) #513
  • fix: read transform-origin on transformed pseudo-elements (#509) 39ff290
📦 other (chore/docs/refactor/…)
  • docs: update plugin capabilities 9c0b8a3
  • docs: home page from the design handoff e88be16
  • docs: Labs overview, Showcase, Made with and Plugins join the 3-pane template 59046e9
  • docs: move Docs, How-to, Guides, Compare, Blog and Labs pages to the 3-pane template f0dbc79
  • docs: 3-pane Capabilities and Ecosystem pages from the design handoff d8b6688
  • test: stop the network gate from skipping demos on a fast link, rerun what it skips 96fc884
  • test: serve the d15 image from a local second origin 083cbd9
  • test: restore imageSmoothingQuality only where the engine has it #516

New Contributors

Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.2.0...v3.3.0

12 days ago
snapdom

v3.2.0

28 September 2026

  • feat: export PNG files beyond the canvas limit 6e6b5eb
  • fix: lay out captures on the device-pixel grid in Firefox too #508
  • fix: lay out captures on the live device-pixel grid in Chromium #508
  • fix: keep stacked rows aligned on fractional-DPR screens (#508) 1327c55
  • fix: adjust scrollbar gutter calculations for fractional border widths (#508) 67acb0c
  • fix: keep the settled decode frame when retrying in Firefox ab48bce
  • update crop option 19a7e55
  • chore: shorten console messages 5bc3511
  • chore: color the benchmark verdicts in the terminal 8d93e24
  • test: compare encoded PNGs with the canvas readback 7a19be9

Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.1.1...v3.2.0

16 days ago
snapdom

v3.1.1

24 September 2026

  • fix: paint embedded fonts on first capture (#506) f207b37
  • fix: isolate custom element style defaults 0e7cbf0
  • fix: preserve document overflow in captures. Ref #505 a736115
  • perf: skip display:none subtrees when cloning. Ref #507 f4af040
  • fix: complete sitemap and add canonical URLs for Pro pages 5b02330

Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.1.0...v3.1.1

26 days ago
snapdom

v3.0.0

14 September 2026

The first stable release of SnapDOM v3 brings automatic capture reuse, incremental recapture, automatic font embedding, and new capture APIs. Core and official plugins now share the v3 release line.

If you're upgrading from v2, read the migration guide. The v2 source and v2 documentation remain available.

Features and performance

  • Automatically reuse eligible unchanged captures and rebuild affected subtrees for safe local mutations.
  • Isolate concurrent captures with per-capture sessions.
  • Automatically embed the web fonts used by the captured content.
  • Capture HTML strings with fromString().
  • Prepare learned captures on hover or focus with preCapture().

The SVG engine remains the default. The native html-in-canvas engine remains experimental and requires a custom build.

Breaking changes

  • width and height now take precedence over scale.
  • Font embedding is enabled automatically.
  • preCache has been removed, and obsolete capture options are no longer supported.
  • Core redaction is limited to password fields.
  • afterExport hooks observe results without chaining their return values.

See the migration guide for the complete upgrade instructions.

Layout and rendering fixes

  • Correct alignment in pseudo-element boxes, scroll containers, and images. #498
  • Fix transformed-element reconciliation and offscreen captures. 9b28ab4, 460b75e
  • Prevent fractional-width rounding from introducing unwanted line wrapping. cffd222
  • Preserve explicit wrapper heights and author-specified widths on blockified spans. df94e3e, f3c75d3
  • Match browser behavior for visibility and content-visibility. 21251f7
  • Measure text truncation without replacing live text nodes. 418d18f
  • Neutralize CSS zoom on the capture root. 14b2047
  • Preserve inherited fill colors in SVG <use> icons. 1b6cd96

Fonts and pseudo-elements

  • Preserve font styles for icon glyphs, including italic icons. #496
  • Skip non-generated pseudo-elements and carry over animation-suppression fixes from v2. #497
  • Retain custom @font-face rules when the requested weight or stretch is far from the declared value. #478
  • Keep other font families in a stylesheet when one family is identified as an icon font. a154f18
  • Emit only the @font-face descriptors declared in the source. 8d0345a

Canvas, Shadow DOM, and compatibility

  • Bound canvas frame waits, warn when a canvas is empty, and preserve the frame captured before toDataURL() for WebGL canvases. de521b8, 1c44d1d
  • Clone slotted light DOM only once and exclude light DOM that has not been assigned to a slot. f4b1859, b75e88b
  • Support DOM type checks for elements from other windows and iframes. 84359e5
  • Fix global-variable leakage in the legacy bundle. 80fe19d
  • Correct iframe guidance that suggested enabling an option already enabled. 98de375

Plugins and exports

  • Align official plugins with v3 for HTML, context, element maps, PDF, image effects, and GIF/video recording.
  • Expose capture geometry, exact export options, and canvas cropping to plugins. 7abb29a
  • Accept clone roots from other windows and iframes in the color-tint plugin. ed8c31a

Documentation

  • Align package references, version tags, and the plugin showcase with the shipped releases. fb616b6, 533e7e7
  • Document the plugin hook contract and correct the plugins subpath import. 9ed3632, c439ca1
  • Correct server-side capture guidance and add guides covering DOM capture boundaries and integration patterns. 2fa74fa, 0118a27
  • Rewrite llms.txt and llms-full.txt to match the source implementation. de95504
  • Improve documentation layouts, technical guides, and search-engine crawl signals. e134a69, 0f876d6

Testing and maintenance

  • Expose internal visual demos for testing, expand regression coverage, and split the visual suite into six shards. 5766151, 56b1e01
  • Improve network-dependent test scheduling and wait for iframe stylesheets, imported fonts, and image decoding before capture. 8ae2371, 1df2291, b5161af
  • Make regression tests independent of the capture engine and pin devicePixelRatio in DPR-dependent tests. 8fe0a08, fb7311a
  • Stop pushing changelog changes automatically from npm run build. d341737

Full Changelog: https://github.com/zumerlab/snapdom/compare/v2.23.1...v3.0.0

2026-09-11 08:41:52
snapdom

v2.24.18

What's Changed

New Contributors

Full Changelog: https://github.com/zumerlab/snapdom/compare/v2.24.17...v2.24.18