{"id":81371,"name":"dry-schema","ecosystem":"rubygems","repository_url":"https://github.com/dry-rb/dry-schema","issues_count":2,"created_at":"2026-01-12T09:10:24.556Z","updated_at":"2026-01-12T09:10:24.556Z","purl":"pkg:gem/dry-schema","metadata":{"id":194421,"name":"dry-schema","ecosystem":"rubygems","description":"dry-schema provides a DSL for defining schemas with keys and rules that should be applied to\nvalues. It supports coercion, input sanitization, custom types and localized error messages\n(with or without I18n gem). It's also used as the schema engine in dry-validation.\n","homepage":"https://dry-rb.org/gems/dry-schema","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/dry-rb/dry-schema","keywords_array":[],"namespace":null,"versions_count":60,"first_release_published_at":"2019-01-30T15:44:57.181Z","latest_release_published_at":"2026-01-09T06:40:21.897Z","latest_release_number":"1.15.0","last_synced_at":"2026-01-12T04:08:50.361Z","created_at":"2022-04-05T21:15:35.020Z","updated_at":"2026-01-12T04:08:50.361Z","registry_url":"https://rubygems.org/gems/dry-schema","install_command":"gem install dry-schema -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/dry-schema/","metadata":{"funding":"https://github.com/sponsors/hanami"},"repo_metadata":{"id":37706639,"uuid":"88519389","full_name":"dry-rb/dry-schema","owner":"dry-rb","description":"Coercion and validation for data structures","archived":false,"fork":false,"pushed_at":"2025-12-25T20:46:42.000Z","size":2351,"stargazers_count":464,"open_issues_count":69,"forks_count":119,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-12-27T07:11:53.247Z","etag":null,"topics":["coercion","data-validation","data-validator","dry-rb","ruby","ruby-gem","schema","schema-validation","type-safety"],"latest_commit_sha":null,"homepage":"https://dry-rb.org/gems/dry-schema","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dry-rb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"hanami"}},"created_at":"2017-04-17T15:01:45.000Z","updated_at":"2025-12-25T20:46:37.000Z","dependencies_parsed_at":"2025-12-25T15:02:44.347Z","dependency_job_id":null,"html_url":"https://github.com/dry-rb/dry-schema","commit_stats":{"total_commits":1497,"total_committers":62,"mean_commits":24.14516129032258,"dds":0.5517702070808284,"last_synced_commit":"c25862f4e329f205c9d56903fa74e466aaff5382"},"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/dry-rb/dry-schema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dry-rb","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/sbom","scorecard":{"id":357235,"data":{"date":"2025-08-11","repo":{"name":"github.com/dry-rb/dry-schema","commit":"13ddb51beed2c4fa6ea6b6acdebb24e2c929a847"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/29 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/docsite.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/rubocop.yml:10","Warn: no topLevel permission defined: .github/workflows/sync_configs.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/ci.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docsite.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/docsite.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docsite.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/docsite.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rubocop.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/rubocop.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rubocop.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/rubocop.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sync_configs.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/sync_configs.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sync_configs.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/sync_configs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/sync_configs.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/dry-rb/dry-schema/sync_configs.yml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T09:54:28.158Z","repository_id":37706639,"created_at":"2025-08-18T09:54:28.158Z","updated_at":"2025-08-18T09:54:28.158Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28118875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-29T02:00:07.021Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"dry-rb","name":"dry-rb","uuid":"11280820","kind":"organization","description":"dry-rb is a collection of next-generation Ruby libraries, each intended to encapsulate a common task","email":null,"website":"https://dry-rb.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11280820?v=4","repositories_count":40,"last_synced_at":"2024-03-25T21:11:49.208Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/dry-rb","funding_links":[],"total_stars":8147,"followers":272,"following":0,"created_at":"2022-11-02T16:40:56.529Z","updated_at":"2024-03-25T21:11:50.787Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dry-rb","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dry-rb/repositories"},"tags":[{"name":"v1.14.1","sha":"3d7a75ad4b5fdfd938683cf41aaddd84ef178a81","kind":"tag","published_at":"2025-03-03T08:41:51.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.14.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.14.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.14.1/manifests"},{"name":"v1.14.0","sha":"26668cb45a0065255e747b96f78cc665a624955d","kind":"tag","published_at":"2025-01-06T20:48:53.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.14.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.14.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.14.0/manifests"},{"name":"v1.13.4","sha":"ced2c60aef958eb7f9b2fa0057540249f1ec4e20","kind":"tag","published_at":"2024-05-22T20:32:41.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.13.4","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.13.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.13.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.4/manifests"},{"name":"v1.13.3","sha":"27f1faf68f85992dc46576f60484936a2fe2bdc5","kind":"tag","published_at":"2023-08-26T13:16:11.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.13.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.13.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.13.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.3/manifests"},{"name":"v1.13.2","sha":"103db32affc71697604e86cf2ff35785d5f935f7","kind":"tag","published_at":"2023-05-31T07:16:34.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.13.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.13.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.13.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.2/manifests"},{"name":"v1.13.1","sha":"64d370d5434be31ca4f491b4f23318e1e766dc60","kind":"tag","published_at":"2023-04-07T06:27:42.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.13.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.13.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.1/manifests"},{"name":"v1.13.0","sha":"534c8d924c05be5f740e8b4e27941d16a77162fe","kind":"tag","published_at":"2022-11-24T18:35:40.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.13.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.13.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.13.0/manifests"},{"name":"v1.12.0","sha":"d39a8b39e02a0a7f9330a2d58a147e11a032660c","kind":"tag","published_at":"2022-11-04T17:08:38.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.12.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.12.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.12.0/manifests"},{"name":"v1.11.3","sha":"90f91359aed2605751bb29d7395ffed31314834d","kind":"tag","published_at":"2022-10-21T17:13:12.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.11.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.11.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.11.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.3/manifests"},{"name":"v1.11.2","sha":"86ca45c9cd9612bd55ca6ce3772d8170e534c4b1","kind":"tag","published_at":"2022-10-16T08:01:52.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.11.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.11.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.11.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.2/manifests"},{"name":"v1.11.1","sha":"85c3928e6ee6c2e912bd4763438cf5fe638876ba","kind":"tag","published_at":"2022-10-15T13:41:39.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.11.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.11.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.1/manifests"},{"name":"v1.11.0","sha":"1523d87eb3f14506a65c8977c2fb500b5c1b56bc","kind":"tag","published_at":"2022-10-15T05:41:38.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.11.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.11.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.11.0/manifests"},{"name":"v1.10.6","sha":"9b2603ee2ce2508740f06978dd212bb072cc74bf","kind":"tag","published_at":"2022-10-01T08:41:23.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.6","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.6/manifests"},{"name":"v1.10.5","sha":"9f5e66ca7ab40deae37ba99a58039861f001c6ba","kind":"tag","published_at":"2022-09-21T08:39:12.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.5","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.5/manifests"},{"name":"v1.10.4","sha":"0df19c0647a23bdbb536809988893062b21124f9","kind":"tag","published_at":"2022-09-13T08:29:07.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.4","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.4/manifests"},{"name":"v1.10.3","sha":"5c661a28d83a67c20c42f4364cd9e80c1c1d4850","kind":"tag","published_at":"2022-09-10T14:32:21.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.3/manifests"},{"name":"v1.10.2","sha":"342cf088a75394152d9ec3fa4ad75c72d4f07edc","kind":"tag","published_at":"2022-08-23T06:29:58.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.2/manifests"},{"name":"v1.10.1","sha":"0bc428ae9a1f11b60b2be73af62621e2acb28c7d","kind":"tag","published_at":"2022-08-22T09:58:15.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.1/manifests"},{"name":"v1.10.0","sha":"fdfe86e36364cf3c493f2843eabffbb45ff2c278","kind":"tag","published_at":"2022-08-16T09:38:02.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.10.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.10.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.10.0/manifests"},{"name":"v1.9.3","sha":"67eb45bfa566bf95745b8867789d0ceb5c02bd69","kind":"tag","published_at":"2022-06-23T09:13:32.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.9.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.9.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.9.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.3/manifests"},{"name":"v1.9.2","sha":"cfa217e9d76a442c8c67809e03c7e6e642509b74","kind":"tag","published_at":"2022-05-28T10:24:20.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.9.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.9.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.9.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.2/manifests"},{"name":"v1.9.1","sha":"1ce54ce5f2d6db1ed4cb1a23f79a9e98fb2d2eb9","kind":"tag","published_at":"2022-02-17T07:33:04.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.9.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.9.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.1/manifests"},{"name":"v1.9.0","sha":"f8cfad8326e98f659513ea4223b0281acc31f2ab","kind":"tag","published_at":"2022-02-15T07:27:24.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.9.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.9.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.9.0/manifests"},{"name":"v1.8.0","sha":"1cbfa4bd1ee0fb2990d8f3ad855a3ff7cc649dab","kind":"tag","published_at":"2021-09-12T13:09:57.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.8.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.8.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.8.0/manifests"},{"name":"v1.7.1","sha":"adfd6e07fd26e76dbcb6d6197b9f37faea189b65","kind":"tag","published_at":"2021-08-29T12:32:27.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.7.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.7.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.7.1/manifests"},{"name":"v1.7.0","sha":"60b84ab9b2420b3c27e6735170eb9da000971963","kind":"tag","published_at":"2021-06-29T09:40:58.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.7.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.7.0/manifests"},{"name":"v1.6.2","sha":"192b7e99fee45ce46d12a5f416b0dcf66c78ffd1","kind":"tag","published_at":"2021-04-15T13:53:56.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.6.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.6.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.2/manifests"},{"name":"v1.6.1","sha":"a094d220879f3effe918b460ae292476c7ed3459","kind":"tag","published_at":"2021-02-02T07:31:45.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.6.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.6.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.1/manifests"},{"name":"v1.6.0","sha":"02c871c6c995d9e1fab895591e5aac11c3596e91","kind":"tag","published_at":"2021-01-21T19:18:17.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.6.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.6.0/manifests"},{"name":"v1.5.6","sha":"320f36e0990b648037f21cb31148de635030f705","kind":"tag","published_at":"2020-10-21T11:50:40.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.6","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.6/manifests"},{"name":"v1.5.5","sha":"0a8277acfd80c51c96801d2977e0a5b2ad2b40fa","kind":"tag","published_at":"2020-10-08T09:41:03.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.5","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.5/manifests"},{"name":"v1.5.4","sha":"3c6b39725dbfc5d07377ed2f8ee2d4d7a9843358","kind":"tag","published_at":"2020-09-03T07:38:43.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.4","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.4/manifests"},{"name":"v1.5.3","sha":"ba45777e91bf4d0aebad9398ed7aafc30abd6161","kind":"tag","published_at":"2020-08-21T07:39:00.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.3/manifests"},{"name":"v1.5.2","sha":"8a79c0c3fbe161ec28e8de827498a0740a9ae95e","kind":"tag","published_at":"2020-06-26T08:20:44.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.2/manifests"},{"name":"v1.5.1","sha":"f0a72d7279059d434bb4bb35e41da56c534ef06e","kind":"tag","published_at":"2020-05-21T09:40:22.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.1/manifests"},{"name":"v1.5.0","sha":"f25b8dce5edae97a87f11cb3e03aa89f0ec3475d","kind":"tag","published_at":"2020-03-11T12:58:32.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.5.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.5.0/manifests"},{"name":"v1.4.3","sha":"bf1d466e584130e7b4402832cefa41427896cbc7","kind":"tag","published_at":"2020-01-08T14:18:10.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.4.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.4.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.3/manifests"},{"name":"v1.4.2","sha":"6872eb3477ebb7df5ab96a81ff06ca5ece0558d0","kind":"tag","published_at":"2019-12-19T08:55:12.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.4.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.2/manifests"},{"name":"v1.4.1","sha":"f4cda3946201ad44ef3d81fedb30ffddfbcbe826","kind":"tag","published_at":"2019-10-08T20:37:21.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.4.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.1/manifests"},{"name":"v1.4.0","sha":"6986625e6380e51ed5990df9faf9b56d081f2d56","kind":"tag","published_at":"2019-10-08T09:11:12.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.4.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.4.0/manifests"},{"name":"v1.3.4","sha":"1717c49bd36cf44a986d0d381111c5e968b3d3a6","kind":"tag","published_at":"2019-09-11T08:48:26.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.3.4","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.3.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.3.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.4/manifests"},{"name":"v1.3.3","sha":"20fe579a77918d19fffdea894cbded7d56d27574","kind":"tag","published_at":"2019-08-14T08:26:54.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.3.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.3.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.3/manifests"},{"name":"v1.3.2","sha":"b3f19640e2ff5ba3eb84689a1408e5e69825135b","kind":"tag","published_at":"2019-08-01T09:15:52.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.3.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.3.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.2/manifests"},{"name":"v1.3.1","sha":"9be8127db8857053d0b35310a713aace793ad34d","kind":"tag","published_at":"2019-07-08T18:01:30.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.3.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.1/manifests"},{"name":"v1.3.0","sha":"9162817ce3fe3b62930a6ab5e7f64c56d6737022","kind":"tag","published_at":"2019-07-06T16:13:02.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.3.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"2643b69e775ae9dc105e3e80832bde0bf348baf2","kind":"tag","published_at":"2019-06-13T13:12:19.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.2.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"049a32184dafcdfce7932e3f471c2a81b576c9f6","kind":"tag","published_at":"2019-05-30T08:44:11.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.1.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.1.0/manifests"},{"name":"v1.0.3","sha":"3b653482ca16b99457108a4d3d4f561772391c6f","kind":"tag","published_at":"2019-05-21T11:47:25.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.0.3","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.0.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.3/manifests"},{"name":"v1.0.2","sha":"494812b64d0168bb81832b2da9c7906873a8d208","kind":"tag","published_at":"2019-05-12T16:03:06.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.0.2","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.2/manifests"},{"name":"v1.0.1","sha":"98bf89159a637ec7b7f3845f7a6560f812786113","kind":"tag","published_at":"2019-05-08T10:51:09.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.0.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"7461987197902afab35cb13ae3bcadaea915c722","kind":"tag","published_at":"2019-05-03T10:53:47.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v1.0.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v1.0.0/manifests"},{"name":"v0.6.0","sha":"3e0a0076438aa7376ee8a9b79a0b7ca24212e5af","kind":"tag","published_at":"2019-04-24T13:20:13.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.6.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.6.0/manifests"},{"name":"v0.5.1","sha":"2d20bb88d1d62d3ff91e2a39126db0b6c5338281","kind":"tag","published_at":"2019-04-17T10:08:51.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.5.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.5.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.5.1/manifests"},{"name":"v0.5.0","sha":"2642c0ad86101e67cc5f7cc606592a9abbc7dcc3","kind":"tag","published_at":"2019-04-04T09:52:31.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.5.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.5.0/manifests"},{"name":"v0.4.0","sha":"ba941112bcc644d43c713f85fdeb94639244eb9f","kind":"tag","published_at":"2019-03-26T12:00:15.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.4.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"a6707bd95f218e72354703b7e81c649c6f6f8a3f","kind":"tag","published_at":"2019-03-09T16:09:07.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.3.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"5d31e8da78c48d1cf0033ed2202ec625ae989c9f","kind":"tag","published_at":"2019-02-26T10:53:58.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.2.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.2.0/manifests"},{"name":"v0.1.1","sha":"d966c37ebd23cc25838c8a67466b1c96e7f42e76","kind":"tag","published_at":"2019-02-17T11:57:58.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.1.1","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.1.1/manifests"},{"name":"v0.1.0","sha":"1b84886e5cc4aafa3774b1316fafd3edae0a2c8a","kind":"tag","published_at":"2019-01-30T15:42:50.000Z","download_url":"https://codeload.github.com/dry-rb/dry-schema/tar.gz/v0.1.0","html_url":"https://github.com/dry-rb/dry-schema/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/dry-rb/dry-schema@v0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/tags/v0.1.0/manifests"}]},"repo_metadata_updated_at":"2026-01-05T00:41:50.083Z","dependent_packages_count":65,"downloads":96469439,"downloads_period":"total","dependent_repos_count":2348,"rankings":{"downloads":0.41703370836632064,"dependent_repos_count":0.6506394888549414,"dependent_packages_count":0.4660964975858877,"stargazers_count":2.833376077430002,"forks_count":2.59642510676732,"docker_downloads_count":1.9363075790858708,"average":1.4833130763483904},"purl":"pkg:gem/dry-schema","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/dry-schema","docker_dependents_count":34,"docker_downloads_count":6562090,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/dry-schema","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/dry-schema/dependencies","status":null,"funding_links":["https://github.com/sponsors/hanami"],"critical":true,"issue_metadata":{"last_synced_at":"2025-12-31T17:34:53.567Z","issues_count":73,"pull_requests_count":94,"avg_time_to_close_issue":14835823.44736842,"avg_time_to_close_pull_request":6188047.1375,"issues_closed_count":38,"pull_requests_closed_count":80,"pull_request_authors_count":50,"issue_authors_count":62,"avg_comments_per_issue":3.054794520547945,"avg_comments_per_pull_request":1.2340425531914894,"merged_pull_requests_count":63,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":10,"past_year_pull_requests_count":22,"past_year_avg_time_to_close_issue":1351166.5,"past_year_avg_time_to_close_pull_request":577295.5833333334,"past_year_issues_closed_count":4,"past_year_pull_requests_closed_count":12,"past_year_pull_request_authors_count":13,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":0.8,"past_year_avg_comments_per_pull_request":0.8181818181818182,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":11,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/dry-rb%2Fdry-schema/issues","maintainers":[{"login":"robhanlon22","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/robhanlon22"},{"login":"solnic","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/solnic"},{"login":"flash-gordon","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/flash-gordon"},{"login":"timriley","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/timriley"}],"active_maintainers":[{"login":"flash-gordon","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/flash-gordon"},{"login":"timriley","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/timriley"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/dry-schema/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/dry-schema/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/dry-schema/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/dry-schema/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/dry-schema/codemeta","maintainers":[{"uuid":"43616","login":"solnic","name":null,"email":null,"url":null,"packages_count":127,"html_url":"https://rubygems.org/profiles/solnic","role":null,"created_at":"2022-11-08T09:39:34.587Z","updated_at":"2022-11-08T09:39:34.587Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/solnic/packages"},{"uuid":"143772","login":"dry-bot","name":null,"email":null,"url":null,"packages_count":25,"html_url":"https://rubygems.org/profiles/dry-bot","role":null,"created_at":"2022-11-08T09:39:34.609Z","updated_at":"2022-11-08T09:39:34.609Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/dry-bot/packages"},{"uuid":"101145","login":"flash-gordon","name":null,"email":null,"url":null,"packages_count":30,"html_url":"https://rubygems.org/profiles/flash-gordon","role":null,"created_at":"2022-11-08T09:39:34.598Z","updated_at":"2022-11-08T09:39:34.598Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/flash-gordon/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":201828,"maintainers_count":67520,"namespaces_count":0,"keywords_count":18288,"github":"rubygems","metadata":{"funded_packages_count":7126},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-01-11T06:56:49.859Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},"unique_repositories_count":2,"unique_repositories_count_past_30_days":2,"recent_issues":[{"uuid":"3803268399","node_id":"PR_kwDOQeeh9c68pSi8","number":12,"state":"open","title":"Bump dry-schema from 1.14.1 to 1.15.0","user":"dependabot[bot]","labels":["dependencies","ruby"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-12T08:33:50.000Z","updated_at":"2026-01-12T08:35:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"dry-schema","old_version":"1.14.1","new_version":"1.15.0","repository_url":"https://github.com/dry-rb/dry-schema"}],"path":null,"ecosystem":"rubygems"},"body":"Bumps [dry-schema](https://github.com/dry-rb/dry-schema) from 1.14.1 to 1.15.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/releases\"\u003edry-schema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/blob/main/CHANGELOG.md\"\u003edry-schema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3d4073f48b3426d1f2b940b3ccd86d9575b0328e\"\u003e\u003ccode\u003e3d4073f\u003c/code\u003e\u003c/a\u003e Prepare for v1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/832bca19ed746255c60052524991f16b39fc45e8\"\u003e\u003ccode\u003e832bca1\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/2ea4b81ad8210bc3d073e2f724a0c49649682310\"\u003e\u003ccode\u003e2ea4b81\u003c/code\u003e\u003c/a\u003e Allow use of symbol for configuration top_namespace (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/351501e3e2ad4c46fafe60a4d9005072301e7693\"\u003e\u003ccode\u003e351501e\u003c/code\u003e\u003c/a\u003e Fix TypeError when generating errors a key that repeats in nested schemas (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/ec92f407239ea0dfae0267528b6d3466ce01cc86\"\u003e\u003ccode\u003eec92f40\u003c/code\u003e\u003c/a\u003e Accept updated AST structure from dry-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/5a2b1254f019a9e2bc0f220c6d723e3c0c62f9ec\"\u003e\u003ccode\u003e5a2b125\u003c/code\u003e\u003c/a\u003e Fix handling of I18n proc messages when returning hashes (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3abfb91470216e9dbeffe6ecf74148747293754e\"\u003e\u003ccode\u003e3abfb91\u003c/code\u003e\u003c/a\u003e Add tests for JSON schema predicate, fix \u003ccode\u003eformat?\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/b8fab3bef82d357218ed72a91012c1b9efb92edf\"\u003e\u003ccode\u003eb8fab3b\u003c/code\u003e\u003c/a\u003e Add missing JSON Schema predicates (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/380325d6978f36e5bbfd915ac3bbb63310bfa036\"\u003e\u003ccode\u003e380325d\u003c/code\u003e\u003c/a\u003e Add support for nested arrays with \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/20320afd20cbbda924dacdebcee84668444c58aa\"\u003e\u003ccode\u003e20320af\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-schema/compare/v1.14.1...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dry-schema\u0026package-manager=bundler\u0026previous-version=1.14.1\u0026new-version=1.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/alessiobussolari/better_page/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessiobussolari%2Fbetter_page/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"3803169458","node_id":"PR_kwDOEGmOXM68o9kZ","number":1035,"state":"closed","title":"chore(deps): bump the ruby group with 6 updates","user":"dependabot[bot]","labels":["dependencies","ruby"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T07:59:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T07:57:43.000Z","updated_at":"2026-01-12T07:59:45.000Z","time_to_close":117,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"ruby","update_count":6,"packages":[{"name":"bigdecimal","old_version":"3.3.1","new_version":"4.0.1","repository_url":"https://github.com/ruby/bigdecimal"},{"name":"dry-inflector","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/dry-rb/dry-inflector"},{"name":"dry-schema","old_version":"1.14.1","new_version":"1.15.0","repository_url":"https://github.com/dry-rb/dry-schema"},{"name":"dry-types","old_version":"1.8.3","new_version":"1.9.0","repository_url":"https://github.com/dry-rb/dry-types"},{"name":"faraday-gzip","old_version":"3.0.4","new_version":"3.1.0","repository_url":"https://github.com/bodrovis/faraday-gzip"},{"name":"thor","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/rails/thor"}],"path":null,"ecosystem":"rubygems"},"body":"Bumps the ruby group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bigdecimal](https://github.com/ruby/bigdecimal) | `3.3.1` | `4.0.1` |\n| [dry-inflector](https://github.com/dry-rb/dry-inflector) | `1.2.0` | `1.3.0` |\n| [dry-schema](https://github.com/dry-rb/dry-schema) | `1.14.1` | `1.15.0` |\n| [dry-types](https://github.com/dry-rb/dry-types) | `1.8.3` | `1.9.0` |\n| [faraday-gzip](https://github.com/bodrovis/faraday-gzip) | `3.0.4` | `3.1.0` |\n| [thor](https://github.com/rails/thor) | `1.4.0` | `1.5.0` |\n\nUpdates `bigdecimal` from 3.3.1 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ruby/bigdecimal/releases\"\u003ebigdecimal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExclude dependabot updates from release note by \u003ca href=\"https://github.com/hsbt\"\u003e\u003ccode\u003e@​hsbt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/474\"\u003eruby/bigdecimal#474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused variable (and add test for it) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/475\"\u003eruby/bigdecimal#475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;Which version should you select\u0026quot; section by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/476\"\u003eruby/bigdecimal#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to v4.0.1 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/477\"\u003eruby/bigdecimal#477\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/ruby/bigdecimal/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix x**y, x.power(y, 0) and x.sqrt(0) calculates huge digits if precision limit is huge by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/445\"\u003eruby/bigdecimal#445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement major math functions by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/336\"\u003eruby/bigdecimal#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix fast-path of frac and _decimal_shift affected by BigDecimal.limit by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/447\"\u003eruby/bigdecimal#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the latest versions of actions by \u003ca href=\"https://github.com/hsbt\"\u003e\u003ccode\u003e@​hsbt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/449\"\u003eruby/bigdecimal#449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing bigmath precision test, add missing indent by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/450\"\u003eruby/bigdecimal#450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BigMath.exp and log also a module_method by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/452\"\u003eruby/bigdecimal#452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incorrect exception when exponent is fractional for Infinity base by \u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/453\"\u003eruby/bigdecimal#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.1 to 2.13.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/454\"\u003eruby/bigdecimal#454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't use assert_separatly if not needed by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/455\"\u003eruby/bigdecimal#455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5.0.0 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/456\"\u003eruby/bigdecimal#456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5.0.1 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/457\"\u003eruby/bigdecimal#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing BigMath test for jruby by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/459\"\u003eruby/bigdecimal#459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange remainder/modulo/divmod test of +0/-0 type tolerant by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/460\"\u003eruby/bigdecimal#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCast divmod quotient to int by \u003ca href=\"https://github.com/mrzasa\"\u003e\u003ccode\u003e@​mrzasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/312\"\u003eruby/bigdecimal#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6.0.0 to 6.0.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/462\"\u003eruby/bigdecimal#462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.2 to 2.13.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/461\"\u003eruby/bigdecimal#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.erf(x, prec) and BigMath.erfc(x, prec) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/357\"\u003eruby/bigdecimal#357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.gamma and BigMath.lgamma by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/451\"\u003eruby/bigdecimal#451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos + improve copy/paste in readme by \u003ca href=\"https://github.com/tas50\"\u003e\u003ccode\u003e@​tas50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/463\"\u003eruby/bigdecimal#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix inaccurate calculation (last digit) and add a workaround for add/sub hang bug by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/465\"\u003eruby/bigdecimal#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lgamma precision around 1 and 2 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/466\"\u003eruby/bigdecimal#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lgamma precision when gamma(negative_x).abs nearly equals 1 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/467\"\u003eruby/bigdecimal#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.frexp and ldexp with exponent of 10 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/448\"\u003eruby/bigdecimal#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.3 to 2.14.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/468\"\u003eruby/bigdecimal#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter rounding of BigMath.atan(nearly_one, prec) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/469\"\u003eruby/bigdecimal#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated method BigDecimal#precs by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/470\"\u003eruby/bigdecimal#470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ludcmp, jacobian and newton by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/471\"\u003eruby/bigdecimal#471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to v4.0.0 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/472\"\u003eruby/bigdecimal#472\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/453\"\u003eruby/bigdecimal#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tas50\"\u003e\u003ccode\u003e@​tas50\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/463\"\u003eruby/bigdecimal#463\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.0\"\u003ehttps://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ruby/bigdecimal/blob/master/CHANGES.md\"\u003ebigdecimal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix warning \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/475\"\u003eGH-475\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eBigDecimal#divmod\u003c/code\u003e return value changed to \u003ccode\u003e[Integer, BigDecimal]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/312\"\u003eGH-312\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/mrzasa\"\u003e\u003ccode\u003e@​mrzasa\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eBigDecimal#precs\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/470\"\u003eGH-470\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBigMath now supports all functions defined in Math module \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/336\"\u003eGH-336\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/357\"\u003eGH-357\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/451\"\u003eGH-451\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/448\"\u003eGH-448\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect exception when exponent is fractional for Infinity base \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/453\"\u003eGH-453\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate \u003ccode\u003ebigdecimal/jacobian\u003c/code\u003e, \u003ccode\u003ebigdecimal/ludcmp\u003c/code\u003e and \u003ccode\u003ebigdecimal/newton\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/471\"\u003eGH-471\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/6d01c36419c7436d6d4fdf9603a032d7326ad6c8\"\u003e\u003ccode\u003e6d01c36\u003c/code\u003e\u003c/a\u003e Bump version to v4.0.1 (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/4914cc38d22f21f70d96684664997d9de949ea5f\"\u003e\u003ccode\u003e4914cc3\u003c/code\u003e\u003c/a\u003e Remove \u0026quot;Which version should you select\u0026quot; section (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/41203257dedf6b6b766d618db646e709ecfd0f89\"\u003e\u003ccode\u003e4120325\u003c/code\u003e\u003c/a\u003e Remove unused variable (and add test for it) (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/f0bf63f62d8d992cf7c7ada9d47f03208cf98cc4\"\u003e\u003ccode\u003ef0bf63f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/474\"\u003e#474\u003c/a\u003e from ruby/exclude-dependabot-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/d93ef2bec855c830e912cd93017c0dd9553c9e5c\"\u003e\u003ccode\u003ed93ef2b\u003c/code\u003e\u003c/a\u003e Exclude dependabot updates from release note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/d9914c90af8217651a4eabc1ac8a8c7ac3fb95e5\"\u003e\u003ccode\u003ed9914c9\u003c/code\u003e\u003c/a\u003e Bump version to v4.0.0 (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/45d203a9106c1fb33f349200083180a3660ea439\"\u003e\u003ccode\u003e45d203a\u003c/code\u003e\u003c/a\u003e Deprecate ludcmp, jacobian and newton (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/81463364fc89be2978dc0d073ebbf5cafec36cbc\"\u003e\u003ccode\u003e8146336\u003c/code\u003e\u003c/a\u003e Remove deprecated method BigDecimal#precs (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/470\"\u003e#470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/b7e93bf366807d1f3a83a7167c68b8c4faf08bbd\"\u003e\u003ccode\u003eb7e93bf\u003c/code\u003e\u003c/a\u003e Better rounding of BigMath.atan(nearly_one, prec) (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/cef76ebb34c0a241cd14cc444401071aa4be0ecd\"\u003e\u003ccode\u003ecef76eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/468\"\u003e#468\u003c/a\u003e from ruby/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-inflector` from 1.2.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-inflector/releases\"\u003edry-inflector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later. (\u003ca href=\"https://github.com/alassek\"\u003e\u003ccode\u003e@​alassek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport characters with diacritics. (\u003ca href=\"https://github.com/cllns\"\u003e\u003ccode\u003e@​cllns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of #singularize. (\u003ca href=\"https://github.com/sandbergja\"\u003e\u003ccode\u003e@​sandbergja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove redundant regexps for default inflections. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly handle pluralized aconyms in \u003ccode\u003e#underscore\u003c/code\u003e. For example, underscoring \u0026quot;CustomerAPIs\u0026quot; now gives \u0026quot;customer_apis\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly singularize \u0026quot;uses\u0026quot; and pluralize \u0026quot;use\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularization of plurals ending in a vowel and \u0026quot;xes\u0026quot;, such as \u0026quot;taxes\u0026quot; -\u0026gt; \u0026quot;tax\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;ee\u0026quot;, such as \u0026quot;fee\u0026quot; -\u0026gt; \u0026quot;fees\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularizing of words like \u0026quot;leaves\u0026quot; and \u0026quot;thieves\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;f\u0026quot; that should \u003cem\u003enot\u003c/em\u003e have their ending turn into \u0026quot;ves\u0026quot;, e.g. \u0026quot;roof\u0026quot;-\u0026gt;\u0026quot;roofs\u0026quot; and \u0026quot;chief\u0026quot;-\u0026gt;\u0026quot;chiefs\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of \u0026quot;virus\u0026quot; into \u0026quot;viruses\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-inflector/blob/main/CHANGELOG.md\"\u003edry-inflector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later. (\u003ca href=\"https://github.com/alassek\"\u003e\u003ccode\u003e@​alassek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport characters with diacritics. (\u003ca href=\"https://github.com/cllns\"\u003e\u003ccode\u003e@​cllns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of #singularize. (\u003ca href=\"https://github.com/sandbergja\"\u003e\u003ccode\u003e@​sandbergja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove redundant regexps for default inflections. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly handle pluralized aconyms in \u003ccode\u003e#underscore\u003c/code\u003e. For example, underscoring \u0026quot;CustomerAPIs\u0026quot; now gives \u0026quot;customer_apis\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly singularize \u0026quot;uses\u0026quot; and pluralize \u0026quot;use\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularization of plurals ending in a vowel and \u0026quot;xes\u0026quot;, such as \u0026quot;taxes\u0026quot; -\u0026gt; \u0026quot;tax\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;ee\u0026quot;, such as \u0026quot;fee\u0026quot; -\u0026gt; \u0026quot;fees\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularizing of words like \u0026quot;leaves\u0026quot; and \u0026quot;thieves\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;f\u0026quot; that should \u003cem\u003enot\u003c/em\u003e have their ending turn into \u0026quot;ves\u0026quot;, e.g. \u0026quot;roof\u0026quot;-\u0026gt;\u0026quot;roofs\u0026quot; and \u0026quot;chief\u0026quot;-\u0026gt;\u0026quot;chiefs\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of \u0026quot;virus\u0026quot; into \u0026quot;viruses\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/96d43828df7edccf2d87dfac59bae1d97411a7db\"\u003e\u003ccode\u003e96d4382\u003c/code\u003e\u003c/a\u003e Prepare for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/950b15a253c61d0aa847670f76212f8405b5e304\"\u003e\u003ccode\u003e950b15a\u003c/code\u003e\u003c/a\u003e Remove stray gemspec file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/ea477b3d82ef5dc4471de26b42598743d23515ae\"\u003e\u003ccode\u003eea477b3\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/ba535283c5ba576432a4e19a7e3590b4ca4eee70\"\u003e\u003ccode\u003eba53528\u003c/code\u003e\u003c/a\u003e Inflection Defaults Tidy Up (\u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/d8d616ddc3a8ad8803c59dd95b8f080b5b741171\"\u003e\u003ccode\u003ed8d616d\u003c/code\u003e\u003c/a\u003e Fix singularize leaves and thieves (\u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/1b30881e32b7b06e118555c553e887aee464ce59\"\u003e\u003ccode\u003e1b30881\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/47309d9e3cd66dce8ff60f979b668482f8433d76\"\u003e\u003ccode\u003e47309d9\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/f1a7e0b447ddb730b12004cc83d5c14241285c4a\"\u003e\u003ccode\u003ef1a7e0b\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/559c3e356f5dcb5cca327640a247c9f3ae73c740\"\u003e\u003ccode\u003e559c3e3\u003c/code\u003e\u003c/a\u003e Fix RuboCop issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/d4a5fee3d3e72200740dd11a529037cc7293a952\"\u003e\u003ccode\u003ed4a5fee\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-inflector/compare/v1.2.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-schema` from 1.14.1 to 1.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/releases\"\u003edry-schema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/blob/main/CHANGELOG.md\"\u003edry-schema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3d4073f48b3426d1f2b940b3ccd86d9575b0328e\"\u003e\u003ccode\u003e3d4073f\u003c/code\u003e\u003c/a\u003e Prepare for v1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/832bca19ed746255c60052524991f16b39fc45e8\"\u003e\u003ccode\u003e832bca1\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/2ea4b81ad8210bc3d073e2f724a0c49649682310\"\u003e\u003ccode\u003e2ea4b81\u003c/code\u003e\u003c/a\u003e Allow use of symbol for configuration top_namespace (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/351501e3e2ad4c46fafe60a4d9005072301e7693\"\u003e\u003ccode\u003e351501e\u003c/code\u003e\u003c/a\u003e Fix TypeError when generating errors a key that repeats in nested schemas (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/ec92f407239ea0dfae0267528b6d3466ce01cc86\"\u003e\u003ccode\u003eec92f40\u003c/code\u003e\u003c/a\u003e Accept updated AST structure from dry-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/5a2b1254f019a9e2bc0f220c6d723e3c0c62f9ec\"\u003e\u003ccode\u003e5a2b125\u003c/code\u003e\u003c/a\u003e Fix handling of I18n proc messages when returning hashes (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3abfb91470216e9dbeffe6ecf74148747293754e\"\u003e\u003ccode\u003e3abfb91\u003c/code\u003e\u003c/a\u003e Add tests for JSON schema predicate, fix \u003ccode\u003eformat?\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/b8fab3bef82d357218ed72a91012c1b9efb92edf\"\u003e\u003ccode\u003eb8fab3b\u003c/code\u003e\u003c/a\u003e Add missing JSON Schema predicates (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/380325d6978f36e5bbfd915ac3bbb63310bfa036\"\u003e\u003ccode\u003e380325d\u003c/code\u003e\u003c/a\u003e Add support for nested arrays with \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/20320afd20cbbda924dacdebcee84668444c58aa\"\u003e\u003ccode\u003e20320af\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-schema/compare/v1.14.1...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-types` from 1.8.3 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-types/releases\"\u003edry-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eparams.*\u003c/code\u003e with \u003ccode\u003e.optional\u003c/code\u003e can now handle empty strings consistently with \u003ccode\u003eoptional.params.*\u003c/code\u003e by returning \u003ccode\u003enil\u003c/code\u003e instead of raising an error. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/487\"\u003e#487\u003c/a\u003e, \u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/490\"\u003e#490\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis behavior is not enabled by default because it's a breaking change. Set \u003ccode\u003eDry::Types.use_namespaced_optionals(true)\u003c/code\u003e to enable it.\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; CoercionError\n# Activate namespaced optionals\nDry::Types.use_namespaced_optionals true\nDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; nil\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later.\u003c/li\u003e\n\u003cli\u003eSupport bigdecimal version 4.0 as well as 3.0, improving compatibility with other gems that require 4.0 only. (\u003ca href=\"https://github.com/rus-max\"\u003e\u003ccode\u003e@​rus-max\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/492\"\u003e#492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove sum type error handling documentation. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eConstructor#primitive?\u003c/code\u003e delegation for sum types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/484\"\u003e#484\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003ea = Types::String.constrained(size: 2) | Types::Hash\nb = Types::String.constrained(size: 1) | Types::Hash\n\u003cp\u003ec = (a.constructor { |x| x.is_a?(Hash) ? x : x.downcase }) |\n(b.constructor { |x| x.is_a?(Hash) ? x : x.upcase })\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Sum type \u003ccode\u003eto_s\u003c/code\u003e with Dry::Struct types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/485\"\u003e#485\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eclass A \u0026lt; Dry::Struct; end\nclass B \u0026lt; Dry::Struct; end\n\u003cp\u003e(A | B).to_s\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003eCompare v1.8.3 ... v1.9.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-types/blob/main/CHANGELOG.md\"\u003edry-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003e1.9.0\u003c/a\u003e - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eparams.*\u003c/code\u003e with \u003ccode\u003e.optional\u003c/code\u003e can now handle empty strings consistently with \u003ccode\u003eoptional.params.*\u003c/code\u003e by returning \u003ccode\u003enil\u003c/code\u003e instead of raising an error. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/487\"\u003e#487\u003c/a\u003e, \u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/490\"\u003e#490\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis behavior is not enabled by default because it's a breaking change. Set \u003ccode\u003eDry::Types.use_namespaced_optionals(true)\u003c/code\u003e to enable it.\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; CoercionError\n# Activate namespaced optionals\nDry::Types.use_namespaced_optionals true\nDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; nil\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later.\u003c/li\u003e\n\u003cli\u003eSupport bigdecimal version 4.0 as well as 3.0, improving compatibility with other gems that require 4.0 only. (\u003ca href=\"https://github.com/rus-max\"\u003e\u003ccode\u003e@​rus-max\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/492\"\u003e#492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove sum type error handling documentation. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eConstructor#primitive?\u003c/code\u003e delegation for sum types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/484\"\u003e#484\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003ea = Types::String.constrained(size: 2) | Types::Hash\nb = Types::String.constrained(size: 1) | Types::Hash\n\u003cp\u003ec = (a.constructor { |x| x.is_a?(Hash) ? x : x.downcase }) |\n(b.constructor { |x| x.is_a?(Hash) ? x : x.upcase })\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Sum type \u003ccode\u003eto_s\u003c/code\u003e with Dry::Struct types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/485\"\u003e#485\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eclass A \u0026lt; Dry::Struct; end\nclass B \u0026lt; Dry::Struct; end\n\u003cp\u003e(A | B).to_s\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/adb1373bea2ffe4943a358ab6b40810ccbbdf04b\"\u003e\u003ccode\u003eadb1373\u003c/code\u003e\u003c/a\u003e Prepare for v1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/e89c8054d8c0ab0f314d3eafbb9e7581c82c65ae\"\u003e\u003ccode\u003ee89c805\u003c/code\u003e\u003c/a\u003e Tweak CHANGELOG wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/f7aadd70b44934b2b3786d7aeb32b9c901c3bdb2\"\u003e\u003ccode\u003ef7aadd7\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/a4bf4c140ebe5e75360a2a3589011e37adccf2af\"\u003e\u003ccode\u003ea4bf4c1\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for v1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/9b295c7becac27db979401523efe50f023ede36a\"\u003e\u003ccode\u003e9b295c7\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/61bb30d3138b57508116bd6c91487207b1e0d80d\"\u003e\u003ccode\u003e61bb30d\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/f3590ed9497a0b03416b58629e24faee5f11a671\"\u003e\u003ccode\u003ef3590ed\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/57b9848769004157cc50b3ea81b93ac6d1005eb3\"\u003e\u003ccode\u003e57b9848\u003c/code\u003e\u003c/a\u003e Fix rubocop issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/429dc9b06ea8a386c3bb5213213abfc075edddd2\"\u003e\u003ccode\u003e429dc9b\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/87a3fb2119329a87e6c95b288a70744cf627ca42\"\u003e\u003ccode\u003e87a3fb2\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faraday-gzip` from 3.0.4 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bodrovis/faraday-gzip/blob/master/CHANGELOG.md\"\u003efaraday-gzip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (05-Jan-2026)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove handling of edge cases and malformed \u003ccode\u003eContent-Encoding\u003c/code\u003e headers\u003c/li\u003e\n\u003cli\u003eSupport multiple encodings and respect \u003ccode\u003eidentity\u003c/code\u003e responses\u003c/li\u003e\n\u003cli\u003eAvoid modifying streaming and non-string response bodies\u003c/li\u003e\n\u003cli\u003eNormalize response headers after decompression\u003c/li\u003e\n\u003cli\u003eUpdate and expand test coverage, test with Ruby 4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/ee7481faa294c0f9ed99aaf2890b93e5f262e04a\"\u003e\u003ccode\u003eee7481f\u003c/code\u003e\u003c/a\u003e v3.1.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/e9d1b032c4664c5cc6d4716b3f4d83bdc5583ddc\"\u003e\u003ccode\u003ee9d1b03\u003c/code\u003e\u003c/a\u003e prepare for a new version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/912f2c969f707b6a802bae81aadd918f4872c633\"\u003e\u003ccode\u003e912f2c9\u003c/code\u003e\u003c/a\u003e remove bundler dep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/23851b107c9a309ac23ea308eac6d5d61a2e8d48\"\u003e\u003ccode\u003e23851b1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/bodrovis/faraday-gzip\"\u003ehttps://github.com/bodrovis/faraday-gzip\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/59fdb7f517f9687ab4ec228bfcf1c8103c1a494a\"\u003e\u003ccode\u003e59fdb7f\u003c/code\u003e\u003c/a\u003e update deps, test with ruby 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/7b956169377f26505a1051640d7ae85b03b89620\"\u003e\u003ccode\u003e7b95616\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/bodrovis/faraday-gzip/issues/5\"\u003e#5\u003c/a\u003e from bodrovis/dependabot/github_actions/master/actions/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/c7da1c9ad5a0e650cd6d175943d0d68f35b0ed91\"\u003e\u003ccode\u003ec7da1c9\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/3cc339230bc6d67c4f0cc0966f96c198420bf73d\"\u003e\u003ccode\u003e3cc3392\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/bodrovis/faraday-gzip\"\u003ehttps://github.com/bodrovis/faraday-gzip\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/815124c92582124f1fa69e0867121a6ea4f947aa\"\u003e\u003ccode\u003e815124c\u003c/code\u003e\u003c/a\u003e bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/41fc9988367801028ba8ba25f49c42168a3b4cc2\"\u003e\u003ccode\u003e41fc998\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/bodrovis/faraday-gzip/issues/4\"\u003e#4\u003c/a\u003e from bodrovis/dependabot/github_actions/master/actions/...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bodrovis/faraday-gzip/compare/v3.0.4...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `thor` from 1.4.0 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rails/thor/releases\"\u003ethor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd specs and linter documentation by \u003ca href=\"https://github.com/hlascelles\"\u003e\u003ccode\u003e@​hlascelles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/907\"\u003erails/thor#907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tree command by \u003ca href=\"https://github.com/hlascelles\"\u003e\u003ccode\u003e@​hlascelles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/906\"\u003erails/thor#906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support \u003ccode\u003einsert_into_file\u003c/code\u003e erroring if the file is not changed, and add \u003ccode\u003einsert_into_file\u003c/code\u003e by \u003ca href=\"https://github.com/G-Rath\"\u003e\u003ccode\u003e@​G-Rath\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/908\"\u003erails/thor#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport THOR_MERGE values with arguments by \u003ca href=\"https://github.com/rafaelfranca\"\u003e\u003ccode\u003e@​rafaelfranca\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/910\"\u003erails/thor#910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHidden commands should not make an invocation ambiguous by \u003ca href=\"https://github.com/deivid-rodriguez\"\u003e\u003ccode\u003e@​deivid-rodriguez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/911\"\u003erails/thor#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet frozen_string_literal: true in colors.rb by \u003ca href=\"https://github.com/tenderlove\"\u003e\u003ccode\u003e@​tenderlove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/913\"\u003erails/thor#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix encoding error when running a merge tool by \u003ca href=\"https://github.com/moritzschepp\"\u003e\u003ccode\u003e@​moritzschepp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/916\"\u003erails/thor#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tenderlove\"\u003e\u003ccode\u003e@​tenderlove\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/913\"\u003erails/thor#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/912\"\u003erails/thor#912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moritzschepp\"\u003e\u003ccode\u003e@​moritzschepp\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/916\"\u003erails/thor#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/rails/thor/compare/v1.4.0...v1.5.0\"\u003ehttps://github.com/rails/thor/compare/v1.4.0...v1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/6a680f2f929cc24d61b81197e113066aa18c8fbb\"\u003e\u003ccode\u003e6a680f2\u003c/code\u003e\u003c/a\u003e Prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/615b0c29a411302104905cf8d81af02ca0cd4765\"\u003e\u003ccode\u003e615b0c2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/919\"\u003e#919\u003c/a\u003e from rails/rmf-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/f16a2dbf503c422da309c3f2bfccbf751ca61ddb\"\u003e\u003ccode\u003ef16a2db\u003c/code\u003e\u003c/a\u003e Unlock bundler development dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/7b99536daff00deea31787e2afe7dce6fefec602\"\u003e\u003ccode\u003e7b99536\u003c/code\u003e\u003c/a\u003e Test with Ruby 4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/2a1eecb4e8b6aff1aa2941308fb2199fdb61ebe6\"\u003e\u003ccode\u003e2a1eecb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/918\"\u003e#918\u003c/a\u003e from rails/dependabot/github_actions/actions/checkout-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/ed9ffca4e99868b3e20239125a4885dd18ba04ad\"\u003e\u003ccode\u003eed9ffca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/916\"\u003e#916\u003c/a\u003e from moritzschepp/ec-encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/5b85a330ba73c5c7be4f72ca949841c707feca54\"\u003e\u003ccode\u003e5b85a33\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/2e2b684b6e29497fa9299600d21cd3dc98cd34af\"\u003e\u003ccode\u003e2e2b684\u003c/code\u003e\u003c/a\u003e fix encoding error when running a merge tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/b2d98fea78fd993b936fc434a3ad722e73ad6bc5\"\u003e\u003ccode\u003eb2d98fe\u003c/code\u003e\u003c/a\u003e Remove whatisthor.com references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/17a3be95f40c255f12612c1491bccea4ca4a363f\"\u003e\u003ccode\u003e17a3be9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/912\"\u003e#912\u003c/a\u003e from rails/dependabot/github_actions/actions/checkout-5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rails/thor/compare/v1.4.0...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/html2rss/html2rss.github.io/pull/1035","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/html2rss%2Fhtml2rss.github.io/issues/1035","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1035/packages"}],"issue_packages":[{"old_version":"1.14.1","new_version":"1.15.0","update_type":"minor","path":null,"pr_created_at":"2026-01-12T08:33:50.000Z","version_change":"1.14.1 → 1.15.0","issue":{"uuid":"3803268399","node_id":"PR_kwDOQeeh9c68pSi8","number":12,"state":"open","title":"Bump dry-schema from 1.14.1 to 1.15.0","user":"dependabot[bot]","labels":["dependencies","ruby"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-12T08:33:50.000Z","updated_at":"2026-01-12T08:35:28.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"dry-schema","old_version":"1.14.1","new_version":"1.15.0","repository_url":"https://github.com/dry-rb/dry-schema"}],"path":null,"ecosystem":"rubygems"},"body":"Bumps [dry-schema](https://github.com/dry-rb/dry-schema) from 1.14.1 to 1.15.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/releases\"\u003edry-schema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/blob/main/CHANGELOG.md\"\u003edry-schema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3d4073f48b3426d1f2b940b3ccd86d9575b0328e\"\u003e\u003ccode\u003e3d4073f\u003c/code\u003e\u003c/a\u003e Prepare for v1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/832bca19ed746255c60052524991f16b39fc45e8\"\u003e\u003ccode\u003e832bca1\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/2ea4b81ad8210bc3d073e2f724a0c49649682310\"\u003e\u003ccode\u003e2ea4b81\u003c/code\u003e\u003c/a\u003e Allow use of symbol for configuration top_namespace (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/351501e3e2ad4c46fafe60a4d9005072301e7693\"\u003e\u003ccode\u003e351501e\u003c/code\u003e\u003c/a\u003e Fix TypeError when generating errors a key that repeats in nested schemas (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/ec92f407239ea0dfae0267528b6d3466ce01cc86\"\u003e\u003ccode\u003eec92f40\u003c/code\u003e\u003c/a\u003e Accept updated AST structure from dry-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/5a2b1254f019a9e2bc0f220c6d723e3c0c62f9ec\"\u003e\u003ccode\u003e5a2b125\u003c/code\u003e\u003c/a\u003e Fix handling of I18n proc messages when returning hashes (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3abfb91470216e9dbeffe6ecf74148747293754e\"\u003e\u003ccode\u003e3abfb91\u003c/code\u003e\u003c/a\u003e Add tests for JSON schema predicate, fix \u003ccode\u003eformat?\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/b8fab3bef82d357218ed72a91012c1b9efb92edf\"\u003e\u003ccode\u003eb8fab3b\u003c/code\u003e\u003c/a\u003e Add missing JSON Schema predicates (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/380325d6978f36e5bbfd915ac3bbb63310bfa036\"\u003e\u003ccode\u003e380325d\u003c/code\u003e\u003c/a\u003e Add support for nested arrays with \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/20320afd20cbbda924dacdebcee84668444c58aa\"\u003e\u003ccode\u003e20320af\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-schema/compare/v1.14.1...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dry-schema\u0026package-manager=bundler\u0026previous-version=1.14.1\u0026new-version=1.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/alessiobussolari/better_page/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alessiobussolari%2Fbetter_page/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"1.14.1","new_version":"1.15.0","update_type":"minor","path":null,"pr_created_at":"2026-01-12T07:57:43.000Z","version_change":"1.14.1 → 1.15.0","issue":{"uuid":"3803169458","node_id":"PR_kwDOEGmOXM68o9kZ","number":1035,"state":"closed","title":"chore(deps): bump the ruby group with 6 updates","user":"dependabot[bot]","labels":["dependencies","ruby"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-12T07:59:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T07:57:43.000Z","updated_at":"2026-01-12T07:59:45.000Z","time_to_close":117,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"ruby","update_count":6,"packages":[{"name":"bigdecimal","old_version":"3.3.1","new_version":"4.0.1","repository_url":"https://github.com/ruby/bigdecimal"},{"name":"dry-inflector","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/dry-rb/dry-inflector"},{"name":"dry-schema","old_version":"1.14.1","new_version":"1.15.0","repository_url":"https://github.com/dry-rb/dry-schema"},{"name":"dry-types","old_version":"1.8.3","new_version":"1.9.0","repository_url":"https://github.com/dry-rb/dry-types"},{"name":"faraday-gzip","old_version":"3.0.4","new_version":"3.1.0","repository_url":"https://github.com/bodrovis/faraday-gzip"},{"name":"thor","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/rails/thor"}],"path":null,"ecosystem":"rubygems"},"body":"Bumps the ruby group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bigdecimal](https://github.com/ruby/bigdecimal) | `3.3.1` | `4.0.1` |\n| [dry-inflector](https://github.com/dry-rb/dry-inflector) | `1.2.0` | `1.3.0` |\n| [dry-schema](https://github.com/dry-rb/dry-schema) | `1.14.1` | `1.15.0` |\n| [dry-types](https://github.com/dry-rb/dry-types) | `1.8.3` | `1.9.0` |\n| [faraday-gzip](https://github.com/bodrovis/faraday-gzip) | `3.0.4` | `3.1.0` |\n| [thor](https://github.com/rails/thor) | `1.4.0` | `1.5.0` |\n\nUpdates `bigdecimal` from 3.3.1 to 4.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ruby/bigdecimal/releases\"\u003ebigdecimal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExclude dependabot updates from release note by \u003ca href=\"https://github.com/hsbt\"\u003e\u003ccode\u003e@​hsbt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/474\"\u003eruby/bigdecimal#474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove unused variable (and add test for it) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/475\"\u003eruby/bigdecimal#475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;Which version should you select\u0026quot; section by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/476\"\u003eruby/bigdecimal#476\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to v4.0.1 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/477\"\u003eruby/bigdecimal#477\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/ruby/bigdecimal/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix x**y, x.power(y, 0) and x.sqrt(0) calculates huge digits if precision limit is huge by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/445\"\u003eruby/bigdecimal#445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement major math functions by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/336\"\u003eruby/bigdecimal#336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix fast-path of frac and _decimal_shift affected by BigDecimal.limit by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/447\"\u003eruby/bigdecimal#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the latest versions of actions by \u003ca href=\"https://github.com/hsbt\"\u003e\u003ccode\u003e@​hsbt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/449\"\u003eruby/bigdecimal#449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing bigmath precision test, add missing indent by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/450\"\u003eruby/bigdecimal#450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake BigMath.exp and log also a module_method by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/452\"\u003eruby/bigdecimal#452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incorrect exception when exponent is fractional for Infinity base by \u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/453\"\u003eruby/bigdecimal#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.1 to 2.13.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/454\"\u003eruby/bigdecimal#454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't use assert_separatly if not needed by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/455\"\u003eruby/bigdecimal#455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5.0.0 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/456\"\u003eruby/bigdecimal#456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5.0.1 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/457\"\u003eruby/bigdecimal#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing BigMath test for jruby by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/459\"\u003eruby/bigdecimal#459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange remainder/modulo/divmod test of +0/-0 type tolerant by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/460\"\u003eruby/bigdecimal#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCast divmod quotient to int by \u003ca href=\"https://github.com/mrzasa\"\u003e\u003ccode\u003e@​mrzasa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/312\"\u003eruby/bigdecimal#312\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6.0.0 to 6.0.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/462\"\u003eruby/bigdecimal#462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.2 to 2.13.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/461\"\u003eruby/bigdecimal#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.erf(x, prec) and BigMath.erfc(x, prec) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/357\"\u003eruby/bigdecimal#357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.gamma and BigMath.lgamma by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/451\"\u003eruby/bigdecimal#451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos + improve copy/paste in readme by \u003ca href=\"https://github.com/tas50\"\u003e\u003ccode\u003e@​tas50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/463\"\u003eruby/bigdecimal#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix inaccurate calculation (last digit) and add a workaround for add/sub hang bug by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/465\"\u003eruby/bigdecimal#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lgamma precision around 1 and 2 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/466\"\u003eruby/bigdecimal#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix lgamma precision when gamma(negative_x).abs nearly equals 1 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/467\"\u003eruby/bigdecimal#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement BigMath.frexp and ldexp with exponent of 10 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/448\"\u003eruby/bigdecimal#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump step-security/harden-runner from 2.13.3 to 2.14.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/468\"\u003eruby/bigdecimal#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBetter rounding of BigMath.atan(nearly_one, prec) by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/469\"\u003eruby/bigdecimal#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated method BigDecimal#precs by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/470\"\u003eruby/bigdecimal#470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ludcmp, jacobian and newton by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/471\"\u003eruby/bigdecimal#471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump version to v4.0.0 by \u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/472\"\u003eruby/bigdecimal#472\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/453\"\u003eruby/bigdecimal#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tas50\"\u003e\u003ccode\u003e@​tas50\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/pull/463\"\u003eruby/bigdecimal#463\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.0\"\u003ehttps://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ruby/bigdecimal/blob/master/CHANGES.md\"\u003ebigdecimal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix warning \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/475\"\u003eGH-475\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eBigDecimal#divmod\u003c/code\u003e return value changed to \u003ccode\u003e[Integer, BigDecimal]\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/312\"\u003eGH-312\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/mrzasa\"\u003e\u003ccode\u003e@​mrzasa\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eBigDecimal#precs\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/470\"\u003eGH-470\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBigMath now supports all functions defined in Math module \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/336\"\u003eGH-336\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/357\"\u003eGH-357\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/451\"\u003eGH-451\u003c/a\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/448\"\u003eGH-448\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix incorrect exception when exponent is fractional for Infinity base \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/453\"\u003eGH-453\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/troy-dunamu\"\u003e\u003ccode\u003e@​troy-dunamu\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate \u003ccode\u003ebigdecimal/jacobian\u003c/code\u003e, \u003ccode\u003ebigdecimal/ludcmp\u003c/code\u003e and \u003ccode\u003ebigdecimal/newton\u003c/code\u003e \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/471\"\u003eGH-471\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://github.com/tompng\"\u003e\u003ccode\u003e@​tompng\u003c/code\u003e\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/6d01c36419c7436d6d4fdf9603a032d7326ad6c8\"\u003e\u003ccode\u003e6d01c36\u003c/code\u003e\u003c/a\u003e Bump version to v4.0.1 (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/4914cc38d22f21f70d96684664997d9de949ea5f\"\u003e\u003ccode\u003e4914cc3\u003c/code\u003e\u003c/a\u003e Remove \u0026quot;Which version should you select\u0026quot; section (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/41203257dedf6b6b766d618db646e709ecfd0f89\"\u003e\u003ccode\u003e4120325\u003c/code\u003e\u003c/a\u003e Remove unused variable (and add test for it) (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/f0bf63f62d8d992cf7c7ada9d47f03208cf98cc4\"\u003e\u003ccode\u003ef0bf63f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/474\"\u003e#474\u003c/a\u003e from ruby/exclude-dependabot-update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/d93ef2bec855c830e912cd93017c0dd9553c9e5c\"\u003e\u003ccode\u003ed93ef2b\u003c/code\u003e\u003c/a\u003e Exclude dependabot updates from release note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/d9914c90af8217651a4eabc1ac8a8c7ac3fb95e5\"\u003e\u003ccode\u003ed9914c9\u003c/code\u003e\u003c/a\u003e Bump version to v4.0.0 (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/45d203a9106c1fb33f349200083180a3660ea439\"\u003e\u003ccode\u003e45d203a\u003c/code\u003e\u003c/a\u003e Deprecate ludcmp, jacobian and newton (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/81463364fc89be2978dc0d073ebbf5cafec36cbc\"\u003e\u003ccode\u003e8146336\u003c/code\u003e\u003c/a\u003e Remove deprecated method BigDecimal#precs (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/470\"\u003e#470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/b7e93bf366807d1f3a83a7167c68b8c4faf08bbd\"\u003e\u003ccode\u003eb7e93bf\u003c/code\u003e\u003c/a\u003e Better rounding of BigMath.atan(nearly_one, prec) (\u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ruby/bigdecimal/commit/cef76ebb34c0a241cd14cc444401071aa4be0ecd\"\u003e\u003ccode\u003ecef76eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ruby/bigdecimal/issues/468\"\u003e#468\u003c/a\u003e from ruby/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ruby/bigdecimal/compare/v3.3.1...v4.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-inflector` from 1.2.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-inflector/releases\"\u003edry-inflector's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later. (\u003ca href=\"https://github.com/alassek\"\u003e\u003ccode\u003e@​alassek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport characters with diacritics. (\u003ca href=\"https://github.com/cllns\"\u003e\u003ccode\u003e@​cllns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of #singularize. (\u003ca href=\"https://github.com/sandbergja\"\u003e\u003ccode\u003e@​sandbergja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove redundant regexps for default inflections. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly handle pluralized aconyms in \u003ccode\u003e#underscore\u003c/code\u003e. For example, underscoring \u0026quot;CustomerAPIs\u0026quot; now gives \u0026quot;customer_apis\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly singularize \u0026quot;uses\u0026quot; and pluralize \u0026quot;use\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularization of plurals ending in a vowel and \u0026quot;xes\u0026quot;, such as \u0026quot;taxes\u0026quot; -\u0026gt; \u0026quot;tax\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;ee\u0026quot;, such as \u0026quot;fee\u0026quot; -\u0026gt; \u0026quot;fees\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularizing of words like \u0026quot;leaves\u0026quot; and \u0026quot;thieves\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;f\u0026quot; that should \u003cem\u003enot\u003c/em\u003e have their ending turn into \u0026quot;ves\u0026quot;, e.g. \u0026quot;roof\u0026quot;-\u0026gt;\u0026quot;roofs\u0026quot; and \u0026quot;chief\u0026quot;-\u0026gt;\u0026quot;chiefs\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of \u0026quot;virus\u0026quot; into \u0026quot;viruses\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-inflector/blob/main/CHANGELOG.md\"\u003edry-inflector's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later. (\u003ca href=\"https://github.com/alassek\"\u003e\u003ccode\u003e@​alassek\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport characters with diacritics. (\u003ca href=\"https://github.com/cllns\"\u003e\u003ccode\u003e@​cllns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of #singularize. (\u003ca href=\"https://github.com/sandbergja\"\u003e\u003ccode\u003e@​sandbergja\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove redundant regexps for default inflections. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly handle pluralized aconyms in \u003ccode\u003e#underscore\u003c/code\u003e. For example, underscoring \u0026quot;CustomerAPIs\u0026quot; now gives \u0026quot;customer_apis\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly singularize \u0026quot;uses\u0026quot; and pluralize \u0026quot;use\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularization of plurals ending in a vowel and \u0026quot;xes\u0026quot;, such as \u0026quot;taxes\u0026quot; -\u0026gt; \u0026quot;tax\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;ee\u0026quot;, such as \u0026quot;fee\u0026quot; -\u0026gt; \u0026quot;fees\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix singularizing of words like \u0026quot;leaves\u0026quot; and \u0026quot;thieves\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of words ending in \u0026quot;f\u0026quot; that should \u003cem\u003enot\u003c/em\u003e have their ending turn into \u0026quot;ves\u0026quot;, e.g. \u0026quot;roof\u0026quot;-\u0026gt;\u0026quot;roofs\u0026quot; and \u0026quot;chief\u0026quot;-\u0026gt;\u0026quot;chiefs\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix pluralization of \u0026quot;virus\u0026quot; into \u0026quot;viruses\u0026quot;. (\u003ca href=\"https://github.com/hmaddocks\"\u003e\u003ccode\u003e@​hmaddocks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/96d43828df7edccf2d87dfac59bae1d97411a7db\"\u003e\u003ccode\u003e96d4382\u003c/code\u003e\u003c/a\u003e Prepare for v1.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/950b15a253c61d0aa847670f76212f8405b5e304\"\u003e\u003ccode\u003e950b15a\u003c/code\u003e\u003c/a\u003e Remove stray gemspec file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/ea477b3d82ef5dc4471de26b42598743d23515ae\"\u003e\u003ccode\u003eea477b3\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/ba535283c5ba576432a4e19a7e3590b4ca4eee70\"\u003e\u003ccode\u003eba53528\u003c/code\u003e\u003c/a\u003e Inflection Defaults Tidy Up (\u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/59\"\u003e#59\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/d8d616ddc3a8ad8803c59dd95b8f080b5b741171\"\u003e\u003ccode\u003ed8d616d\u003c/code\u003e\u003c/a\u003e Fix singularize leaves and thieves (\u003ca href=\"https://redirect.github.com/dry-rb/dry-inflector/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/1b30881e32b7b06e118555c553e887aee464ce59\"\u003e\u003ccode\u003e1b30881\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/47309d9e3cd66dce8ff60f979b668482f8433d76\"\u003e\u003ccode\u003e47309d9\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/f1a7e0b447ddb730b12004cc83d5c14241285c4a\"\u003e\u003ccode\u003ef1a7e0b\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/559c3e356f5dcb5cca327640a247c9f3ae73c740\"\u003e\u003ccode\u003e559c3e3\u003c/code\u003e\u003c/a\u003e Fix RuboCop issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-inflector/commit/d4a5fee3d3e72200740dd11a529037cc7293a952\"\u003e\u003ccode\u003ed4a5fee\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-inflector/compare/v1.2.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-schema` from 1.14.1 to 1.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/releases\"\u003edry-schema's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.15.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-schema/blob/main/CHANGELOG.md\"\u003edry-schema's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.0] - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet mimimum Ruby version to 3.2 (\u003ca href=\"https://github.com/timriley\"\u003e\u003ccode\u003e@​timriley\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport UUID v6, v7 and v8 predicates (\u003ccode\u003e:uuid_v6?\u003c/code\u003e, \u003ccode\u003e:uuid_v7?\u003c/code\u003e and \u003ccode\u003e:uuid_v8?\u003c/code\u003e). (\u003ca href=\"https://github.com/illiatdesdindes\"\u003e\u003ccode\u003e@​illiatdesdindes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/509\"\u003e#509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003esize?\u003c/code\u003e, \u003ccode\u003eformat?\u003c/code\u003e, \u003ccode\u003etrue?\u003c/code\u003e and \u003ccode\u003efalse?\u003c/code\u003e predicates when generating JSON schemas. (\u003ca href=\"https://github.com/cramt\"\u003e\u003ccode\u003e@​cramt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow symbols to be given for \u003ccode\u003etop_namespace\u003c/code\u003e setting. (\u003ca href=\"https://github.com/unused\"\u003e\u003ccode\u003e@​unused\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport intersection types (created with \u003ccode\u003e\u0026amp;\u003c/code\u003e operator) in schema definitions. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/496\"\u003e#496\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eNow works without errors:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eintersection_type =\n  Types::Hash.schema(a: Types::String) \u0026amp; \n  (Types::Hash.schema(b: Types::String) | Types::Hash.schema(c: Types::String))\n\u003cp\u003eschema = Dry::Schema.Params do\nrequired(:body).value(intersection_type)\nend\u003c/p\u003e\n\u003cp\u003eschema.call(body: {a: \u0026quot;test\u0026quot;, b: \u0026quot;value\u0026quot;}) # passes\nschema.call(body: {b: \u0026quot;value\u0026quot;})            # fails - missing 'a'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now properly handles \u003ccode\u003eDry::Struct\u003c/code\u003e instances wrapped in constructors. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/497\"\u003e#497\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eBefore, when generating JSON schema for a schema containing a Dry::Struct wrapped in a constructor (e.g., \u003ccode\u003eAddress.constructor(\u0026amp;:itself)\u003c/code\u003e), all struct properties were omitted from the generated schema, returning only \u003ccode\u003e{type: \u0026quot;object\u0026quot;}\u003c/code\u003e instead of the full schema with properties.\u003c/p\u003e\n\u003cp\u003eBefore/after:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003e# Before: Missing struct properties\nDry::Schema.Params do \n  required(:address).value(Address.constructor(\u0026amp;:itself)) \nend.json_schema\n# =\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;}}} # No properties\n\u003ch1\u003eAfter: Full struct schema included\u003c/h1\u003e\n\u003cp\u003eDry::Schema.Params do\nrequired(:address).value(Address.constructor(\u0026amp;:itself))\nend.json_schema\u003c/p\u003e\n\u003ch1\u003e=\u0026gt; {:properties=\u0026gt;{:address=\u0026gt;{:type=\u0026gt;\u0026quot;object\u0026quot;, :properties=\u0026gt;{:street=\u0026gt;{...}}}}} # Properties included\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJSON schema generation now correctly uses \u003ccode\u003eminItems\u003c/code\u003e/\u003ccode\u003emaxItems\u003c/code\u003e for array size predicates instead of \u003ccode\u003eminLength\u003c/code\u003e/\u003ccode\u003emaxLength\u003c/code\u003e. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/498\"\u003e#498\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct index in errors when validating unexpected keys in arrays. (\u003ca href=\"https://github.com/katafrakt\"\u003e\u003ccode\u003e@​katafrakt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/510\"\u003e#510\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport validating nested arrays when using \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e. (\u003ca href=\"https://github.com/misdoro\"\u003e\u003ccode\u003e@​misdoro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of i18n messages from proc/lambda-produced hashes. (\u003ca href=\"https://github.com/rrothenberger\"\u003e\u003ccode\u003e@​rrothenberger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix error arising when generating errors when a key is repeated in a nested schema. (\u003ca href=\"https://github.com/jacob-carlborg\"\u003e\u003ccode\u003e@​jacob-carlborg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix method call typo in \u003ccode\u003eDry::Schema::Trace#respond_to_missing?\u003c/code\u003e. (\u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in 13ddb51)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3d4073f48b3426d1f2b940b3ccd86d9575b0328e\"\u003e\u003ccode\u003e3d4073f\u003c/code\u003e\u003c/a\u003e Prepare for v1.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/832bca19ed746255c60052524991f16b39fc45e8\"\u003e\u003ccode\u003e832bca1\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/2ea4b81ad8210bc3d073e2f724a0c49649682310\"\u003e\u003ccode\u003e2ea4b81\u003c/code\u003e\u003c/a\u003e Allow use of symbol for configuration top_namespace (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/491\"\u003e#491\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/351501e3e2ad4c46fafe60a4d9005072301e7693\"\u003e\u003ccode\u003e351501e\u003c/code\u003e\u003c/a\u003e Fix TypeError when generating errors a key that repeats in nested schemas (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/ec92f407239ea0dfae0267528b6d3466ce01cc86\"\u003e\u003ccode\u003eec92f40\u003c/code\u003e\u003c/a\u003e Accept updated AST structure from dry-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/5a2b1254f019a9e2bc0f220c6d723e3c0c62f9ec\"\u003e\u003ccode\u003e5a2b125\u003c/code\u003e\u003c/a\u003e Fix handling of I18n proc messages when returning hashes (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/493\"\u003e#493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/3abfb91470216e9dbeffe6ecf74148747293754e\"\u003e\u003ccode\u003e3abfb91\u003c/code\u003e\u003c/a\u003e Add tests for JSON schema predicate, fix \u003ccode\u003eformat?\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/b8fab3bef82d357218ed72a91012c1b9efb92edf\"\u003e\u003ccode\u003eb8fab3b\u003c/code\u003e\u003c/a\u003e Add missing JSON Schema predicates (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/380325d6978f36e5bbfd915ac3bbb63310bfa036\"\u003e\u003ccode\u003e380325d\u003c/code\u003e\u003c/a\u003e Add support for nested arrays with \u003ccode\u003econfig.validate_keys = true\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dry-rb/dry-schema/issues/508\"\u003e#508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-schema/commit/20320afd20cbbda924dacdebcee84668444c58aa\"\u003e\u003ccode\u003e20320af\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-schema/compare/v1.14.1...v1.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dry-types` from 1.8.3 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-types/releases\"\u003edry-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eparams.*\u003c/code\u003e with \u003ccode\u003e.optional\u003c/code\u003e can now handle empty strings consistently with \u003ccode\u003eoptional.params.*\u003c/code\u003e by returning \u003ccode\u003enil\u003c/code\u003e instead of raising an error. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/487\"\u003e#487\u003c/a\u003e, \u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/490\"\u003e#490\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis behavior is not enabled by default because it's a breaking change. Set \u003ccode\u003eDry::Types.use_namespaced_optionals(true)\u003c/code\u003e to enable it.\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; CoercionError\n# Activate namespaced optionals\nDry::Types.use_namespaced_optionals true\nDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; nil\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later.\u003c/li\u003e\n\u003cli\u003eSupport bigdecimal version 4.0 as well as 3.0, improving compatibility with other gems that require 4.0 only. (\u003ca href=\"https://github.com/rus-max\"\u003e\u003ccode\u003e@​rus-max\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/492\"\u003e#492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove sum type error handling documentation. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eConstructor#primitive?\u003c/code\u003e delegation for sum types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/484\"\u003e#484\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003ea = Types::String.constrained(size: 2) | Types::Hash\nb = Types::String.constrained(size: 1) | Types::Hash\n\u003cp\u003ec = (a.constructor { |x| x.is_a?(Hash) ? x : x.downcase }) |\n(b.constructor { |x| x.is_a?(Hash) ? x : x.upcase })\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Sum type \u003ccode\u003eto_s\u003c/code\u003e with Dry::Struct types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/485\"\u003e#485\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eclass A \u0026lt; Dry::Struct; end\nclass B \u0026lt; Dry::Struct; end\n\u003cp\u003e(A | B).to_s\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003eCompare v1.8.3 ... v1.9.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dry-rb/dry-types/blob/main/CHANGELOG.md\"\u003edry-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003e1.9.0\u003c/a\u003e - 2026-01-09\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eparams.*\u003c/code\u003e with \u003ccode\u003e.optional\u003c/code\u003e can now handle empty strings consistently with \u003ccode\u003eoptional.params.*\u003c/code\u003e by returning \u003ccode\u003enil\u003c/code\u003e instead of raising an error. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/487\"\u003e#487\u003c/a\u003e, \u003ca href=\"https://github.com/flash-gordon\"\u003e\u003ccode\u003e@​flash-gordon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/490\"\u003e#490\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis behavior is not enabled by default because it's a breaking change. Set \u003ccode\u003eDry::Types.use_namespaced_optionals(true)\u003c/code\u003e to enable it.\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; CoercionError\n# Activate namespaced optionals\nDry::Types.use_namespaced_optionals true\nDry::Types[\u0026quot;params.integer\u0026quot;].optional.(\u0026quot;\u0026quot;) # =\u0026gt; nil\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Ruby 3.2 or later.\u003c/li\u003e\n\u003cli\u003eSupport bigdecimal version 4.0 as well as 3.0, improving compatibility with other gems that require 4.0 only. (\u003ca href=\"https://github.com/rus-max\"\u003e\u003ccode\u003e@​rus-max\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/492\"\u003e#492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove sum type error handling documentation. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eConstructor#primitive?\u003c/code\u003e delegation for sum types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/484\"\u003e#484\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003ea = Types::String.constrained(size: 2) | Types::Hash\nb = Types::String.constrained(size: 1) | Types::Hash\n\u003cp\u003ec = (a.constructor { |x| x.is_a?(Hash) ? x : x.downcase }) |\n(b.constructor { |x| x.is_a?(Hash) ? x : x.upcase })\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix Sum type \u003ccode\u003eto_s\u003c/code\u003e with Dry::Struct types. (\u003ca href=\"https://github.com/baweaver\"\u003e\u003ccode\u003e@​baweaver\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dry-rb/dry-types/issues/485\"\u003e#485\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eThis now works without error:\u003c/p\u003e\n\u003cpre lang=\"ruby\"\u003e\u003ccode\u003eclass A \u0026lt; Dry::Struct; end\nclass B \u0026lt; Dry::Struct; end\n\u003cp\u003e(A | B).to_s\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/adb1373bea2ffe4943a358ab6b40810ccbbdf04b\"\u003e\u003ccode\u003eadb1373\u003c/code\u003e\u003c/a\u003e Prepare for v1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/e89c8054d8c0ab0f314d3eafbb9e7581c82c65ae\"\u003e\u003ccode\u003ee89c805\u003c/code\u003e\u003c/a\u003e Tweak CHANGELOG wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/f7aadd70b44934b2b3786d7aeb32b9c901c3bdb2\"\u003e\u003ccode\u003ef7aadd7\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/a4bf4c140ebe5e75360a2a3589011e37adccf2af\"\u003e\u003ccode\u003ea4bf4c1\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for v1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/9b295c7becac27db979401523efe50f023ede36a\"\u003e\u003ccode\u003e9b295c7\u003c/code\u003e\u003c/a\u003e Tidy CHANGELOG formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/61bb30d3138b57508116bd6c91487207b1e0d80d\"\u003e\u003ccode\u003e61bb30d\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/f3590ed9497a0b03416b58629e24faee5f11a671\"\u003e\u003ccode\u003ef3590ed\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/57b9848769004157cc50b3ea81b93ac6d1005eb3\"\u003e\u003ccode\u003e57b9848\u003c/code\u003e\u003c/a\u003e Fix rubocop issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/429dc9b06ea8a386c3bb5213213abfc075edddd2\"\u003e\u003ccode\u003e429dc9b\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dry-rb/dry-types/commit/87a3fb2119329a87e6c95b288a70744cf627ca42\"\u003e\u003ccode\u003e87a3fb2\u003c/code\u003e\u003c/a\u003e File sync from hanakai-rb/repo-sync\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dry-rb/dry-types/compare/v1.8.3...v1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faraday-gzip` from 3.0.4 to 3.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bodrovis/faraday-gzip/blob/master/CHANGELOG.md\"\u003efaraday-gzip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.0 (05-Jan-2026)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove handling of edge cases and malformed \u003ccode\u003eContent-Encoding\u003c/code\u003e headers\u003c/li\u003e\n\u003cli\u003eSupport multiple encodings and respect \u003ccode\u003eidentity\u003c/code\u003e responses\u003c/li\u003e\n\u003cli\u003eAvoid modifying streaming and non-string response bodies\u003c/li\u003e\n\u003cli\u003eNormalize response headers after decompression\u003c/li\u003e\n\u003cli\u003eUpdate and expand test coverage, test with Ruby 4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/ee7481faa294c0f9ed99aaf2890b93e5f262e04a\"\u003e\u003ccode\u003eee7481f\u003c/code\u003e\u003c/a\u003e v3.1.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/e9d1b032c4664c5cc6d4716b3f4d83bdc5583ddc\"\u003e\u003ccode\u003ee9d1b03\u003c/code\u003e\u003c/a\u003e prepare for a new version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/912f2c969f707b6a802bae81aadd918f4872c633\"\u003e\u003ccode\u003e912f2c9\u003c/code\u003e\u003c/a\u003e remove bundler dep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/23851b107c9a309ac23ea308eac6d5d61a2e8d48\"\u003e\u003ccode\u003e23851b1\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/bodrovis/faraday-gzip\"\u003ehttps://github.com/bodrovis/faraday-gzip\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/59fdb7f517f9687ab4ec228bfcf1c8103c1a494a\"\u003e\u003ccode\u003e59fdb7f\u003c/code\u003e\u003c/a\u003e update deps, test with ruby 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/7b956169377f26505a1051640d7ae85b03b89620\"\u003e\u003ccode\u003e7b95616\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/bodrovis/faraday-gzip/issues/5\"\u003e#5\u003c/a\u003e from bodrovis/dependabot/github_actions/master/actions/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/c7da1c9ad5a0e650cd6d175943d0d68f35b0ed91\"\u003e\u003ccode\u003ec7da1c9\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/3cc339230bc6d67c4f0cc0966f96c198420bf73d\"\u003e\u003ccode\u003e3cc3392\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of \u003ca href=\"https://github.com/bodrovis/faraday-gzip\"\u003ehttps://github.com/bodrovis/faraday-gzip\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/815124c92582124f1fa69e0867121a6ea4f947aa\"\u003e\u003ccode\u003e815124c\u003c/code\u003e\u003c/a\u003e bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bodrovis/faraday-gzip/commit/41fc9988367801028ba8ba25f49c42168a3b4cc2\"\u003e\u003ccode\u003e41fc998\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/bodrovis/faraday-gzip/issues/4\"\u003e#4\u003c/a\u003e from bodrovis/dependabot/github_actions/master/actions/...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bodrovis/faraday-gzip/compare/v3.0.4...v3.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `thor` from 1.4.0 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rails/thor/releases\"\u003ethor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd specs and linter documentation by \u003ca href=\"https://github.com/hlascelles\"\u003e\u003ccode\u003e@​hlascelles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/907\"\u003erails/thor#907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tree command by \u003ca href=\"https://github.com/hlascelles\"\u003e\u003ccode\u003e@​hlascelles\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/906\"\u003erails/thor#906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: support \u003ccode\u003einsert_into_file\u003c/code\u003e erroring if the file is not changed, and add \u003ccode\u003einsert_into_file\u003c/code\u003e by \u003ca href=\"https://github.com/G-Rath\"\u003e\u003ccode\u003e@​G-Rath\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/908\"\u003erails/thor#908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esupport THOR_MERGE values with arguments by \u003ca href=\"https://github.com/rafaelfranca\"\u003e\u003ccode\u003e@​rafaelfranca\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/910\"\u003erails/thor#910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHidden commands should not make an invocation ambiguous by \u003ca href=\"https://github.com/deivid-rodriguez\"\u003e\u003ccode\u003e@​deivid-rodriguez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/911\"\u003erails/thor#911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet frozen_string_literal: true in colors.rb by \u003ca href=\"https://github.com/tenderlove\"\u003e\u003ccode\u003e@​tenderlove\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/913\"\u003erails/thor#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix encoding error when running a merge tool by \u003ca href=\"https://github.com/moritzschepp\"\u003e\u003ccode\u003e@​moritzschepp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rails/thor/pull/916\"\u003erails/thor#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tenderlove\"\u003e\u003ccode\u003e@​tenderlove\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/913\"\u003erails/thor#913\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/912\"\u003erails/thor#912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moritzschepp\"\u003e\u003ccode\u003e@​moritzschepp\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/rails/thor/pull/916\"\u003erails/thor#916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/rails/thor/compare/v1.4.0...v1.5.0\"\u003ehttps://github.com/rails/thor/compare/v1.4.0...v1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/6a680f2f929cc24d61b81197e113066aa18c8fbb\"\u003e\u003ccode\u003e6a680f2\u003c/code\u003e\u003c/a\u003e Prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/615b0c29a411302104905cf8d81af02ca0cd4765\"\u003e\u003ccode\u003e615b0c2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/919\"\u003e#919\u003c/a\u003e from rails/rmf-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/f16a2dbf503c422da309c3f2bfccbf751ca61ddb\"\u003e\u003ccode\u003ef16a2db\u003c/code\u003e\u003c/a\u003e Unlock bundler development dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/7b99536daff00deea31787e2afe7dce6fefec602\"\u003e\u003ccode\u003e7b99536\u003c/code\u003e\u003c/a\u003e Test with Ruby 4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/2a1eecb4e8b6aff1aa2941308fb2199fdb61ebe6\"\u003e\u003ccode\u003e2a1eecb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/918\"\u003e#918\u003c/a\u003e from rails/dependabot/github_actions/actions/checkout-6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/ed9ffca4e99868b3e20239125a4885dd18ba04ad\"\u003e\u003ccode\u003eed9ffca\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/916\"\u003e#916\u003c/a\u003e from moritzschepp/ec-encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/5b85a330ba73c5c7be4f72ca949841c707feca54\"\u003e\u003ccode\u003e5b85a33\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/2e2b684b6e29497fa9299600d21cd3dc98cd34af\"\u003e\u003ccode\u003e2e2b684\u003c/code\u003e\u003c/a\u003e fix encoding error when running a merge tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/b2d98fea78fd993b936fc434a3ad722e73ad6bc5\"\u003e\u003ccode\u003eb2d98fe\u003c/code\u003e\u003c/a\u003e Remove whatisthor.com references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rails/thor/commit/17a3be95f40c255f12612c1491bccea4ca4a363f\"\u003e\u003ccode\u003e17a3be9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/rails/thor/issues/912\"\u003e#912\u003c/a\u003e from rails/dependabot/github_actions/actions/checkout-5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rails/thor/compare/v1.4.0...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/html2rss/html2rss.github.io/pull/1035","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/html2rss%2Fhtml2rss.github.io/issues/1035","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1035/packages"}}]}