While users are not often confronted with this, it's not uncommon that //some// whitespace in template transclusions is relevant. For example, templates often don't accept e.g. `{{example |content=* List}}` or `{{example |content= == Heading ==}}` but must be called like this:
```lang=html
{{example |content =
== Heading ==
}}
```
It appears like #Parsoid strips this critical newline character together with all other, non-critical whitespace. While #VisualEditor tries to avoid dirty diffs, there is nothing it can do when an intentional edit is made to such a field. From VE's perspective there was never a newline.
**Steps to reproduce**:
* Create a template with 2 parameters and the format `inline` (which corresponds to `{{_|_=_}}`)
* Using source code editing, include the template on a page, add a parameter and make the parameter's value start with an empty line followed by some text
* Using the VE template dialog, edit the template transclusion and change some of the text in this or the other parameter
* Apply the changes and save the page
**What happens?**
* The newline will be removed creating a dirty diff and possibly weird consequences for the transclusion
Example dirty diff that broke the page: https://de.wikipedia.org/wiki/Special:Diff/220481946. The template in this example is https://de.wikipedia.org/wiki/Template:Mehrspaltige_Liste.