jekyll-fingerprint-flow 0.1.1 → 0.1.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: 14ae5db54dbde2b54cf9d0177772f672499ca9df4dfe2a12f75e293ccb77c1c5
4
- data.tar.gz: da7453d5fd7fc4512acbfbfdb7ca9d6a4db3dacecff950e564ce118a648d2743
3
+ metadata.gz: b9ee1723a4896982df6a7fc8ad1aa4a672c5dd1e50e08bf75b049b7b81c9943d
4
+ data.tar.gz: 530cf60817874dfa4aefd4917ffd65feb98a2b18067e7525587dd9329e81e02a
5
5
  SHA512:
6
- metadata.gz: 68364036d1149b1e7779b57ebbede3aedf255db526766cd3db39209f8bafb0725df9902fc40838882128cc886bf913cf33697b00a45cb1d948625bda6159d7c8
7
- data.tar.gz: 4c0d12626f3ee81a5b4b202c80710121b427d221235619a728da62e2c1af39cea18945da0b62344385a04bd4b769e1ff04e8c9c43f7383ff4de53be946b97860
6
+ metadata.gz: 654ee48ee034a9811aae5aa9badcfb60eec2b35ce69d525c8dd1847e3be42176aee67b80a102735c8bdaa6b2ff5daaf1377e3adcdcac812848e993001f74917b
7
+ data.tar.gz: 78276b60233d9d8be25bce577b72f79198e75c423548910a1cc596521a78b875782488f554f66b0afb67830e1e78723ac67b0566db1b52147b379243c2bd5ada
data/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.1.2] - 2026-11-10
6
+
7
+ ### Added
8
+
9
+ - `rake docs:demo` — captures the checked-in illustrative overview as
10
+ animated AVIF + WebP + static PNG (headless Chrome + ffmpeg + img2webp;
11
+ build-host tools), embedded in README via `<picture>`. Examples are
12
+ schematic, not generated from a live Jekyll build.
13
+
14
+ ### Changed
15
+
16
+ - In-range gem updates: `addressable` 2.9.1 → 2.9.2,
17
+ `sass-embedded` 1.107.0 → 1.108.1, `rspec-*` 3.13.x patches;
18
+ `BUNDLED WITH` 4.0.21 → 4.0.24.
19
+ - CI: `ruby/setup-ruby` pin bumped v1.335.0 → v1.338.0.
20
+ - CI: Semgrep bumped to 1.182.0 — `ci.yml` and `release.yml` install it with `pipx install semgrep==1.182.0`, and the `semgrep ci` job runs the digest-pinned `semgrep/semgrep:1.182.0` container image (replacing the earlier `pip3 install semgrep==1.176.0` pins; the interim hashed `requirements-ci.txt` lockfile was dropped). Added `.github/dependabot.yml` covering github-actions and bundler updates.
21
+
22
+ - Gemspec `description` rewritten as an RDoc `==`-headed blurb so
23
+ rubygems.org renders it as markup instead of a single plain paragraph.
24
+
25
+ ### Added
26
+
27
+ - Specs covering `.htm` output files and per-build hash memoization (a file changed mid-build keeps its first tag; the next build re-hashes).
28
+
5
29
  ## [0.1.1] - 2026-10-06
6
30
 
7
31
  ### Fixed
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  [![License: AGPL v3](https://img.shields.io/badge/license-AGPL--3.0--or--later-blue.svg)](LICENSE)
11
11
  [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/gundestrup/jekyll-fingerprint-flow)
12
12
  [![CodeFactor](https://www.codefactor.io/repository/github/gundestrup/jekyll-fingerprint-flow/badge)](https://www.codefactor.io/repository/github/gundestrup/jekyll-fingerprint-flow)
13
- [![Semgrep CE](https://img.shields.io/badge/Semgrep_CE-security-success)](https://github.com/gundestrup/jekyll-fingerprint-flow/security/code-scanning)
13
+ [![Semgrep](https://img.shields.io/badge/Semgrep-security-success)](https://github.com/gundestrup/jekyll-fingerprint-flow/security/code-scanning)
14
14
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=gundestrup_jekyll-fingerprint-flow&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=gundestrup_jekyll-fingerprint-flow)
15
15
 
16
16
  Drop-in content-hash cache busting for Jekyll. After the site is written,
@@ -27,6 +27,19 @@ No template changes or asset-pipeline tags are needed. The post-write pass
27
27
  covers matching URLs emitted by layouts, themes, and other plugins, without
28
28
  mistaking comments, script text, or unrelated `data-*` attributes for markup.
29
29
 
30
+ <!-- markdownlint-disable MD033 -->
31
+ <picture>
32
+ <source
33
+ srcset="docs/assets/jekyll-fingerprint-flow-demo.avif"
34
+ type="image/avif">
35
+ <source
36
+ srcset="docs/assets/jekyll-fingerprint-flow-demo.webp"
37
+ type="image/webp">
38
+ <img src="docs/assets/jekyll-fingerprint-flow-demo.png"
39
+ alt="jekyll-fingerprint-flow demo">
40
+ </picture>
41
+ <!-- markdownlint-enable MD033 -->
42
+
30
43
  ## Why
31
44
 
32
45
  Browsers cache static assets aggressively. When a site serves assets with a
@@ -146,7 +159,7 @@ fingerprinting, then compression (0–10).
146
159
  ```bash
147
160
  bundle install
148
161
  bundle exec rake quick # rubocop + rspec
149
- bundle exec rake ci # + bundler-audit, semgrep, package check
162
+ bundle exec rake ci # + bundler-audit, semgrep (local rules), package check
150
163
  ```
151
164
 
152
165
  Release: `bundle exec rake "version:bump[patch]"`, add a dated CHANGELOG
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-fingerprint-flow
5
- version: 0.1.1
5
+ version: 0.1.2
6
6
  tags: {}
7
7
  filters: []
8
8
  config:
@@ -39,10 +39,11 @@ module Jekyll
39
39
  end
40
40
 
41
41
  def strip_trailing_commas(url, finish)
42
- commas = url[/,+\z/]
43
- return [url, finish, false] unless commas
42
+ commas = 0
43
+ commas += 1 while commas < url.bytesize && url.getbyte(url.bytesize - 1 - commas) == 44
44
+ return [url, finish, false] if commas.zero?
44
45
 
45
- [url.byteslice(0, url.bytesize - commas.bytesize), finish - commas.bytesize, true]
46
+ [url.byteslice(0, url.bytesize - commas), finish - commas, true]
46
47
  end
47
48
 
48
49
  def skip_url(value, position)
@@ -26,12 +26,12 @@ module Jekyll
26
26
 
27
27
  # Returns the rewritten URL, or nil when the URL must not be touched.
28
28
  def tag(url, html_dir:, base_href: nil)
29
- parts = split(url.strip) or return
29
+ parts = split(url.strip) || return
30
30
  path, query, frag = parts
31
- decoded_path = unescape(path) or return
31
+ decoded_path = unescape(path) || return
32
32
  return unless fingerprintable?(decoded_path)
33
33
 
34
- resolved = resolve(decoded_path, html_dir, base_href) or return
34
+ resolved = resolve(decoded_path, html_dir, base_href) || return
35
35
  merge(path, query, frag, @hasher.tag(resolved))
36
36
  end
37
37
 
@@ -102,7 +102,7 @@ module Jekyll
102
102
  return html_dir unless base_href
103
103
 
104
104
  base_path = base_href.strip.partition("#").first.partition("?").first
105
- decoded_base = unescape(base_path) or return
105
+ decoded_base = unescape(base_path) || return
106
106
  return html_dir if decoded_base.empty?
107
107
 
108
108
  base_target = base_target(decoded_base, html_dir)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module FingerprintFlow
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-fingerprint-flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svend Gundestrup
@@ -29,10 +29,15 @@ dependencies:
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
31
  version: '5.0'
32
- description: A zero-config Jekyll plugin that content-tags supported local asset URLs
33
- in generated .html/.htm attributes at post_write. Covers matching markup emitted
34
- by themes and plugins without template changes. CSS/JS runtime references and HTTP
35
- cache headers are outside its scope.
32
+ description: |
33
+ == Content-hash cache busting for Jekyll
34
+
35
+ A zero-config plugin that content-tags supported local asset URLs in
36
+ generated .html/.htm attributes at post_write — covering markup
37
+ emitted by themes and plugins without template changes.
38
+
39
+ CSS/JS runtime references and HTTP cache headers are outside its
40
+ scope.
36
41
  email:
37
42
  - svend@gundestrup.dk
38
43
  executables: []