docs: the 2.0.0 CHANGELOG entry, for someone coming from 1.15.1 - #268
Conversation
The v2.0.0 section was written before #250, #253, #254, #255, #256, #261, #263, #264, #266 and #267 landed, and three of its claims had gone false: - "Known limitations: fork-based parallel tests produce no HTML report ... Fixed in 2.1" -- fixed in 2.0 by #266. Reproduced both sides here: 1.15.1 + `parallelize(workers: 2, threshold: 0)` writes NO report and prints no summary line; master writes one merged report and `4 verified, 4 changed, 0 new`. - "a suite whose only contact with the v1 API is `require \"capybara_screenshot_diff/minitest\"` + `include ...Assertions` still prints nothing" -- #263 made the require doors warn. That exact setup now prints the migration notice; verified in a scratch project. - "Two removals 2.0 cannot warn about ... `driver:` as a setting" -- #263 made both the setting writer and the per-screenshot key warn. Verified: `Capybara::Screenshot::Diff.driver = :vips` prints the removal line with a call site. And the silent-by-design constant list repeated the shape of the beta2 `defined?` mistake: it listed "Os, Region" inside a run of `Capybara::Screenshot::Diff::` names. Probed on master -- `defined?(Capybara::Screenshot::Diff::Os)` and `defined?(Capybara::Screenshot::Diff::Region)` are both nil. The real names are `Capybara::Screenshot::Os` and the top-level `Region`, neither of which existed under `::Diff` in 1.15.1 either. Fully qualified now, and `::Comparison` added to match docs/UPGRADING.md. New material, every claim checked against the code or a live run: - a "why upgrade" section for the four green-suite-testing-nothing bugs (#255, #256, #254, #266), plus the unfollowable CI message (#267) and the fail_if_new precedence change - before/after transcripts of the failure message (#264), taken from the same page rendered on 1.15.1 and on master - the summary line (#261), with the fact that it comes from the HTML reporter and needs its one-line require -- an omission that would have read as a missing feature - the #250 / #253 perf table, attributed to its harness, with columns labelled before/after rather than 1.x/2.0 - the libvips fix is stated as guarded on libvips 8.15+, so a reader on an older libvips knows the bug is still theirs Install snippets stay pinned to 2.0.0.beta3 on purpose: `~> 2.0` resolves to nothing on rubygems today. docs/RELEASE_PREP.md already carries a precise step to swap all five (its grep finds exactly those five), and gains one line so the record-modes placeholder in the entry cannot ship unfilled. `rake test:unit` 651 runs / 0 failures, `standardrb lib test` clean.
Reviewer's GuideThis documentation-only PR replaces the stale 2.0.0 changelog entry with an evidence-backed upgrade guide for 1.15.1 users, accurately describing compatibility, correctness fixes, diagnostics, warnings, performance, dependencies, reporting, and the 2.1 migration contract; release preparation now explicitly checks for unfilled placeholders. File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe changelog now documents 2.0.0 fixes, reporting behavior, dependency changes, deprecations, compatibility behavior, and planned 2.1 removals. The release checklist now requires resolving or removing all changelog placeholders. ChangesRelease documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This documentation-only change updates the 2.0.0 upgrade guidance and release checklist without changing runtime behavior; no actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The
[v2.0.0]section was written around #257 and has been overtaken by ten PRs. Three of its claims are now false, one repeats the shape of the beta2defined?mistake, and the whole correctness story — the actual reason to upgrade — was missing.Rewritten for the stated audience: someone on 1.15.1 for a year who never read a beta note. Lead with what they must do (nothing — the v1 names keep working), then what they gain, then what warns, then what 2.1 removes.
Claims that had gone false, and how I know
parallelize(workers: 2, threshold: 0)on 1.15.1, then on this master viapath:4 verified, 4 changed, 0 new. Fixed in 2.0 (#266) — bullet removedrequire "capybara_screenshot_diff/minitest"+include …Assertionsstill prints nothing"driver:as a setting"Capybara::Screenshot::Diff.driver = :vipson masterThe
defined?trap, againThe silent-by-design list read
… the error classes, ::VERSION, Os, Region, Reporters::Default, LOADED_DRIVERS, AVAILABLE_DRIVERS— a run ofCapybara::Screenshot::Diff::names withOsandRegionsitting inside it. Probed on master:Neither
::Diff::Osnor::Diff::Regionexisted in 1.15.1 either (git show v1.15.1:lib/capybara/screenshot/diff/os.rbdefinesCapybara::Screenshot::Os;region.rbdefines a top-levelclass Region). Now fully qualified, with the trap spelled out in "the five things that can actually break".::Comparisonadded to matchdocs/UPGRADING.md.New material (all verified)
fail_if_newprecedence change.require "snap_diff/reporters/html". My first upgraded run printed no summary line at all until I added that require.image_compare.rb#processed, no cache aroundrev-parseindiff/vcs.rb) but did not re-run that harness myself.REVALIDATE = Vips.at_least_libvips?(8, 15) ? {revalidate: true} : {}.activesupportclaim, which nobody had confirmed first-hand, reproduced verbatim: a non-Rails bundle on 1.15.1 dies withLoadError: cannot load such file -- active_support/core_ext/module/attribute_accessorsatcapybara_screenshot_diff/snap_manager.rb:4.Semver
Stated plainly rather than buried: removing public API in 2.1 (a MINOR) is a deliberate departure from strict semver, and publishing the contract one release ahead is the mitigation.
Install pins: deliberately NOT unpinned
Every snippet stays on
2.0.0.beta3.~> 2.0resolves to nothing on rubygems today, so unpinning now ships instructions that hard-failbundle install.docs/RELEASE_PREP.mdalready carries a precise, executable step to swap all five as part of the 2.0.0 push — I ran its grep and it finds exactly those five (README.md,CHANGELOG.md,docs/UPGRADING.md×2,docs/migration-guide.md), so no change was needed there.Placeholder
Record modes (
record: :once/:none/:all) are an HTML comment markedPLACEHOLDERin the entry — invisible if it somehow ships, impossible to mistake for a description.RELEASE_PREP.mdgains one checklist line (grep -n 'PLACEHOLDER' CHANGELOG.md) so it cannot go out unfilled.Gates
mise x ruby@4.0.6 -- bundle exec rake test:unit→ 651 runs, 1922 assertions, 0 failures.mise x ruby@4.0.6 -- bundle exec standardrb lib test→ 158 files, no offenses.Docs only.
version.rb,lib/snap_diff/config.rbandscreenshot_matcher.rbuntouched.Summary by Sourcery
Rewrite the 2.0.0 release documentation to accurately guide 1.15.1 users through the upgrade and its migration path.
Enhancements:
Documentation:
Summary by CodeRabbit