What's Changed
New Features
- feat: custom selection color by @xindixu in #250
- feat(macos): support selectionColor via NSTextView.selectedTextAttributes by @hryhoriiK97 in #265
- feat: add GFM streaming support for tables and block math by @hryhoriiK97 in #270
- feat: add selectionMenuConfig prop to control built-in selection menu items by @hryhoriiK97 in #285
- feat: create test playground + introduce navigation by @eszlamczyk in #275
- feat: add superscript and subscript markdown spans by @hryhoriiK97 in #274
- feat: add mention support for text and input by @hryhoriiK97 in #327
- feat: create storybook by @eszlamczyk in #321
Fixes & Improvements
- fix(android): span with background should show up inside blockquotes by @xindixu in #253
- fix(web): narrow selectionColor type to string by @hryhoriiK97 in #266
- fix(ios): prevent crash when deleting mixed selection or using IME input by @hryhoriiK97 in #277
- fix(ios): use controlled path for Cut to prevent formatting corruption by @hryhoriiK97 in #278
- fix(android): correct insertion boundary in FormattingStore and add serializer bounds check by @hryhoriiK97 in #279
- fix(android): use ceil for split-segment width to match commonmark path and rendered TextView by @istarkov in #282
- fix(ios): break retain cycle between renderers and RendererFactory by @mgmx-io in #284
- fix(ios): pin measured width to maxWidth for multiline content by @hryhoriiK97 in #291
- fix(android): prevent duplicate-URL images from sharing a single ImageSpan by @hryhoriiK97 in #297
- fix(web): use span instead of div for display math to prevent invalid p>div nesting by @hryhoriiK97 in #298
- fix(android): skip LineHeightSpan on block image lines to prevent clipping and overlap by @hryhoriiK97 in #300
- fix(ios): reverse dealloc order in ENRMTailFadeInAnimator to prevent use-after-free by @hryhoriiK97 in #302
- fix(ios): assert on regex compilation failure in ENRMAutoLinkDetector by @hryhoriiK97 in #303
- fix: skip streaming animations when Reduce Motion is enabled by @rhnmht30 in #325
- fix(ios): reset state in prepareForRecycle on both host components by @rhnmht30 in #324
- fix(web): raise WASM stack size + enable memory growth by @bobbyg603 in #329
- fix(android): use value animators are animators enabled for reduced motion by @eszlamczyk in #333
- fix(ios): reset _props in prepareForRecycle to fix streaming animation on remount by @hryhoriiK97 in #334
- fix(android): update tail fade in animation to not reset by @eszlamczyk in #335
- fix(ci): include library native sources in turbo cache inputs by @hryhoriiK97 in #336
- fix(ios): use mock view for measurement when style changes are pending by @hryhoriiK97 in #343
- fix(android): defer setText until view is attached to prevent NPE in checkForResize by @hryhoriiK97 in #344
- fix(android): avoid duplicate libc++ in instrumentation builds by @hryhoriiK97 in #345
- fix(android): prevent duplicate input context menu items by @hryhoriiK97 in #347
Refactors
- refactor(ios): centralize selectionColor application into ENRMApplySelectionColor by @hryhoriiK97 in #264
- refactor(web): centralize <style> injection via injectStyleOnce + global tokens by @hryhoriiK97 in #267
- refactor(android): guard selection color setters against no-op writes by @hryhoriiK97 in #268
- refactor: rename example apps bundle id by @eszlamczyk in #290
- refactor(ios): introduce BaseRenderer base class to eliminate duplicated ivar blocks and init by @hryhoriiK97 in #304
- refactor(ios): extract ENRMFontSlot to unify font cache invalidation in StyleConfig by @hryhoriiK97 in #305
- refactor: extract requestHeightUpdate into a shared C++ template by @hryhoriiK97 in #307
- refactor: extract async render queue and stale-result cancellation into ENRMAsyncRenderCoordinator by @hryhoriiK97 in #308
- refactor: extract emit helpers for link, task list, and context menu events by @hryhoriiK97 in #309
- refactor: change default streamingConfig.tableMode from 'hidden' to 'progressive' by @hryhoriiK97 in #332
Docs & Chores
- chore: bump version to 0.5.0 by @hryhoriiK97 in #262
- docs: add selectionColor + selectionHandleColor to API reference by @hryhoriiK97 in #269
- chore: setup boilerplate for maestro tests by @eszlamczyk in #288
- test: maestro text block elements tests by @eszlamczyk in #299
- docs: add missing yarn prepare by @radoslawrolka in #301
- test: introduce better test structure and create inline elements tests by @eszlamczyk in #306
- chore: add new keywords to package.json by @hryhoriiK97 in #313
- test: introduce block combinations tests by @eszlamczyk in #317
- chore: bump react-native to 0.85.3 in example app by @hryhoriiK97 in #318
- docs: add Compatibility Table to README for supported React Native versions by @hryhoriiK97 in #319
- test: introduce configs to e2e tests by @eszlamczyk in #315
- test: introduce input elements test by @eszlamczyk in #316
- test: tag tests properly by @eszlamczyk in #320
- chore: adapt example app for demo by @eszlamczyk in #340
- chore: add new event classes for mention handling in markdown input by @hryhoriiK97 in #350
- chore: release 0.6.0 by @hryhoriiK97 in #349
New Contributors
- @xindixu made their first contribution in #253
- @istarkov made their first contribution in #282
- @mgmx-io made their first contribution in #284
- @radoslawrolka made their first contribution in #301
- @rhnmht30 made their first contribution in #325
- @bobbyg603 made their first contribution in #329
Full Changelog: v0.5.0...0.6.0