Skip to content

Commit be686fa

Browse files
committed
Expand 1.2.0 changelog to cover everything since 1.1.1
Restructure the 1.2.0 entry into user-visible and internal sections: - User-visible / Breaking: libvips swap, Ruby >= 3.2 floor, Jekyll ~> 4.4 floor. - User-visible / Behaviour: shrink-only rendering, EXIF orientation, encoder defaults, max_size flag narrowing, generator safe-mode + priority declarations. - User-visible / Bug fixes: Render-cache mtime fix (git-annex / in-place edits), Jekyll 4.3+ site.static_files re-sync, Jekyll 4.4.1 Document#read override for the synthetic GalleryIndex, fail_on: :error for header reads. - Internal: CI matrix, copy_file override refactor, dev dep churn (codecov dropped, bundler loosened, fixture lockfile refresh), new generator/cache spec suites, new docs/ reports + bench script. Verified with `rake` (RuboCop clean, 45 specs pass) and a fixture `jekyll build` (thumbs + index renders generated for all collections).
1 parent 4c816b3 commit be686fa

1 file changed

Lines changed: 75 additions & 14 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

0 commit comments

Comments
 (0)