jekyll-compress-flow 0.2.1 → 0.2.2

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: 6e5a152c5ea63749b35bd7f707fadc383a54312e61bde7b9bd89b68f8d9d072e
4
- data.tar.gz: d3261bba8a601a796cbc016e6b7399983d8098eb4839ff8407e5ce8782c5bbfd
3
+ metadata.gz: 7698a216c6b11cc78eb4dbf1fc8642b3b76e41dcb93a3f0f6e72ed939207a9ab
4
+ data.tar.gz: 50876d915cc373992f28fff651357c468bd9306e9651e7a280ec7e81a531825d
5
5
  SHA512:
6
- metadata.gz: f8acbb85dd3422bb2ce6247ff85de0458b05b883069e45c6154e3d1f38b2dfa4519de216899754697cdeed086beeb0079516d1e226961175f803140ba4bcd5bd
7
- data.tar.gz: a28861fff7a8b4bacf3ae6359934b6fbe24682679d24b1828e5d7aac4b9ad631925831ca7c64268b1b10d892d01de49689cefdabcc2d67820175b3257799aa2c
6
+ metadata.gz: 7f862ea2ee85d52f9b58e8abb5b79808cca7ec951c69fb1ab80fd3a81085292e3084e9ac7ddef365ebad1fdc75971905600adeab6f2a341d2425c3d5aacd9e1d
7
+ data.tar.gz: 7a750ebe879c078a28224ae84d3ec738f273b567c562f3a78face1625ce5b005b78d23b37119731a85c13f34a1f36536472d28f884b4af2a52ba13cfa89ad5a1
data/CHANGELOG.md CHANGED
@@ -4,6 +4,31 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## 0.2.2 — 2026-11-10
8
+
9
+ ### Added
10
+
11
+ - `rake docs:demo` — captures the checked-in illustrative overview as
12
+ animated AVIF + WebP + static PNG (headless Chrome + ffmpeg + img2webp;
13
+ build-host tools), embedded in README via `<picture>`. Examples are
14
+ schematic, not generated from a live Jekyll build.
15
+
16
+ ### Changed
17
+
18
+ - CI: Semgrep moved from an inline `pip3 install` pin to the pinned
19
+ `semgrep/semgrep` container image (tag + sha256 digest). Image bumped
20
+ to 1.182.1 (certificate trust fix for the eMudhra CA compromise).
21
+ CI Node bumped from 24 to 26 (Active LTS "Lithium" since 2026-10-28).
22
+ - CI: `sonarqube-scan-action` bumped to v8.4.0; `markdownlint-cli2`
23
+ bumped to 0.24.0; `ruby/setup-ruby` v1.335.0 → v1.338.0; in-range
24
+ gem updates (rubocop 1.92.2, parser 3.3.13.0, addressable 2.9.2,
25
+ csv 3.3.7, sass-embedded 1.108.1, rspec-* 3.13.x patches);
26
+ `BUNDLED WITH` 4.0.23 → 4.0.24.
27
+ - CI: Ruby 4.0 added to the test matrix (latest stable major;
28
+ `required_ruby_version >= 3.3.0` already permits it).
29
+ - Gemspec `description` rewritten as an RDoc `==`-headed blurb so
30
+ rubygems.org renders it as markup instead of a single plain paragraph.
31
+
7
32
  ## 0.2.1 — 2026-10-06
8
33
 
9
34
  ### Added
data/README.md CHANGED
@@ -25,6 +25,19 @@ simply happens at build time instead of request time.
25
25
 
26
26
  [Compare different formats](https://speedvitals.com/blog/zstd-vs-brotli-vs-gzip/)
27
27
 
28
+ <!-- markdownlint-disable MD033 -->
29
+ <picture>
30
+ <source
31
+ srcset="docs/assets/jekyll-compress-flow-demo.avif"
32
+ type="image/avif">
33
+ <source
34
+ srcset="docs/assets/jekyll-compress-flow-demo.webp"
35
+ type="image/webp">
36
+ <img src="docs/assets/jekyll-compress-flow-demo.png"
37
+ alt="jekyll-compress-flow demo">
38
+ </picture>
39
+ <!-- markdownlint-enable MD033 -->
40
+
28
41
  ## Prerequisites
29
42
 
30
43
  The plugin shells out to the platform compressor CLIs — install them on
@@ -32,7 +45,7 @@ the **build host** (not the web server; visitors need nothing):
32
45
 
33
46
  | Tool | Generates | Minimum | Tested baseline |
34
47
  | ---- | --------- | ------- | --------------- |
35
- | `brotli` | `.br` | 1.1.0 | 1.2.0 (macOS) |
48
+ | `brotli` | `.br` | 1.1.0 | 1.2.1 (macOS) |
36
49
  | `zstd` | `.zst` | 1.5.5 | 1.5.7 (macOS) |
37
50
  | `gzip` | `.gz` | any | preinstalled on macOS/Linux; ships with Git for Windows |
38
51
 
data/interface.yml CHANGED
@@ -2,7 +2,7 @@
2
2
  # Public tag/config surface for tooling (editor extensions, doc linters).
3
3
  ---
4
4
  gem: jekyll-compress-flow
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  tags: {}
7
7
  filters: []
8
8
  config:
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module CompressFlow
5
- VERSION = "0.2.1"
5
+ VERSION = "0.2.2"
6
6
  end
7
7
  end
@@ -99,6 +99,9 @@ module Jekyll
99
99
  end
100
100
 
101
101
  def compress(file, format, cfg)
102
+ # Array-form system(): no shell — tool/args are literals from the frozen
103
+ # FORMATS table; file is a data argument globbed under the build dest.
104
+ # nosemgrep: ruby.lang.security.dangerous-exec.dangerous-exec
102
105
  ok = system(format["tool"], *format["args"], file, out: File::NULL, err: File::NULL)
103
106
  fail_or_warn(cfg, "#{format['tool']} failed on #{file}") unless ok
104
107
  end
@@ -107,6 +110,8 @@ module Jekyll
107
110
  # banner could not be parsed (or no pattern is defined — e.g. Apple gzip
108
111
  # vs GNU gzip use incomparable version strings), nil when not installed.
109
112
  def tool_version(tool, pattern)
113
+ # Array-form capture2e: no shell — tool is a literal from frozen FORMATS.
114
+ # nosemgrep: ruby.lang.security.dangerous-exec.dangerous-exec
110
115
  out, status = Open3.capture2e(tool, "--version")
111
116
  return nil unless status.success?
112
117
  return :unversioned unless pattern && (match = out.match(pattern))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-compress-flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svend Gundestrup
@@ -29,10 +29,13 @@ dependencies:
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
31
  version: '5.0'
32
- description: A Jekyll plugin that writes Brotli, Zstandard and gzip siblings next
33
- to text assets at the end of a build, so a precompressed-capable static server (e.g.
34
- Caddy's file_server precompressed) can serve them without per-request compression
35
- CPU.
32
+ description: |
33
+ == Precompressed siblings for Jekyll output
34
+
35
+ Writes .br, .zst and .gz siblings next to text assets at the end of a
36
+ build, so a precompressed-capable static server (for example Caddy's
37
+ file_server precompressed) can serve them without per-request
38
+ compression CPU.
36
39
  email:
37
40
  - svend@gundestrup.dk
38
41
  executables: []