You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Text surrounding a KirbyTag is now escaped segment by segment, so literal markup next to a (tag: …) can no longer be emitted as raw HTML
New
Bold, italic and strike can now be applied to KirbyTags. Partial formatting is normalised to the whole tag
Formatting buttons are now disabled inside inline code
Fixes
Link and file dialogs no longer corrupt KirbyTags whose attribute values contain colons. The Panel now splits attributes exactly like Kirby's KirbyTag::parse()
Paragraphs split correctly around block-level KirbyTag output, no more <figure> inside <p>
The character counter counts reader-visible text and now matches minlength/maxlength validation
min/maxlength now counts decoded, rendered characters multibyte-correctly
Custom nodes without a snippet warn and render their children instead of silently disappearing (throws in debug mode)
Link/file buttons are enabled when the cursor sits directly before a KirbyTag
The file dialog reliably preselects the current file, also in folders with more than 20 files
File picker keeps selections made on other pages instead of dropping them at submit; search resets to the first page correctly
Editing a file tag's attributes keeps the original reference instead of rewriting filenames to UUIDs
Task items render without a nested paragraph, matching list items
Single-node documents (headings, horizontal rules, registry atoms) are no longer discarded as "empty"
Plain-text / legacy field values now render the way the editor shows them instead of being blanked
Render failures are logged and degrade gracefully (and re-thrown in debug mode) instead of silently blanking the field
Heading offset now recurses into headings nested in blockquotes, lists, etc.
Empty list items render without an undefined-key warning
Roving tabindex initializes correctly when toolbar buttons load asynchronously; unknown toolbar buttons now warn in the console
Toolbar border radius is correct for buttons wrapped in dropdowns
tiptap:convert now skips content that's already Tiptap JSON and converts every language on multilang sites
Heading level is clamped to 1–6 before output, preventing tag-name injection via a crafted level attribute
KirbyTags inside a code block or inline code are not being parsed anymore
Other changes
Updated Tiptap to 3.27
The Remove button now only appears in the link dialog, where it replaces the tag with its text
The two-columns extension example ships frontend snippets
Simple toolbar buttons are defined in the button registry, removing 11 wrapper components
Toolbar shortcuts are registered as ProseMirror keymaps