Changelog

SemVer 2.0.0 Keep-A-Changelog 1.0.0

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning,
and yes, platform and engine support are part of the public API.
Please file a bug if you notice a violation of semantic versioning.

Unreleased

Added

Changed

Deprecated

Removed

Fixed

Security

1.1.32 - 2025-10-07

  • TAG: v1.1.32
  • COVERAGE: 96.39% – 3929/4076 lines in 26 files
  • BRANCH COVERAGE: 81.07% – 1619/1997 branches in 26 files
  • 79.12% documented

Added

  • A top-level note on gem server switch in README.md & template

Changed

  • Switch to cooperative gem server
    • https://gem.coop

1.1.31 - 2025-09-21

  • TAG: v1.1.31
  • COVERAGE: 96.39% – 3929/4076 lines in 26 files
  • BRANCH COVERAGE: 81.07% – 1619/1997 branches in 26 files
  • 79.12% documented

Fixed

  • order of checksums and release / tag reversed
    • remove all possibility of gem rebuild (part of reproducible builds) including checksums in the rebuilt gem

1.1.30 - 2025-09-21

  • TAG: v1.1.30
  • COVERAGE: 96.27% – 3926/4078 lines in 26 files
  • BRANCH COVERAGE: 80.97% – 1617/1997 branches in 26 files
  • 79.12% documented

Added

  • kettle-changelog: handle legacy tag-in-release-heading style
    • convert to tag-in-list style

1.1.29 - 2025-09-21

  • TAG: v1.1.29
  • COVERAGE: 96.19% – 3861/4014 lines in 26 files
  • BRANCH COVERAGE: 80.74% – 1589/1968 branches in 26 files
  • 79.12% documented

Changed

  • Testing release

1.1.28 - 2025-09-21

  • TAG: v1.1.28
  • COVERAGE: 96.19% – 3861/4014 lines in 26 files
  • BRANCH COVERAGE: 80.89% – 1592/1968 branches in 26 files
  • 79.12% documented

Fixed

  • kettle-release: restore compatability with MFA input

1.1.27 - 2025-09-20

  • TAG: v1.1.27
  • COVERAGE: 96.33% – 3860/4007 lines in 26 files
  • BRANCH COVERAGE: 81.09% – 1591/1962 branches in 26 files
  • 79.12% documented

Changed

  • Use obfuscated URLs, and avatars from Open Collective in ReadmeBackers

Fixed

  • improved handling of flaky truffleruby builds in workflow templates
  • fixed handling of kettle-release when checksums are present and unchanged causing the gem_checksums script to fail

1.1.25 - 2025-09-18

  • TAG: v1.1.25
  • COVERAGE: 96.87% – 3708/3828 lines in 26 files
  • BRANCH COVERAGE: 81.69% – 1526/1868 branches in 26 files
  • 78.33% documented

Fixed

  • kettle-readme-backers fails gracefully when README_UPDATER_TOKEN is missing from org secrets

1.1.24 - 2025-09-17

  • TAG: v1.1.24
  • COVERAGE: 96.85% – 3694/3814 lines in 26 files
  • BRANCH COVERAGE: 81.81% – 1520/1858 branches in 26 files
  • 78.21% documented

Added

  • Replace template tokens with real minimum ruby versions for runtime and development

Changed

  • consolidated specs

Fixed

  • All .example files are now included in the gem package
  • Leaky state in specs

1.1.23 - 2025-09-16

  • TAG: v1.1.23
  • COVERAGE: 96.71% – 3673/3798 lines in 26 files
  • BRANCH COVERAGE: 81.57% – 1509/1850 branches in 26 files
  • 77.97% documented

Fixed

  • GemSpecReader, ReadmeBackers now use shared OpenCollectiveConfig
    • fixes broken opencollective config handling in GemSPecReader

1.1.22 - 2025-09-16

  • TAG: v1.1.22
  • COVERAGE: 96.83% – 3661/3781 lines in 25 files
  • BRANCH COVERAGE: 81.70% – 1505/1842 branches in 25 files
  • 77.01% documented

Changed

  • Revert “🔒️ Use pull_request_target in workflows”
    • It’s not relevant to my projects (either this gem or the ones templated)

1.1.21 - 2025-09-16

  • TAG: v1.1.21
  • COVERAGE: 96.83% – 3661/3781 lines in 25 files
  • BRANCH COVERAGE: 81.65% – 1504/1842 branches in 25 files
  • 77.01% documented

Changed

  • improved templating
  • improved documentation

Fixed

  • kettle-readme-backers: read correct config file
    • .opencollective.yml in project root

1.1.20 - 2025-09-15

  • TAG: v1.1.20
  • COVERAGE: 96.80% – 3660/3781 lines in 25 files
  • BRANCH COVERAGE: 81.65% – 1504/1842 branches in 25 files
  • 77.01% documented

Added

  • Allow reformating of CHANGELOG.md without version bump
  • --include=GLOB includes files not otherwise included in default template
  • more test coverage

Fixed

  • Add .licenserc.yaml to gem package
  • Handling of GFM fenced code blocks in CHANGELOG.md
  • Handling of nested list items in CHANGELOG.md
  • Handling of blank lines around all headings in CHANGELOG.md

1.1.19 - 2025-09-14

  • TAG: v1.1.19
  • COVERAGE: 96.58% – 3531/3656 lines in 25 files
  • BRANCH COVERAGE: 81.11% – 1443/1779 branches in 25 files
  • 76.88% documented

Added

  • documentation of vcr on Ruby 2.4
  • Apache SkyWalking Eyes dependency license check
    • Added to template

Fixed

  • fix duplicate headings in CHANGELOG.md Unreleased section

1.1.18 - 2025-09-12

  • TAG: v1.1.18
  • COVERAGE: 96.24% – 3477/3613 lines in 25 files
  • BRANCH COVERAGE: 81.01% – 1425/1759 branches in 25 files
  • 76.88% documented

Removed

  • remove patreon link from README template

1.1.17 - 2025-09-11

  • TAG: v1.1.17
  • COVERAGE: 96.29% – 3479/3613 lines in 25 files
  • BRANCH COVERAGE: 81.01% – 1425/1759 branches in 25 files
  • 76.88% documented

Added

  • improved documentation
  • better organized readme
  • badges are more clear & new badge for Ruby Friends Squad on Daily.dev
    • https://app.daily.dev/squads/rubyfriends

Changed

  • update template to version_gem v1.1.9
  • right-size funding commit message append width

Removed

  • remove patreon link from README

1.1.16 - 2025-09-10

  • TAG: v1.1.16
  • COVERAGE: 96.24% – 3477/3613 lines in 25 files
  • BRANCH COVERAGE: 81.01% – 1425/1759 branches in 25 files
  • 76.88% documented

Fixed

  • handling of alternate format of Unreleased section in CHANGELOG.md

1.1.15 - 2025-09-10

  • TAG: v1.1.15
  • COVERAGE: 96.29% – 3479/3613 lines in 25 files
  • BRANCH COVERAGE: 80.96% – 1424/1759 branches in 25 files
  • 76.88% documented

Fixed

  • fix appraisals for Ruby v2.7 to use correct x_std_libs

1.1.14 - 2025-09-10

  • TAG: v1.1.14
  • COVERAGE: 96.24% – 3477/3613 lines in 25 files
  • BRANCH COVERAGE: 80.96% – 1424/1759 branches in 25 files
  • 76.88% documented

Changed

  • use current x_std_libs modular gemfile for all appraisals that are pinned to current ruby
  • fix appraisals for Ruby v2 to use correct version of erb

1.1.13 - 2025-09-09

  • TAG: v1.1.13
  • COVERAGE: 96.29% – 3479/3613 lines in 25 files
  • BRANCH COVERAGE: 80.96% – 1424/1759 branches in 25 files
  • 76.88% documented

Fixed

  • include .rubocop_rspec.yml during install / template task’s file copy
  • kettle-dev-setup now honors --force option

1.1.12 - 2025-09-09

  • TAG: v1.1.12
  • COVERAGE: 94.84% – 3422/3608 lines in 25 files
  • BRANCH COVERAGE: 78.97% – 1386/1755 branches in 25 files
  • 76.88% documented

Changed

  • improve Gemfile updates during kettle-dev-setup
  • git origin-based funding_org derivation during setup

1.1.11 - 2025-09-08

  • TAG: v1.1.11
  • COVERAGE: 96.56% – 3396/3517 lines in 24 files
  • BRANCH COVERAGE: 81.33% – 1385/1703 branches in 24 files
  • 77.06% documented

Changed

  • move kettle-dev-setup logic into Kettle::Dev::SetupCLI

Fixed

  • gem dependency detection in kettle-dev-setup to prevent duplication

1.1.10 - 2025-09-08

  • TAG: v1.1.10
  • COVERAGE: 97.14% – 3256/3352 lines in 23 files
  • BRANCH COVERAGE: 81.91% – 1345/1642 branches in 23 files
  • 76.65% documented

Added

  • Improve documentation
    • Fix an internal link in README.md

Changed

  • template task no longer overwrites CHANGELOG.md completely
    • attempts to retain existing release notes content

Fixed

  • Fix a typo in the README.md

Fixed

  • fix typo in the path to x_std_libs.gemfile

1.1.9 - 2025-09-07

  • TAG: v1.1.9
  • COVERAGE: 97.11% – 3255/3352 lines in 23 files
  • BRANCH COVERAGE: 81.91% – 1345/1642 branches in 23 files
  • 76.65% documented

Added

  • badge for current runtime heads in example readme

Fixed

  • Add gemfiles/modular/x_std_libs.gemfile & injected.gemfile to template
  • example version of gemfiles/modular/runtime_heads.gemfile
    • necessary to avoid deps on recording gems in the template

1.1.8 - 2025-09-07

  • TAG: v1.1.8
  • COVERAGE: 97.16% – 3246/3341 lines in 23 files
  • BRANCH COVERAGE: 81.95% – 1344/1640 branches in 23 files
  • 76.97% documented

Added

  • add .aiignore to the template
  • add .rubocop_rspec.yml to the template
  • gemfiles/modular/x_std_libs pattern to template, including:
    • erb
    • mutex_m
    • stringio
  • gemfiles/modular/debug.gemfile
  • gemfiles/modular/runtime_heads.gemfile
  • .github/workflows/dep-heads.yml
  • (performance) filter and prioritize example files in the .github directory
  • added codecov config to the template
  • Kettle::Dev.default_registered?

Fixed

  • run specs as part of the test task

1.1.7 - 2025-09-06

  • TAG: v1.1.7
  • COVERAGE: 97.12% – 3237/3333 lines in 23 files
  • BRANCH COVERAGE: 81.95% – 1344/1640 branches in 23 files
  • 76.97% documented

Added

  • rake task - appraisal:install
    • initial setup for projects that didn’t previously use Appraisal

Changed

  • .git-hooks/commit-msg allows commit if gitmoji-regex is unavailable
  • simplified *Task classes’ task_abort methods to just raise Kettle::Dev::Error
    • Allows caller to decide how to handle.

Removed

  • addressable, rake runtime dependencies
    • moved to optional, or development dependencies

Fixed

  • Fix local CI via act for templated workflows (skip JRuby in nektos/act locally)

1.1.6 - 2025-09-05

  • TAG: v1.1.6
  • COVERAGE: 97.06% – 3241/3339 lines in 23 files
  • BRANCH COVERAGE: 81.83% – 1347/1646 branches in 23 files
  • 76.97% documented

Fixed

  • bin/rake test works for minitest

1.1.5 - 2025-09-04

  • TAG: v1.1.5
  • COVERAGE: 33.87% – 1125/3322 lines in 22 files
  • BRANCH COVERAGE: 22.04% – 361/1638 branches in 22 files
  • 76.83% documented

Added

  • kettle-pre-release: run re-release checks on a library
    • validate URLs of image assets in Markdown files
  • honor ENV[“FUNDING_FORGE”] set to “false” as intentional disabling of funding-related logic.
  • Add CLI Option –only passthrough from kettle-dev-setup to Installation Task
  • Comprehensive documentation of all exe/ scripts in README.md
  • add gitlab pipeline result to ci:act
  • highlight SHA discrepancies in ci:act task header info
  • how to set up forge tokens for ci:act, and other tools, instructions for README.md

Changed

  • expanded use of adapter patterns (Exit, Git, and Input)
  • refactored and improved structure of code, more resilient
  • kettle-release: do not abort immediately on CI failure; continue checking all workflows, summarize results, and prompt to (c)ontinue or (q)uit (reuses ci:act-style summary)

Removed

  • defensive NameError handling in ChangelogCLI.abort method

Fixed

  • replace token {OPENCOLLECTIVE|ORG_NAME} with funding org name
  • prefer .example version of .git-hooks
  • kettle-commit-msg now runs via rubygems (not bundler) so it will work via a system gem
  • fixed logic for handling derivation of forge and funding URLs
  • allow commits to succeed if dependencies are missing or broken
  • RBS types documentation for GemSpecReader

1.1.4 - 2025-09-02

  • TAG: v1.1.4
  • COVERAGE: 67.64% – 554/819 lines in 9 files
  • BRANCH COVERAGE: 53.25% – 221/415 branches in 9 files
  • 76.22% documented

Fixed

  • documentation of rake tasks from this gem no longer includes standard gem tasks
  • kettle-dev-setup: package bin/setup so setup can copy it
  • kettle_dev_install task: set executable flag for .git-hooks script when installing

1.1.3 - 2025-09-02

  • TAG: v1.1.3
  • COVERAGE: 97.14% – 2857/2941 lines in 22 files
  • BRANCH COVERAGE: 82.29% – 1194/1451 branches in 22 files
  • 76.22% documented

Changed

  • URL for migrating repo to CodeBerg:
    • https://codeberg.org/repo/migrate

Fixed

  • Stop double defining DEBUGGING constant

1.1.2 - 2025-09-02

  • TAG: v1.1.2
  • COVERAGE: 97.14% – 2858/2942 lines in 22 files
  • BRANCH COVERAGE: 82.29% – 1194/1451 branches in 22 files
  • 76.76% documented

Added

  • .gitlab-ci.yml documentation (in example)
  • kettle-dvcs script for setting up DVCS, and checking status of remotes
    • https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
  • kettle-dvcs –status: prefix “ahead by N” with ✅️ when N==0, and 🔴 when N>0
  • kettle-dvcs –status: also prints a Local status section comparing local HEAD to origin/, and keeps origin visible via that section
  • Document kettle-dvcs CLI in README (usage, options, examples)
  • RBS types for Kettle::Dev::DvcsCLI and inline YARD docs on CLI
  • Specs for DvcsCLI covering remote normalization, fetch outcomes, and README updates

Changed

  • major spec refactoring

Fixed

  • (linting) rspec-pending_for 0.0.17+ (example gemspec)

1.1.1 - 2025-09-02

  • TAG: v1.1.1
  • COVERAGE: 97.04% – 2655/2736 lines in 21 files
  • BRANCH COVERAGE: 82.21% – 1109/1349 branches in 21 files
  • 76.81% documented

Added

  • .simplecov.example - keeps it generic
  • improved documentation on automatic release script
  • .gitlab-ci.yml documentation

Fixed

  • reduce extra leading whitespace in info table column 2

1.1.0 - 2025-09-02

  • TAG: v1.1.0
  • COVERAGE: 97.03% – 2649/2730 lines in 21 files
  • BRANCH COVERAGE: 82.16% – 1105/1345 branches in 21 files
  • 76.81% documented

Added

  • exe/kettle-dev-setup - bootstrap templating in any RubyGem

Removed

  • all runtime deps
    • dependencies haven’t really changed; will be injected into the gemspec of the including gem
    • almost a breaking change; but this gem re-templates other gems
    • so non-breaking via re-templating.

1.0.27 - 2025-09-01

  • TAG: v1.0.27
  • COVERAGE: 97.77% – 2629/2689 lines in 22 files
  • BRANCH COVERAGE: 82.40% – 1100/1335 branches in 22 files
  • 76.47% documented

Changed

  • Use semver version dependency (~> 1.0) on kettle-dev when templating

Removed

  • dependency on version_gem (backwards compatible change)

1.0.26 - 2025-09-01

  • TAG: v1.0.26
  • COVERAGE: 97.81% – 2630/2689 lines in 22 files
  • BRANCH COVERAGE: 82.40% – 1100/1335 branches in 22 files
  • 75.00% documented

Fixed

  • .env.local.example is now included in the packaged gem
    • making the copy by install / template tasks possible

1.0.25 - 2025-08-31

  • TAG: v1.0.25
  • COVERAGE: 97.81% – 2630/2689 lines in 22 files
  • BRANCH COVERAGE: 82.40% – 1100/1335 branches in 22 files
  • 75.00% documented

Added

  • test that .env.local.example is copied by install / template tasks

Changed

  • update Appraisals.example template’s instructions for updating appraisals

1.0.24 - 2025-08-31

  • TAG: v1.0.24
  • COVERAGE: 97.51% – 2625/2692 lines in 22 files
  • BRANCH COVERAGE: 81.97% – 1096/1337 branches in 22 files
  • 75.00% documented

Added

  • improved documentation
  • more badges in README (gem & template)
  • integration test for kettle-changelog using CHANGELOG.md.
  • integration test for kettle-changelog using KEEP_A_CHANGELOG.md.

Changed

  • add output to error handling related to release creation on GitHub
  • refactored Kettle::Dev::Tasks::CITask.abort => task_abort
    • Avoids method name clash with ExitAdapter
    • follows the pattern of other Kettle::Dev::Tasks modules
  • move –help handling for kettle-changelog to kettle-changelog itself

Fixed

  • typos in README for gem & template
  • kettle-changelog: more robust in retention of version chunks, and markdown link refs, that are not relevant to the chunk being added
  • rearrange footer links in changelog by order, newest first, oldest last
  • Kettle::Dev::Tasks::CITask.act returns properly when running non-interactively
  • replace Underscores with Dashes in Gem Names for [🚎yard-head] link

1.0.23 - 2025-08-30

  • TAG: v1.0.23
  • COVERAGE: 97.75% – 2428/2484 lines in 21 files
  • BRANCH COVERAGE: 81.76% – 1013/1239 branches in 21 files
  • 76.00% documented

Added

  • Carryover important fields from the original gemspec during templating
    • refactor gemspec parsing
    • normalize template gemspec data

Fixed

  • include FUNDING.md in the released gem package
  • typo of required_ruby_version

1.0.22 - 2025-08-30

  • TAG: v1.0.22
  • COVERAGE: 97.82% – 2375/2428 lines in 20 files
  • BRANCH COVERAGE: 81.34% – 972/1195 branches in 20 files
  • 76.23% documented

Added

  • improved documentation
  • example version of heads workflow
    • give heads two attempts to succeed

1.0.21 - 2025-08-30

  • TAG: v1.0.21
  • COVERAGE: 97.82% – 2375/2428 lines in 20 files
  • BRANCH COVERAGE: 81.34% – 972/1195 branches in 20 files
  • 76.23% documented

Added

  • FUNDING.md in support of a funding footer on release notes
  • truffle workflow: Repeat attempts for bundle install and appraisal bundle before failure
  • global token replacement during kettle:dev:install
    • DEV GEM => kettle-dev
    • LTS CONSTRAINT => dynamic
    • RUBY GEM => dynamic
    • default to rubocop-ruby1_8 if no minimum ruby specified
  • template supports local development of RuboCop-LTS suite of gems
  • improved documentation

Changed

  • dependabot: ignore rubocop-lts for updates
  • template configures RSpec to run tests in random order

1.0.20 - 2025-08-29

  • TAG: v1.0.20
  • COVERAGE: 14.01% – 96/685 lines in 8 files
  • BRANCH COVERAGE: 0.30% – 1/338 branches in 8 files
  • 76.23% documented

Changed

  • Use example version of ancient.yml workflow since local version has been customized
  • Use example version of jruby.yml workflow since local version has been customized

1.0.19 - 2025-08-29

  • TAG: v1.0.19
  • COVERAGE: 97.84% – 2350/2402 lines in 20 files
  • BRANCH COVERAGE: 81.46% – 962/1181 branches in 20 files
  • 76.23% documented

Fixed

  • replacement logic handles a dashed gem-name which maps onto a nested path structure

1.0.18 - 2025-08-29

  • TAG: v1.0.18
  • COVERAGE: 71.70% – 456/636 lines in 9 files
  • BRANCH COVERAGE: 51.17% – 153/299 branches in 9 files
  • 76.23% documented

Added

  • kettle:dev:install can overwrite gemspec with example gemspec
  • documentation for the start_step CLI option for kettle-release
  • kettle:dev:install and kettle:dev:template support only= option with glob filtering:
    • comma-separated glob patterns matched against destination paths relative to project root
    • non-matching files are excluded from templating.

Fixed

  • kettle:dev:install remove “Works with MRI Ruby*” lines with no badges left
  • kettle:dev:install prefix badge cell replacement with a single space

1.0.17 - 2025-08-29

  • TAG: v1.0.17
  • COVERAGE: 98.14% – 2271/2314 lines in 20 files
  • BRANCH COVERAGE: 81.42% – 916/1125 branches in 20 files
  • 76.23% documented

Fixed

  • kettle-changelog added to exe files so packaged with released gem

1.0.16 - 2025-08-29

  • TAG: v1.0.16
  • COVERAGE: 98.14% – 2271/2314 lines in 20 files
  • BRANCH COVERAGE: 81.42% – 916/1125 branches in 20 files
  • 76.23% documented

Fixed

  • default rake task must be defined before it can be enhanced

1.0.15 - 2025-08-29

  • TAG: v1.0.15
  • COVERAGE: 98.17% – 2259/2301 lines in 20 files
  • BRANCH COVERAGE: 81.00% – 908/1121 branches in 20 files
  • 76.03% documented

Added

  • kettle-release: early validation of identical set of copyright years in README.md and CHANGELOG.md, adds current year if missing, aborts on mismatch
  • kettle-release: update KLOC in README.md
  • kettle-release: update Rakefile.example with version and date

Changed

  • kettle-release: print package name and version released as final line
  • use git adapter to wrap more git commands to make tests easier to build
  • stop testing Ruby 2.4 on CI due to a strange issue with VCR.
    • still testing Ruby 2.3

Fixed

  • include gemfiles/modular/*gemfile.example with packaged gem
  • CI workflow result polling logic revised:
    • includes a delay
    • scopes queries to specific commit SHA
    • prevents false failures from previous runs

1.0.14 - 2025-08-28

  • TAG: v1.0.14
  • COVERAGE: 97.70% – 2125/2175 lines in 20 files
  • BRANCH COVERAGE: 78.77% – 842/1069 branches in 20 files
  • 76.03% documented

Added

  • kettle-release: Push tags to additional remotes after release

Changed

  • Improve .gitlab-ci.yml pipeline

Fixed

  • Removed README badges for unsupported old Ruby versions
  • Minor inconsistencies in template files
  • git added as a dependency to optional.gemfile instead of the example template

1.0.13 - 2025-08-28

  • TAG: v1.0.13
  • COVERAGE: 41.94% – 65/155 lines in 6 files
  • BRANCH COVERAGE: 1.92% – 1/52 branches in 6 files
  • 76.03% documented

Added

  • kettle-release: Create GitHub release from tag & changelog entry

1.0.12 - 2025-08-28

  • TAG: v1.0.12
  • COVERAGE: 97.80% – 1957/2001 lines in 19 files
  • BRANCH COVERAGE: 79.98% – 763/954 branches in 19 files
  • 78.70% documented

Added

  • CIMonitor to consolidate workflow / pipeline monitoring logic for GH/GL across kettle-release and rake tasks, with handling for:
    • minutes exhausted
    • blocked
    • not configured
    • normal failures
    • pending
    • queued
    • running
    • success
  • Ability to restart kettle-release from any failed step, so manual fixed can be applied.
    • Example (after intermittent failure of CI): bundle exec kettle-release start_step=10

Fixed

  • added optional.gemfile.example, and handling for it in templating
  • kettle-changelog: ensure a blank line at end of file
  • add sleep(0.2) to ci:act to prevent race condition with stdout flushing
  • kettle-release: ensure SKIP_GEM_SIGNING works as expected with values of “true” or “false”
    • ensure it doesn’t abort the process in CI

1.0.11 - 2025-08-28

  • TAG: v1.0.11
  • COVERAGE: 97.90% – 1959/2001 lines in 19 files
  • BRANCH COVERAGE: 79.98% – 763/954 branches in 19 files
  • 78.70% documented

Added

  • Add more .example templates
    • .github/workflows/coverage.yml.example
    • .gitlab-ci.yml.example
    • Appraisals.example
  • Kettle::Dev::InputAdapter: Input indirection layer for safe interactive prompts in tests; provides gets and readline; documented with YARD and typed with RBS.
  • install task README improvements
    • extracts emoji grapheme from H1 to apply to gemspec’s summary and description
    • removes badges for unsupported rubies, and major version MRI row if all badges removed
  • new exe script: kettle-changelog - transitions a changelog from unreleased to next release

Changed

  • Make ‘git’ gem dependency optional; fall back to raw git commands when the gem is not present (rescues LoadError). See Kettle::Dev::GitAdapter.
  • upgraded to stone_checksums v1.0.2
  • exe scripts now print their name and version as they start up

Removed

  • dependency on git gem
    • git gem is still supported if present and not bypassed by new ENV variable KETTLE_DEV_DISABLE_GIT_GEM
    • no longer a direct dependency

Fixed

  • Upgrade stone_checksums for release compatibility with bundler v2.7+
    • Retains compatibility with older bundler < v2.7
  • Ship all example templates with gem
  • install task README preservation
    • preserves H1 line, and specific H2 headed sections
    • preserve table alignment

1.0.10 - 2025-08-24

  • TAG: v1.0.10
  • COVERAGE: 97.68% – 1685/1725 lines in 17 files
  • BRANCH COVERAGE: 77.54% – 618/797 branches in 17 files- 95.35% documented
  • 77.00% documented

Added

  • runs git add –all before git commit, to ensure all files are committed.

Changed

  • This gem is now loaded via Ruby’s standard autoload feature.
  • Bundler is always expected, and most things probably won’t work without it.
  • exe/ scripts and rake tasks logic is all now moved into classes for testability, and is nearly fully covered by tests.
  • New Kettle::Dev::GitAdapter class is an adapter pattern wrapper for git commands
  • New Kettle::Dev::ExitAdapter class is an adapter pattern wrapper for Kernel.exit and Kernel.abort within this codebase.

Removed

  • attempts to make exe/* scripts work without bundler. Bundler is required.

Fixed

  • Kettle::Dev::ReleaseCLI#detect_version handles gems with multiple VERSION constants
  • kettle:dev:template task was fixed to copy .example files with the destination filename lacking the .example extension, except for .env.local.example

1.0.9 - 2025-08-24

  • TAG: v1.0.9
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Added

  • kettle-release: Add a sanity check for the latest released version of the gem being released, and display it during the confirmation with user that CHANGELOG.md and version.rb have been updated, so they can compare the value in version.rb with the value of the latest released version.
    • If the value in version.rb is less than the latest released version’s major or minor, then check for the latest released version that matches the major + minor of what is in version.rb.
    • This way a stable branch intended to release patch updates to older versions is able to work use the script.
  • kettle-release: optional pre-push local CI run using act, controlled by env var K_RELEASE_LOCAL_CI (“true” to run, “ask” to prompt) and K_RELEASE_LOCAL_CI_WORKFLOW to choose a workflow; defaults to locked_deps.yml when present; on failure, soft-resets the release prep commit and aborts.
  • template task: now copies certs/pboling.pem into the host project when available.

1.0.8 - 2025-08-24

  • TAG: v1.0.8
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Fixed

  • Can’t add checksums to the gem package, because it changes the checksum (duh!)

1.0.7 - 2025-08-24

  • TAG: v1.0.7
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Fixed

  • Reproducible builds, with consistent checksums, by not using SOURCE_DATE_EPOCH.
    • Since bundler v2.7.0 builds are reproducible by default.

1.0.6 - 2025-08-24

  • TAG: v1.0.6
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Fixed

  • kettle-release: ensure SOURCE_DATE_EPOCH is applied within the same shell for both build and release by prefixing the commands with the env var (e.g., SOURCE_DATE_EPOCH=$epoch bundle exec rake build and ... rake release); prevents losing the variable across shell boundaries and improves reproducible checksums.

1.0.5 - 2025-08-24

  • TAG: v1.0.5
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Fixed

  • kettle-release: will run regardless of how it is invoked (i.e. works as binstub)

1.0.4 - 2025-08-24

  • TAG: v1.0.4
  • COVERAGE: 100.00% – 130/130 lines in 7 files
  • BRANCH COVERAGE: 96.00% – 48/50 branches in 7 files
  • 95.35% documented

Added

  • kettle-release: checks all remotes for a GitHub remote and syncs origin/trunk with it; prompts to rebase or –no-ff merge when histories diverge; pushes to both origin and the GitHub remote on merge; uses the GitHub remote for GitHub Actions CI checks, and also checks GitLab CI when a GitLab remote and .gitlab-ci.yml are present.
  • kettle-release: push logic improved — if a remote named all exists, push the current branch to it (assumed to cover multiple push URLs). Otherwise push the current branch to origin and to any GitHub, GitLab, and Codeberg remotes (whatever their names are).

Fixed

  • kettle-release now validates SHA256 checksums of the built gem against the recorded checksums and aborts on mismatch; helps ensure reproducible artifacts (honoring SOURCE_DATE_EPOCH).
  • kettle-release now enforces CI checks and aborts if CI cannot be verified; supports GitHub Actions and GitLab pipelines, including releases from trunk/main.
  • kettle-release no longer requires bundler/setup, preventing silent exits when invoked from a dependent project; adds robust output flushing.

1.0.3 - 2025-08-24

  • TAG: v1.0.3
  • COVERAGE: 100.00% – 98/98 lines in 7 files
  • BRANCH COVERAGE: 100.00% – 30/30 branches in 7 files
  • 94.59% documented

Added

  • template task now copies .git-hooks files necessary for git hooks to work

Fixed

  • kettle-release now uses the host project’s root, instead of this gem’s installed root.
  • Added .git-hooks files necessary for git hooks to work

1.0.2 - 2025-08-24

  • TAG: v1.0.2
  • COVERAGE: 100.00% – 98/98 lines in 7 files
  • BRANCH COVERAGE: 100.00% – 30/30 branches in 7 files
  • 94.59% documented

Fixed

  • Added files necessary for kettle:dev:template task to work
  • .github/workflows/opencollective.yml working!

1.0.1 - 2025-08-24

  • TAG: v1.0.1
  • COVERAGE: 100.00% – 98/98 lines in 7 files
  • BRANCH COVERAGE: 100.00% – 30/30 branches in 7 files
  • 94.59% documented

Added

  • These were documented but not yet released:
    • kettle-release ruby script for safely, securely, releasing a gem.
      • This may move to its own gem in the future.
    • kettle-readme-backers ruby script for integrating Open Source Collective backers into a README.md file.
      • This may move to its own gem in the future.

1.0.0 - 2025-08-24

  • TAG: v1.0.0
  • COVERAGE: 100.00% – 98/98 lines in 7 files
  • BRANCH COVERAGE: 100.00% – 30/30 branches in 7 files
  • 94.59% documented

Added

  • initial release, with auto-config support for:
    • bundler-audit
    • rake
    • require_bench
    • appraisal2
    • gitmoji-regex (& git-hooks to enforce gitmoji commit-style)
    • via kettle-test
      • Note: rake tasks for kettle-test are added in this gem (kettle-dev) because test rake tasks are a development concern
      • rspec
        • although rspec is the focus, most tools work with minitest as well
      • rspec-block_is_expected
      • rspec-stubbed_env
      • silent_stream
      • timecop-rspec
  • kettle:dev:install rake task for installing githooks, and various instructions for optimal configuration
  • kettle:dev:template rake task for copying most of this gem’s files (excepting bin/, docs/, exe/, sig/, lib/, specs/) to another gem, as a template.
  • ci:act rake task CLI menu / scoreboard for a project’s GHA workflows
    • Selecting will run the selected workflow via act
    • This may move to its own gem in the future.