ScribeJS 1.0.1 - NOW IS LIVE!

ScribeJS 1.0.1 - NOW IS LIVE!

posted 1 min read

Docs/Demo: https://scribejs.top/docs

Highlights

Cross-browser toolbar state is now identical across Chrome, Firefox, and Safari.

✨ New Features

Polling safety net — 100ms interval force-refreshes toolbar state while focused, with JSON-diff guard to avoid unnecessary re-renders
formatChange event — emitted synchronously after every command execution and DOM normalization
Command registry — metadata-driven toolbars with icons, labels, shortcuts, groups, and active() functions
React wrapper — ref-based API with getHTML(), setHTML(), bold(), italic(), etc.
Bug Fixes

Safari: Selection no longer lost when clicking toolbar buttons (save/restore cycle)
Firefox: Toolbar state updates reliably despite selectionchange timing gaps (multi-event pipeline)
All browsers: Toolbar state detected via DOM tree walk instead of deprecated queryCommandState
All browsers: 5-phase DOM normalizer ensures consistent HTML output
Tests

37 toolbar-state tests (command metadata, group ordering, format state)
Selection manager tests (save/restore, collapsed vs range, cross-browser shims)
Normalizer tests (all 5 phases with edge cases)
⚠️ Known Limitations

Mobile Safari/Chrome: basic support, touch interaction edge cases remain
IME input: untested with CJK composition
Shadow DOM: not supported

Plugin for GrapesJS: https://github.com/GoodPHP/grapesjs-plugin-scribejs

GitHub: https://github.com/GoodPHP/scribejs

1 Comment

1 vote
0

More Posts

Your Tech Stack Isn’t Your Ceiling. Your Story Is

Karol Modelskiverified - Apr 9

5 Web Dev Pitfalls That Are Silently Killing Your Projects (With Real Fixes)

Dharanidharan - Mar 3

What Is an Availability Zone Explained Simply

Ijay - Feb 12

ScribeJS — Free, Modern Inline RTE

DevFuture - Feb 6

TypeScript 6.0 is Here — The Bridge to 10x-Faster Native TypeScript 7.0

Vikrant - Apr 13
chevron_left

Related Jobs

View all jobs →

Commenters (This Week)

7 comments
2 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!