Skip to content

Commit f456e82

Browse files
authored
Merge pull request #418 from DavidS/claude/review-next-tasks-AvwXF
Close out todos and prep 1.2.0 changelog
2 parents 5e90db8 + be686fa commit f456e82

2 files changed

Lines changed: 82 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 75 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,91 @@
11
# 1.2.0
22

3-
* **Breaking install change:** image processing switched from RMagick
4-
to libvips (via [ruby-vips](https://github.com/libvips/ruby-vips)).
5-
Install `libvips` (e.g. `apt install libvips42 libvips-dev` or
6-
`brew install vips`) instead of ImageMagick / libmagickwand-dev. See
3+
## User-visible changes
4+
5+
### Breaking
6+
7+
* **Install:** image processing switched from RMagick to libvips (via
8+
[ruby-vips](https://github.com/libvips/ruby-vips)). Install `libvips`
9+
(e.g. `apt install libvips42 libvips-dev` or `brew install vips`)
10+
instead of ImageMagick / libmagickwand-dev. See
711
`docs/libvips-bench.md` for the perf comparison that motivated the
812
swap.
9-
* **Behaviour change:** EXIF Orientation is now honoured. Sources that
10-
previously rendered sideways (Orientation 5–8) will now render
11-
upright. Output JPEGs no longer carry the orientation tag.
12-
* **Behaviour change:** every rendered JPEG (full-size + thumbs) now
13+
* **Ruby:** `required_ruby_version` raised from `>= 2.6.0` to `>= 3.2`.
14+
CI now runs on 3.2 / 3.3 / 3.4 / 4.0.
15+
* **Jekyll:** gem constraint tightened from `~> 4.0` to `~> 4.4`. The
16+
plugin now relies on Jekyll 4.3+ collection-read semantics and on
17+
the 4.4 `Document#read` shape.
18+
19+
### Behaviour
20+
21+
* **Shrink-only rendering:** the default geometry (`1920x1080`) and
22+
any user-supplied `max_size` without an explicit geometry flag now
23+
append `>`, so sources smaller than the bounding box are passed
24+
through at their original dimensions instead of being upscaled. The
25+
geometry is part of both the Geometry- and Render-cache keys, so
26+
upgrading invalidates stale upscaled outputs automatically — no
27+
`jekyll clean` required.
28+
* **EXIF Orientation** is now honoured. Sources that previously
29+
rendered sideways (Orientation 5–8) will now render upright. Output
30+
JPEGs no longer carry the orientation tag.
31+
* **Encoder defaults:** every rendered JPEG (full-size + thumbs) now
1332
ships as a progressive JPEG with optimised Huffman tables, explicit
1433
4:2:0 chroma subsampling, and all metadata stripped (`keep: :none`).
15-
Thumbnails are encoded at Q80 and full-size renders honour the
34+
Thumbnails are encoded at Q80; full-size renders honour the
1635
collection-metadata `quality` value (default 85). Previously
1736
thumbnails used RMagick's default encoder (baseline JPEG, ~Q75, EXIF
1837
retained). The explicit `subsample_mode: :on` guards against a
19-
silent ~25% file-size jump if a user bumps `quality` to ≥ 90 (where
38+
silent ~25% file-size jump if `quality` is bumped to ≥ 90 (where
2039
libvips' `:auto` mode would otherwise switch to 4:4:4).
40+
* **`max_size` narrowing:** values with ImageMagick trailing flags
41+
other than `>` (i.e. `!`, `^`, `@`, `#`) are silently treated as
42+
the plain `WxH` form. cheesy-gallery's own config never used these
43+
flags; if you depended on them, file an issue.
44+
* **Generator metadata:** the generator now declares `safe true` (so
45+
it whitelists under `jekyll build --safe`) and `priority :low` (so
46+
it runs after default-priority generators).
47+
48+
### Bug fixes
49+
50+
* **Render-cache staleness:** the Render-cache key now includes
51+
source `mtime`, so in-place edits or re-pointed `git-annex`
52+
symlinks no longer silently keep stale renders on subsequent
53+
builds.
54+
* **Jekyll 4.3+ compat:** `Collection#read` snapshots
55+
`collection.files` into `site.static_files`, so the generator now
56+
re-syncs `site.static_files` after mutating `collection.files`.
57+
Without this, generator-added files (thumbs / index renders)
58+
silently never reached the writer.
59+
* **Jekyll 4.4.1 compat:** the synthetic `GalleryIndex` document now
60+
overrides `Document#read` directly (rather than the private
61+
`read_content`), avoiding an `ENOENT` crash from `read_post_data`
62+
on the non-existent backing file.
2163
* **Robustness:** image header reads now use `fail_on: :error`, so a
2264
truncated or corrupt source JPEG aborts the build with a clear
2365
error rather than silently rendering a half-grey output.
24-
* **Behaviour narrowing:** `max_size` values with ImageMagick trailing
25-
flags other than `>` (i.e. `!`, `^`, `@`, `#`) are silently treated
26-
as the plain `WxH` form. cheesy-gallery's own config never used
27-
these flags; if you depended on them, file an issue.
66+
67+
## Internal changes
68+
69+
* CI matrix expanded to Ruby 3.2 / 3.3 / 3.4 / 4.0; `actions/checkout`
70+
bumped to v4; superseded workflow runs auto-cancel per branch;
71+
tests run on push only.
72+
* `BaseImageFile` render path refactored: rendering now happens inside
73+
a `copy_file` override; the `write` override is now just the
74+
cross-process Render-cache short-circuit. The bespoke `mkdir_p` +
75+
`rm` dance was dropped in favour of `super`.
76+
* Dev dependencies: `codecov` dropped (CI never uploaded coverage);
77+
`bundler` dev dep loosened to `>= 2.1`. Fixture lockfile refreshed
78+
(rake 13.4.2, tzinfo-data 1.2026.2, plus jekyll, jekyll-feed,
79+
jekyll-seo-tag, minima, kramdown, rouge, listen, sass-embedded, et
80+
al. to current within constraints).
81+
* New spec suites: `spec/cheesy/generator_spec.rb` (end-to-end gallery
82+
generation, parent/child wiring, thumbnail selection, dimension
83+
extraction, `max_size` / `quality` overrides) and
84+
`spec/cheesy/cache_spec.rb` (eight cache-layer scenarios derived
85+
from `docs/cache-analysis.md`).
86+
* New internal docs under `docs/`: `repo-research-report.md`,
87+
`jekyll-api-review.md`, `cache-analysis.md`, `libvips-bench.md`,
88+
`index.md`, `todos.md`. Bench script at `script/bench.rb`.
2889

2990
# 1.1.1
3091

docs/todos.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,10 @@ Newer items at the bottom; tick items off in PRs as they land.
6464
`3.2`, `3.3`, `3.4`, `4.0`. _Also bumped `actions/checkout` to v4._
6565
- [x] Update Rubocop's `TargetRubyVersion` in `.rubocop.yml` to match
6666
the new floor.
67-
- [ ] Re-run `rake` and the fixture `jekyll build` on each version;
67+
- [x] Re-run `rake` and the fixture `jekyll build` on each version;
6868
address any new cop offences or deprecation warnings. _Local run
69-
under Ruby 3.3 is clean; awaiting CI matrix run for the rest._
69+
under Ruby 3.3 was clean; CI matrix (`3.2`, `3.3`, `3.4`, `4.0`)
70+
is now green on the upgraded workflow._
7071

7172
## 3. Upgrade other dependencies
7273

@@ -152,8 +153,10 @@ existing `spec/fixtures/test_site` (or a smaller in-spec fixture):
152153
`ImageFile` instances carry the expected `@max_size` / `@quality`
153154
values straight from `collection.metadata` (gallery_one quality
154155
70 from explicit config; gallery_two defaults to 85)._
155-
- [ ] Wire spec coverage reporting (simplecov) into `rake` if we keep
156-
coverage as a goal.
156+
- [~] Wire spec coverage reporting (simplecov) into `rake` if we keep
157+
coverage as a goal. _Won't do for now: coverage isn't a tracked
158+
goal for this gem (CI never uploaded it, and `codecov` was
159+
already dropped in §3). Revisit if/when we want a coverage gate._
157160

158161
## 5. Review Jekyll plugin API surface
159162

0 commit comments

Comments
 (0)