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.
- kettle-jem-template-20260720-005 - README Support & Community links now include RubyForum.
- kettle-jem-template-20260726-001 - Projects now include YARD lint configuration and documentation dependencies so documentation issues fail before generated docs are refreshed.
- kettle-jem-template-20260727-001 - Spec harness documentation now lists the
RSpec helpers provided by
kettle-test. - kettle-jem-template-20260729-005 - Gemspec metadata now publishes this
project's RubyForum tag as
mailing_list_uri, and support docs link to the tagged RubyForum community alongside Discord.
- kettle-jem-template-20260716-002 - Gemspecs now ship fewer repository-only files, reducing package noise for downstream packagers.
- kettle-jem-template-20260720-002 - Development Gemfiles now use the released
tree_sitter_language_packgem 1.13.3 or newer by default. - kettle-jem-template-20260725-002 - Version specs now use
anonymous_loaderto coverversion.rbwithout redefining constants, or are removed when version specs are not managed for the project. - kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer setup-ruby-flash planning and can prepare appraisal-only jobs without installing the main Gemfile bundle.
- kettle-jem-template-20260801-001 - Generated README gem dashboard links now use ClickGems instead of BestGems.
-
kettle-jem-template-20260720-003 - StructuredMerge Git diff driver config now uses the installed
smorg-rbdriver command. -
kettle-jem-template-20260725-001 - Release pull request branches beginning with
feature/releasenow run JRuby and TruffleRuby workflows. -
kettle-jem-template-20260726-002 - Generated version files now document their version namespace and constants, reducing warning-only YARD lint output.
-
kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls, QLTY, and Codecov as optional, so provider outages do not fail CI when local coverage thresholds still pass.
-
kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the same
gemfiles/vendor/bundletree as.gitignore, so vendored dependency installs are not reported as project lint debt. -
kettle-jem-template-20260728-003 - Generated dep-heads workflows now run TruffleRuby jobs with current RubyGems and Bundler, avoiding setup failures before the test suite starts.
-
kettle-jem-template-20260728-004 - Generated dep-heads workflows now use the setup-ruby Bundler install path for direct appraisal Gemfiles, avoiding rv lockfile parser failures on Git and path dependencies.
-
kettle-jem-template-20260728-005 - VersionGem bootstrap now creates the missing canonical version spec when a project only has shim namespace version specs.
-
kettle-jem-template-20260729-001 - Generated JRuby 9.4 workflows now use the legacy manual bundle install path, avoiding setup-time Bundler full-index failures against
gem.coop. -
kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs relative to the gemspec directory, so release package contents stay correct even when the gemspec is loaded from another working directory.
-
kettle-jem-template-20260801-002 - Generated RSpec helpers now normalize managed configuration block bindings structurally, preventing mixed block parameter names from producing invalid configuration after a merge.
-
kettle-jem-template-20260801-003 - Generated project metadata and documentation now normalize configured underscore hostnames to valid hyphenated hostnames.
-
kettle-jem-template-20260801-004 - Generated organization README logos now use GitHub's stable organization avatar endpoint instead of assuming a matching Galtzo-hosted asset exists.
-
kettle-jem-template-20260802-001 - Devcontainer JSON files now merge as JSONC, preserving comments and trailing commas during template updates.
3.0.2 - 2026-07-14
- TAG: v3.0.2
- COVERAGE: 97.50% -- 312/320 lines in 6 files
- BRANCH COVERAGE: 79.41% -- 108/136 branches in 6 files
- 89.19% documented
- Added support for JRuby 10.1 and TruffleRuby 34.0.
- Retemplated generated project metadata, support documentation, CI workflows,
binstubs, and development dependency floors with
kettle-jemv7.0.0. - Raised the
anonymous_loaderruntime dependency floor to>= 0.1.2. - Raised the
auth-sanitizerruntime dependency floor to>= 0.2.2and switched isolated sanitizer loading to the releasedanonymous_loadergem.
- Package configured license files in gem release file lists.
3.0.1 - 2026-06-16
- TAG: v3.0.1
- COVERAGE: 97.53% -- 316/324 lines in 6 files
- BRANCH COVERAGE: 79.41% -- 108/136 branches in 6 files
- 89.19% documented
- Retemplated generated project metadata, support documentation, CI workflows,
binstubs, and development dependency floors with the current
kettle-jemtemplate. - Raised the
auth-sanitizerruntime dependency floor to>= 0.2.1, so OmniAuth LDAP consumers get hash and nested-attribute inspect redaction fixes plus downstream RBS duplicate-declaration fixes.
-
Restored
docs/CNAMEso the generated documentation site keeps its custom domain. -
Route unsafe trusted-header authentication configuration errors through OmniAuth's failure flow consistently across supported OmniAuth versions.
- Hardened
OmniAuth::LDAP::Adaptor#inspectredaction so LDAP bind passwords and TLS private key values are filtered anywhere they appear in nested connection/configuration output.
3.0.0 - 2026-05-21
- TAG: v3.0.0
- COVERAGE: 97.52% -- 315/323 lines in 6 files
- BRANCH COVERAGE: 79.41% -- 108/136 branches in 6 files
- 94.59% documented
- Add
auth-sanitizerruntime dependency to redact sensitive LDAP adaptor inspection output without defining top-levelAuthorAuthSanitizer
- Minimum supported Ruby version is now 2.2.0
- Remove deprecated (since
v2.1.0-glin 2018) top-level:ca_fileand:ssl_versionLDAP configuration options; use:tls_optionsinstead - Remove adaptor backward-compatibility that translated top-level
:ca_fileand:ssl_versioninto TLS options - Remove deprecated direct-option specs for top-level
:ca_fileand:ssl_version
2.3.4 - 2026-05-18
- TAG: v2.3.4
- COVERAGE: 97.44% -- 304/312 lines in 4 files
- BRANCH COVERAGE: 79.58% -- 113/142 branches in 4 files
- 94.44% documented
- Add
header_auth_sourceto require explicit selection of trusted header identity source (:envor:http_header) - Add
header_auth_require_tlsto require TLS for trusted header SSO by default - Log a prominent security warning when
header_authis enabled
- Trusted header SSO now defaults to trusting only server-set env variables and no longer checks Rack
HTTP_header variants unlessheader_auth_source: :http_headeris configured
- Fix OpenSSL 3/Ruby 4 compatibility in the TLS options adaptor spec
- Harden trusted header SSO against spoofing by removing automatic fallback from
REMOTE_USERtoHTTP_REMOTE_USER
2.3.3 - 2025-11-10
- TAG: v2.3.3
- COVERAGE: 97.61% -- 286/293 lines in 4 files
- BRANCH COVERAGE: 79.69% -- 102/128 branches in 4 files
- 94.44% documented
- Documentation cleanup & updates
- YARD documentation covering 94% of the code
- kettle-dev v1.1.54
2.3.2 - 2025-11-06
- TAG: v2.3.2
- COVERAGE: 97.64% -- 290/297 lines in 4 files
- BRANCH COVERAGE: 79.69% -- 102/128 branches in 4 files
- 44.12% documented
- Support for SCRIPT_NAME for proper URL generation
- behind certain proxies/load balancers, or
- under a subdirectory
- Password Policy for LDAP Directories
- password_policy: true|false (default: false)
- on authentication failure, if the server returns password policy controls, the info will be included in the failure message
- https://datatracker.ietf.org/doc/html/draft-behera-ldap-password-policy-11
- Support for JSON bodies
- Support custom LDAP attributes mapping
- Documentation of TLS verification options
- Make support for OmniAuth v1.2+ explicit
- Versions < 1.2 do not support SCRIPT_NAME properly, and may cause other issues
- Raise a distinct error when LDAP server is unreachable
- Previously raised an invalid credentials authentication failure error, which is technically incorrect
2.3.1 - 2025-11-05
- TAG: v2.3.1
- COVERAGE: 97.85% -- 228/233 lines in 4 files
- BRANCH COVERAGE: 81.58% -- 62/76 branches in 4 files
- 37.50% documented
- Added RBS types
- Upgraded RSpec tests to v3 syntax
- Improved code coverage to 98% lines and 78% branches
- Added integration tests with a complete Roda-based demo app for specs
- Well tested support for all versions of OmniAuth >= v1 and Rack >= v1 via appraisals
- Document why auth.uid == dn
- Support for LDAP-based SSO identity via HTTP Header
- Document how to use filter option
- All fixes and updates from the GitLab fork since up to v2.3.0
- Make support for Ruby v2.0 explicit
- Make support for OmniAuth v1+ explicit
- Make support for Rack v1+ explicit
- Modernize codebase to use more recent Ruby syntax (upgrade from Ruby v1 to v2 syntax) and conventions
- Prevent key duplication in symbolize_hash_keys
2.3.0-gl (gitlab fork) - 2025-08-20
- TAG: v2.3.0 (gitlab)
2.2.0-gl (gitlab fork) - 2022-06-24
- TAG: v2.2.0 (gitlab)
2.1.1-gl (gitlab fork) - 2019-02-22
- TAG: v2.1.1 (gitlab)
- Add a String check to
tls_optionssanitization to allow other objects
2.1.0-gl (gitlab fork) - 2018-06-18
- TAG: v2.1.0 (gitlab)
- Expose
:tls_optionsSSL configuration option.
- Deprecate :ca_file, :ssl_version
2.0.4-gl (gitlab fork) - 2017-08-10
-
TAG: v2.0.4 (gitlab)
-
Improve log message when invalid credentials are used
- Protects against wrong request method call to callback
2.0.2-gl (gitlab fork) - 2017-06-13
- TAG: v2.0.2 (gitlab)
2.0.1-gl (gitlab fork) - 2017-06-09
- TAG: v2.0.1 (gitlab)
2.0.0-gl (gitlab fork) - 2017-06-07
- TAG: v2.0.0 (gitlab)
2.0.0 (intridea) - 2018-01-09
- TAG: v2.0.0 (github)
1.2.1-gl (gitlab fork) - 2015-03-17
- TAG: v1.2.1 (gitlab)
1.2.0-gl (gitlab fork) - 2014-10-29
- TAG: v1.2.0 (gitlab)
1.1.0-gl (gitlab fork) - 2014-09-08
- TAG: v1.1.0 (gitlab)
1.0.5-gl - 2016-02-17
- released 2014-02-03 (intridea)
- released 2013-11-13 (gitlab fork)
- released 2013-01-23 (intridea)
- released 2013-06-13 (gitlab fork)