|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +# [2.3.0](https://github.com/getformwork/formwork/releases/tag/2.3.0) |
| 4 | + |
| 5 | +**Enhancements** |
| 6 | +- **Add Events functionality** |
| 7 | +- **Add Plugins functionality** |
| 8 | +- **Add support for AVIF images** |
| 9 | +- **Expose error messages in the panel for invalid fields after submission** |
| 10 | +- **Add Hungarian and Swedish translations** (🤖 AI generated, reviews are welcome) |
| 11 | +- **Improve dark color scheme styles in the panel** |
| 12 | +- **Add new `Authenticator` service to decouple authentication from panel** |
| 13 | +- **Implement PSR-3 compatible `Logger`** |
| 14 | +- **Implement PSR-11 `ContainerInterface`** |
| 15 | +- **Implement PSR-14 `EventDispatcherInterface`** |
| 16 | +- Store validated data with `Model::set()` if there is a corresponding field |
| 17 | +- Correctly set `ReadonlyModelProperty` attribute to avoid unexpected changes to model properties |
| 18 | +- Move fields initialization and validation to `Page::load()` |
| 19 | +- Add the possibility to create pages from the constructor by retrieving `App` instance if not provided |
| 20 | +- Sync page data with fields in `Page::load()` |
| 21 | +- Add `Config::hasMultiple()` |
| 22 | +- Add `Config::getMultiple()` |
| 23 | +- Add `Config::set()` and `Config::setMultiple()` |
| 24 | +- Add `Schemes::getMultiple()` and `Schemes::getAll()` |
| 25 | +- Add `Translations::getMultiple()` and `Translations::getAll()` |
| 26 | +- Allow Scheme extension with `Scheme::extend()` and `Scheme::extendWith()` |
| 27 | +- Set validated status even if validation fails |
| 28 | +- Add context to `InvalidValueException` |
| 29 | +- Add the possibility to get translated validation error |
| 30 | +- Add styles for invalid fields |
| 31 | +- Add the possibility to pass route actions parameters |
| 32 | +- Add view namespaces |
| 33 | +- Make Assets a service resolving namespaced resources |
| 34 | +- Add the possibility to set `NavigationItem` visibility in the panel |
| 35 | +- Add the possibility to specify config prefix with `Config::loadFile()` and `Config::loadFromPath()` |
| 36 | +- Add `Arr::extend()`, `Arr::override()` and `Arr::exclude()` to handle data with more consistency |
| 37 | +- Add default values support to field config files |
| 38 | +- Add `Form` class to streamline incoming data process and validation |
| 39 | +- Add Plugins views to panel |
| 40 | +- Add specific exception classes for `Image` |
| 41 | +- Add `User::save()`, `User::delete()` and `User::deleteImage()` |
| 42 | +- Add custom session handler |
| 43 | +- Add the possibility to specify the number of retry attempts (by default 10) of the `serve` command to bind to an available port |
| 44 | +- Improve panel navigation spacing |
| 45 | +- Improve panel header styles |
| 46 | +- Use consistent border-radius and box-shadow values in panel styles |
| 47 | +- Improve array input spacing and sortable styles in panel |
| 48 | +- Use click event instead of mousedown to avoid unexpected actions in the panel |
| 49 | +- Allow `Container::buildArguments()` to use default values for unspecified classes, interfaces and support variadic parameters |
| 50 | +- Add the possibility to set auto color scheme to the panel login |
| 51 | +- Avoid processing HTTP ranges for responses requiring empty content |
| 52 | + |
| 53 | +**Bug fixes** |
| 54 | +- Allow and return an appropriate value for empty non-required fields |
| 55 | +- Correctly merge dotted keys with `Config::loadFile()` |
| 56 | +- Ignore empty values passed to `Html::classes()` |
| 57 | +- Iterate all fields to ensure all validations are run in `FieldCollection::isValid()` |
| 58 | +- Validate unique slug with unspecified root |
| 59 | +- Fix HTTP Range handling for file responses (RFC 7233–compliance and Safari compatibility) |
| 60 | +- Define default section for layoutless schemes |
| 61 | +- Clear image transforms after processing images in `Image::saveAs()` |
| 62 | +- Fix `serve` command failing with log messages containing brackets |
| 63 | +- Fix config service loading with missing cache/config folder |
| 64 | +- Fix translations service loading with missing site/translations folder |
| 65 | +- Normalize and ensure `Panel::route()` is inside the panel root |
| 66 | +- Fix no tab selection from invalid local storage value in the panel interface |
| 67 | +- Fix backtrace frame dumping for unreflectable functions |
| 68 | +- Handle potential exceptions when initializing contentFile in Page class |
| 69 | +- Correctly add tooltips to panel editor toolbar commands |
| 70 | +- Check if site/files is a directory before getting files |
| 71 | +- Fix metadata prefix set even if a colon is not present in the name |
| 72 | +- Fix `DomSanitizer::sanitizeUri()` throwing exception for valid empty values |
| 73 | +- Remove leading and trailing whitespace with `Text::normalizeWhitespace()` |
| 74 | +- Return empty array if input is empty with `Text::splitWords()` |
| 75 | +- Fix discarded stdout/stderr data while serving pages with the `serve` command |
| 76 | +- Always close connections and restore error handlers in the `Client` class |
| 77 | +- Always close streams in `FileResponse::send()` |
| 78 | +- Avoid errors for undefined data keys in `Str::interpolate()` |
| 79 | +- Set correct 403 Forbidden status when CSRF token is invalid on XHR requests |
| 80 | +- Ensure `MimeType::fromFile()` is given a readable file |
| 81 | +- Check if file was actually uploaded in `FileUploader::upload()` |
| 82 | + |
| 83 | +**Security** |
| 84 | +- Normalize assets paths to avoid directory traversal |
| 85 | +- Avoid potentially broken "deflate" responses and throw on unsupported content encodings |
| 86 | + |
| 87 | +**Deprecations** |
| 88 | +- Poorly-named `$dateField->toDuration()` deprecated in favor of `$dateField->toTimeDistance()` |
| 89 | +- `Log` class deprecated in favor of the new PSR-3 compatible `Logger` |
| 90 | +- Page setter methods deprecated in favor of using `$page->set()` |
| 91 | +- `Page::isSlugEditable()` and `Page::isSlugReadonly()` |
| 92 | +- `Panel::assets()` in favor of the `Assets` service |
| 93 | +- `system.panel.loginAttempts` and `system.panel.loginResetTime` options in favor of `system.authentication.limits.maxAttempts` and `system.authentication.limits.resetTime` |
| 94 | +- `system.panel.sessionDuration` option in favor of `system.session.duration` |
| 95 | + |
3 | 96 | # [2.2.2](https://github.com/getformwork/formwork/releases/tag/2.2.2) |
4 | 97 |
|
5 | 98 | **Enhancements** |
|
0 commit comments