Problem/Motivation
The 2.x branch supports ^9.3 || ^10 || ^11. To keep this range, it uses APIs that core deprecated (REQUIREMENT_* constants, hook_requirements(), RenderElement), procedural hooks and \Drupal::service() calls. It also has bugs in the settings form, config schema, caching and translation. It has no tests and no GitLab CI.
Proposed resolution
Create a new 3.x branch that requires Drupal ^11.2 and PHP 8.3. Do the work in the child issues below, one MR each. All children land before 3.0.0, so there is only one update path from 2.x.
2.x stays for Drupal 10 sites (and 11.0–11.1).
Why 11.2: RequirementSeverity and hook_runtime_requirements() exist from 11.2. With 11.2 as the minimum, no backwards compatibility code is needed.
Remaining tasks
- [x] Create the
3.xbranch and the 3.x-dev release. - [x] Require Drupal ^11.2 and PHP 8.3
- [x] Add GitLab CI
- [x] Replace deprecated requirements and render element APIs
- [x] Convert hooks to OOP hook classes
- [x] Settings changes do not reach cached pages
- [x] Settings form shows wrong defaults; use #config_target
- [x] Fix config schema types and add update hook
- [x] Toast titles cannot be translated
- [x] Add test coverage
- [x] Show JS messages (Drupal.Message) as toasts
- [x] Install iziToast with Composer
- [x] Update README and help page for 3.x
- [ ] Manual test on a site with 2.x config: update to 3.x, run
drush updb, check the status report, the settings form, normal, AJAX, BigPipe and JS messages. - [ ] Release 3.0.0-alpha1, then 3.0.0 after feedback.
- [ ] Update the project page: 3.x = Drupal 11.2+, 2.x = Drupal 10. Set 3.x as recommended.
User interface changes
Settings form fixes (see children). JS messages show as toasts. Screen readers announce server messages.
API changes
Drupal ^11.2 and PHP 8.3 only. IziMessage is no longer a render element class.
Data model changes
Config schema types fixed, with an update hook.
Comments
Comment #2
usingsessionComment #3
usingsessionComment #4
usingsession