hyper_render 1.1.1
hyper_render: ^1.1.1 copied to clipboard
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.
Changelog #
All notable changes to HyperRender will be documented in this file.
The format is based on Keep a Changelog,
1.1.1 - 2026-03-23 #
š Bug Fixes #
- Static analysis: Fixed all
dart analyzewarnings inlib/ā 0 issues- Wrapped
<details>/<summary>angle brackets in backticks in doc comments - Fixed invalid regexp syntax and unnecessary escapes in
resolver.dart - Added curly braces to single-statement
ifbranches (curly_braces_in_flow_control_structures) - Replaced trivial
onLinkTapgetter/setter with a direct public field (unnecessary_getters_setters)
- Wrapped
- Layout: Removed stale
docs/directory (plural) ā pub.dev convention requiresdoc/(singular)
and this project adheres to Semantic Versioning.
1.1.0 - 2026-03-20 #
šļø Architecture #
- Code consolidation: Eliminated 26 duplicate source files between
lib/src/andpackages/hyper_render_core/lib/src/.hyper_renderis now a true thin wrapper ā core engine lives exclusively inhyper_render_core. - Single source of truth: All fixes and features now only need to be applied in one place.
⨠New Features #
- CSS Box Shadow: Full support for box-shadow with multiple shadows, blur, and spread.
- CSS Gradients:
linear-gradientinbackgroundandbackground-image. - Typography: Font features (ligatures, proportional figures) enabled by default.
- Consistent Text Rendering:
TextHeightBehaviorfor predictable vertical rhythm across platforms. - Retina-Ready Images:
FilterQuality.mediumfor all images ā crisp on high-DPI displays. - Anti-Aliasing: Anti-aliasing explicitly enabled on all paint operations.
- Crisp Borders:
StrokeCap.squarefor professional-looking corners. - Adaptive Selection: Text selection colors adapt to platform (iOS Blue vs Material Blue).
- Theme-Aware Selection: Added
selectionColorproperty toHyperViewerandHyperRenderWidget.
š Bug Fixes #
- Copy/paste newlines: Text selection spanning block elements (
<li>,<h3>,<p>) now correctly inserts\nbetween blocks when copied to clipboard. - Stability: Comprehensive error boundaries in layout and paint cycles prevent crashes from malformed content.
- Security: Reinforced JSON parsing error handling in Delta adapters.
- Layout ā characterOffset: Second fragment after forced split no longer adds trimmed leading spaces to
characterOffsetā selection mapping is now accurate. - Layout ā link boundary:
_sameLinkContext()guard prevents merging text nodes from different<a>ancestors ā fixes incorrect link tap targets. - Layout ā float crash: Early-return guard in
_layoutFloat()for unconstrained (Infinite) parent width. - Layout ā float double-layout: Float intrinsic size uses
getMaxIntrinsicWidth/Heightinstead ofchild.layout(). - Layout ā null fragment text:
_measureFragmentsguards against nulltexton atomic/ruby fragments. - Memory ā recognizer leak:
_disposeLinkRecognizers()called whendocumentis replaced ā preventsTapGestureRecognizerleak. - Performance ā
enableComplexFilters: New flag onHyperViewer/HyperRenderWidgetgates allcanvas.saveLayercalls forbackdrop-filter/filtereffects ā eliminates unnecessary GPU compositing layers when effects are unused. - Performance ā O(1) child lookup:
_fragmentChildMapreplaces O(N) linear scan in paint cycle. - Performance ā O(1) accessibility:
_nodeRectCachebuilt during layout (Step 8) replaces O(N²) VoiceOver/TalkBack rect computation. - Nested Decorations:
nodeToDecoratedchanged toMap<UDTNode, List<UDTNode>>ā inner spans no longer overwrite outer spans in text decoration maps.
š¬ Tests (hyper_render_core) #
- +238 new tests across 6 new test files covering previously-untested areas:
ruby_layout_test.dartā RubyNode model + Fragment.ruby lifecycle (27 tests)float_layout_test.dartā HyperFloat/HyperClear enums, LineInfo insets (30 tests)text_breaking_test.dartā canBreak, isWhitespace, Kinsoku CJK (44 tests)layout_algorithm_test.dartā Bug 1ā4 regression tests, link context, rect cache (52 tests)details_element_test.dartā<details>/<summary>model + widget (32 tests)rtl_bidi_test.dartā HyperTextDirection, Arabic/Hebrew, RTL widget integration (53 tests)
1.0.3 - 2026-03-10 #
- Fix root .pubignore ā remove packages/ blanket exclusion that breaks sub-package publishing.
- Restore hyper_render_clipboard path dep post-publish.
1.0.2 - 2026-03-08 #
- Fix .pubignore to exclude packages/, test/, IDE files ā reduces upload size.
- Bump hyper_render_clipboard to ^1.0.2 (share_plus 12.x + super_clipboard 0.9.x support).
1.0.1 - 2026-03-08 #
- Add example/example.dart for pub.dev example scoring.
- Fix .pubignore to correctly exclude build artifacts while keeping example.
1.0.0 - 2026-03-01 #
First stable release. Core features, plugin architecture, and cross-platform support are production-ready.