You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- **`background-position`**: keyword (`center`, `top left`, etc.) and percentage values
23
+
24
+
### 🚀 Performance
25
+
26
+
- **Selection rects cached**: `getSelectionRects()` now called once per drag event (was 3×) — stored in `_selectionRects` field, eliminating redundant layout walks during selection drag
27
+
- **Auto-scroll proportional speed**: `_autoScrollIfNearEdge` scales 0–20 px/frame based on finger proximity to edge (was fixed 15 px/frame)
28
+
- **`HyperTeardropHandlePainter` deduplicated**: renamed, made public, and exported from `hyper_render_core`; duplicate implementation in the virtualized overlay removed
29
+
30
+
### 🐛 Bug Fixes
31
+
32
+
- **Edge-to-edge images**: `width: 100%` images now truly fill their container — no internal margin offset
33
+
34
+
### 🏗️ Build Fixes
35
+
36
+
- **Decoupled native dependencies**: `hyper_render_clipboard` and `hyper_render_math` removed from root `hyper_render` default dependencies — eliminates the `compileSdk = 34` Gradle requirement for basic usage
37
+
- **Removed outdated `compileSdk` workaround** from example app's Android Gradle config
| Text wraps around floated images — no other Flutter HTML renderer does this | Furigana centered above base glyphs, full Kinsoku line-breaking | Select across headings, paragraphs, tables — tested to 100 000 chars |
29
+
| Text wraps around floated images — **no other Flutter HTML renderer does this**| Furigana centered above base glyphs, full Kinsoku line-breaking | Select across headings, paragraphs, tables — tested to 100 000 chars |
Zero configuration. XSS sanitization is **on by default**.
55
-
56
-
> **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`:
57
-
>
58
-
> ```kotlin
59
-
>// android/build.gradle.kts (root — not app/build.gradle.kts)
>This overrides `compileSdk` for all library sub-projects so AGP's `checkAarMetadata` passes. Tracked in [#5](https://github.com/brewkits/hyper_render/issues/5).
54
+
Zero configuration. XSS sanitization is **on by default**. No Gradle setup required.
70
55
71
56
---
72
57
73
58
## 🏗️ Why Switch? The Architecture Argument
74
59
75
60
Most Flutter HTML libraries map each HTML tag to a Flutter widget. A 3 000-word article becomes **500+ nested widgets** — and some layout primitives simply cannot be expressed that way:
76
61
77
-
> **CSS `float` is not possible in a widget tree.**
78
-
> Wrapping text around a floated image requires every fragment's coordinates before adjacent text can be composed. That geometry only exists when a single `RenderObject` owns the entire layout.
62
+
> **CSS `float` is architecturally impossible in a widget tree.**
63
+
> Wrapping text around a floated image requires every fragment's coordinates before adjacent text can be composed. That geometry only exists when a single `RenderObject` owns the entire layout pass.
79
64
80
-
HyperRender renders the whole document inside **one custom `RenderObject`**. Float, crash-free selection, and sub-millisecond binary-search hit-testingall follow from that single design decision.
65
+
HyperRender renders the whole document inside **one custom `RenderObject`**. CSS float, crash-free selection, O(log N) binary-search hit-testing, and `@keyframes` animations all follow directly from that single architectural decision.
> **Android setup required:**`super_clipboard` transitively pulls in `irondash_engine_context`, which requires `compileSdk ≥ 34`. Add this to `android/build.gradle.kts` (root file, not `app/`):
Copy file name to clipboardExpand all lines: doc/MIGRATION_GUIDE.md
+33-25Lines changed: 33 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,41 @@
1
1
# Migration Guide
2
2
3
-
> **Current version: v1.2.0** — All v1.x releases are additive and backward-compatible. No breaking API changes.
3
+
> **Current version: v1.3.1**
4
4
5
-
## Current Version: 1.2.0
5
+
## Upgrading to 1.3.1
6
6
7
-
**No migration needed!** If you're starting fresh with HyperRender v1.2.0:
7
+
### ⚠️ Breaking change — clipboard and math are now opt-in
8
+
9
+
`hyper_render_clipboard` and `hyper_render_math` are no longer transitive dependencies of the root `hyper_render` package. If you use either, add them explicitly:
10
+
11
+
```yaml
12
+
dependencies:
13
+
hyper_render: ^1.3.1
14
+
hyper_render_clipboard: ^1.3.1 # only if you use SuperClipboardHandler
15
+
hyper_render_math: ^1.3.1 # only if you use MathNodePlugin / LatexNodePlugin
16
+
```
17
+
18
+
If you don't use either feature, **no changes are needed** — just bump the version and your Android build will no longer require a `compileSdk = 35` workaround.
19
+
20
+
### New in 1.3.1
21
+
22
+
- `list-style-type`, `list-style-position`, `list-style` shorthand CSS support
23
+
- `background-repeat`, `background-position` CSS support
24
+
- Edge-to-edge images: `width: 100%`now truly fills the container
0 commit comments