Skip to content

v0.3.0 — Lexical 0.49, defined --liminis-editor-* aliases

Choose a tag to compare

@verveguy verveguy released this 21 Aug 19:22
· 701 commits to main since this release
4714f88

One breaking change, one addition, one fix — bundled deliberately so consumers take a single coordinated upgrade.

Breaking: Lexical peer range is now ^0.49.0

lexical and all eleven @lexical/* packages move from ^0.44.0 to ^0.49.0. The ranges do not overlap — a host on Lexical 0.44–0.48 must move its own Lexical family to 0.49 to install this version.

Lexical is a 0.x package, so ^0.44.0 resolved to >=0.44.0 <0.45.0 and excluded every 0.45+ release regardless of whether it was actually breaking. That pinned every host five minors behind with no published path forward.

The devDependencies move with the peers, so the version CI tests and the version the package promises are now the same thing. Whether to widen this into a band was considered and rejected: a 0.x range claiming six minors would assert compatibility nothing tests. The policy — bump the peer range with each adopted Lexical minor — is recorded in ADR-92. (#92)

Added: --liminis-editor-* names are now defined

Previously the package consumed --liminis-editor-* but defined only the legacy --vscode-* / --slashmd-* / --color-* / --checkbox-* names, so a host could override the new vocabulary but could not read it.

All 65 are now declared as aliases of their legacy counterparts:

:root { --liminis-editor-foreground: var(--vscode-foreground); }

Declaring them with literal values instead would have silently disabled the fallback layer from ADR-087 — every consumption chain would resolve at its first arm and stop honouring hosts that supply legacy names. Aliasing avoids that: hosts on legacy names keep working, hosts setting the new names win, and hosts reading the new names now get a value.

One documented limitation: because aliases are declared at the document root, a legacy override applied to a descendant element is not reflected through them. Both behaviours are pinned by e2e tests. See ADR-93. (#93)

Fixed: the editor no longer steals focus on every reload

CursorRestorePlugin called rootElement.focus() unconditionally on any contentVersion bump, so a reload the user did not initiate — an agent writing the file underneath them, for instance — pulled the caret into the editor. Focus is now restored only if the editor already had it. (#96)

Upgrading

pnpm add @liminis/editor@^0.3.0
pnpm add lexical@^0.49.0 @lexical/react@^0.49.0   # …and the rest of the family

Theming needs no change. If you want to migrate reads onto --liminis-editor-*, that is now possible for the first time.