Changelog
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.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
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
- Example (after intermittent failure of CI):
- 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
- git gem is still supported if present and not bypassed by new ENV variable
- 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 varK_RELEASE_LOCAL_CI
(“true” to run, “ask” to prompt) andK_RELEASE_LOCAL_CI_WORKFLOW
to choose a workflow; defaults tolocked_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 toorigin
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.
- Selecting will run the selected workflow via