All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Code formatting — new
codefeature flag and toolbar button with two modes:- Text selected → wraps in inline
<code> - No selection / cursor in a block → converts to
<pre>code block - Clicking again inside
<code>or<pre>removes the formatting (toggle) - Both
<code>and<pre>share the same visual style (monospace font, subtle background, accent border-left)
- Text selected → wraps in inline
- RTL / LTR direction — new
directionfeature flag adds two toolbar buttons:- Sets
dirattribute and matching inlinestyle(direction+text-align) directly on the current block element - Per-block direction — each paragraph or heading can have its own direction
- Toggle behavior — clicking the active direction button removes the direction
- One button is always highlighted: current block dir →
defaultDir→'ltr' - Direction is written as inline style so output renders correctly without the editor stylesheet
- Sets
defaultDirprop — sets the default text direction ('rtl'|'ltr') for the entire editor content area; useful for Persian / Arabic editors- New SVG icons:
IconDirectionRTL,IconDirectionLTR,IconCode
- Typing after clearing the editor produced bare text nodes not wrapped in
<p>—handleFocusnow inserts a<p><br></p>and positions the cursor inside when the editor is empty;handleInputalso catches any remaining bare text nodes and wraps them - Direction buttons previously used a
<div>wrapper approach which broke block detection when no saved range was present; rewritten to setdirdirectly on the block element and handle missing selection gracefully
- Theme system — new
themeprop ('classic'|'modern') andcolorSchemeprop ('light'|'dark') with full CSS variable support - Dark mode — all editor surfaces (toolbar, content area, modals, block editor, watermark footer) now respond to
colorScheme="dark" - Modern theme — dramatically distinct visual style: seamless white/zinc surfaces, pill-shaped tabs, larger hit targets, elevated modals
getThemeVars()utility exported fromconstantsfor building custom theme mapsThemeandColorSchemetypes exported from the package root
- Strikethrough toolbar icon appeared black in dark mode — SVG now uses
fill="currentColor" - Block editor outer wrapper and footer kept a hardcoded white background in dark mode — now inherits
var(--me-bg) - Watermark footer used hardcoded hex colors — replaced with themed CSS variables (
var(--me-statusbar-bg),var(--me-muted),var(--me-sep)) - Pressing Enter in the visual editor created
<div>elements instead of<p>— fixed by callingdefaultParagraphSeparatoron mount - Table deletion: removing the last row or column now removes the entire
<table>element instead of leaving an empty structure - Text editor (
htmltab) horizontal scroll — content now wraps within the editor bounds (white-space: pre-wrap,word-break: break-word) - Text editor styles were loaded via CSS Modules (hashed class names) — switched to plain class names so styles apply correctly in the published package
package.json./stylesexport now includes atypesfield — resolvests(2882)for side-effect import ofmandoo-editor/styles
- Resolve CSS class names for npm consumers (#2)
- Update Node.js version to 24 in CI workflow
- Initial release