Releases: software-mansion-labs/react-native-enriched-markdown
Releases · software-mansion-labs/react-native-enriched-markdown
v0.6.0
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
v0.5.0
What's Changed
New Features
- feat: add macOS support by @hryhoriiK97 in #163
- feat: implement EnrichedMarkdownInput by @hryhoriiK97 in #173
- feat: add custom context menu items for EnrichedMarkdownText and EnrichedMarkdownInput by @hryhoriiK97 in #190
- feat(ios): add SF Symbol icon support for context menu items by @hryhoriiK97 in #191
- feat: add auto-link detection by @hryhoriiK97 in #206
- feat: replace format bar with native context menu submenu by @hryhoriiK97 in #209
- feat: add web support by @hryhoriiK97 in #199
- feat: add spoiler support by @hryhoriiK97 in #215
- feat: add getCaretRect command and onCaretRectChange event by @hryhoriiK97 in #234
- feat(ios): improve VoiceOver focus precision with per-line accessibility paths by @hryhoriiK97 in #244
- feat(android): improve TalkBack accessibility with virtual view hierarchy and host focus fix by @hryhoriiK97 in #245
- feat: add list.markerMinWidth to align UL/OL/task lists by @mozharovsky in #248
Fixes & Improvements
- fix(ios): dismiss text selection when tapping non-interactive area by @hryhoriiK97 in #162
- fix(ios): don't include kUTIRTFD in the copy (#164) by @zwily in #165
- fix: github flavor always expanding to full width by @hryhoriiK97 in #176
- fix(ios): preserve contentView frame on input window attach by @hryhoriiK97 in #178
- fix: promote display math blocks from mixed paragraphs by @hryhoriiK97 in #179
- fix(ios): prevent VoiceOver crash on stale accessibility ranges by @hryhoriiK97 in #187
- fix(ios): preserve code block styles inside list items by @Mile-Away in #174
- fix: prevent paragraph break loss and formatting range drift (#193) by @hryhoriiK97 in #194
- fix(android): disable smart text selection to prevent ImageSpan crash by @hryhoriiK97 in #197
- fix(ios): update _lastSelectedRange in replaceSelectedTextWith to prevent formatting range shift by @jeongshin in #200
- fix(ios): handle NSData from pasteboard when pasting copied markdown by @hryhoriiK97 in #207
- fix/android-link-url-attribute by @hryhoriiK97 in #216
- fix: disable permissive autolinks in input parser by @hryhoriiK97 in #217
- fix(ios): guard onText against out-of-buffer pointers from md4c by @hryhoriiK97 in #218
- fix(ios): use bufferLength instead of originalLength for contentEnd by @hryhoriiK97 in #219
- fix(ios,android): skip delimiter matching inside link URL parentheses in InputRemend by @hryhoriiK97 in #220
- fix(ios,android): clear stacked delimiters inside link text when encountering ]( by @hryhoriiK97 in #221
- fix(ios): clamp formatting range offsets to text length in ENRMMarkdownSerializer by @hryhoriiK97 in #222
- fix(ios): update _lastSelectedRange in importMarkdown to prevent formatting corruption on first edit by @hryhoriiK97 in #223
- fix(android): move ktlint plugin out of shipped build.gradle by @hryhoriiK97 in #225
- fix(android): prevent scroll flicker in auto-grow mode by blocking scrollTo by @hryhoriiK97 in #235
- fix(macos): use correct textContainerInset properties for caret rect by @hryhoriiK97 in #247
- fix: add missing blank line in README by @hryhoriiK97 in #252
Refactors
- refactor(ios): simplify accessibility text element creation by @hryhoriiK97 in #188
- refactor: move example and macos-example into apps/ directory by @hryhoriiK97 in #189
- refactor(android): unify duplicated AST segment splitting into shared utility by @hryhoriiK97 in #228
- refactor(ios): extract shared text view setup, layout manager, and measurement helpers by @hryhoriiK97 in #229
- refactor(ios): extract shared text renderer by @hryhoriiK97 in #230
- refactor: extract shared view manager helpers into MarkdownViewManagerUtils by @hryhoriiK97 in #231
- refactor: rename spoilerMode to spoilerOverlay and update related implementations by @hryhoriiK97 in #238
- refactor: update spoiler style structure to use nested properties for particles and solid attributes by @hryhoriiK97 in #239
- refactor: streamline markdown rendering by introducing RenderedSegment and MarkdownSegmentRenderer by @hryhoriiK97 in #240
- refactor: rename EnrichedMarkdownInput to EnrichedMarkdownTextInput by @hryhoriiK97 in #256
- refactor: rename internal C++/ObjC symbols from MarkdownInput to MarkdownTextInput by @hryhoriiK97 in #258
Docs & Chores
- chore: update .gitignore and Podfile.lock for macOS support by @hryhoriiK97 in #166
- docs: fix incomplete sentence in MACOS.md by @hryhoriiK97 in #167
- fix(ci): drop --immutable from publish workflow yarn install by @hryhoriiK97 in #168
- fix(ci): disable immutable installs in publish workflow by @hryhoriiK97 in #169
- docs: add Markdown streaming support documentation and update README by @hryhoriiK97 in #170
- docs: update link to react-native-worklets documentation in MARKDOWN_STREAMING.md by @hryhoriiK97 in #171
- docs: add missing spoiler documentation and move spoiler syntax note … by @hryhoriiK97 in #237
- docs: add dark mode theming guide to STYLES.md and TEXT.md by @hryhoriiK97 in #259
- chore: add missing classes to Android baseline profile by @hryhoriiK97 in #261
- chore: update image link in README.md by @hryhoriiK97 in #263
New Contributors
- @zwily made their first contribution in #165
- @Mile-Away made their first contribution in #174
- @jeongshin made their first contribution in #200
- @mozharovsky made their first contribution in #248
Full Changelog: ...
v0.4.1
What's Changed
- feat: add expo config plugin (disable LaTeX Math) by @huextrat in #147
- fix(ios): respect link.underline: false on initial mount by @hryhoriiK97 in #150
- fix: unwrap consecutive latex/math blocks merged into a single paragraph by md4c by @hryhoriiK97 in #151
- chore: migrate to shared npm-package-publish by @hryhoriiK97 in #154
- fix(ios): restore view layout on remount and clamp measurement to layout constraints by @hryhoriiK97 in #155
- fix(ios): guard zero-width measurement and synchronize layout in recycled views by @hryhoriiK97 in #157
- chore: update dependencies and configurations across the project by @hryhoriiK97 in #158
- chore: migrate to yarn 4 and replace lefthook with official package by @hryhoriiK97 in #159
- chore: release 0.4.1 by @hryhoriiK97 in #160
New Contributors
Full Changelog: 0.4.0...0.4.1
v0.4.0
What's Changed
New Features
- feat: add support for LaTeX math rendering in markdown by @hryhoriiK97 in #119
- feat: add horizontal scroll to math blocks when content overflows by @hryhoriiK97 in #135
- feat: make iosMath and AndroidMath dependencies optional via build-time flags by @hryhoriiK97 in #136
- feat: implement image caching on Android and iOS by @hryhoriiK97 in #138
- feat: add streaming animation support for newly appended content by @hryhoriiK97 in #139
Fixes & Improvements
- fix(android): preserve nested renderer block style context by @longseespace in #115
- refactor(android): remove unused StyleConfig parameter from ListConte… by @hryhoriiK97 in #117
- fix(ios): solve block image aspect ratio issue by @hryhoriiK97 in #118
- fix(ios): update line height configuration in ListItemRenderer to use the same approach as paragraph by @hryhoriiK97 in #122
- fix(android): prevent crash when rendering LaTeX in tables on background thread by @hryhoriiK97 in #125
- fix(android): apply table fontSize to cell content instead of paragraph fontSize by @hryhoriiK97 in #126
- docs: enhance README with LaTeX math rendering details and usage notes by @hryhoriiK97 in #127
- fix(android): honor emphasisFontStyle normal without custom font family by @hryhoriiK97 in #128
- fix(android): exclude link color from preserve list when it matches paragraph color by @hryhoriiK97 in #129
- perf(ios): add measurement cache and reduce per-cell layout overhead by @hryhoriiK97 in #132
- fix(android): render table correctly when lineHeight is not specified by @hryhoriiK97 in #134
- fix(ios): prevent stale measurement when view content is out of sync by @hryhoriiK97 in #137
- fix: update display link frame rate to use maximum display refresh rate by @hryhoriiK97 in #141
- fix: prevent parent Pressable from firing onPress on link/task tap by @hryhoriiK97 in #143
- chore: update baseline profile with new spans and utilities by @hryhoriiK97 in #144
- fix: add ProGuard keep rules for AndroidMath and FreeType JNI classes by @hryhoriiK97 in #145
- chore: release 0.4.0 by @hryhoriiK97 in #146
New Contributors
- @longseespace made their first contribution in #115
Full Changelog: 0.3.0...0.4.0
v0.3.0
What's Changed
- feat: add table support by @hryhoriiK97 in #83
- feat: add autolinks support by @hryhoriiK97 in #87
- fix(ios): avoid Objective-C MarkdownParser symbol collision (#88) by @slavkolukic in #89
- feat: implement task list support by @hryhoriiK97 in #92
- fix: default inline code font-size to 1em and add customizable fontSize property by @hryhoriiK97 in #94
- fix: improve line break rendering by @hryhoriiK97 in #95
- feat: add fontFamily for link style by @hryhoriiK97 in #96
- feat: add RTL support for ordered/unordered lists and blockquote by @y0u-0 in #77
- feat: enhance RTL support by @hryhoriiK97 in #97
- feat(ci): add nightly builds workflow by @hryhoriiK97 in #98
- fix: remove unsupported YARN_ENABLE_HARDENED_MODE setting by @hryhoriiK97 in #99
- feat: optimize task list item handling by @hryhoriiK97 in #100
- docs: enhance README by @hryhoriiK97 in #101
- refactor(android): reorganize utility imports and remove deprecated Utils.kt by @hryhoriiK97 in #102
- feat: add font family and weight for strong, emphasis, inline code by @hryhoriiK97 in #104
- fix(ios): improve text measurement to align with React Native's Text by @hryhoriiK97 in #105
- refactor(ios): update paragraph spacing logic to handle marginTop correctly by @hryhoriiK97 in #106
- chore(android): update baseline profile by @hryhoriiK97 in #112
- docs: update README with nightly build installation instructions by @hryhoriiK97 in #113
- chore: release 0.3.0 by @hryhoriiK97 in #114
New Contributors
- @slavkolukic made their first contribution in #89
- @y0u-0 made their first contribution in #77
Full Changelog: 0.2.1...0.3.0
v0.2.1
What's Changed
- docs: add Future Plans section by @hryhoriiK97 in #84
- fix: add ProGuard consumer rules by @hryhoriiK97 in #85
- chore: release 0.2.1 by @hryhoriiK97 in #86
Full Changelog: 0.2.0...0.2.1
v0.2.0
What's Changed
- chore: simplify CMake by @exploIF in #58
- fix(ios): apply paragraph marginBottom for document-level paragraphs by @magrinj in #62
- fix: return actual markdown content width by @hryhoriiK97 in #59
- fix: disable scroll indicators by @hryhoriiK97 in #57
- feat: implement strikethrough rendering by @hryhoriiK97 in #48
- feat: add text align support for headings and paragraphs by @hryhoriiK97 in #61
- feat: add underline support in Markdown rendering by @hryhoriiK97 in #64
- feat: add marginTop support for block elements in Markdown rendering by @hryhoriiK97 in #65
- feat: add font scaling support by @hryhoriiK97 in #66
- feat: add screen reader support by @hryhoriiK97 in #67
- fix(ios): rename image attachment to avoid duplicate symbol by @hryhoriiK97 in #71
- feat: add allowTrailingMargin prop by @hryhoriiK97 in #73
- feat: onLinkLongPress in EnrichedMarkdownText by @hryhoriiK97 in #75
Breaking changes
- isSelectable has been renamed to selectable.
New Contributors
Full Changelog: v0.1.1...0.2.0
Release v0.1.1
react-native-enriched-markdown is officially here!
Please take a moment to review the README for the full API reference and setup instructions. We’ve made it easy for you to dive in and start testing the Markdown input yourself.
We can't wait to hear what you think!