Skip to content

release: v1.2.0#4

Merged
vietnguyentuan2019 merged 1 commit intomainfrom
release/v1.2.0
Mar 31, 2026
Merged

release: v1.2.0#4
vietnguyentuan2019 merged 1 commit intomainfrom
release/v1.2.0

Conversation

@vietnguyentuan2019
Copy link
Copy Markdown
Contributor

Summary

  • Plugin API: HyperNodePlugin / HyperPluginRegistry — third-party packages can render arbitrary HTML tags as custom Flutter widgets (block or inline tier)
  • Paged mode: HyperRenderMode.paged + HyperPageController for e-book/reader UIs
  • Incremental layout: Dirty-flag fingerprinting — ~90% rebuild reduction for live-updating feeds
  • CSS @Keyframes: Full animation support with custom keyframe lookup
  • Accessibility: <img alt> → discrete SemanticsNode (WCAG 1.1.1); aria-label on <a> (WCAG 4.1.2)
  • Dead-code cleanup: Removed 31 duplicate files from root lib/src/ — canonical source now in packages/hyper_render_core

Bug fixes

  • XSS: javascript: URLs blocked in HTML, Markdown, and Delta adapters
  • display:none elements no longer produce layout fragments
  • Selection-vs-scroll conflict resolved
  • Context menu clamped to visible bounds

Demo & infra

  • HyperReader: A+/A− font-size buttons, video playback, line-height control
  • App icon & name updated to HyperRender branding
  • Android 16 KB page alignment
  • share_plus ^12.0.0, AGP 8.12.1
  • All packages: sdk >=3.5.0, csslib ^1.0.2, flutter_lints ^5.0.0
  • 36 new v1.2.0 tests (plugin API, paged mode, incremental layout, a11y)

Test plan

  • flutter test --no-pub — all tests pass (JSON reporter "success": true)
  • flutter analyze --no-pub — 0 errors, 0 warnings (root + all 4 sub-packages)
  • flutter analyze --no-pub (example app) — no issues
  • test/v120/ — 36/36 pass

New features:
- Plugin API (HyperNodePlugin / HyperPluginRegistry) for custom widget tags
- Paged mode (HyperRenderMode.paged) with HyperPageController for e-book UIs
- Dirty-flag incremental layout (~90% rebuild reduction for live feeds)
- CSS @Keyframes animation support with custom keyframe lookup
- img alt-text discrete SemanticsNodes (WCAG 1.1.1)
- aria-label honored on <a> elements (WCAG 4.1.2)

Improvements:
- Dead-code elimination: removed 31 duplicate files from root lib/src/
- LazyImageQueue singleton consolidated to single shared instance
- HyperReader demo: A+/A- font-size buttons, video playback, line-height control
- Demo app name & icon updated to HyperRender branding
- Android 16KB page alignment (extractNativeLibs=false, useLegacyPackaging=false)
- share_plus upgraded to ^12.0.0, AGP to 8.12.1
- All pubspec sdk constraints aligned to >=3.5.0
- csslib aligned to ^1.0.2 across all packages
- flutter_lints aligned to ^5.0.0 across all packages
- Unguarded debugPrint in float layout wrapped in assert()
- Version comments in all pubspecs updated to ^1.2.0

Bug fixes:
- XSS: javascript: URLs blocked in HTML, Markdown, and Delta adapters
- display:none elements no longer render
- Selection conflict during scroll resolved
- Context menu clamped to visible bounds
@vietnguyentuan2019 vietnguyentuan2019 merged commit 349689c into main Mar 31, 2026
4 of 8 checks passed
@vietnguyentuan2019 vietnguyentuan2019 deleted the release/v1.2.0 branch March 31, 2026 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant