diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 9bec3b2d3431..d399e41dca3e 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: CodeIgniter Forum
url: https://forum.codeigniter.com/forum-30.html
- about: Please ask your support questions in the forums. Thanks!
+ about: Please ask your support questions and/or feature requests in the forums. Thanks!
- name: CodeIgniter Slack channel
url: https://codeigniterchat.slack.com
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 3bd2d0a6c44f..000000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-name: Feature request
-about: How to submit a feature request
-title: ''
-labels: ''
-assignees: ''
-
----
-
-Please submit feature requests to our [forum](https://forum.codeigniter.com/forum-29.html).
-We use github issues to track bugs and planned work.
diff --git a/.github/ISSUE_TEMPLATE/planned-work.md b/.github/ISSUE_TEMPLATE/planned-work.md
index 4faa45ed874e..3da11a7dbc58 100644
--- a/.github/ISSUE_TEMPLATE/planned-work.md
+++ b/.github/ISSUE_TEMPLATE/planned-work.md
@@ -1,10 +1,10 @@
---
name: Planned work
-about: Approved work planning
+about: Maintainers' space. DO NOT use this for your bug reports!
title: 'Dev: '
labels: dev
assignees: ''
---
-Repo maintainers will create "issues" for planned work, so it can be tracked.
+Maintainers will create "issues" for planned work, so it can be tracked.
diff --git a/.github/mergeable.yml b/.github/mergeable.yml
new file mode 100644
index 000000000000..d23053efa3e2
--- /dev/null
+++ b/.github/mergeable.yml
@@ -0,0 +1,41 @@
+# https://mergeable.readthedocs.io/en/latest/configuration.html
+
+version: 2
+mergeable:
+ - when: issues.opened
+ validate:
+ - do: description
+ and:
+ - must_include:
+ regex: '^### PHP Version'
+ - must_include:
+ regex: '^### CodeIgniter4 Version'
+ - do: author
+ and:
+ - must_exclude:
+ regex: 'kenjis'
+ - must_exclude:
+ regex: 'lonnieezell'
+ - must_exclude:
+ regex: 'MGatner'
+ - must_exclude:
+ regex: 'michalsn'
+ - must_exclude:
+ regex: 'paulbalandan'
+ - must_exclude:
+ regex: 'samsonasik'
+ fail:
+ - do: comment
+ payload: |
+ Hi there! :wave:
+
+ It looks like you opened an issue without following the bug report template:
+
+ Bug report ([open an issue](https://github.com/codeigniter4/CodeIgniter4/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=Bug%3A+))
+
+ If you are opening a feature request or support question, please do so in the [forums](https://forum.codeigniter.com/forum-30.html).
+
+ The current issue will be closed. This is a precaution to save maintainers' time, I hope you'll understand.
+
+ Sincerely, the mergeable bot π€
+ - do: close
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e423ad54d961..d31f829aec39 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## [v4.5.7](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.7) (2024-12-31)
+[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.6...v4.5.7)
+
+### Fixed Bugs
+
+* fix: handle namespaced helper found on Common helper by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9354
+* fix: `Forge::dropColumn()` always returns `false` on SQLite3 driver by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9351
+
+### Refactoring
+
+* refactor: enable AddArrowFunctionReturnTypeRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9343
+
## [v4.5.6](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.6) (2024-12-28)
[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.5...v4.5.6)
diff --git a/app/Views/errors/cli/error_exception.php b/app/Views/errors/cli/error_exception.php
index 2bf1459d4094..624f3b5b0600 100644
--- a/app/Views/errors/cli/error_exception.php
+++ b/app/Views/errors/cli/error_exception.php
@@ -50,7 +50,7 @@
$function .= $padClass . $error['function'];
}
- $args = implode(', ', array_map(static fn ($value) => match (true) {
+ $args = implode(', ', array_map(static fn ($value): string => match (true) {
is_object($value) => 'Object(' . $value::class . ')',
is_array($value) => $value !== [] ? '[...]' : '[]',
$value === null => 'null', // return the lowercased version
diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml
index 686c89010971..5a287a06f294 100644
--- a/phpdoc.dist.xml
+++ b/phpdoc.dist.xml
@@ -10,7 +10,7 @@
api/cache/
-
+