Commit Graph

53955 Commits

Author SHA1 Message Date
Stefano Arlandini
1ef44ae7c6 [Cache] Support a custom serializer in the ApcuAdapter class 2021-03-28 08:28:53 +02:00
Fabien Potencier
b2e46a92a9 Fix typo 2021-03-27 16:08:04 +01:00
Fabien Potencier
912d3e58b4 feature #40449 [TwigBridge] add tailwindcss form layout (kbond)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[TwigBridge] add tailwindcss form layout

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | todo

Per @weaverryan's [call to action on twitter](https://twitter.com/weaverryan/status/1369654724107067392) and slack discussion.

It's been tricky to create a generic form layout for tailwind as it's a css *utility framework* and has an unlimited number of ways to style forms. With tailwindcss 2.0, the tailwind team released an [official form plugin](https://github.com/tailwindlabs/tailwindcss-forms) that provides form element reset/normalization that looks decent out of the box. This PR is an attempt to piggy-back on this plugin to provide a minimal Symfony form layout for tailwind. The goal is to have your forms look good in a tailwind/Symfony app with no customization (but of course allow customization as desired).

This layout **requires** tailwindcss 2 and the form plugin.

I followed the ["unstyled" demo](https://tailwindcss-forms.vercel.app/) for the form plugin as a style guide. Here is a screenshot of this layout used in [a demo Symfony app](https://github.com/kbond/symfony-tailwind) with several common form types (I'll try to keep this updated as I update the PR):
![New-Post](https://user-images.githubusercontent.com/127811/112684961-3d2cc380-8e4a-11eb-8e43-0c08d2eecd7a.png)

Some notes about the layout:
1. I tried to use as few tailwind classes as possible and avoid color (primary exception being the error color).
2. I decided on a mobile-first approach so out of the box, it will look decent on any device and drastically reduces the number of css classes/assumptions.
3. While other layouts merge classes passed by the user, I opted to replace. This ensures the user doesn't have to _undo_ the class decisions made by this layout. I also discovered "undoing" doesn't work as I expected anyway: `class="mt-1 mt-0"`, `mt-1` "wins" as `mt-1` comes later in the compiled stylesheet.
4. For the _low level_ blocks, I extracted the classes into their own "variables" (`row_class`, `widget_class`, `label_class`, `help_class`, `error_item_class`) to make it easier to extend and customize the layout. Note the `widget_disabled_class`/`widget_errors_class` variables: these are added even if you've overridden the `widget_class` variable.

### Customization

Customizing is especially important for this layout. Here are the two ways:
1. Twig form functions:
    ```twig
    {{ form_row(form.title, {
        row_class: 'my row classes',
        label_class: 'my label classes',
        error_item_class: 'my error item classes',
        widget_class: 'my widget classes',
        widget_disabled_class: 'my disabled widget classes',
        widget_errors_class: 'my widget with error classes',
    }) }}
    ```
2. Project specific form layout:
    ```twig
    {% use 'tailwind_2_layout.html.twig' %}

    {%- block form_row -%}
        {%- set row_class = row_class|default('my row classes') -%}
        {{- parent() -}}
    {%- endblock form_row -%}

    {%- block widget_attributes -%}
        {%- set widget_class = widget_class|default('my widget classes') -%}
        {%- set widget_disabled_class = widget_disabled_class|default('my disabled widget classes') -%}
        {%- set widget_errors_class = widget_errors_class|default('my widget with error classes') -%}
        {{- parent() -}}
    {%- endblock widget_attributes -%}

    {%- block form_label -%}
        {%- set label_class = label_class|default('my label classes') -%}
        {{- parent() -}}
    {%- endblock form_label -%}

    {%- block form_help -%}
        {%- set help_class = help_class|default('my label classes') -%}
        {{- parent() -}}
    {%- endblock form_help -%}

    {%- block form_errors -%}
        {%- set error_item_class = error_item_class|default('my error item classes') -%}
        {{- parent() -}}
    {%- endblock form_errors -%}
    ```

#### Customization POC/Demo

With this custom form theme:
```twig
{%- block form_label -%}
    {%- set label_class = label_class|default('block text-gray-500 uppercase tracking-wider text-sm font-bold') -%}
    {{- parent() -}}
{%- endblock -%}

{%- block widget_attributes -%}
    {%- set widget_class = widget_class|default('mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50') -%}
    {{- parent() -}}
{%- endblock -%}

{%- block checkbox_widget -%}
    {%- set widget_class = widget_class|default('mr-2 rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-offset-0 focus:ring-indigo-200 focus:ring-opacity-50') -%}
    {{- parent() -}}
{%- endblock -%}

{%- block checkbox_label -%}
    {%- set label_class = label_class|default('block text-gray-800') -%}
    {{- block('form_label') -}}
{%- endblock -%}
```

The above example looks like this:
![New-Post (3)](https://user-images.githubusercontent.com/127811/112705040-657ce800-8e73-11eb-965f-de289e9b978a.png)

Commits
-------

3719a409b6 [TwigBridge] add tailwindcss form layout
2021-03-27 16:07:06 +01:00
Kevin Bond
3719a409b6 [TwigBridge] add tailwindcss form layout 2021-03-27 16:06:57 +01:00
Robin Chalas
9abeb248a5 minor fix component path in codeowners 2021-03-26 09:24:59 +01:00
Robin Chalas
0d08a2127c minor #40584 [PasswordHasher] The $algorithms array is only used when $algorithm is set (rosier)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[PasswordHasher] The $algorithms array is only used when $algorithm is set

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Small tweak

Commits
-------

0144d0a151 The $algorithms array is only used when $algorithm is set
2021-03-25 18:47:47 +01:00
Robin Chalas
d91e176335 add me as password-hasher code owner 2021-03-25 18:46:26 +01:00
Jan Rosier
0144d0a151 The $algorithms array is only used when $algorithm is set 2021-03-25 17:57:36 +01:00
Robin Chalas
2dcf313a87 feature #40567 [Security] Move the badges resolution check to AuthenticatorManager (chalasr)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Security] Move the badges resolution check to `AuthenticatorManager`

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no (BC breaks on experimental code)
| Tickets       | Fixes #40491
| License       | MIT
| Doc PR        | -

Commits
-------

532f4aaa8e [Security] Move the badges resolution check to `AuthenticatorManager`
2021-03-24 15:58:59 +01:00
Robin Chalas
532f4aaa8e [Security] Move the badges resolution check to AuthenticatorManager 2021-03-24 13:36:59 +01:00
Robin Chalas
4e85380d2f minor [Contracts] Fix branch name in README.md links 2021-03-24 00:28:01 +01:00
Nicolas Grekas
314ef9fb88 [Security/Http] conflict with symfony/security-bundle < 5.3 2021-03-23 22:56:56 +01:00
Nicolas Grekas
c9a8c6ff60 Fix tests 2021-03-23 22:40:36 +01:00
Nicolas Grekas
620989dac1 feature #40300 [HttpFoundation] Add support for mysql unix_socket and charset in PdoSessionHandler::buildDsnFromUrl (bcremer, Nyholm)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[HttpFoundation] Add support for mysql unix_socket and charset in PdoSessionHandler::buildDsnFromUrl

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix https://github.com/symfony/symfony/issues/40290
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Commits
-------

f4e50fb1c7 [HttpFoundation] Add support for mysql unix_socket and charset in PdoSessionHandler::buildDsnFromUrl
2021-03-23 22:34:09 +01:00
Benjamin Cremer
f4e50fb1c7 [HttpFoundation] Add support for mysql unix_socket and charset in PdoSessionHandler::buildDsnFromUrl 2021-03-23 22:32:01 +01:00
Nicolas Grekas
3bf6798031 feature #40153 [Security] LoginLink with specific locale (roromix)
This PR was squashed before being merged into the 5.3-dev branch.

Discussion
----------

[Security] LoginLink with specific locale

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        |

I have added the possibility to create a login link for a specific locale. It's useful when we want generate a link for an other user who isn't in the same locale of us.

Commits
-------

50673c5321 [Security] LoginLink with specific locale
2021-03-23 22:14:39 +01:00
Roromix
50673c5321 [Security] LoginLink with specific locale 2021-03-23 22:14:25 +01:00
Nicolas Grekas
4e3ae2d58e feature #40489 [Serializer] Add a Custom End Of Line in CSV File (xfifix)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Serializer] Add a Custom End Of Line in CSV File

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| License       | MIT
| Doc PR        | -

Commits
-------

20f03677e3 [Serializer] Add a Custom End Of Line in CSV File
2021-03-23 22:11:04 +01:00
Nicolas Grekas
7f640123cb feature #40554 [Contracts] Add TranslatorInterface::getLocale() (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Contracts] Add `TranslatorInterface::getLocale()`

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | yes
| Tickets       | Fix #40380
| License       | MIT
| Doc PR        | -

As discussed in https://github.com/symfony/symfony/issues/40380

Commits
-------

45d9a36794 [Contracts/Translation] Add `TranslatorInterface::getLocale()`
2021-03-23 22:10:30 +01:00
Nicolas Grekas
45b53fee14 feature #40556 Add #[As-prefix] to service attributes (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

Add `#[As-prefix]` to service attributes

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This PR renames all existing attributes with the `As` prefix, as I proposed several times already.

This should help autocompletion, and it's required to not collide with existing class names (eg the `Command` class, but also the old `Controller` class, etc.)

I think this `As` prefix is a convention for the better.

Commits
-------

4f1318963a Add `#[As-prefix]` to service attributes
2021-03-23 22:09:38 +01:00
Nicolas Grekas
ea58a157e1 Merge branch '5.2' into 5.x
* 5.2:
  [travis] remove cache of composer.lock for deps=low
  Fix comment with typo
2021-03-23 22:05:31 +01:00
Nicolas Grekas
36cc161adc Merge branch '4.4' into 5.2
* 4.4:
  [travis] remove cache of composer.lock for deps=low
  Fix comment with typo
2021-03-23 22:05:22 +01:00
Nicolas Grekas
55637fb409 minor #40559 [travis] remove cache of composer.lock for deps=low (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[travis] remove cache of composer.lock for deps=low

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Let's hope that Composer 2 made this fast enough. Maintaining this script might not be worth it anymore.

Reverts #28146

Commits
-------

9ba015d236 [travis] remove cache of composer.lock for deps=low
2021-03-23 22:05:01 +01:00
Nicolas Grekas
d158d22b5c minor #40560 [Filesystem] Fix comment with typo (sebpacz)
This PR was merged into the 4.4 branch.

Discussion
----------

[Filesystem] Fix comment with typo

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | ---
| License       | MIT
| Doc PR        | ---

Commits
-------

96a05daf7e Fix comment with typo
2021-03-23 22:03:03 +01:00
Nicolas Grekas
9ba015d236 [travis] remove cache of composer.lock for deps=low 2021-03-23 21:57:14 +01:00
sebpacz
96a05daf7e Fix comment with typo 2021-03-23 21:55:00 +01:00
Nicolas Grekas
8975f833ae Merge branch '5.2' into 5.x
* 5.2:
  fix reported class when deprecated method is static
2021-03-23 21:42:45 +01:00
Nicolas Grekas
5e9644fae4 Merge branch '4.4' into 5.2
* 4.4:
  fix reported class when deprecated method is static
2021-03-23 21:42:04 +01:00
Nicolas Grekas
cdc1087943 minor #40558 [PhpUnitBridge] fix reported class when deprecated method is static (xabbuh)
This PR was merged into the 4.4 branch.

Discussion
----------

[PhpUnitBridge] fix reported class when deprecated method is static

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

aa80df609f fix reported class when deprecated method is static
2021-03-23 21:41:31 +01:00
Christian Flothmann
aa80df609f fix reported class when deprecated method is static 2021-03-23 21:33:06 +01:00
Robin Chalas
3640a889d5 feature #40555 [HttpKernel] Add #[AsController] attribute for declaring standalone controllers on PHP 8 (nicolas-grekas)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[HttpKernel] Add `#[AsController]` attribute for declaring standalone controllers on PHP 8

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

This PR adds an `#[AsController]` attribute to allow autoconfiguring controllers even when they don't extend `AbstractController`. This should allow removing the line about `controller.service_arguments` in `services.yaml` to cover this need (but that is noise to most.)

Commits
-------

437f5feb45 [HttpKernel] Add `#[AsController]` attribute for declaring listeners on PHP 8
2021-03-23 21:08:54 +01:00
Nicolas Grekas
019e29b339 Merge branch '5.2' into 5.x
* 5.2:
  [travis] use packagist API v2
  [translation] Fix update existing key with existing +int-icu domain
  [Contracts] Fix branch name in README.md links
2021-03-23 20:34:00 +01:00
Nicolas Grekas
7a972c43c2 Merge branch '4.4' into 5.2
* 4.4:
  [travis] use packagist API v2
  [translation] Fix update existing key with existing +int-icu domain
  [Contracts] Fix branch name in README.md links
2021-03-23 20:33:48 +01:00
Nicolas Grekas
3d1c59ae7f minor #40557 [travis] use packagist API v2 (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[travis] use packagist API v2

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

af43ca080b [travis] use packagist API v2
2021-03-23 20:33:33 +01:00
Nicolas Grekas
af43ca080b [travis] use packagist API v2 2021-03-23 20:31:36 +01:00
Nicolas Grekas
4f1318963a Add #[As-prefix] to service attributes 2021-03-23 18:57:16 +01:00
Nicolas Grekas
437f5feb45 [HttpKernel] Add #[AsController] attribute for declaring listeners on PHP 8 2021-03-23 18:56:31 +01:00
Nicolas Grekas
45d9a36794 [Contracts/Translation] Add TranslatorInterface::getLocale() 2021-03-23 17:28:16 +01:00
Nicolas Grekas
1665555dd5 bug #40552 [Translation] Fix update existing key with existing +int-icu domain (Alexis)
This PR was merged into the 4.4 branch.

Discussion
----------

[Translation] Fix update existing key with existing +int-icu domain

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       |  none
| License       | MIT
| Doc PR        | none

Using php-translation webui interface, I was trying to update an existing +int-icu domain but a regular domain was created and the existing key wasn't updated. Looks like in the method I modified, we should have been looking for a potential domain+intl-icu domain and try update it first

Commits
-------

2a196ca0dc [translation] Fix update existing key with existing +int-icu domain
2021-03-23 17:25:13 +01:00
Alexis
2a196ca0dc [translation] Fix update existing key with existing +int-icu domain 2021-03-23 17:25:01 +01:00
Robin Chalas
2c99518454 minor #40553 [Contracts] Fix branch name in README.md links (chalasr)
This PR was merged into the 4.4 branch.

Discussion
----------

[Contracts] Fix branch name in README.md links

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

c5c47f11a4 [Contracts] Fix branch name in README.md links
2021-03-23 17:08:21 +01:00
Robin Chalas
c5c47f11a4 [Contracts] Fix branch name in README.md links 2021-03-23 16:25:38 +01:00
Robin Chalas
c752257be3 Merge branch '5.2' into 5.x
* 5.2:
  [Console] minor fix
  [Command] fix emojis messing up the line width
  [Validator] Avoid triggering the autoloader for user-input values
  Hardening Security - Unserialize DumpDataCollector
  Security hardening - Rate limiter
  [FrameworkBundle] ensure TestBrowserToken::$firewallName is serialized
  Fixed parsing deprecated definitions without message key
  improve login throttling rate limiter requirement message
  [HttpClient] remove using $http_response_header
  [Security] Handle properly 'auto' option for remember me cookie security
2021-03-23 15:20:07 +01:00
Robin Chalas
2da27bbd27 feature #40550 [Notifier] Move abstract test cases to namespace (OskarStark)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Notifier] Move abstract test cases to  namespace

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no (only fixes builds)
| New feature?  | yes (not sure about a changeling entry)
| Deprecations? | no
| Tickets       | Fix #... <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License       | MIT
| Doc PR        | no

This enables BC promise for the abstract test classes, like for other ones.

As we ignore current `/Tests` directory in `.gitattributes`, builds will fail if `symfony/notifier` is installed as dist.

Commits
-------

33ba3c755d [Notifier] Move abstract test cases to  namespace
2021-03-23 15:00:06 +01:00
Nicolas Grekas
e494b389f3 bug #40541 Fixed parsing deprecated definitions without message key (adamwojs)
This PR was merged into the 5.2 branch.

Discussion
----------

Fixed parsing deprecated definitions without message key

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

### Steps to reproduce

1. Create service/alias definition and mark it as deprecated without specifying message key as shown in https://symfony.com/doc/5.2/service_container/alias_private.html#deprecating-service-aliases. For example:

```yaml
services:
    service_without_deprecation_message:
        class: Foo
        deprecated:
            package: vendor/package
            version: 1.1

    alias_without_deprecation_message:
        alias: foobar
        deprecated:
            package: vendor/package
            version: 1.1
```

2. Clear cache by running `php bin/console cache:clear`

### Actual behaviour

`Symfony\Component\Config\Exception\LoaderLoadException` exception is thrown with the following message: `Warning: Undefined array key "message" (...)`

See https://gist.github.com/adamwojs/5bac85d4326d8fbe6f52a357fa6e57e6 for full stactrace.

### Excepted behaviour

Given definitions are loaded correctly. Default service/alias deprecation message is used as shown in linked documentation page.

Commits
-------

d585b64953 Fixed parsing deprecated definitions without message key
2021-03-23 13:46:26 +01:00
Nicolas Grekas
88d222d856 Merge branch '4.4' into 5.2
* 4.4:
  [Console] minor fix
  [Validator] Avoid triggering the autoloader for user-input values
  Hardening Security - Unserialize DumpDataCollector
  [HttpClient] remove using $http_response_header
  [Security] Handle properly 'auto' option for remember me cookie security
2021-03-23 13:45:44 +01:00
Nicolas Grekas
55bd7f4be4 feature #40530 [Uid] Handle predefined namespaces keywords "dns", "url", "oid" and "x500" (fancyweb)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[Uid] Handle predefined namespaces keywords "dns", "url", "oid" and "x500"

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Before: `uuid:generate --name-based="https://symfony.com" --namespace=6ba7b811-9dad-11d1-80b4-00c04fd430c8`
After: `uuid:generate --name-based="https://symfony.com" --namespace=url`

Same for FWB configuration.

Commits
-------

ede46ac13a [Uid] Handle predefined namespaces keywords "dns", "url", "oid" and "x500"
2021-03-23 13:33:35 +01:00
Nicolas Grekas
9a8e2c2625 bug #40537 [Security] Handle properly 'auto' option for remember me cookie security (fliespl)
This PR was merged into the 4.4 branch.

Discussion
----------

[Security] Handle properly 'auto' option for remember me cookie security

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #40471
| License       | MIT
| Doc PR        | n/a

Manually setting remember_me cookie secure as auto is still is being set as secure one even if used over http.

This PR fixes this behaviour by converting auto to null prior setting it up for service.

Commits
-------

2bcf69c071 [Security] Handle properly 'auto' option for remember me cookie security
2021-03-23 13:31:44 +01:00
Nicolas Grekas
7eb4db6d9d [Console] minor fix 2021-03-23 13:24:21 +01:00
Nicolas Grekas
1044c0bd4b bug #40524 [Console] fix emojis messing up the line width (MarionLeHerisson)
This PR was submitted for the 5.x branch but it was merged into the 5.2 branch instead.

Discussion
----------

[Console] fix emojis messing up the line width

| Q             | A
| ------------- | ---
| Branch?       | 5.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix https://github.com/symfony/symfony/issues/37904
| License       | MIT

Description
========

The emojis, because they take as much space as two characters, would cause the console to display too many spaces to complete a line, which made it uneven, as described in the issue.

The fix uses the `width` function instead of `strlen`. To answer @ogizanagi's comment, yes it does work with "composed" emojis.

Before :

![image](https://user-images.githubusercontent.com/11477247/111832081-9d72b100-88f0-11eb-8eda-65ee480c898d.png)

After :

![image](https://user-images.githubusercontent.com/11477247/111832103-a6638280-88f0-11eb-802e-838d97f61c81.png)

Other changes
==========

Removed two unused lines of code, the value of `$messageLineLength` was never used.

Note
====
I'd like to add some tests, but I don't know how since I think this depends on console client width ?

Thanks for your reviews 🙏

Commits
-------

36b36dcecc [Command] fix emojis messing up the line width
2021-03-23 13:19:25 +01:00