safe_image 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f73bfd1e95c6fbb93ad43254cbff0b2d14cf1d667b5af58daf3e7f2311e3240
4
- data.tar.gz: 598bc5111672e82b922bfc134c168488ad9348b2b85cf5d6f3ac6d12c959ddfc
3
+ metadata.gz: 29ce0a1f4932ad1cf1dd7e47c6ae9b29009a7d2d63d54e350ec62feb1dc09e22
4
+ data.tar.gz: 2bd28448920dc859ddb8e5a0703d51163aee702807184971b8bcea594fd36fec
5
5
  SHA512:
6
- metadata.gz: d3dd059f65b1f5d5ad43290aaf3e654817eca8d5127f90717cbf91739c31b92c9674c5fcc73c5b61a5b2be724c5b8053e298a35f6063cd880959a3ccfb9916c8
7
- data.tar.gz: 5eeb7da08494d4e76f6ba5e9aa6479b083c8e1cd8f40fa7779537c00884a0e5cb068714b6fbf6ece00fc82fcdc39919c458c2fadcc4740b1348786a88871fb7a
6
+ metadata.gz: c756eb00ec11291985e5b9f6f573abf19399c0592e1e7d390e9239e29d359893432f55a86283441d22e22bd6a3b0d0f98b3886735d73737c809937320220b0ca
7
+ data.tar.gz: 2b7b4e9d309a6184a9881010eb058990eb4b86b293ca717c26f12d89cc9310fa8dc03a8bb9dcbeb6071840529a86f0d68726cda8715602d46ab1bc7bb80f8aae
data/CHANGELOG.md CHANGED
@@ -5,6 +5,46 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.5.0 - 2026-06-22]
9
+
10
+ ### Changed
11
+
12
+ - **The `:vips` backend now runs libvips in the bundled native helper process.**
13
+ Ruby no longer loads libvips into the application process for probing,
14
+ thumbnailing, converting, orientation, dominant-color, ICO pixel extraction,
15
+ or letter-avatar generation. The helper exposes only the operations Safe Image
16
+ calls, blocks unsafe libvips operations/loaders, and fails closed when the
17
+ helper is unavailable; there is still no fallback from `:vips` to
18
+ ImageMagick.
19
+ - **Sandboxing now uses the public Landlock API around helper/tool processes.**
20
+ The previous Ruby zygote/worker sandbox plumbing was removed in favour of
21
+ simpler process execution with explicit read/write/execute allowlists and the
22
+ existing rlimits/network-deny posture.
23
+ - **Operation dispatch was simplified.** Transform and metadata operations now
24
+ dispatch directly to backend operation classes, removing an internal
25
+ forwarding layer while preserving the public API.
26
+ - **PNG optimization now mirrors Discourse's ordering.** Safe Image runs a
27
+ lossless PNG optimizer first, then optionally runs `pngquant` for small lossy
28
+ PNG optimization attempts. `oxipng` remains preferred when installed, with
29
+ `optipng` accepted as a packaged fallback.
30
+
31
+ ### Added
32
+
33
+ - Added a shared metadata result builder to keep SVG, ICO, vips, and
34
+ ImageMagick metadata probe results consistent.
35
+ - Added a `native:build` rake task and made `rake test` build/install the
36
+ `safe_image_vips_helper` binary before running the test suite.
37
+
38
+ ### Fixed
39
+
40
+ - Fixed source-tree and CI test runs where `SafeImage.configure!(backend:
41
+ :vips)` failed because `lib/safe_image/safe_image_vips_helper` had not been
42
+ built yet.
43
+ - Fixed CI setup order so libvips development headers are installed before
44
+ bundler/native build steps run.
45
+ - Fixed CI portability by avoiding an apt dependency on unavailable `oxipng`
46
+ packages; CI now uses packaged `optipng` for PNG lossless optimizer coverage.
47
+
8
48
  ## [0.4.0 - 2026-06-18]
9
49
 
10
50
  ### Removed (breaking)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SafeImage
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron