What's Changed
🐛 Bug Fixes
- Android build failure (
example/android/build.gradle.kts):irondash_engine_context 0.5.5compiled against android-31 conflicts withandroidx.fragment:1.7.1(minCompileSdk=34). Addedsubprojects { compileSdk = 35 }override. Closes #5. - SVG invisible with
sanitize: true(html_sanitizer.dart): Added atomic SVG sanitization path that preserves structure while stripping<script>and dangerous attributes. HyperRenderConfigidentity-compare (hyper_render_config.dart): Addedoperator==/hashCode— prevents unnecessary re-layouts on every frame when_effectiveConfigmerges@keyframesinto a new object.selectabletoggle ignored (hyper_viewer.dart):didUpdateWidgetnow creates/disposesVirtualizedSelectionControllercorrectly whenselectablechanges.- Deep-link taps silently blocked (
hyper_viewer.dart):_safeOnLinkTapnow checks bothallowedCustomSchemesANDrenderConfig.extraLinkSchemes. - CSS change bypassed section cache (
hyper_viewer.dart):_sectionHashesnow reset indidUpdateWidgetwhencustomCsschanges. - Markdown/Delta rendered as single section (
hyper_viewer.dart): Added_splitIntoSections()— large Markdown/Delta docs now chunk correctly in virtualized/paged mode. renderConfigchange partially detected (hyper_viewer.dart):didUpdateWidgetnow uses full value equality instead of only comparingvirtualizationChunkSize.- CSS float class names not detected (
html_adapter.dart):_containsFloatChildnow recognises Bootstrap/Tailwind patterns (float-left,pull-right,alignleft, etc.).
🔧 CI Fixes
benchmark.yml: Fixed JSSyntaxErrorfrom backtick-quoted fixture names inside template literal — useprocess.envinstead of direct interpolation.benchmark.yml+golden.yml: Addedpull-requests: writepermission for comment-posting steps.test.yml: Guard sub-package test steps with[ -d test ]check —hyper_render_markdown,hyper_render_highlight,hyper_render_clipboardhave no test directories.
Full Changelog: https://github.com/brewkits/hyper_render/blob/main/CHANGELOG.md