package.json has @tiptap/markdown: ^3.20.0, but package-lock.json pins 3.21.0. That version drops a backslash escape along with the character it was protecting, so saving an entry deletes content the user never touched.
Because the pin is only in the lockfile, npm ci and npm install behave differently:
npm ci, the documented install, gets 3.21.0 and loses characters on save
npm install on a fresh clone resolves a current 3.x and does not
Reproduction, on a rich-text field:
| Content |
After one save on 3.21.0 |
**\* Catchers in the Rye** |
asterisk gone |
industry\* |
asterisk gone |
1\) First point |
closing paren gone |
The user does not have to edit the affected line. Opening an entry and saving is enough.
Fixed in 3.29.2, where tiptap replaced its markdown engine. Refreshing the lockfile is the whole change, since package.json already allows it. We run 3.29.2 in a fork and next build compiles and type-checks clean with no other dependency movement.
I can open a PR with just the lockfile refresh. I also have a small offline harness that replays the editor round-trip over a content directory and reports which files a save would change, if that is useful to the project.
One implementation (so far), more to come, love it, thank you.
package.jsonhas@tiptap/markdown: ^3.20.0, butpackage-lock.jsonpins 3.21.0. That version drops a backslash escape along with the character it was protecting, so saving an entry deletes content the user never touched.Because the pin is only in the lockfile,
npm ciandnpm installbehave differently:npm ci, the documented install, gets 3.21.0 and loses characters on savenpm installon a fresh clone resolves a current 3.x and does notReproduction, on a
rich-textfield:**\* Catchers in the Rye**industry\*1\) First pointThe user does not have to edit the affected line. Opening an entry and saving is enough.
Fixed in 3.29.2, where tiptap replaced its markdown engine. Refreshing the lockfile is the whole change, since
package.jsonalready allows it. We run 3.29.2 in a fork andnext buildcompiles and type-checks clean with no other dependency movement.I can open a PR with just the lockfile refresh. I also have a small offline harness that replays the editor round-trip over a content directory and reports which files a save would change, if that is useful to the project.
One implementation (so far), more to come, love it, thank you.