From c503eb6245b24eb862d865ce8a6476d008b3c972 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, 4 Jun 2026 23:41:08 +0700 Subject: [PATCH] =?UTF-8?q?release:=20v1.3.3=20=E2=80=94=20object-fit,=20C?= =?UTF-8?q?SS=20attribute=20selectors,=20memory-pressure=20callback,=20pub?= =?UTF-8?q?lish=20tooling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Highlights - CSS object-fit (cover/contain/fill/none/scale-down) for elements - CSS attribute selectors ([attr], [attr="val"], ^=, , *=, ~=, |=) - rgb()/rgba() color parsing fix (csslib FunctionTerm reconstruction) - onMemoryPressure callback on HyperViewer - FloatCarryover imagePixelOffset for cross-section float rendering - Ref-counted global TextPainter cache (multi-viewer safe) - imageConcurrency config wired to LazyImageQueue - Simplified publish.sh: remove dependency_overrides instead of full swap - Reader app demo polish (bookmarks, themes, ToC) - 973 tests passing, version bumps across all 7 sub-packages - Documentation: ROADMAP, COMPARISON_MATRIX, MIGRATION_GUIDE updates --- .gitignore | 1 + CHANGELOG.md | 25 + MIGRATION.md | 4 +- README.md | 6 +- doc/COMPARISON_MATRIX.md | 42 +- doc/LIMITATIONS.md | 5 +- doc/MIGRATION_GUIDE.md | 31 +- doc/PERFORMANCE_TUNING.md | 4 +- doc/README.md | 4 +- doc/ROADMAP.md | 10 +- example/lib/cjk_languages_demo.dart | 15 +- example/lib/enhanced_selection_demo.dart | 16 +- example/lib/html_heuristics_demo.dart | 1 + example/lib/html_preview_helper.dart | 11 +- example/lib/main.dart | 67 +- example/lib/manga_demo.dart | 16 +- example/lib/multimedia_example.dart | 6 +- example/lib/paged_mode_demo.dart | 7 +- example/lib/performance_deep_dive_demo.dart | 15 +- example/lib/plugin_api_demo.dart | 1 + example/lib/reader_app/book_model.dart | 2 + example/lib/reader_app/library_screen.dart | 52 +- example/lib/reader_app/reader_screen.dart | 124 +++- example/lib/stress_test_demo.dart | 5 + example/lib/why_hyper_render_demo.dart | 2 +- example/macos/Podfile.lock | 18 - example/pubspec.lock | 23 +- lib/src/widgets/hyper_viewer.dart | 98 ++- .../virtualized_selection_controller.dart | 9 +- .../virtualized_selection_overlay.dart | 3 +- packages/hyper_render_clipboard/README.md | 2 +- packages/hyper_render_clipboard/pubspec.yaml | 9 +- packages/hyper_render_core/README.md | 2 +- .../lib/src/core/animation_controller.dart | 36 +- .../lib/src/core/hyper_render_config.dart | 7 +- .../lib/src/core/render_hyper_box.dart | 32 +- .../lib/src/core/render_hyper_box_layout.dart | 7 +- .../lib/src/core/render_hyper_box_paint.dart | 31 +- .../src/core/render_hyper_box_selection.dart | 3 +- .../lib/src/core/render_hyper_box_types.dart | 30 +- .../lib/src/model/computed_style.dart | 9 + .../lib/src/style/resolver.dart | 140 ++++- .../src/widgets/error_boundary_widget.dart | 3 +- .../lib/src/widgets/hyper_render_widget.dart | 3 +- .../src/widgets/hyper_selection_overlay.dart | 13 +- .../test/animation_controller_race_test.dart | 3 +- .../test/object_fit_test.dart | 53 ++ .../test/table_review_fixes_test.dart | 14 +- packages/hyper_render_devtools/README.md | 4 +- .../devtools_ui/pubspec.yaml | 2 +- packages/hyper_render_devtools/pubspec.yaml | 9 +- packages/hyper_render_highlight/README.md | 4 +- packages/hyper_render_highlight/pubspec.yaml | 8 +- .../code_highlighter_edge_cases_test.dart | 20 +- packages/hyper_render_html/README.md | 4 +- packages/hyper_render_html/pubspec.yaml | 9 +- .../test/css_parser_test.dart | 8 +- packages/hyper_render_markdown/README.md | 4 +- packages/hyper_render_markdown/pubspec.yaml | 8 +- .../test/markdown_gfm_test.dart | 5 +- packages/hyper_render_math/README.md | 2 +- pubspec.yaml | 39 +- pubspec.yaml.backup | 10 +- pubspec_publish_ready.yaml | 10 +- scripts/prepare_publish.sh | 84 +-- scripts/prepare_publish_final.sh | 45 ++ scripts/publish.sh | 135 +++-- test/hyper_render_test.dart | 38 ++ test/review_fixes_v1_3_3_test.dart | 572 ++++++++++++++++++ test/v1_3_3_comprehensive_testing_test.dart | 225 +++++++ 70 files changed, 1853 insertions(+), 412 deletions(-) create mode 100644 packages/hyper_render_core/test/object_fit_test.dart create mode 100644 scripts/prepare_publish_final.sh create mode 100644 test/review_fixes_v1_3_3_test.dart create mode 100644 test/v1_3_3_comprehensive_testing_test.dart diff --git a/.gitignore b/.gitignore index 90274dc..5760930 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ TEST_FIX_SUMMARY.md TEST_SUMMARY.md IMPROVEMENTS_SUMMARY.md PRIORITY_ACTION_PLAN.md +release_notes.txt # User-specific / Local config .vscode/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 18b9a63..6b3032c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [1.3.3] - 2026-06-04 + +### ๐Ÿš€ Production Readiness +- **Publishing Candidate**: Comprehensive code cleanup, removal of unnecessary TODOs, and linting fixes. +- **Test Coverage Verified**: Passed 973 test cases covering unit, integration, system, performance, stress, and security testing. +- **Dependency Resolution**: Ensured all internal sub-packages (`hyper_render_math`, etc.) are fully resolved and analyzed. + +### โœจ New CSS Properties + +- **`object-fit`**: `cover`, `contain`, `fill`, `none`, `scale-down` โ€” applies to `` elements. Controls how the image content is resized to fit its layout box. Previously, images incorrectly fell through to the `background-size` mapping; `object-fit` now takes priority as the semantically correct property for replaced elements. + +### โœจ New Features + +- **`onMemoryPressure` callback**: `HyperViewer` now exposes an optional `VoidCallback? onMemoryPressure` parameter (available on all constructors: default, `.delta`, `.markdown`, `.fromNode`). Invoked after HyperRender clears its internal TextPainter, image, and painting caches in response to `didHaveMemoryPressure`. Enables host apps to release their own resources (video players, download queues, custom caches) in the same memory-pressure cycle. + +### ๐Ÿ”ง Improvements + +- **Float carryover `imagePixelOffset`**: `FloatCarryover` now carries an `imagePixelOffset` field computed from the originating section's layout. When a tall float image overhangs a virtualized section boundary, the offset records how many pixels of the image were already painted โ€” enabling future visual rendering of the remaining portion in the next section without repeating the top. The `_onFloatCarryover` comparison in `HyperViewer` now includes `imagePixelOffset` to avoid missing updates. + +### ๐Ÿ“ Documentation + +- **ROADMAP corrected**: `list-style-type` and `list-style-position` were marked as incomplete (`[ ]`) despite being fully shipped in v1.3.1. Now correctly marked as `[x]`. `object-fit` moved from Backlog to Completed. + +--- + ## [1.3.2] - 2026-05-18 ### Bug Fixes (Critical) diff --git a/MIGRATION.md b/MIGRATION.md index 59fb88a..19078d3 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -236,7 +236,7 @@ HyperViewer( --- -## HyperViewer v1.2.1 stable API +## HyperViewer v1.3.3 stable API ```dart HyperViewer({ @@ -267,4 +267,4 @@ HyperViewer.delta(delta: jsonString, ...) --- -*Last updated: March 2026 โ€” HyperRender v1.2.1* +*Last updated: June 2026 โ€” HyperRender v1.3.3* diff --git a/README.md b/README.md index 4d8f9fb..ccf075a 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ ```yaml dependencies: - hyper_render: ^1.3.2 + hyper_render: ^1.3.3 ``` ```dart @@ -414,7 +414,7 @@ These packages bring native dependencies and are **not bundled** by default. Ins ```yaml dependencies: - hyper_render_clipboard: ^1.3.2 + hyper_render_clipboard: ^1.3.3 ``` ```dart @@ -444,7 +444,7 @@ HyperViewer( ```yaml dependencies: - hyper_render_math: ^1.3.2 + hyper_render_math: ^1.3.3 ``` ```dart diff --git a/doc/COMPARISON_MATRIX.md b/doc/COMPARISON_MATRIX.md index 8b746d4..1e676e6 100644 --- a/doc/COMPARISON_MATRIX.md +++ b/doc/COMPARISON_MATRIX.md @@ -1,8 +1,8 @@ -# HyperRender v1.0 - Detailed Comparison Matrix +# HyperRender v1.3 - Detailed Comparison Matrix **Feature-by-feature comparison with other libraries** -Last Updated: February 2026 +Last Updated: June 2026 --- @@ -18,7 +18,7 @@ Last Updated: February 2026 ## Performance Metrics -| Metric | FWFH | WebView | super_editor | HyperRender v1.0 | +| Metric | FWFH | WebView | super_editor | HyperRender v1.3.3 | |--------|------|---------|--------------|------------------| | **Parse Time (10K chars)** | 250ms โš ๏ธ | 400ms โš ๏ธ | N/A | **60ms โœ…** | | **Parse Time (25K chars)** | 420ms โŒ | 800ms โŒ | N/A | **95ms โœ…** | @@ -40,7 +40,7 @@ Last Updated: February 2026 ## HTML Support -| Feature | FWFH | WebView | HyperRender v1.0 | +| Feature | FWFH | WebView | HyperRender v1.3.3 | |---------|------|---------|------------------| | **Basic Tags** | | | | | `

`, `

`, `` | โœ… | โœ… | โœ… | @@ -77,7 +77,7 @@ Last Updated: February 2026 | ``, `` | โŒ | โœ… | **โœ… Full** | | Kinsoku shori | โŒ | โœ… | **โœ… Full** | | Vertical text | โŒ | โœ… | ๐Ÿ”œ v1.1 | -| **Interactive (v1.0)** | | | | +| **Interactive (v1.3)** | | | | | `
`, `` | โŒ | โœ… | **โœ… Full** | | `