From 3815fd5976c8fbe3a568a1f372454bf1f90201c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguye=CC=82=CC=83n=20Tua=CC=82=CC=81n=20Vie=CC=A3=CC=82t?= Date: Wed, 1 Apr 2026 21:14:58 +0700 Subject: [PATCH 1/9] fix: Fix for issue 5 --- CHANGELOG.md | 6 ++++++ README.md | 17 ++++++++++++++++- example/android/build.gradle.kts | 13 +++++++++++++ pubspec.yaml | 2 +- pubspec_publish_ready.yaml | 2 +- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 393c8f3..f3e460e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [1.2.2] - 2026-04-01 + +### 🐛 Bug Fixes + +- **Android build failure with modern compileSdk** (`example/android/build.gradle.kts`): `irondash_engine_context 0.5.5` was compiled against android-31 but its transitive `androidx.fragment:1.7.1` dependency has `minCompileSdk=34`, causing AGP 8's `checkAarMetadata` to block the build. Added a `subprojects { afterEvaluate { compileSdk = 35 } }` override in the example's root Gradle file. README now documents the same one-line workaround for app-level projects. ([#5](https://github.com/brewkits/hyper_render/issues/5)) + ## [1.2.1] - 2026-03-31 ### 🏗️ Maintenance diff --git a/README.md b/README.md index 50f3639..e8404e8 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ ```yaml dependencies: - hyper_render: ^1.2.1 + hyper_render: ^1.2.2 ``` ```dart @@ -53,6 +53,21 @@ HyperViewer( Zero configuration. XSS sanitization is **on by default**. +> **Android note:** `hyper_render` depends on `super_clipboard` which transitively pulls in `irondash_engine_context`. That library was compiled against Android SDK 31, but its `androidx.fragment:1.7.1` dependency requires `compileSdk ≥ 34`. Add this one-time workaround to your `android/build.gradle.kts`: +> +> ```kotlin +> // android/build.gradle.kts (root — not app/build.gradle.kts) +> subprojects { +> afterEvaluate { +> extensions.findByType(com.android.build.gradle.LibraryExtension::class.java)?.apply { +> compileSdk = 35 +> } +> } +> } +> ``` +> +> This overrides `compileSdk` for all library sub-projects so AGP's `checkAarMetadata` passes. Tracked in [#5](https://github.com/brewkits/hyper_render/issues/5). + --- ## 🏗️ Why Switch? The Architecture Argument diff --git a/example/android/build.gradle.kts b/example/android/build.gradle.kts index dbee657..4d2adaf 100644 --- a/example/android/build.gradle.kts +++ b/example/android/build.gradle.kts @@ -19,6 +19,19 @@ subprojects { project.evaluationDependsOn(":app") } +// Workaround: irondash_engine_context 0.5.5 was compiled against android-31 but +// transitively requires androidx.fragment:1.7.1 which has minCompileSdk=34. +// AGP 8 checkAarMetadata blocks the build. Override compileSdk for all library +// subprojects so the check passes. +// Tracked: https://github.com/brewkits/hyper_render/issues/5 +subprojects { + afterEvaluate { + extensions.findByType(com.android.build.gradle.LibraryExtension::class.java)?.apply { + compileSdk = 35 + } + } +} + tasks.register("clean") { delete(rootProject.layout.buildDirectory) } diff --git a/pubspec.yaml b/pubspec.yaml index 506b76f..8ada20a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: hyper_render description: "Render HTML/Markdown/Delta at 60 FPS. The only Flutter renderer with CSS float layout, crash-free text selection, and CJK Ruby typography. Drop-in flutter_html alternative." -version: 1.2.1 +version: 1.2.2 homepage: https://github.com/brewkits/hyper_render repository: https://github.com/brewkits/hyper_render issue_tracker: https://github.com/brewkits/hyper_render/issues diff --git a/pubspec_publish_ready.yaml b/pubspec_publish_ready.yaml index 1a25d77..6e2acd6 100644 --- a/pubspec_publish_ready.yaml +++ b/pubspec_publish_ready.yaml @@ -1,6 +1,6 @@ name: hyper_render description: "Render HTML/Markdown/Delta at 60 FPS. The only Flutter renderer with CSS float layout, crash-free text selection, and CJK Ruby typography. Drop-in flutter_html alternative." -version: 1.2.1 +version: 1.2.2 homepage: https://github.com/brewkits/hyper_render repository: https://github.com/brewkits/hyper_render issue_tracker: https://github.com/brewkits/hyper_render/issues From e61dc6a3b2ded6a570b8bc1ceafc7cd027060626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguye=CC=82=CC=83n=20Tua=CC=82=CC=81n=20Vie=CC=A3=CC=82t?= Date: Thu, 2 Apr 2026 11:32:01 +0700 Subject: [PATCH 2/9] fix: resolve 8 bugs + bump version to 1.2.2 Android build (#5): - Add subprojects compileSdk=35 override in example/android/build.gradle.kts to fix irondash_engine_context vs androidx.fragment:1.7.1 mismatch SVG invisible with sanitize:true (html_sanitizer.dart): - Add atomic SVG sanitization path (_sanitizeSvgElement, _sanitizeSvgAttributes) preserving structural elements while stripping scripts/dangerous attrs HyperRenderConfig equality (hyper_render_config.dart): - Add operator== and hashCode to prevent identity-compare re-layouts on every frame when _effectiveConfig merges keyframes into a new object selectable toggle ignored after build (hyper_viewer.dart): - Create/dispose VirtualizedSelectionController in didUpdateWidget when selectable prop changes Deep-link tap silently blocked (hyper_viewer.dart): - _safeOnLinkTap now checks both allowedCustomSchemes AND renderConfig.extraLinkSchemes CSS change did not invalidate section cache (hyper_viewer.dart): - Reset _sectionHashes in didUpdateWidget when customCss changes Markdown/Delta single-section in virtualized/paged mode (hyper_viewer.dart): - Add _splitIntoSections() helper; sync fallback now chunks at block boundaries renderConfig change only partially detected (hyper_viewer.dart): - didUpdateWidget uses full renderConfig != instead of only virtualizationChunkSize CSS float class names not detected (html_adapter.dart): - _containsFloatChild now recognises Bootstrap/Tailwind float class patterns Misc: - Fix unused element _containsPositionAbsoluteOrFixed in html_heuristics.dart - Add .pubignore entries for archive/, coverage/, .metadata, pubspec_dev.yaml - dart format all changed files --- .pubignore | 10 + CHANGELOG.md | 9 +- example/lib/reader_app/book_model.dart | 23 +- example/lib/reader_app/reader_screen.dart | 570 +++++++++--------- lib/src/parser/html/html_adapter.dart | 14 + lib/src/utils/html_heuristics.dart | 33 +- lib/src/utils/html_sanitizer.dart | 49 ++ lib/src/widgets/hyper_viewer.dart | 122 +++- .../lib/src/core/hyper_render_config.dart | 34 ++ .../lib/src/core/render_hyper_box.dart | 3 +- .../lib/src/core/render_hyper_box_layout.dart | 139 +++-- .../lib/src/core/render_hyper_box_paint.dart | 66 +- .../lib/src/core/render_hyper_box_types.dart | 48 +- .../test/layout_optimization_test.dart | 61 ++ 14 files changed, 753 insertions(+), 428 deletions(-) create mode 100644 packages/hyper_render_core/test/layout_optimization_test.dart diff --git a/.pubignore b/.pubignore index f586661..f98b86e 100644 --- a/.pubignore +++ b/.pubignore @@ -43,6 +43,16 @@ scripts/ # Internal publish helpers pubspec.yaml.backup pubspec_publish_ready.yaml +pubspec_dev.yaml + +# Flutter .metadata files (auto-generated, not useful to consumers) +.metadata + +# Internal archive / historical comparison docs +archive/ + +# Coverage artifacts +coverage/ # IDE files *.iml diff --git a/CHANGELOG.md b/CHANGELOG.md index f3e460e..dd86993 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,17 @@ # Changelog -## [1.2.2] - 2026-04-01 +## [1.2.2] - 2026-04-02 ### 🐛 Bug Fixes - **Android build failure with modern compileSdk** (`example/android/build.gradle.kts`): `irondash_engine_context 0.5.5` was compiled against android-31 but its transitive `androidx.fragment:1.7.1` dependency has `minCompileSdk=34`, causing AGP 8's `checkAarMetadata` to block the build. Added a `subprojects { afterEvaluate { compileSdk = 35 } }` override in the example's root Gradle file. README now documents the same one-line workaround for app-level projects. ([#5](https://github.com/brewkits/hyper_render/issues/5)) +- **SVG invisible with `sanitize: true`** (`html_sanitizer.dart`): `` was not in `defaultAllowedTags` so the sanitizer unwrapped it, destroying the SVG structure. Added an atomic SVG sanitization path that strips `E-IUp&A5`s=U3?;m&ZOj!MTcK7Bz6>l%qys^^{_F9=8{;JfjZ2olp^ZofN zk3R>h`?d0W?UmYihK9(C+iw%w%66~jaxrI`~FmI0R|@?EV!$_*IfV8s>u8M z>bI};eOsC3y+8TpcaUj2zr~8mE0jjt{@JotYirRd{eAo6)?Yur_5G?7x@%UQoBKR! z$BVsUBoht&@z*@)c*;_0hcqVw;<+g6g}&Q~yMRq6P*IaB6RvaxymW+U?Zo zNx!e;1ns*2()$a;VQnJ^rR=D;>l2s0zs}rqFi4G|MWkNt#6si8$>+9w{ae+ra0e5k z!Vv~cyyVCAiqA^xXMKJ9yZrX8EAy7`x3Lenzn)#f>my^(_N#~eZ?96W`>_saEYDJ) z<4+Wy{4QO)Uk>IVIGwPFYwfx6>9fC<-CTOZ&UE&acjZ-k6`>frJ5d83S#vBfhVXJCviwmn?L%H+_&h>1NuuK)PVHO}<)?eFim zZCz>WzZMv#|NYKy=;EKSYpq<}tuWb-hs%L+*8h!XH6)zRbAOWt3&5QTWB5cZyn6Co z(dK)4yG3p8$Zo(+n;o%4TU}%xRf<^vI<;Oh<-Mp{%e_r(LTc5AI`dYR3UwlAK!L| yUIO<`EI5x$jEKC*fcosQJt8y5@`Qreg{zASIrzelF{r5}E+I>uv-9 diff --git a/test/golden/goldens/cjk_ruby.png b/test/golden/goldens/cjk_ruby.png index 7e796429fd8f8803acc9636f21478d28eb32a513..252843c6dc5c0632fac9ab78f10b730b0575ffce 100644 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJC*Kn`_Nq4_zjX;W}*vT`50|;t3QaXTq#^NA% zCx&(BWL`2bFtK{NIEGZrd3)E<@34UY>jkkw{%dm@e(PH@X8SQ|yMzX{*7R@ez8`&T z)|FLD|Ly91dzlkx1nHom`JAYEWmVnJ8@vAf`&Kn?p=^U^Zf!$+ob+8jhrR6=Wf>mW zaSAXfF|jn9NWR+p?O(CPT|NwJ4wUSY-BD7Kzv}hj`BAUaU;4k6i+x$U>i+qwuN&vT zImYds<@izP<9w zHtv}4kF9I@droJ=xc}5&Bdqh-{@LMM-Q&F6Hq)$ literal 950 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 B)0Y4M literal 4750 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 literal 1827 zcma)+c~BE)7>73jkt&gbX&nzt3f4{<)C!7Bp%4`$p_OXH6EQFvyhs_f9GbHo8$hXv z7L!7eXe)xl5fp)`N|q5S0zwKwG%ygAK_(_K#D(11G@&Y~wuSv;_j_k&zJ0#;eSVv} zDJ}*zYr!l408k`i6d3>ze8<}8>EXEFNvrJdMdFj7v)$xs-)*fS2XGi)w3xWoEsPT?&cZ+b zsyWHZd_bF%rwL#UpyS*fd;afLwDaIXP%MM1+vB9rrT~9#azr6T!H8;pa{NSY7O}G* z{8-x3CStFmu-O|C^3*i(^5;gDWT-ks)FM{ZKP=_ludpRZY9s9el^w+$oCzcqxVv-E z2n05o01$oN2gp;F`Bymkmx?~2VEdVtEDjz{Aa=z zLP&pq`RUIkB5i13$B0g4){H9yf)BF~$T4Q<)49`td5ioFo1lz3Q|+DMLiIQyw%^FS zpwCXsI8mIvz-Ofwbgg9)YK6rtWZC=J?DF(T`ykY1Gs)2W4!!>QuV=I)VVzP-I4cos zh+ytZvELc5f6lb;VzKd35GsGJJhF~yOWjh?e7rc;8$Qp;d(@aVFzB=!Mn_T<4h z=W(J#mAiwMqlgk9)3Y$4$T*6)kf)Bc-m_1Y^LE!kTKNh&`=?UPF$O($K z${>9NKv=OCck3WK^QQtDYu*l=aODaMet3raj!H-Oi7-m+Y`ff}NZ`jC_4yFk>DVZC z3!!b3(9Zs>@P@jP@<>!mVdD+rAL%aVD&Nv~SF5@aslG1j(4Nc9X@bUlb^IbN9flt& z4#^EtYqx1x3-Vhn`aw%Azv7H@brgq;t*Z9HQ%Yy zK5nfq|AYQidqZHUPBi8nnme^pw`z5i;v z%M{ukS%AvB`iUT$y>g;!nkGqs zK;k=pmZ~EW{!d548=}IOj0~_LeP)9}47%#xI|3QgZF=+A*@AStvIDL=_&Xc?ZhOI0 zwm7l#8oaABUJ0{c`EXDQMTr{w2z%lDrHBo6h);BYS?93CsoR7lOfC}N`*KaA!rR~i zZLI4KVNptL$-)c8BbPQrc{MRsfwxULuQj3Q;pR56f}yo3#W?IQ8qI@fKZP`Nk>J@I zaNBH4jb2r{u^qO0I9+!}%%!bUm(D!)$V_MM_}0FXIFhDzVSHyf3c+rK_$r>?6}LZ} OFGo`O{*gnOOzok9n@M9s+~?Nmb9or zI-|M-kzz2Uq0^S2Dn&`vlA5Mzg-ER_vAneByzP%S@0@r4_`cuwJNMpm&$-|I-5>oh z$nD$ow*dgQqr5%+0Z__U;LB4=i)q_3^SXrP-RL^e!oi(hq1knDpcQ@X7EdPFX zw%?XNSm50wQ~0?z%7^XGMqO7?K5m)iQQ&={VyCOgTot;0WzxQmLy)@ehpS#QN86U9 z4>#}{r2Ov#1m)5w1h02L&t<2gl>cFGphplH38A5(rHzU0mFp)H@pUd1%G?=~{RS{C}yhNL>E>Y+G3D_9yxB0C&7aNaBt0bX1?vhktx zxrkLBPp;-q7k&J+sc`mZ@sT;UW z!mDtWosKdqDTg|)4zfR3xYabunT^bu*Lu+5*M(lUZFSk2K&^jz=Wqr|;_b!JFeEY2 zgNp^P(t+C*y0Qt1=A^Wp!&5N0Eg7H{)D<7q8`q} z?pS4~XKdWs+=rioQzqRhyL!vXqNI%}nLG_VxoB$r?+GUNc>jJT5nCY;sO;XO>YaI} z>919vG1NL#31n#*1B$TZZx6o?oeY>>v)1Mx2dU8{J{bKU^=7lY?Ln-LUGys z3ZTjdTROMgVGJ&d?|UWXoSFJWlAIquNf;6b;^oUnEKxUWlpaYS4sJ0}R@Er_z;OY? zPWVIJL#(7o^g(dM}vQ(X+2%C#ynRIb=LrdJi+**Hwr`IJ(oW;%eSlM9_e-nJy z#aVA!dw=T62)+5yrCU$li95i0|_+;LQY)uy5SS#7@le?$TY%ej1uUi`Q?Xvvk z7=e4wH3pu4X^rO=19LE2c&u(`!!cpjba57P*SfC{tftQNfuGM^)ixH`YP#MRQeojc z3~8J5&+xF3_H~CuJn%EWq@jfx=(^H-3~Q0Hbe!Q|K$Zoq$OOej#l$2Cxa2nmM)o-} zgpK_09Y#f)qEdWA0jurmxHb?H=2SdsG*3|-HwNx(=V(FxBYSM_?LeVbowEvMOg|Tl z_*Hj5T&wSm=b@h89jhbG-%2;TgO}HS1-8Ncl!&dZ<0g!>-|M9KuG@fGZb(Ckw6Lkl{TB|9wISt8~*KA z$e&MPerCoF)y-)FHk7llqA6zFb0sfv=xt-H_m6I70+6*&rJM1**4%*|_6t2#ynsiT zf1$sOnW`EvR#Q?2YVH(;=f5akrVz)HKV{sbudWSiZj1OllJN4pxaFA<0j_$8*ciy9 z1^GT9Mny3iTU%F0Icc&DXrc{(1RUi({z;nPG_AK}m*7<1m&(978Gg~9W0VB;_=-K6 zTThDoO#uxD2M1NvD5u00ZV{1@qbS;1-B9%T22#|)UjvzqCa8?q928Ne48FGeR@XUc z_EcI}SlH8>ZPpFix$&4{Xi&6dq~V@ETNkJmc0;X6lFaG=*2H3)mh<3hkK;WOzjpix zO&Bsm06*)Np!IZgb;;r~dBut95uZDcm*23zYYdE0RR7J?i{4%hnJW+mibxo$*IR5~ zOYlijK+k_Jg_hGbr=XiD(a~b>89FdlPj88u+Xu7JEx{ z+3_E13V(SkEKWq=J#AUgF!;Y)MkYgu~#r4|3| v&PM}p%u*|_ELF_N3kcrTs}Sb@!yK1`pUcy))>jW;KS!euV?1l!L$dx31c05k literal 2426 zcmb7FeK-^B8h=chZz{Z{VZDe5`6^vP7Gy~ZewwX)5oFp;x5*E#2(_gv>X&mZ^mJlFHw_wT;$`*+>HjDr|g1zB}j0DyuU z%E=P|34-{XF1=oC=UvBth&KtWr>i5V8h~-cmvvZ2wqDOK_RxqQ0@A2*X!3h zA4CnT4&ft*?@EEGGZpqv>l!QTzOnw~7>zK*aq9KB)&QOr8+n3TKeC`}fu`1sF!Zl! zqVS5~YDpzTCiR|UN=Im=kvrqg0t_fa{m)B)nuBnV?4z#??02e21Gt*(I-o2k1p!yn zAQGU%F$I8=_w50wncJ5bP`cOD^7+VGu}#d1&;^GWN zy10Y!{v(KoO3{LUkEE)#y-SK*i2_ZRA)JkSVjWf)jT{@Xx6+3#|H=~mDDs5motzNk zfT1Z`?Hx*H!m+avk3HA6Gi@%tklj5#SSJBjGV_P$VD}!jsn(BX9Q*9OcB@$-ASn#z zjHH@`M}_$=MpPR}zx0tzE(or-ucDYd8NFfQxrKJCktS-Jr_$BF4yW}k;}Q>D_FwOr zF9B)|$Yt*`T@L43JZregkgqsfJpchq&LMIgxN7(=+0?JGSyfeh+n_j*>>s?KHd3_o zV)9mT{-HS*k(Q+qmMsYoJILPfizhX4PQpOm;5JeFm51>NZVtG|W(j4TN=jrEVT3i- zCXoj+Z;fY@pYZ*3EFXifRUFgGI)LGa>zXD+&*I&}ElF?L$EX_3HBcMg3X9ky+0z@E zg7VzlYrFio|1Kh$-=w$3YorN2nq?!6^ZLR(=o{W;X!ZU%7U|b7kM^u+D77owD`=l< zIQ&ZB(jGTY^w_SXV?=uK><4v_kV*>7#ZAeG{0{Ik_pq`xh;efYKqGI`kWjEid;a}p zGa^yQZ!uYGg$jd`Dvz%vmiryRzsfq}MENk*bp5rMBuAv_iL2+lM)Zo$YoZ)~RNJ55 zy$e1+OE#k-O^kMSH;Ept43*G&-5Ep)dpf5I($Knpzkb}eqxn}fbJtd|4fG%qGRA;g z1MXE^2u?xeE-#;6;2xe6_IcLmuZ{Q%`LDGp)H1{ta3PInL^%5HNvd~X4sO;|MAWMe z%Df~BW*nBV=fxz6OQPIuyYehm5_PLr+6xCKc^F}Fx@hWZi>!fqh z{8_)Q*DHw6bM)hkfZ|K9aBvxfFFd!@(`}}_th9W`Pdwzx!I=g&?QS>|5}C#1-9E%l zYJJK4)>Bph%^hr%ioV>yx67voqVYFkOdb9b;vUL4@&j&m2i<)6g-CVLMEQlt>FjbD zz*)0B@kLLum;s#B_N}28kO_;^Pv0(cf@4mG>r=k`$zs(Wd;jy@=iq#K)vA$M$Z5-C?Y9=YVvU-Trvw`837unXi`%+k_n5iqZf`tM# z^L93dV}=v5=JQFVUf7FwwB5$rAfTg76@{^UFeBz`7u~kxF=oGlsv|zb7AIupQ)R3E zJy8B`j77Y*R%OinsOf1UpVgQbE`IW!&_dm{6|KyWQz1R&ZwgMmun8Fv2pxp19`>GM z)$z9894o$Vi}k*LetKN_6RemtJ^; zkOR-PYtZQ&4rkJeZD&a8tM}Pii-=PYs~d$vvD86W*x3z`l|aL-B}AE6l$6-x{K`7H zG{^hO=_itCXIXA4&gjf9>t)m0kghH+njZM=0Ojba=@-Y3sPr1!ZecL1lG_4ipw7NnR0m zlQZ48VJt!{N^^FE!dJujl=y+0-9)|Oz-IqH{zjAjL%DMwDdmIdi`fTwMFC%KlUiI` zgyCvGAxL~R6%vsUI=VSyoT?m;r~U)F)OV}^ diff --git a/test/golden/goldens/float_clear.png b/test/golden/goldens/float_clear.png index 6161399231f1632df004fd3ce81f360cc1f2368e..a676499dbb518067ab19fcd72af1f6a0811ec8cc 100644 GIT binary patch literal 2235 zcmb`Hdpy(s9>>3%ihiB+TMtcgN#lne6n-4!x5dwK7jkD3zamL4kqr%VIz8Hk_$8NI zrlwYhOr~YX<@{Jv%5qn79fr+q%r=ZOkMnr+==_e(@1NiMkI&`txx7B__v7<=;?KI+ z?f>q`cK`tFcd)m12LMo(bo^OvkF-7SE{u|PyJD>zJmsW;kqgF2=b%`3J1cid1N^;YG#rVvj{q9)`Rf2QbGQ#i*x*86Z=%r z4A|POLRUXF|G@E{cSN@g*sIJ_9&~(vblWlQY8cA>?%~d0cGCTsRCLZFzwnxN{kqt` zRQtQc=YChP50bM{bhL5@XU4dIn)iGp}~Aj_LAszw3*5s+tQ&q)OyrydDXSJ zZX;07!$sHm;jk;bHo$eO{j@S(7-1z}o6MTHxYW8r`9+=fs0GT`aft}J=% zl$Y$Uz!*`4LSvTbwbI>4U*G(8D(`6C$$&NI|7=rgTU%R;{^gfrEUK#5F=X~$h?26h z^39x_95Fc*WbY-u`mmoXiId7jEQvO$dTEk%Av&>P_-Fxfx4PG3Y>`Dua-$9*@OpiK zK$KcH6zQ$N&g@>qo&aMu+YbeCoTku!ud8(2{Rj&Hm<0XXd1h1CRuEf0b~>Ub=WWo-%A z!_)yy$oIfqIk_*(ck!=sMA62Cv1k=Yh_mjc&Y2gb*{&1wz~xr!hKrF=2iPs|Q<$qk zbPXJH#`FoBB&HwB)S4E4Gz8UFA#h`tRb=M}6l)fm zDpmzT-teIcy)>u1n(^1G>UH&SipuEVnRj{9EuCgC*eY*6S=>Ux@rTeF1X6AU?_;;* z(@TI}i$5iU=XV>8_4!yJKMmmcIX)zKv^rAT#roMZ&rhw2;dvc(pvLyrqEt*NgVE+f zOg}7N8o$KQ2~7Iy_?m$H1f0J&TQv*Uc1H!@XT-8zZI*E(B9s}`EL-vFU%q($fZQ>G!Eee0Gw;~EtUEHvt+W&O`MWg=&j%ksD12-Xnjnre_vBNIvMLJ- z(|BXIO9d0zkQ+i!T)I9V8F zn;yUgon?3?|3hFw)uYmAZS%F-Z#|xnFzgH+RuP`pikD^=mS~Q}8%sjf18FzV!I=nX z#fao2to^jap8MOa?K0SB$L`^O^cuHO?MHu3Lcbs;o4*x~WcvDw#+iZ7lF~lgLq@$# z3`5n6U#UVM{S+bB?|CnQH&BJ^%c~##MBD6txx4wj^E;(Binw-qVvZgo$krjmFe5p` zZw9NvlPSboAo4)#F3onTZynbXLl?VYu1~UYBKm5?J67C^-ufVFBf@`{Xg?(3qqGo z+T#8a9ow;k19HIb3XG}C#$_`g)oM<4QcdT!f69odMXK_*Zx&p-f2w6H`a@(5%NQYR zNpJ)yW!Q!?*-OJ~ukW8I?VPrAa&iKL&pdJjol0DpMwR!jU2GaT+H2Z%by~P?imd2c zsMb?9MeMUAybUDjpE!X)31)jqdI1KKq(e3ke}DhUv6kCMqY|N5Puj*IZz+r#Fk-$o zj6Xym;dFf{7^$`Uq|kUkK!RhYKRiU+m3GQ(qb9j2u%~LucviU1n3|ee4KfgkySlp8 zomnzxZ6ZuP;26>3PY}Zqu3+;8jV36Evnu1vi(Tr6hQ0btv^wMAjfNXN!!A#jIZ|fX z6%zM8kf)7gpu@suex>RypRYuZ1R2mRVDfzp8GEZcrRnSG>z6FuI%VLDnn2C_kX9bn$0RbJQ3pZ#>k!sd$9>u=Ye6Z}TDoXZn8%GH|4H6t&`TU+nzkZL-+n|Z%O z(YHv&C(Gu?Whd*C{5T@R_M+4;Ec;sCfI%(WM_2sb8EJv8>k6mO^e;SPv4UfNF#m$O zZ{5E$DF5ejy-G@sAl-@}h<&1~`Zs1}fiy3#loYK(-A>R>Wc_2guO+a@bG-tB65=YJ zg(?(0PoBU2xF5^57`!AAcnE|g*D2Pr|BvF|*7{llAp3g9rB3$Js6;pWs%?#nW;4vn m*@Xj-{+v4fmzZ>7#BO@iuqRpZ$9B){B?lW9Yl>CS-~SDmapXz> literal 2784 zcmbtV2~g8l8vjRBR8&N&v|MpR7p<@c6z3;tm-kaZh-+RAb z#^1yXP}yhxN;lYy^$rN#rZdvE zm~;Txkr@C#9*V!aI3dci5U1$Bj!!jbg*(wgPoA$8TH5TpnSP+k`1oM=H=RBwg?r6h zfAngZwQlg2qdqoi*#7tNgC7jk)Zn1r-VbudUHo&SZ4YnXIoaNbR-c_YQ9gm~3xv+P z?5;AFx>Xn6!+L`E*c$Zr*h`6DH#fzvHW`C-cz(lL{5q0n?mJ^9@7i?BN7M06{fe{+ z7e7>JSgoZ|gkVNC_`DLtnVXxVuq7&KH;3f%;m)l-!3&r-=Hz4fftEDi z;%9hw&(A+-rxdy*O@kYkw%^~y+R~v?snS?17RtgMZ&y@Q)Iav=lEdiuc!iUb)6-al zrdKv2(3VJ2fr5lNnr4UM4oz$6|u zw^QRdC{Sj)rK9(bvzWTP_&Ysm04^+Kk3B%RZ&@hh06DB@oj%rmY6 ziQ`UFFkR3?7?pOQ)-&YQ3IF@*C)2}HYe#frGpP|8Nq=82*#)nEh* z0wg1(x-_Kg7zavmm18JwoM-_6XlyL%%2qp^3TsT(=foFgEMSYWRAMi>YM7s`s^ilZY)}~s2B@F7j?}WF zQ8qb-V|7ptJJnH+A=^xM9xT>$1~D`;y48|M%C)DK+3`SfH$k?KrWfP8x}gYWSNg7~ zrGDyely4wuSnqyD*~T^rJq8hDasnQB!yu4JjVMCu+cudHxAh}!+;!2iv9xwp` zYivQ~`A~rz_|M*U?h?o={vE~D;DuGvJVDzY|dz|sac*@zga8it}b^4F`3Mf zk&)7GTc>oivMGm|%YSmXTh5kF^4=8gQ7V|sOyb%S@3vT(R!IaUFmeIcr0F*FjBLH3 zwzhV$x3`x`i#}bf>o1VWWHgcZ26Hsn%!40+U?KHP(=q;o;#LTy*pdxQj!w z`^DSm&*SMN;lTs#8s~nN%ng4$pIsM1+So*YkMlN9is@tFDAN z)}c(BATRauKIfjRf8*GUHN+#FveQLPS~?totS=iliv6|LG#*BWr&fJf80mTEOjKBk zkIlX-L5DTzO9U{@Cx6x&M~KfMTFi z&bY+h7vhkwrx+fuplcn@>b-{vqsROPOzpD73X;d(#r8XUqQY5QeHLu5QDrR}FVMsW9HpMZxDDIsUr}m>9np5v*{IAPgbm&3dlIRyy{lE3j qVRV`Ywr-qib$k!**HKG}SPQD$d&~`6m)80=9pG~sUg>@An|}e=u>+$3 diff --git a/test/golden/goldens/float_left.png b/test/golden/goldens/float_left.png index 3610056975ac5f48aee3f03a50a893d013f47923..abdefaaeb84744079bc8dacc69cee321842dc82a 100644 GIT binary patch literal 2774 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 diff --git a/test/golden/goldens/float_right.png b/test/golden/goldens/float_right.png index afad4aae3f5a5f0aa564a0741e30ecfc54245548..40b825ee99de9f31de1d2671e2d65b9effbc19f8 100644 GIT binary patch literal 2591 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 diff --git a/test/golden/goldens/image_placeholder.png b/test/golden/goldens/image_placeholder.png index 9b6a562b8025ac93a92917437ebdb3d5475dfb3e..dc0e4f22e2df60613f5b0c059eb604fa41e14819 100644 GIT binary patch delta 907 zcmdnXw}X3vN89^B#uJY@Ip+vA z-f?Xb=ny>^Zo6gq^Gdx1&&vC=gS+paSIE}{Kq|;W?u`R z9(%s=_5I^t=TCcmfBE-cU!#0}K48evpRCAgs0Y&srj5gv%RPATWRI^c^X}~0(wke^ zm;L*H_uJ3q*Q)=P&COrLJXw%c)grwW)OW*Wv)ytW<``WGW?c2BepFel5 zZhn=-jV*ypMYXkm3pPg7#Cug1_k2w_y%!j^haW$FEFR3yG~49V@(o#Q-*>ae|9Sdw zel=6t+TSci#l@d@O!?H@&vMwF=di(^*CL1Jlq4h{|mK}JS}N467mFaMr*blLr2 z#@g;%+1Ynfv%|IQ6#%O z>m`*H_V;XHJ2P?b!8N7qORoK@0lE4O@3VE*3Wp7DsC?l1##Ve?cEZ!5pT3$;w-+93 zy!oSaXH1>#SAh+lcNuTqzyE*b)^9g09v`sTa&6wb_wWDPe3jYYS=!?om0kV%>#yTM zr>v9Lut&f9dGO%D$hBYdUO6UAcKa!jzxM08t>1R!Z2jh{d30G~_}#77_T{YIt1kDZ zDbP=$etXnfIbE^t{MEGj;>EcS5h{<^(oe}BFIb$|ccs`>j@?vw`xmC3}7G7=k%|1rqhYJ(c`Nj&8Y?Ul9`vY2DEvQDIp~(rjlp^f?P(O^b|al>*^jL+2^R%e%t^h8lami z=R?jj;V-fLLGDJ}YOW{N6>?j+wNGN6jvm;#+3?Z^(Cu}H?H3+8JO2J}_$MkdVj)KB zliZVQY06XDMi|Z#p40b#Q*3DS0+oO~w!r>iX$>^4-;ig&8RQ+GJ9PjFs1#LYI|VD= z4Nv|tt#)qurA70`CLI3|o7HQ3)36ievcLtk7>)K`#WiA^v)opj`+D^#!iUf>yum(C}_*~Voseuk+ zorr70#9#slDwwVl4^+SFK`>@sQ3Aj3nK-zegULQ+l#IAGn_f(J7m2e4p>D!#%Unl8 zy@q|ZX&o1h3xv{klPj40B_RtlJ>`oWsTO}H+kLHk1(8^I03`9?sbETTJm^)-!iUD} zG9xO6f+?C1sI-%lg@Jmq4!N?dl*8dLK$*0%)|3H?yTkn&OSh2f@ROb36|TcATjV9i`3o{r<2N0yHIO801Hb6F{v;*4}yKOxua-gN#&#{_ff+?BX>l(}%@(wxG=1B{{eOZ`ZJ@z`uWTkPY# zcC_pAS9?oPyGI;Bdp`A%JZz=e#2+Fh=*GJAF|-4~{E6ryeU7^OYKMGzRlLo#fE$Pl z;^J}f4yEx>Ss-SnZE-PrqPL|Zkw7f1%|M9sB~*W&d%yBE`y@@Xs)+G=FjeV}?=6h9 zQ$Q=L>O^W*`z@(PRQ-t@dSGzSyhCLq5$HrJ;Gl@KwCLpyKMo)14&ACUHq)im)`u`c z>Yh&RV&z-SdLgCHx7HK)YsR&bX~-eR*u1R|nS$a#KaXJ9-KqH$1IvCXkG~)~-)UwF zkH<$IQy5}sa_xryd(;Gz;$@6nCKI`N+WWKBL(N4s&jcZgp$Nfs-g^OaKPYRZ&6f4l z%j3ZnS_TOgc=1$|)@HlSMoCWLFuoJLb6?miQ%2nI|8vy8hd|d?`AK+0(iz>FgroNJ zidm~_Rs_l1A6q3@kux^{7wFM@n;oQW^kQ6-1*HL#s^gW2z0ziE3U5P~-61U3*{oRY XRM?ffnu7@+OKsb-D~h)%_2+*9T34a9 diff --git a/test/golden/goldens/links.png b/test/golden/goldens/links.png index eb2d98247b32558d0fb538269b78143fad74c1ef..7ed0c014f2a97997733b8c3c16d8f36d5ec16c25 100644 GIT binary patch literal 700 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCui#(+M5gj@IF=!9vITG@4gG z+~>Gy!~N5eb!j?wf;{r_Ky%0h2ln|a=ALuz`txiz%VniA+s{4t{XOsh{Tq+V3jeX2 zRsD6u1|gy;War%2nE9H~@A>QE*OG2)PTOp0fB*02cC%go9iFRM zF?2RCOyJ-kfkHO<%?*=X2VU0H?n|4J95uc21<$s7{}-R*J?a{;=*j=UYNdXiPf4mc2pn-)XLGkHz7h#PGqz|J^SNck{e` z__9X!)_!0t-1~p`{P};zNnd_iTA5#D^k89WaB*NDog+NlC Lu6{1-oD!MhYiPZ^|l-qx*u-xVyZ`6WcC0JErdM#@YL$<5I87Ey{f?aPf@S#Q$G^c69u``_0Ns ze$IcE&w|KC;9o}s(%i>f!rzkYW|m9n`_&%vpuT)aq#~8 zbya6l;tzlBUz_&NK{k9QNlt^hd`ciU(20p>zRq_(YrLoJx%_NNqGI6^Go*akCN{Urmg`!NPRn?i!|0s3t{GXK%c@TcXU^Tq_$)6go$@pvsn=(k!)78&qol`;+0ERN*N&o-= diff --git a/test/golden/goldens/mixed_inline.png b/test/golden/goldens/mixed_inline.png index bd98d8b8bf9f33ba81ebb15a7ba1ed6a71c02d99..419bfb64ea2cbf4c30bcb372c3c9c40149ac06f2 100644 GIT binary patch literal 3633 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 IH~D@4AK2reRsaA1 diff --git a/test/golden/goldens/mixed_lists.png b/test/golden/goldens/mixed_lists.png index d9e8053e5f0f2db88a041531c806955cbcd7001f..22fc9b78df512cd0400e91e78b20165300e3c758 100644 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCKjB~llH00_)&nV)VkgfK4j`!ENa+Cb8H-v8?bw+5g?IhF=vOzkFEp;aE*jo*ufIUu zZxJ&ggE1^cHugZT?q>FitI4(VjP3seP0lv^U704mciw^D7M*+!N(u}rOiaX6$R;zG zZ#yIRAhiE$<+(q9lJB>zyZPq%&yvOa`5*kZq}=G9eGh?d4qs>gE%${_`18h@ZvW*H zRMamrda$rGxHvEnPocOOlOvHg)Aqn_+iTA&pZ)^-;%a5u?p<>8|NYtAd$0dP*ZrH! z3?F7vV(Eip({3{FxefQutk}8jJKf&1|4^Yca?yQL(_249&nas9KbA)zDNk2Fmvv4F FO#lXI=R5!a literal 1372 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCKjB~llH00_)&nWV;vjb?hIQv;UIIBR#ZI0f z96(URkk_^_cW$uP%5}HH zJHKi!EwMFyK85e$*SkJ{fA;?Vv-JA%N8hKfd@VBJYSs1`&u{MCUs!kl^Vh9=V*C1q z?5kg$e=mG4KI-Ie?$Vcx3=-;$j0!Fe3><<23{EU84FZ_ll(4FXOKG87Gq=_Mm5jXo zGuAEit9#b{g-aQh`r0Xk&i(Iq@c-fBtN(uYXE5J;#Mm?4K9NyCNr9oIgv%o|y}o(o z4!!aNe_x(6Wh`{@sfQ#L-)^S=w)^@h)60NcUA!Jx>* zE57+CTy5z4P5|K?2Iiotau2G(4!U?XH~RUMpjEHGiQau&m32;2_R#D9tKU?5t@qz+ z@BhHOS4&~_*F3}Xo2ySs&Rf6!>D!{3FB`85oC}Vce_r@UY+Nd_u0e9T(W-`!(z^Of zJkA#Wne!Nt9QG$a^d;lI^!c;jmI}w--B#+SxpY@v{6*V!%b(4;q`2qb{!{bP-@Fcf zKcD@B>|(AHS$m_;e0~#G)b{*!cI9pv`Pw(8EuVX0=L4l}7ynYTVmPb_j2I-FLGgs2 z+oJ`H@?r?;9|d*AEXZ1Km*Urr2p%+^2qsB z|7#oSzDmK8;%T|_*ROvnv$Sh7;-7Nm`FrLsxgqym*b^+UCq3K=b3z<*(AA%|Ew*(@ z`WgpiL75jfU|XPNd*J;oP}V8A`4AkZan3WA=f0j3rXaz5C1IvS}Ff<_p3|H3dOfg SU)8ofAR$jzKbLh*2~7ZIgzrND diff --git a/test/golden/goldens/ordered_list.png b/test/golden/goldens/ordered_list.png index 97670e606d6031830a6bdc857121e0af740b64a4..d0f9475e218f341387ea2900ade51ed0779c2a28 100644 GIT binary patch literal 910 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCzu;g4k_UHgx&owFik&<|IDnvrBc%h#XDkkK zcVbv~PUa;81G9yvi(^Q|oVT|(PF(FE!f^1hdXq29lYA|v9HocSpHyD6t@@_2%U5P^ z>ijI7x;mh4%D}%}FTWn#v*!4Wzi_%&s_~1MCvb2u zbT%*$Pa&I+goL()o%av@6TV=K8yR;E631qUPXaH zg^9^QiC7B7p745lbH~tUN zpEt=V*Vo^do4#-J#pj7@HvcXut6z67{oT>&FGzDc$d}0A!_j5e*@31fyH(!We*Csi zdXL@t<<`~m<@Nu=-y8o?-RHutASl2f#K=fIg=~IFVdQ&MBb@0N_>a AF8}}l literal 1432 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCzu;g4k_UHgx&ovai-X*q7}lMWc?smO6gzo_ zZ~#FKM@k0+1FMs#i(^Q|oVRyui#}P2G(2qfDP!PeO`YL6d+UZ%Yg(sC1_fPck!3iy zHuhOWacX_tygnzV`ZLk0fr|fAi$8eIPT<(;YBwSU)s_7!LM8!;-lIxu($3NQq* zur!D;62p~bNeSI`zs!5({x+bmUmm;D_`4Vs$+*D*l{HcN5Ayr&{(D??qVL`BORg?c zF74k`9CQA+_mS|bKLNM@O5882>8bO7eDC~^_vtUwL?_(+{ruV5=>J<{4nO{S=iWa5 z?^4CSiS}DepV?lmus6MLd^$KvpP`{rh!mHDya_Zq^kv=urJyhdn#Oyj!v3BD!s!Rr z(7>t2tM|LGCs+|3!qDiL63Ge*>H19G;2Zq8y_L+S_xjB_5N*E*U$fV}{-MHl`}X&j_a2LZ818R+&;RWA zGoQ}9(!a_V-`>zVXfH{#WlMm!%58<3HN(2yy}dW(&JH z^>@GX1d|)6jt*fzXC$ra(-H1ua0p%f@Hiw$Cx5MdsifrfGXAFJ zy61mYA8Fgxt$15E&Cbs4{_{=m^;i9uTd>a2q3r$q+1vB}Ue2==?7v=I{oC$t_8HUG zzdCnk{4S|41?I%r^{FJ51fXKWh~vbnlKpR|1=Ry%|NN!ioy^~#^B}nsgSq0ZJ+GbR U#Z{NCKLyEoy85}Sb4q9e0L79U;{X5v diff --git a/test/golden/goldens/rtl_arabic.png b/test/golden/goldens/rtl_arabic.png index 2daa824b3f4bf81e60bd0f49304d39269bf85800..c5328bfa41ddd182d1d015b8f98886c6de328f61 100644 GIT binary patch literal 1371 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCAK+jEl3H%2{XmMP*vT`50|;t3QaXTq#^NA% zCx&(BWL`2bu(Eo(IEGZrd3*O@mrSS#+k@!KlUYQjM`kJUv~W)9ox~v&vqSj%zRvdw zl>#3bH;Fp3xF7AEq$qIV-m4&qNrg!}C-7<9{c>feY3=Kh+WT1xUca|w_5HVV>bmHq zK%2+~zn5m)9yqo3G5g;MkEbtJ|37nYsa@8K_jgU)Uw@uoy)W$b&$<8id=6w!-owf8 zx%fs^!~fgYdT!6!R=RKNwdeNVYt~--Z2iCTdHW_NMg^Bf27yHm3><+93@sW03{D~( z42oPV4HHh@We@so`}Eq+YfiqjZ&*#dY0?WN=H4RUG+se8jI}D)>**9-C zUi=m)wQKog+c^wH#p+fJii_>}Q*NJH^z}0vgG9S1#1a8kCWj6*H}urWcl@?tcy^GB z1=&C-+heKp>)y6^hj!c8O1>>;-cVikm{lR=%k##Z=*WsVjstZY(2PU&(#7}8h4a}D z*hDm9F_~dy$y)XmclVZ8R$X$vmp--ooZ(hbKy5#FJOaE*DN(RrUe=#p5d@K9Six&^iu8+0;U+eJXGjNsQtUI6zsdqFZqdk zb^g9J@4s&y{X6OY{=L6GF4`UOyL1yUl5Rflx7z>jPuz9+m{-4k?|Qrm4^yV`&QanSLEWMk=!+LMsRR-qp*eA7NJ738Bp2jY5 zDsK-%OV2->3D>s$P2Kxe|Le}@jC!Ymxe{Au0;T?M@9ZYr`YrQp9{Ua*NFr-D!IQ`^ d++iU7pJC6>+e=N1N~VD%Jzf1=);T3K0RRnFQl|g_ literal 2015 zcmbW1YgAKL7RN6SA+>>o3PWKHuP#?(nTld@V!?={Qi_VHkQ7%DA}t^SF&24u+PFr z5)trXAd-pz!124t9bv>{m$l>f)7Ex-IKEP=T;yx#OHz}IHnNZUMhC@uOirR*7gl8s zrcWl%yi0coDSqcOTX{^wzPkGlPRcuU>f4U1u9Zm=+ZqZzwArLxBO`_dj{UerS07$Q zy&DwoW(%MC|E)IC^MEJk*z`>tZF6Lw1mo^^S+ej?)(9l()gZ1+Daa}#u|-2OS8!Oe zVuxF;wD}`^@AeFKOQm9JEA#hBlF!V|uOzKE&ZF_`jB~N{Z6uv3-jbq>IU9`vI#N89 z0Z%OBqaHHV?G{7J^LtQ~l-CpAu2D=e;wrZTMORM%=x{q5-!l%j+g+XP3)XoefW7p& z&5!B(eRfwzl=ccYUy(aUwg2b8ZRx&M)xmL1bze?&8OMxcnPf|~GUmBJ0aA1B)g>Sk zNmX}`k{MWb2scirQOq)G$G}#oU&4E7iBQ{U(gJP>UaYlEt#T*$0v98e3b?S>eWE1K zL`JS?ijv*9(X(4J;?|UF z2eR`%1u|cXPMj@QXN(AI`DHP{Ljl|GMjEj>Ur;1|qds8cy0U}Vtu>fod47*eijrN7 z#-|>?jBOdt&G0h!z=LP%tb8!^a^YLB1cZqE^5zIKi}40UZuAV09RSjMxs#@y41>w#VJOnOQ%W{m9oCOdqP~yZ_8;~G#o-C1{N`DKLiyF zT-kZ%cz{7?X45UtB|QITXiv(-xJd;jxu|({c%Q;Hbf@f-hj7;|y2sd1ez`uD@~ri^ zRl$D==AO)$d8Qt&eTzwP$@MzVVtRXrCLsN|{t@Po;lYHF!j}se5bEU+NSWs9O;=)T z2Nv)3Ls1Cwscsha)CI!#RZv|;_(3q{UlN&JO}QFH+HA^^3%kC8_#0P~oj>OK)6C8N zhsV06#M4bbZbOj}Q6%%B9EcTK|C_e7{bSR6#HWp)lgLPau78%fW{v>U0Kj*PWzCdW@kNj zW>&{SRHW&~(4K`8*ipAq{UghxsL@Bm^*!b z>d`M`8fr|@Otslc(;-k1W_Ji0Ds-bhtk;W{0gH$_Dol$T>F>k#nqNU-h^NC%kJA$L z5dNl-h^q+&p%38u-8MNTx-S@ODnAc`elI!mvljcExRgq zT?wI;#~__iKDjcQiwdoO;y zUrNovBd%z_v5Hp8#pSxib(hQlfqf6&-hL6rK&%xKMm3CR#q8FOyIcR8$6Hm2)TN8S zJKHYpW(AZ|((#R6p1B19NWp8rNjv90jm4oF1j}Lrm1^2Y6_t)ffv~#zRQ5+K4tjgr v4)ZWudGs`v8<-T14v|KI#v_3mf-`S8;7_ox1^ zQD@Q}%WK(a_6wwx}xV%kQxJcETTSTqKjqJJfoiAi9qB94N*?I0jR5ue9IW+xp$+TVlO* z!|$EF;teN0e0Nx9#{IsPVa-9@9%-A;TzHQ8fn<&X7Gn>DYzvgH`Yv|w^NseuxeV`~ zo5e9G9lp=J^OnvYai$F*w;%@!QW#0r@g1?`Z%7Av2nz_lxr=?py?fP2k(2swCnzk- zpRZ1vdp~y%gG<|f_DgS9MXsOq>*Y_a&*$d?!+5`Syy@*fX5cVw=wM=0SOgDZFn7}( z%L%XE&zV1Oz0vcd}c<4O=n^w819@#1OpaF!G-!i@;@_bx<0vhSvg3| M)78&qol`;+05<3O6aWAK literal 1245 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCui#(ZC`ee zkEKC?mC2!liBZ9&kwIXQ0|Q5(0z=E0cjv;J}VPD1jJ z>F3QB+^et5G-Hs-6SEdz=<^5K9<-zkfIbk{E}3!?98AGNv!6dyUD{qd z^E-1vjw_c+(Xy$=YZz`l(-3BG>blSV>GHWnM_%q`_`_EQ^n-=~gOdmcgCZBgi%Wi- zulSu>Z@lKc-To-)%N6tP$a5HQALULlEbG6&wsfhVALD{uO7k};eV?@Zv<#9XAj}6( zM6K?A*e8E&_G`_~v!6dqx^#Honcs{S+mu*~Dod*iuj$`ko&t@M#Ycb=cH&-)0zrT5 zCd@Arn>d$?VgF=VR0qMrT=Spty}FzCd0y{6zy8`WlX=TGevxKev9JOf!t1V_)MN+= zeV{e}8_Z6!$zr!k~0z3{T_``-=sV*EXG=Cx0sBKIxz9{+)jqM8#gK!e!}8br%c}w*fwF#MSN1{(Kh;pXvi{>N{p|D{FTudUl^ zw(O%#@6!7m4!oFww#(JNGG6c`rqc|xr}~@kdEfr^nbmVna12gaX7}9xU84Nl>*?=v(sRD=4)xOXtvy$^KYH(8yIPm$GlK1=|Ga$; zl)T^8tef_{e4z+~;?eiaE8i|pvt6>%-**1#Ke^yESY{WV{rNUhibnF)gqweRw#R=n zKm6<6=ha&cd!J`c`9J;4eV~@NKeL|~Z#Db>h6|b^*#A8KyYhMQ%>6*?ZhgLf?s-=3 zzsQ(i5jzO=fF2d^U-l>A*)#U6K235 bM9$o<-`#o2Pgf?82PEj}>gTe~DWM4fWONxW diff --git a/test/golden/goldens/rtl_mixed.png b/test/golden/goldens/rtl_mixed.png index 3b8a7753485a5f7b012db5c01789b31ab2e0d2cf..ef08cde3ee0f86032a3cc5755c62549c59242422 100644 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCui#(cLIDyUkpXdpo_5ajrSsF~~MpY`p!A;qvAQap#Y( zjd^~5msR`M{k!W<{ka}zzt#5tw_m5GzhF>VZr%HR_olk=tk>n&{b&Ba^?LcX=lA3O z2j2rb7>nh8-(^pH`9Ejv{aE|df7$Ej-a_qTB z?)-Tt&wSA_{9T`OZc_3gko`F{EP7+q--HUPp+qUC6bzVUXIv+UmW?)BE7$4^#FWeX(tdIA@n; z(1imwj7MfB&C-1KJnel)^W&|zUTof8yr!m$Rb3EhFnORRGFG?Fyl3`XtJ(9G)pc~d z_?@Z#|L4z+j<=70h!oC0bH4iT;+nsqpX>fVo7aErd;Q-(Z>MrSdG+hrqnwDna``fL zw|~ET{ORe>hq{w(TfeT4slTeZr@r|5uYdWK|7D%;S1~X=^K4|8u*iYIBT#{1iG~0} zkO&8ZCKpSC2rH9A7Zam`D^Pk#X}T>#uZLoLTky+T&;6qP24Vig2XF z#{RFn_cq-A68jDP--n-TzxegAI%WF7UzIJa4t+o)mWC+A+W+7)FP>^@)A}|3*VoI_ zsyPthVG$7Cef=BLEU5pc+aCK?Sktw`|Jm(x`@g*IKlb_hdH&O3S`${kp547U@oUwd zLcZ_&e($KMtgASkvj5PZ(Bl37u6+(a$M2o4EsWLu=-yj>jd?@P>UGimvv23GEVw@R z_!IS|3q@I-f@AG#`g7RdOl9BlL{JPI3{!#{Oa5N?Bk7ddw%(xr>ZSGjPgNtF&Tyco zB-g(l6hXU+T0n6kSoosw->JLrHx-|dH;zyJm->8l)cN~X^RI7lShp@;?_Ar}?57g% zclV#}=y2};4D-f0#ri!pQ-4mMyFSad{&h|3S|0`v%bj;C{;!U#U$*k;?Psgc?0-`e z`ub<|bN;8&m=Of>pyf{c$FgCE*8}6FzrHG0{&)PN`nr0*eYyKi{W*OueCxdZrT+rd z!xjGS`~CKQ-0QkW^6ya%E*0wEV6;E`@AsaX+enT%>iMR%bd7Bx!;eb!kGw1m=a&O5 z%ZySuUcpy>CVe4NU@*i-6lzc2op>kb`pqvUU!7fC?)zK+Jb&KZB}e}F@{Zpr_kNwX zlz;j){iPRcQP18r8LKxGV@h?N5{VTWuGi>AOEQN$ZqEPwehb%Z?F6Rd|v;jUxwwr+^{^e zZBF9Ld*$-e_0RL?&wOKeZT;7uD_5?O|4ek!irTY7JP4emW=2Pq-mSWGr_Q@|t-Mau zN?-!0w}1a_wfsxwH?=>uT>E^u&1FVdQ&MBb@0OMmKZ~y=R diff --git a/test/golden/goldens/table.png b/test/golden/goldens/table.png index 17e03381d049ccc84a435accec5ef77330de96b0..8babef5ab4efdcfdcc19d01feda6ce362e692da5 100644 GIT binary patch literal 1479 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCALU>Jl2zSHY=9I?v6E*A2N2Y7q;vrJjKx9j zP7LeL$-HD>U@i1?aSW-L^Y-q>?ATP9;}5@kC~WlXS|Q4681AAmaY67)iT@0OEZRXX zF|A^EnkFYd7u(f!W2qls(+<~yjUs|kz79|JEv#?aw#>O$rbP7cciWRY&1>iV{eExy z6lf!M;QTU5e8tvphjUmP9-GYcnI*Ns;E39}IhMvpjQY1eefo5neahO> z-(Ox{_Se4 z3Z|Xnxij5MGxhP-&Ay-4_Sq=>{>^{7TE6bimSfV=ub)1*-rr|t-!eNsM*eUA-=EXt zr>@`sQ*Yk<*4H;)ZT7d<6u(!Q{U-N}ZF;8JJ8%2HA95q3qH>}Zx31s7(7}Pv3)m&y z|5Yn^dv`y5CVqYPHHqKt(QUsRS8lBRai#9Y{4M?RkLQlQbCWikT#?#bFzs7eer(@! z_6M98F^y^$S~7r0Cdh2PR`

z-w)3wbk6bzP#pzAwH1%Bx&;{`+maE*<~8^!@s`Z}07r zIe)%m>(|fX-uLf&Ja6C8r~5pi!!+%oPH!zQ->JpD)z;hJZ_7CtIjeWG$+y~*!lWk} zCZ+=xS!@5^s9rE7>h-r0tGhDQ@@MSRI}d+ifn*m{4`T-6#C4^N?+-D}@Sl8g$xcRJ zmK3uJMmgugX%;&1iHykk4!c3z$3H4&r=O42jV;%l``&y1)v52i?C$55F71EreLp_? z=6``~nJMnl-^=pu=iWSY>(|fjrSJ2Xd{%#GHLqp!mhGP(?|832Ya) k4C#X)7_b+0aMAxy^S8%dnK9wW-fJK+Pgg&ebxsLQ01sd$4gdfE literal 1937 zcmbtVdsNbQ6#ro^O)IM@%}3HwdrZXUbk2M`%&gT(j?a#SS-y@bnGaI%v7AW~)154w zN6=}giJ{Xnl6=jKwA7J`nIiKQk^(AFh$y42oweqwbN2n?`~BYg$LF4V@8^E*#iK{O zHs~1X006MT`v4pP0H8eeze9Vi`c5HSb5cK`c!ZY+K<_aTs140{4{u*>^}%VM!UKSo zqc_~$_gs;X+d>GAHf){e7Y%ir&*mDhq0M_Fn1_UX%bQSy*1&?GF@Gup@o@Gl)T_L(yn7_#y7shK7cmmAu1!CPIp_bWdM0QwgcC+wShev8g4oN zG`qf8*`;7!QpFv!RXyuAhoMYiv1v9JAGRxT@Ov_}sN;$yiNM({>u^;WT&}N|Ds74; zCcDiqe1v5v*s-{Y=U$%JR%DKaJU9n0AH|^cyGbcxkb|RRE<`n1;Tf%*&UVFD6gyiM zsB9@|FZiX-`HDVqdefZi3$$vEC7-HEyG%h{h=tm-9C?tUGkD(UBN{Mo$HsKPQXmrH9Oo4Z`I zWS^!v&2`;9kjPyolgVY$HJl7)LYp&mQSYEERdpJRT`HLdiT9FF=D||EJ@XtEZ-rBO zyS4BPNxP;Nc(7#?fY8*;&TrB~AYY*C&zl+VfF{>Q5t17kInJH+;pF`ATH$$B0rRn)(RCas< zX@pwC2^2DYZwcezBRxI6=K})&i)3$hTk}Q`b~GPz~FzEUOdw_DV-t&3@wIz{?MeThh=^4Na|pq z6nX5z7mUZTMU*0^bYz_tCTboNW#~eBwk5AIM$atN)sg4VJu$$_luC5@v2vzg#HaS65oS=LaIa&F zp=>BQfmA0!_D3YP;f7<5XvvbPG#x>ZnFf2kOO(%V^Kjk?>_lif?j)O3T@4#6Ly=-yw-{y13kX|MA=pMSzSM|KK8X;e z1HBzt_1t|CxqI|psCrPG3p$Ku&XBoo@MK`yctUwHu(5n{*razp`w`K?6Yk%+Dyv|3Ie`;`*!Nu zwQD!L6J27j$Id(&nqZ{FMMJU>@|BfGEMe_w3f-ooN7A6F*;ja|L|%&Dj6 z?KFXsUv8YQ`F&M;6Xc$y6@9F7x%<+g$u51uK#g%G4s-A^?(1~IByY<_4j@Arzy-! zcdgrPHUGT6-}1}ew{PEGF1MSH-D~ZUzhC~n{9a|6ps6mzSJ))E`t5@U3*NkatNUel z-RraFVrJ&2x9;5eu>7Iq15q(-p^fSoqZ4rvhjmyRQnO|)D`&0}6!6kqntOZMwW#B9 z?2of=f6H0>_0)~m2_N?yVnUBLRD(cq%BTOh|BZ}&?M@#x`Q?vyUy7YE<>d08KTfuK zzI^m?>1(_9oBt_3dr{4MD&^C`cW3AC?>x?*^8Comxaj+D?(MRBch8pR*xn8QY#JfS z0@Hk?G=m}8v-sMrZ2$Usyt%i{wqCRPW+f4Sds}+;+VEp>?A^~f5vdJBCvsApyifQB zH+O=qsqf|8jC(maj;3|}=|3wnU!JIVZa*H!aDMt+;qwBHnX%?+xS-gx_@Ap? U?3NWOse{BkUHx3vIVCg!02?63{r~^~ literal 1398 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJC&*fkPlC#3}mH{co;vjb?hIQv;UIIBR#ZI0f z96(URk+mq;MauGbqm8!ZPXmnKO4~=P#dE z{OoCw(f$JAcfCMsu>-ZGT6Y($d!1&qn8CpNZ{7YCjNFqY7F~bsn-D4d@7yVR`n31kwfApzJze_eS4YR%vuh)=KA$&untfsAs))$AnwR&# zK5X6_5gF-s{=%I3ZHR9z33;*1>xag~(;Q4vE#}*$yyvX+3udR1@pRc@f zg?ZE7y~6Kn3-)F7m*20nUKg`BZo|K|JBq#@UnF^J+wJuSA3E>-@#nJtqr;!&_kJ+8 zulXH%vH!gJ{aX3>nxCardy5TbW`B6?AD&cL7=KZ&Uyi@KUfk<#TlUWDJ6l;Dx*8ZJ zC@C;3;oxAAAZ=Hx4pWswDjwlZoB8LLAxK@%(eUK7Ra3T$?cHmo`XGib4{d<9y{hHV_#N~ zb-(b*R_EZ`vu{R4Mt<9Ez<%ct6MA@~1wV*8^Tg&2YQ|g)o3Fh8-Yp&A;?U6{!Nc}< z*Sgo+o-e3vKKLLf_WJc(^O|24b8};hLL?)nv_{sPym&c(UtF)d_sy@r7j51v{P^gb zUxg*xtXW^XKdwE$d+yvt*``wFK!(;{_m`$Gj{I2v>zaQ5rq}9^W6IxN`E_!V?6v&0 zcRP2O%(~;V<#6N-c4JPDbdy~&g3C9(cE9?g=<1Q*FW>9O><@T*r&Fzq@3&K^=-a?5 z-dQi|#02HjulpaGDE$3f_}N2e57}1nzdttlq_3;=oYtQY#KcI5A!u}-TEp~dPs+y~ zoy$J_?!IOodh^f!tnX4Gk1u6Mta(+^oj&7;+?Ml^Gx&`w$&G0 zf3r0oyt!-L`mMI?m!A{%40kU7f&V9WzPq*Z>tt2yHTR=-3m0aZ?3|g=zS)4ErDdjN z(W86+Rz>cJ+~NNI;oS~X5=*-%+&h`RN0{^S;zvsDwib*`c=d68?=ESmDmdv+7syto& KT-G@yGywoUnlq6A diff --git a/test/golden/goldens/text_formatting.png b/test/golden/goldens/text_formatting.png index e550143f0ed0ae92b365813f3d37b09766ec473a..fbafe7fdb37e9ba7d849d896aadd1626b799eb9d 100644 GIT binary patch literal 2971 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 av;H&PdvCM!pp{o8NYc~Q&t;ucLK6VGMpwQ7 From 77282e7ac7664fc6c8443d6981f2311409fc827a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguye=CC=82=CC=83n=20Tua=CC=82=CC=81n=20Vie=CC=A3=CC=82t?= Date: Thu, 2 Apr 2026 11:53:41 +0700 Subject: [PATCH 8/9] ci: retrigger checks after golden reference update From 0830c670ebb3b7f38a0268bad2484c602549a928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguye=CC=82=CC=83n=20Tua=CC=82=CC=81n=20Vie=CC=A3=CC=82t?= Date: Thu, 2 Apr 2026 11:59:32 +0700 Subject: [PATCH 9/9] fix(ci): skip test step for sub-packages with no test/ directory --- .github/workflows/test.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cb5c067..e7ae61f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -127,21 +127,24 @@ jobs: needs.path-filter.outputs.changed_markdown == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_markdown - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Test hyper_render_highlight if: >- needs.path-filter.outputs.changed_highlight == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_highlight - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Test hyper_render_clipboard if: >- needs.path-filter.outputs.changed_clipboard == 'true' || needs.path-filter.outputs.changed_core == 'true' working-directory: packages/hyper_render_clipboard - run: flutter test --no-pub + run: | + if [ -d test ]; then flutter test --no-pub; else echo "No tests in this package — skipping."; fi - name: Upload test results if: failure()