Skip to content

Releases: software-mansion/enriched-markdown

v1.0.1

Choose a tag to compare

@eszlamczyk eszlamczyk released this 13 Aug 13:20

What's Changed

New Features

  • feat: allow opting out of tree-sitter & RaTeX downloads via package.json by @eszlamczyk in #661

Refactors

  • refactor: download vendored assets at postinstall to reduce package size by @hryhoriiK97 in #660

Full Changelog: v1.0.0...main

v1.0.0

Choose a tag to compare

@eszlamczyk eszlamczyk released this 13 Aug 09:53

What's Changed

New Features

  • feat(input): block-editing pipeline foundation by @wildseansy in #460
  • feat(input): heading blocks (H1-H6) on the block pipeline by @wildseansy in #497
  • feat(input): import block ranges on paste by @wildseansy in #498
  • feat(input): heading toolbar support — toggleHeading command, active-state, empty-line persistence by @wildseansy in #499
  • feat(ios): render in-paragraph display math instead of dropping its delimiters by @EthanCai9568 in #537
  • feat(ios): voiceover read contents of input element by @eszlamczyk in #526
  • feat: add horizontalOverflow style prop for edge-to-edge scrollable tables by @hryhoriiK97 in #542
  • feat: custom image request headers by @eszlamczyk in #544
  • feat: add maxHeight, aspectRatio and resizeMode to block image styling by @eszlamczyk in #539
  • feat: space between list items by @eszlamczyk in #578
  • feat: support saving original image by @eszlamczyk in #548
  • feat: centering of entire tables by @eszlamczyk in #554
  • feat(input): rebased version of "list state, toolbar, docs, and e2e (lists 5/5)" by @hsource in #545
  • feat: support loading local images by @eszlamczyk in #588
  • feat: on key press support by @eszlamczyk in #584
  • feat: match rn textinput keyboard-dismiss behavior on taps outside the input by @eszlamczyk in #597
  • feat(ios): port parser module to ios by @graszka22 in #556
  • feat(ios): add markdown theme system by @graszka22 in #557
  • feat(ios): add AST-to-attributed-string renderer by @graszka22 in #558
  • feat(ios): add EnrichedMarkdownText SwiftUI view by @graszka22 in #559
  • feat(ios): add async parse and render for EnrichedMarkdownText by @graszka22 in #560
  • feat(ios): add heading rendering and theme by @graszka22 in #562
  • feat(ios): add link rendering, theme, and onLinkPress by @graszka22 in #563
  • feat(ios): add line break rendering by @graszka22 in #564
  • feat(ios): add inline code rendering and theme by @graszka22 in #565
  • feat(ios): add image rendering, theme, and attachments by @graszka22 in #566
  • feat(ios): add block rendering layout infrastructure by @graszka22 in #567
  • feat(ios): add thematic break rendering and theme by @graszka22 in #568
  • feat(ios): add code block rendering and theme by @graszka22 in #569
  • feat(ios): add blockquote rendering and theme by @graszka22 in #570
  • feat(ios): add list rendering and theme by @graszka22 in #571
  • feat(ios): add custom font support to markdown theme by @graszka22 in #572
  • feat: implement gfm style codeblock by @eszlamczyk in #607
  • feat: padding and broderradius for blockquotes by @eszlamczyk in #601
  • feat: expose insert text method by @eszlamczyk in #613
  • feat(ios): expose md4cFlags and add strikethrough/underline rendering by @maksg in #627
  • feat: add hardSoftBreaks md4cFlags option by @hryhoriiK97 in #632
  • feat(ios): add markdown extractor for selection-to-markdown conversion by @maksg in #638
  • feat(ios): add Copy as Markdown and Copy Image URL selection menu items by @maksg in #639
  • feat: codeblock highlight colors by @eszlamczyk in #624
  • feat: tressiter for colored codeblocks by @eszlamczyk in #625
  • feat: cleaner, smaller code block copy button by @eszlamczyk in #633
  • feat: add onCopyPress event for code block copy by @eszlamczyk in #634
  • feat(ios): show Select All in selection menu when the system omits it by @maksg in #642
  • feat: codeblock streaming by @eszlamczyk in #648
  • feat: implement jest mock by @eszlamczyk in #614
  • feat: add enableTaskListItemToggle prop to EnrichedMarkdownText by @CodingItWrong in #651

Fixes & Improvements

  • fix: include README, LICENSE, and docs in npm package by @hryhoriiK97 in #483
  • fix(expo): build config plugin separately from main lib by @huextrat in #488
  • fix(ios): dedupe RaTeX XCFramework signature for Xcode 26 archive (#491) by @hryhoriiK97 in #492
  • fix(android): adjust blockStore on all text mutations for iOS parity by @hryhoriiK97 in #500
  • fix(input): handle zero-length heading anchors in formatter and serializer (#505) by @hryhoriiK97 in #505
  • fix(ios): sync typing attributes after text edit to fix heading cursor on Enter (#506) by [@hryhoriiK97](https://gith...
Read more

v0.7.4

Choose a tag to compare

@eszlamczyk eszlamczyk released this 09 Jul 16:35

What's Changed

  • fix(build): fix x86_64 simulator build and spm_dependency guard #531 @eszlamczyk

Full Changelog: v0.7.3...v0.7.4

v0.7.3

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 02 Jul 18:41
effa534

What's Changed

Full Changelog: v0.7.2...v0.7.3

v0.7.2

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 02 Jul 13:42
168bced

What's Changed

  • fix(expo): build config plugin separately from main lib by @huextrat in #488
  • chore(expo): move config plugin source out of src to avoid double compilation by @hryhoriiK97 in #489
  • chore: release 0.7.2 by @hryhoriiK97 in #490

Full Changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 02 Jul 11:25
e12d168

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@eszlamczyk eszlamczyk released this 02 Jul 10:42
8f18abd

What's Changed

New Features

  • feat: forward nativeID and testID to the native input by @PierreCapo in #376
  • feat: add ==highlight== inline spans with markdownStyle.highlight by @hryhoriiK97 in #389
  • feat: add different markers for nested unordered list by @eszlamczyk in #390
  • feat(android): replace math engine with RaTeX by @eszlamczyk in #355
  • feat(ios): integrate RaTeX for LaTeX math rendering, replacing iosMath by @hryhoriiK97 in #357
  • feat: add line break and text break props by @eszlamczyk in #374
  • feat(ios): better RTL support for text by @eszlamczyk in #398
  • feat(ios): input element detect RTL by @eszlamczyk in #400
  • feat: add selectionMenuConfig prop to EnrichedMarkdownTextInput by @hryhoriiK97 in #408
  • feat: add formatMenuConfig prop for per-item format submenu control by @hryhoriiK97 in #409
  • feat: localize selection menu labels via selectionMenuLabels prop by @marcellov7 in #415
  • feat(android): add parser AST JNI bridge by @graszka22 in #427
  • feat(android): add UI style config and unit tests by @graszka22 in #428
  • feat(android): add UI foundation text utils by @graszka22 in #429
  • feat(android): add image cache and downloader utils by @graszka22 in #430
  • feat(android): add markdown spans and renderer by @graszka22 in #431
  • feat(android): add TextView selection and link helpers by @graszka22 in #432
  • feat(android): add EnrichedMarkdownText entry point by @graszka22 in #433
  • feat(android): add TalkBack accessibility for markdown TextView by @graszka22 in #434
  • feat(input): treat links/mentions as atomic for selection and caret by @andreavrr in #454
  • feat(android): add Compose font registry bridge by @graszka22 in #448
  • feat(android): add Compose markdown style DSL by @graszka22 in #449
  • feat(android): add EnrichedMarkdownText Compose component by @graszka22 in #450
  • feat(android): expand native example app with compose demo by @graszka22 in #452
  • feat(android): add "Copy as markdown" functionality by @graszka22 in #464
  • feat(input): localize format & selection submenu labels by @eszlamczyk in #443
  • feat(android): add copy as html feature by @graszka22 in #465
  • feat: voiceover & talkback labels by @eszlamczyk in #470
  • feat: copyToClipboard ref method for EnrichedMarkdownTextInput by @mvanhorn in #461

Fixes & Improvements

  • fix: remove podfile lock removal from ci by @eszlamczyk in #358
  • fix(ci): fix iOS build by removing stale codegen reset by @hryhoriiK97 in #363
  • fix(plugin): use named imports from @expo/config-plugins so the plugin loads under tsx/cjs by @hknakn in #356
  • fix(android): task list press not working by @eszlamczyk in #370
  • fix(ios): remove whitespace in code block for padding 0 by @eszlamczyk in #372
  • fix(ios): border radius for code block being segmented by @eszlamczyk in #373
  • fix: dont emit empty inline marker pair around bare newline by @eszlamczyk in #402
  • fix(ios): preserve active formatting during predictive text suggestions by @hryhoriiK97 in #406
  • fix(ios): replace per-cell UITextView with single drawRect pass for tables by @hryhoriiK97 in #418
  • fix(android): prevent colorsToPreserve from blocking inline style colors by @hryhoriiK97 in #419
  • fix(ios): code block background border radius by @eszlamczyk in #411
  • fix(android): measure rendered plain text in InputMeasurementStore.initialMeasure, not raw markdown by @andreavrr in #422
  • fix(input): autoFocus on Android places caret at end and opens keyboard (parity with iOS) by @andreavrr in #425
  • fix(macos): resolve build errors and disable math until use_frameworks is supported by @hryhoriiK97 in #440
  • fix(android): preserve blank lines between paragraphs in input parser (parity with iOS) by @andreavrr in #436
  • fix(ios): keep link variant color when a font style is toggled on a mention by @andreavrr in #446
  • fix(ios): stop bold/italic handlers from overwriting link variant colors by @hryhoriiK97 in #453
  • fix(android): InputRemend mishandles combined bold+italic *** delimiter by @multiplechuks in #447
  • fix: resolve modal flicker on Android after setting raw markdown by @hryhoriiK97 in #469
  • fix(ios): add font attribute to inline math attachments by @eliotgevers in #459
  • fix(ios): prevent inline math fractions from being clipped by maximumLineHeight by @hryhoriiK97 in #445
  • fix: stricter default guards by [@eszlamczyk](https://github...
Read more

v0.6.0

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 26 May 09:28
30b49d2

What's Changed

New Features

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

New Contributors

Read more

v0.5.0

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 23 Apr 10:46

What's Changed

New Features

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

Full Changelog: ...

Read more

v0.4.1

Choose a tag to compare

@hryhoriiK97 hryhoriiK97 released this 16 Mar 15:00
d83e38f

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