real_page_flip 1.12.12
real_page_flip: ^1.12.12 copied to clipboard
A high-fidelity 3D-like page flip engine for Flutter. Features physics-based paper fold effects with realistic shadows, sound, and haptic feedback for ultra-smooth performance.
Changelog #
All notable changes to the real_page_flip package will be documented here.
For the example application (Realbook app), see example/CHANGELOG.md.
1.12.12 - 2026-07-07 #
Changed #
- Crease Shadow Refinement: Softened fold crease shadow opacity by 50% (light mode: 0.16 -> 0.08, dark mode: 0.06 -> 0.03) and narrowed gradient spread stop to 30% to prevent thick, dark lines.
Fixed #
- Curved Page Edge Boundary: Corrected the reverse/previous-page flip's free edge boundary mask in
buildFlapScreenClipPathto use a matchingquadraticBezierTocurve instead of a straight line, aligning the clip edge to the curled page layout.
1.12.11 - 2026-07-06 #
Added #
- Slip Burst & Settle Thud: Added native platform haptic playbacks on Android/iOS for page release slippage and heavy settle thuds.
- Logarithmic Tactile Scaling: Implemented Weber-Fechner Law gamma correction for slow drags, magnifying subtle friction textures.
Changed #
- Adaptive Settle Durations: Fold animation speed scales dynamically based on release gesture velocity (80ms to 450ms).
- Neutral Color Temperature: Refined dark-mode highlights (0xFFE8E8F0) to eliminate glassy blue sheen on OLED screens.
Fixed #
- Extreme Gesture Artifacts: Aligned all painter and clipper guards to a shared
kFlipProgressEpsilonto prevent frame gaps, and raised minimum mesh width to 12px. - Dark Mode Shading: Replaced multiply-black with screen-white for fold creases on dark paper to ensure depth visibility.
- Low Profile saveLayer Bypass: Suppressed translucency layers entirely on low performance profiles, saving 2-3ms per frame.
1.12.9 - 2026-07-05 #
Added #
- High-DPI Support: Edge and fold masks automatically widen by 25% on high-DPI displays (โฅ 2.0) to prevent sub-pixel rendering artifacts and anti-aliasing bleeds.
Changed #
- Texture Refining: Clamped thin paper visibility threshold from 0.2 down to 0.05, allowing lighter translucent pages for subtle effects without disappearing.
Fixed #
- Gesture Reliability: Added rigorous checks for detached
RenderBoxinstances during tap position mapping, preventing rare lifecycle crashes. - Config Hashing: Optimized
PageFlipConfigequality checks to useObject.hashAll().
1.12.8 - 2026-07-05 #
Added #
- clipSpreadPageHalf utility: Exported
clipSpreadPageHalfhelper function for host applications to align local layout calculations with double-spread page boundaries.
Fixed #
- Stationary Page Shadow: Resolved extreme vertical drag misalignment in double-spread mode by replacing the axis-aligned
clipRectwith a fold-aligned, normal-projectedclipPathfor the stationary shadow. - Angle Clamping: Tightened the shared fold-angle limit conservatively across shadows, clipping paths, flap meshes, and double-spread layers to prevent edge-corner clipping on extreme aspect ratios.
- Haptics: Resolved conflicts between sound fallback playbacks and native textured vibration composition.
1.12.7 - 2026-07-04 #
Fixed #
- Paper-like haptic feedback: replace stick-slip THUD bursts with short TICK textures, debounce native vibration calls, and cancel residual motor output on drag end.
- Reduce drag haptic frequency and intensity ranges to avoid springy, stuttering vibration on Android.
1.12.6 - 2026-07-04 #
Added #
- Dynamic depth rendering: Switches from shadows to reflective highlights on dark background paper (
isPaperDark == true) for superior visual contrast and depth. - Double-spread ambient depth: Strengthened stationary edge shadow and spine groove with automated srcOver blending fallback when drawing glowing highlights on dark paper.
Changed #
- Flap Curvature Shading: Strengthened matte highlight sheen (~2x peak) and deepened fold crease darkening with a broader gradient stop (0.55) for a smoother 3D bend.
- Revealed-Page Drop Shadow: Doubled peak alpha and widened drop shadow falloff (36px). Introduced a secondary soft ambient band (1.6x width) for high/medium performance profiles.
1.12.5 - 2026-07-03 #
Fixed #
- Clamped offscreen drag positions before flip geometry reaches layer clippers and painters, keeping extreme vertical swipes on a stable viewport-bound fold angle.
- Extended flap paper, mask, fade, and shadow paint bounds only on angled folds so the screen-space flap clip cannot expose gaps at the top or bottom of the viewport.
- Kept zero-angle horizontal drag rendering visually unchanged while protecting angled drags from clipped shadows and layer seams.
Tests #
- Added extreme vertical drag regression coverage for viewport seam overlap, angled flap paint bounds, viewport touch clamping, and host-app LTR/RTL text-direction scenarios across phone, tablet, desktop, and rotated aspect ratios.
1.12.4 - 2026-07-03 #
Performance #
- Reduced hidden page-flip rendering work by using indexed flap meshes and skipping low-value double-spread mesh draws on low and medium performance profiles outside the settle phase.
Fixed #
- Hardened
PageFlipLayerViewto require a finite viewport size, removing hidden zero-size and infinite-size paint fallback paths. - Removed unused flap destination mapping from the painter/render pipeline to avoid dead API surface and misleading test coverage.
- Kept unsafe texture gating out of the layer view, so omitted sizing cannot silently suppress flap textures.
Tests #
- Added regression coverage for
skipEarlyMesh, settle-phase rendering, mesh edge cases, viewport size contracts, painter behavior, and visual goldens.
1.12.3 - 2026-07-02 #
Fixed #
- Removed release/profile
debugNeedsPaintcalls from snapshot refresh paths to preventLateInitializationErrorcrashes during page flips. - Changed the revealed-page shadow from a straight rectangular band to a curved fold-aligned path, matching the paper edge curve instead of fighting it visually.
- Reduced revealed and stationary shadow weight so the fold reads as thinner, softer paper instead of a heavy slab.
Tests #
- Added curved fold shadow band regression coverage and updated single-page reveal goldens for the softer curved shadow.
1.12.2 - 2026-06-30 #
Performance #
- Changed the default reader profile from
hightomediumto reduce mesh density and high-DPI snapshot cost while preserving the full page flip effect. - Changed the default
flapBackStrengthfrom0.3to0.0; double-spread mirrored back text is now opt-in instead of a default GPU cost. - Skips double-spread back mesh generation entirely when
flapBackStrength <= 0.005instead of drawing it and covering it with paper. - Avoids redundant
pageSnapshotsclones in double-spread capture paths; spread snapshots remain available for front, settle, and revealed-page textures. - Aligns the example app with the new lightweight
mediumdefault profile and adds a profile-modeFrameTimingbenchmark entrypoint for rapid page-turn measurement.
1.12.1 - 2026-06-30 #
๐ง ๊ธฐํํ ๋ฐ ๋ ๋๋ง ์์ง ๊ฐ์ (Geometry & Rendering Engine Enhancements) #
- Angle Clamping & limits: ํฐ์น ์
๋ ฅ ๋ฒ์๋ฅผ ๋ทฐํฌํธ ๋ด๋ก ํด๋จํํ์ฌ ๊ณผํ์ ์ ๋ฐฉ์งํ๊ณ , ๊ฐ๋ ์ ํ ๊ณต์์
atan2์์asinํฌ์๋ฒ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ ์ ํํ ๋ฌผ๋ฆฌ ํ๊ณ ๊ตฌํ | Clamped vertical touch inputs to viewport and updated the angle limit calculation to useasinprojection, physically preventing flap corners from clipping outside. - Normal-aligned bleed: ๋จ์ ๊ฐ๋ก์ถ(X) ์ด๋ ๋์ ์ ํ ๋ฒ์ ๋ฒกํฐ
foldNormal๋ฐฉํฅ์ผ๋ก ํด๋ฆฝ overlap bleed ๋ฐ ๊ทธ๋ฆผ์ ์คํ์ ์ ์ ์ฉํ์ฌ, ํ์ ๋ ๊ฐ๋์์๋ ๊ทธ๋ฆผ์์ ํด๋ฆฝ๋ผ์ธ์ด ์์ ํ ์ผ์นํ๋๋ก ์ ํฉ์ฑ ๊ฐ์ | Shifted clip bleed and shadow offsets along the fold normal vectorfoldNormalinstead of raw X-axis, keeping tilted shadow lines parallel. - Double-spread shadow fixes: ์๋ฉด ์ด์ ์ฅ(Double-spread backward) ํ๋ฆฝ ์์ spine ๊ทธ๋ฆผ์ ๋ฐฉํฅ ๋ฐ stationary ๊ทธ๋ฆผ์ ์ขํ๊ฐ ๋ค์งํ๋ ๋ฒ๊ทธ ํด๊ฒฐ | Fixed spine shadow directions and stationary shadow coordinate offsets during double-spread backward flips.
1.12.0 - 2026-06-30 #
โจ ๋จ๋ฉด(Single-page) ๋ชจ๋ ๋ํญ ๊ฐ์ (Single-Page Flip Overhaul) #
- Backward geometry: ๋จ๋ฉด ์ด์ ์ฅ ์ ํ์ ์๋ฉด(spine) ์ง์ค๋ฉํธ๋ฆฌ ๋์ ๋ค์์ฅ๊ณผ ๋์ผํ ์ ํ ๋ฐฉํฅ์ ์๊ฐ ์ญ์ฌ์์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋จ๋ฉด ๋ฆฌ๋์ ๋ง๋ ์์ฐ์ค๋ฌ์ด ๋๊น ์ ๊ณต | Single-page backward flips now reuse the forward fold geometry (time-reversed) instead of double-spread spine geometry.
- Adjacent reveal: ๋จ๋ฉด ๋ชจ๋์์ ๋๊น ์ค ๋ค์/์ด์ ์ฅ ์ฝํ ์ธ ๊ฐ ์ ํ ๋ค์์ ์ฐ์์ ์ผ๋ก ๋ณด์ด๋๋ก bottom ๋ ์ด์ด ํ์ด๋ ์ ๊ฑฐ | Bottom revealed page no longer fades in single-page mode, keeping the destination page visible throughout the flip.
- Scroll carry-over: ๋๋๊ทธ ์์ ์ ์คํฌ๋กค ์คํ์ ์ ์ค๋ ์ท์ ๋ฐ์ํ์ฌ ์ธ๋ก ์คํฌ๋กค ํ ๊ฐ๋ก ์ค์์ดํ ์ ๊ฐ์ ์ฝ๊ธฐ ์์น ์ ์ง | Scroll offset is captured into flip snapshots so horizontal swipes preserve vertical scroll depth.
- Thin-paper bleed-through:
PageFlipConfig.singlePageBackContentOpacity์ต์ ์ถ๊ฐ (๊ธฐ๋ณธ 1.0). 1.0 ๋ฏธ๋ง์ด๋ฉด ์ ํ๋ ๋ฉด์ ๋ท๊ธ์จ๊ฐ ์ข ์ด์ ์ค๋ฒ๋ ์ด๋ก ํฌ๋ฏธํ๊ฒ ๋น์ณ ๋ณด์ด๋๋ก ์ง์ | New opt-insinglePageBackContentOpacitydims peeled back content for thin-paper bleed-through; default preserves existing crisp behaviour. - Settle flicker fix: ๋น์นจ ์ค๋ฒ๋ ์ด๊ฐ ์ ์ฐฉ(settle) ๊ฒฝ๊ณ์์ ํ ํ๋ ์์ ์ฌ๋ผ์ง๋ ๊น๋ฐ์์
singlePageBackDim์ฐ์ ๋ณด๊ฐ์ผ๋ก ์์ | Bleed overlay now eases out continuously across the settle window instead of snapping off atisSettlePhase.
๐จ ์๊ฐ ํ์ง (Visual Quality) #
- Shadow seam: ์ ํ ๋ ์ด์ด ๊ทธ๋ฆผ์ ๋ฐด๋ ์ฌ์ด ๋ฐ์ ์นผ๋ ํ ํ์(blade gap) ์ ๊ฑฐ | Eliminated bright blade-like gaps between shadow bands near the fold.
- Edge masks: ๋คํฌ/๋ผ์ดํธ ์ข
์ด์ ๋ง์ถฐ edgeยทfold ๋ง์คํฌ ํญยท๋ถํฌ๋ช
๋๋ฅผ ํ
๋ง ์ธ์(
isPaperDark)์ผ๋ก ์กฐ์ | Theme-aware edge and fold masks (narrower/softer on dark paper). - Highlight sheen: ๋คํฌ ์ข ์ด๋ ์์ํ ์ฟจ ํค, ๋ผ์ดํธ ์ข ์ด๋ ๋ฐ๋ปํ ๋งคํธ ํ์ด๋ผ์ดํธ | Per-theme matte centre highlights (cool ambient on dark, warm on light paper).
- Fold crease: ์ ํ ๋ ํ ๋๋ฆฌ ์ ๋๊ปยท๊ฐ๋ ์ํ๋ก ๋งํ์ ์์๋ผ์ธ ์ ๊ฑฐ | Reduced cartoonish fold-edge stroke weight.
๐งช ํ ์คํธ (Tests) #
- ๋จ๋ฉด backward ์ญ์ฌ์, ๋น์นจ ์ค๋ฒ๋ ์ด, ๋คํฌ ๋ง์คํฌ, ํ์ด๋ผ์ดํธ ํ ๋ง, ์ ์ฐฉ ๊น๋ฐ์ ํ๊ท ๋ฑ 904๊ฐ ํ ์คํธ ํต๊ณผ | Added regression tests for single backward, bleed-through, theme masks, settle flicker; full suite green.
1.11.9 - 2026-07-01 #
โจ ๋ฐ๋ชจ ์ ๋๋ฉ์ด์ ์ธ๊ทธ๋จผํธ ์ต์ ํ (Demo Animation Segment) #
- Highlight Focus: README ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์์ ์ ๋๋ฉ์ด์ ํ์๋ผ์ธ์ 6์ด~14์ด ๊ตฌ๊ฐ์ผ๋ก ์ง์ค ์กฐ์ ํ์ฌ ํ์ด์ง ํ๋ฆฝ์ ํต์ฌ ๋ฌผ๋ฆฌ ์์ง ํจ๊ณผ๋ฅผ ๋ ์ ๋ช ํ๊ฒ ๊ฐ์กฐ | Refined the demo animation segment to showcase the 6s-14s highlight section for better preview.
1.11.8 - 2026-06-30 #
โจ ๋ฐ๋ชจ ๋ฐ ์ ๋๋ฉ์ด์ ์๊ฐํ ์ ๋ฐ์ดํธ (Demo & Visualization) #
- Preview Update: README ๋ด ๋ฐ๋ชจ ์ ๋๋ฉ์ด์ ์ ์ ๋ฐ์ดํธํ์ฌ ์ค์ ์ ์ฉ๋ ํ ํฑ ๋ฐ์๊ณผ ๋ฌผ๋ฆฌ ์์ง์ ํ์ด๋ฐ์ ์๊ฐ์ ์ผ๋ก ๋ ๋ช ํํ๊ฒ ๋ฐ์ | Updated preview animations to better reflect natural haptic and physics timing visually in README.
1.11.7 - 2026-06-29 #
๐ ๋ฐ๋ชจ ์๋์ฌ์ ๋ฒ๊ทธ ๋ฐ ์๋ฎฌ๋ ์ด์ ํ๊ฒฝ ์ต์ ํ (Demo Autoplay & Simulation Fix) #
- Autoplay Bug Fix: ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋๋๊ทธ ์ ๋๋ฉ์ด์ ์ด ํฐ์น ์ ์ค์ฒ๋ก ์ค์ธ๋์ด ์คํ ํ๋ ์ด๋ฅผ ์ค๋จ์ํค๋ ๋ฒ๊ทธ ์๋ฒฝ ํด๊ฒฐ | Fixed a bug where programmatic drag animations were misinterpreted as touch gestures, incorrectly halting the autoplay sequence.
- Aspect Ratio Restoration: 1๋จ ๋ ์ด์์์ ์ค๋งํธํฐ ์ธ๋ก ๋น์จ(420x800)๋ก, 2๋จ ๋ ์ด์์์ ํ๋ธ๋ฆฟ ๊ฐ๋ก ๋น์จ(1000x650)๋ก ๊ณ ์ ํ์ฌ ์ค์ ๊ธฐ๊ธฐ ์ฌ์ฉ ํ๊ฒฝ์ ์๋ฒฝํ ์๋ฎฌ๋ ์ด์ | Enforced device-centric aspect ratios for the demo viewport, accurately simulating portrait phones for 1-column and landscape tablets for 2-column views.
- Fast Startup: ์ฑ ๋ก๋ฉ ์งํ ๋ถํ์ํ๊ฒ ๋ฉ์ถฐ์๋ ๋๊ธฐ ์๊ฐ(3์ด)์ 0.5์ด๋ก ์ ๊ฑฐํ๊ณ ๋คํฌ ๋ชจ๋ ๋ฐฐ๊ฒฝ์ ์ผ์น์์ผ ๋น ํฐ ํ๋ฉด์ ์์ฐ | Eliminated unnecessary white-screen idle time by reducing initial startup delay and matching the index.html background color to the app theme.
1.11.6 - 2026-06-29 #
โจ ๋ฐ๋ชจ ์ ๋ฐ์ดํธ ๋ฐ UX ๊ฐ์ (Demo & UX Improvements) #
- Demo Update: ์น ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ๋ชจ๊ฐ AnimationController๋ฅผ ์ฌ์ฉํ์ฌ ์์ฐ์ค๋ฝ๊ณ ๋ชฐ์ ๊ฐ ๋์น๋ ์ธ๊ฐ์ ์ธ ๋๋๊ทธ ๋ฌผ๋ฆฌ ํจ๊ณผ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋๋ก ๊ฐ์ | The web preview demo now simulates fluid human-like page drag physics using an AnimationController, delivering a much more natural and immersive feel.
- UX Improvement: ๋ํํ ์น ๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ๊ธฐ๊ธฐ ํ๋ ์, ํ ๋๋ฆฌ, ๊ทธ๋ผ๋ฐ์ด์ ๋ฐฐ๊ฒฝ์ ์ ๊ฑฐํ์ฌ ๊น๋ํ ํ์คํฌ๋ฆฐ ๋ทฐ ํ๊ฒฝ ์ ๊ณต | Removed device frames, borders, and gradient backgrounds from the Interactive Web Preview for a clean, fullscreen viewing experience.
- Doc Optimization: README ๋ฐ๋ชจ ์น์
์ ๊ฐ์ํํ์ฌ 1๋จ ๋ฐ 2๋จ ๋ ์ด์์ ๋ชจ๋๋ฅผ ์ํ ํตํฉ
Interactive Web Preview์ ๊ณต | Simplified README demo sections to provide a unifiedInteractive Web Previewfor both 1-column and 2-column layouts.
1.11.5 - 2026-06-29 #
โจ ๋ฐ๋ชจ ๋ฐ ์ ๋๋ฉ์ด์ ์ต์ ํ (Demo & Animation Optimization) #
- ํจํค์ง ์์ ์์(page_flip_demo.webp)์ด 1-Column ๋ฐ 2-Column ํ์ด์ง ํ๋ฆฝ ์ ๋๋ฉ์ด์ ์ ์ค์ ๋ก ๋ณด์ฌ์ฃผ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๊ต์ฒด | Replaced the package demo video (page_flip_demo.webp) to properly show the actual 1-Column and 2-Column page flip animations.
- ์์ ์ฑ ์์ ์์ autoplay ์ํ์ค ์๋๋ฅผ 2๋ฐฐ๋ก ๋น ๋ฅด๊ฒ ์กฐ์ ํ์ฌ ๊ฐ๋ฐ์๊ฐ ํจ๊ณผ๋ฅผ ์ ์ํ๊ฒ ํ์ธํ ์ ์๋๋ก ๊ฐ์ | Shortened and accelerated the example app autoplay sequence so developers can observe the page flip transitions much faster on launch.
1.11.4 - 2026-06-29 #
๐ง ๋น๋/๋ฐฐํฌ #
- Gradle standalone ๋น๋ ํธํ์ฑ ๊ฐ์ ๋ฐ Dart analyzer ๊ฒฝ๊ณ ํด๊ฒฐ | Improved Gradle standalone build compatibility and resolved Dart analyzer warnings
๐งช ํ ์คํธ #
- ํด๋ฆฝ ์ ๋ ฌ, ํ๋ฉ ํ๋ก ํธ ํ ์ค์ฒ, ํ๋ฆฝ ์ปค๋ธ ํ ์คํธ์ ๋ฆฐํธ ๊ฒฝ๊ณ (๋ถํ์ํ ์ ๊ทผ/ํ๋ณํ/๊ดํธ) ์์ | Fixed lint warnings in clip alignment, flap front texture, and flip curve tests
1.11.3 - 2026-06-28 #
โจ ์์ ๋ ์ด์์ ๊ฐ์ ๋ฐ ์ง๊ด์ ์ธ ๋ฐ๋ชจ ์์ ์ ๊ณต (Example App & Demo Assets Overhaul) #
- ๋ณต์กํ ๋์๋ณด๋ ๋์ ํ์ด์งํ๋ฆฝ ํจ๊ณผ(1๋จ ๋จ๋ฉด ๋ฐ 2๋จ ์๋ฉด)๊ฐ ํ๋์ ๋ณด์ด๋๋ก ๊ธฐ๋ณธ ํ๋ฉด์ ํ์คํฌ๋ฆฐ ์ฑ ๋ทฐ์ด๋ก ๊ฐ์ | Redesigned the example app to show a clean, fullscreen book view by default so developers can focus directly on the page flip effects.
- ๋์๋ณด๋๋ฅผ ์จ๊น/ํ์ํ ์ ์๋ ํ ๊ธ ์ต์ ์ ์๋จ ํด๋ฐ์ ์ ๊ณต | Added a layout toolbar at the top allowing developers to switch between 1-Column and 2-Column views and toggle the advanced Tuning Deck overlay.
- ์์ ์ ์๋์ผ๋ก 1๋จ ๋ฐ 2๋จ ๋๊น ์๋ฎฌ๋ ์ด์ ์ ์ฐ์ ์คํํด ์ฃผ๋ autoplay/presentation ๋ชจ๋ ๋์ | Implemented a startup autoplay demonstration sequence that showcases single-page and double-spread animations smoothly.
- ์๋ก์ด ๋ ์ด์์ ๊ธฐ์ค์ ๊ณ ํ์ง ๋ฐ๋ชจ ์์ ๋ฐ ์คํฌ๋ฆฐ์ท ์์ ์ README์ ํจํค์ง์ ํตํฉ ๋ฐฐํฌ | Generated and packaged clean, dashboard-free animation WebP videos and layout screenshots.
1.11.2 - 2026-06-28 #
โจ ๋ฌธ์ํ ๋ฐ ๋ฐ๋ชจ ์์ ์ต์ ํ (Documentation & Demo Assets) #
- ๋ํํ Web ์ ํ๋ฆฌ์ผ์ด์
๋ฐ๋ชจ ์๋ฎฌ๋ ์ด์
์ ๋
นํํ ์ ๊ท ํ์ด์ง ๋๊น ์ ๋๋ฉ์ด์
๋น๋์ค(
page_flip_demo.webp)๋ฅผ ํฌํจํ ์ต์ WebP ํฌ๋งท ๋ฏธ๋์ด ์์ ์ ๊ณต | Added a high-fidelity interaction demo video (page_flip_demo.webp) showcasing full-cycle page flip animations and the Control Deck live. - ์๋ฉด ๋ณด๊ธฐ(Double-Spread) ๋ชจ๋ ์๋ฒฝ ์ง์ ์๋ด ๋ฐ ์ ๊ท ์ธํฐ๋ํฐ๋ธ ๋ฐ๋ชจ ๋ฏธ๋์ด๋ฅผ README.md ๋ฌธ์์ ํตํฉ ๋ฐ์ | Integrated double-spread support notices and the new web interactive preview into the root README.md.
1.11.1 - 2026-06-28 #
โจ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ (Example Application) #
- ๋คํฌ ๋ชจ๋, ๋ค์จ ์ปฌ๋ฌ ๊ทธ๋ผ๋ฐ์ด์ , Glassmorphic ํจ๋์ ๋์ ํ์ฌ ๊ฐ๋ฐ์ ์นํ์ ์ธ ํ๋ฆฌ๋ฏธ์ ํค์ค๋งค๋๋ก ์์ ์ฑ ๋์์ธ์ ์ ๋ฉด ๊ฐํธ | Completely redesigned the example app with a premium developer-focused look using dark theme, glassmorphic panels, and neon gradients.
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ์ํ๋ฐ(ํ์ด์ง์, ์์ง ์ํ ๋ฑ) ๋ฐ PageFlipConfig ํ๋ผ๋ฏธํฐ(๋ฏผ๊ฐ๋, ๋ถํฌ๋ช ๋, AMO ์ฑ๋ฅ ๋ ๋ฒจ ๋ฑ)๋ฅผ ์ฆ์์์ ํ๋ํ ์ ์๋ ๋ํํ Control Deck ํ์ฌ | Implemented an interactive Control Deck with sliders, segmented selectors, and toggles to dynamically test and profile page flip settings live.
1.11.0 - 2026-06-28 #
โจ ์ฑ๋ฅ ์ต์ ํ (Performance) #
- ์ ์ฌ์ ๊ธฐ๊ธฐ ์ต์ ํ๋ฅผ ์ํ
PerformanceProfile๋์ ๋ฐ ๋งค์ฌ ๋ ๋๋ง ๋์ ๊ฑด๋๋ฐ๊ธฐ ์ต์ ํ | IntroducedPerformanceProfileand dynamic mesh-rendering skip to optimize GPU performance for low-end devices. PerformanceProfile.low๋ชจ๋์ผ ๋ ์๊ฐ์ ์ผ๋ก ๋ณํ๊ฐ ์ ์ ๊ตฌ๊ฐ(๋๋๊ทธ ์ด๊ธฐ๋ ๋๊น ์ ๋๋ฉ์ด์ ์ด์ค๋ฐ)์์ ๋ณต์กํ Mesh ์ฐ์ฐ์ ์์ ํ ๊ฑด๋๋ฐ๊ณ ๋จ์ ํ ์ค์ฒ๋ก ๋์ฒดํ์ฌ ๋ ๋๋ง ๋ฆฌ์์ค๋ฅผ ์ ๊ฐ | AddedskipEarlyMeshto bypass complex Mesh rendering during the invisible initial/middle phases of animations on low-profile devices.- ๋ผ์ด๋ธ ํ์ด์ง ํด๋ฐฑ(Live page fallback)์ด Double-spread ๋ชจ๋์๋ ์ ๊ฑฐ๋๋๋ก ํ์ฌ, ๋ฌด๊ฑฐ์ด ์์ ฏ ํธ๋ฆฌ๊ฐ ์ค๋ณต ๋ ๋๋ง๋ ๋ ๋ฐ์ํ๋ GlobalKey ์ถฉ๋ ๋ฐ ๋ถํ์ํ ๋ฆฌ์์ค ๋ญ๋น ๋ฐฉ์ง | Fixed duplicate GlobalKey crashes by removing live page fallback from double-spread OffscreenPreRenderer.
๐งช ํ ์คํธ (Tests) #
- ์ต์ ํ๋ ๋ ๋๋ง ๋ถ๊ธฐ์ ๋ง์ถ์ด ๋ ์ด์ด ๋ทฐ ํ ์คํธ๋ค์ด ๋ผ์ด๋ธ ํ์ด์ง ๋์ Opaque Paper Fallback์ ๊ฒ์ฆํ๋๋ก ๊ฐ์ | Updated layer view tests to assert Opaque Paper fallback correctly, reflecting the removed live page fallback optimization.
1.10.0 - 2026-06-28 #
๐งช ํ ์คํธ ๋ฐ ์์ ์ฑ ๊ฒ์ฆ (Test & Stability) #
- ๋จ๋ฉด ๋ชจ๋(Single Backward) ์ง์ค๋ฉํธ๋ฆฌ ์ฃ์ง ์ผ์ด์ค ํ ์คํธ ์ถ๊ฐ ๋ฐ ๊ตฌ๋ฒ์ ํ ์คํธ ๋ก์ง ์ต์ ํ | Added geometry edge case tests and updated outdated test expectations for single backward flips.
- PageFlipClipper์ PageFlipOpenClipper ๊ฐ์ ํด๋ฆฌํ ํจ์ค ๊ต์ฐจ์ ์ ํฉ์ฑ ๋ฐ ํ๋ฉด ๋น์จ๋ณ ์ค์ฐจ ์๋ ์์ ํ ์ผ์น ๊ฒ์ฆ ํ ์คํธ ์ถ๊ฐ | Added rigorous clip path alignment tests across multiple aspect ratios to ensure perfect boundary intersections.
- ์ฐ์์ ์ธ ๋๋๊ทธ ๋ฐ ์ ๋๋ฉ์ด์ ์ทจ์ ์ ๋ฐ์ํ๋ Race Condition ๋ฐฉ์ง ์์ ฏ ํตํฉ ํ ์คํธ ์ถ๊ฐ | Added widget integration tests to verify robust handling of rapid, continuous drag and cancellation race conditions.
1.9.9 - 2026-06-28 #
๐ ์์ #
- ๋ค์งํ๋ ํ์ด์ง์ ๊ทธ๋ฆผ์ ์์ญ(
Revealed Page Shadow)์ด ์ง์clipRect๋์ ์ค์ ๊ณก์ ํด๋ ๊ฒฝ๋ก(clipPath)๋ฅผ ๋ฐ๋ผ ์๋ฆฌ๋๋ก ๊ฐ์ ํ์ฌ ๋ชจ๋ ํ๋ฉด ๋น์จ์์ ๋ ๋ฒ์งธ ๋ ์ด์ด์ ๊ณก์ ๊ฒฝ๊ณ์ ๊ณผ ๊ทธ๋ฆผ์๊ฐ ์์ ํ ์ผ์นํ๋๋ก ์์ | Replaced straightclipRectwith curvedclipPathfor Revealed Page Shadow, ensuring perfect alignment between the curved fold line boundary and the shadow on all screen aspect ratios
1.9.8 - 2026-06-28 #
๐ ์์ #
- ๋จ๋ฉด ๋ชจ๋ ์ด์ ์ฅ(Backward) ์ ํ ์ ์ ํ๋ ์ข ์ด์ ์๋ฆฌ๋ ๋ฉด์ ๊ณผ ๊ทธ๋ฆผ์ ๋ฐฉํฅ์ด ๊ผฌ์ด๋ ์ง์ค๋ฉํธ๋ฆฌ ๊ณ์ฐ ์ค๋ฅ ์์ | Fixed Single Backward flip geometry where flap direction and material width calculations were inverted
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ธ์ ํ์ด์ง๋ค์ด
Offstage์ค์ ์ผ๋ก ์ธํด ํ๋ฌํฐ ์์ง์์ ํ์ธํ ์ด ์๋ต๋์ด ์ค๋ ์ท(toImage) ์บก์ฒ์ ์๊ตฌ ์คํจํ๋ ๋ฌธ์ ์์ | Fixed background adjacent page snapshots failing to capture due toOffstageomitting painting - ํ๋ฉด ๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ ๋๋ง ์์ญ์ ์คํฌ๋ฆฐ ๋ฆฌ๋(Semantics), ํฌ์ปค์ค(Focus Scope), ๋ง์ฐ์ค/ํฐ์น ์
๋ ฅ(IgnorePointer) ๋์๋ฅผ ์์ฒ ์ฐจ๋จํ๋
OffscreenPreRenderer๋์ | IntroducedOffscreenPreRendererto prevent focus, semantics, and pointer interaction leaks from off-screen pre-rendered pages
1.9.7 - 2026-06-28 #
๐ ์์ #
onMethodCall()์ ์ฒด try-catch ์ ์ฉ์ผ๋ก SecurityException ๋ฑ ๋ชจ๋ ์์ธ๊ฐresult.error()๋ก ์ ๋ฌ๋์ด Dart HapticFeedback fallback์ด ์์ ์ ์ผ๋ก ๋ฐ๋ | WrappedonMethodCall()in try-catch so all exceptions (including SecurityException) propagate asresult.error(), ensuring reliable Dart HapticFeedback fallbackplayFallback()์vibrator?.vibrate()ํธ์ถ ์์ธ๊ฐ ์์๋ก ์ ํ๋๋ ๋ฌธ์ ์์ | Guardedvibrator?.vibrate()inplayFallback()so exceptions don't bubble up unhandled
1.9.6 - 2026-06-28 #
โป๏ธ ๋ฆฌํฉํ ๋ง #
PageFlipGeometry์ ๋ชจ๋late finalํ๋๋ฅผfinal+ factory constructor๋ก ์ ํํ์ฌLateInitializationError์ํ ์ ๊ฑฐ | Converted 22late finalfields to plainfinalvia factory constructor, eliminatingLateInitializationErrorrisk
๐ ์์ #
- ์ ์ Shader ์บ์(
static Map<String, Shader>)๊ฐ ์ ๋ dispose๋์ง ์์ GPU ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ์กฐ ์ฆ๊ฐํ๋ ๋์ ์์ . ์ธ๋ผ์ธcreateShader๋ก ๋์ฒด | Fixed unbounded GPU memory leak from static Shader cache โ inlined simple gradient creation instead build()๋ดaddPostFrameCallback์ด LayoutBuilder ์ฌํธ์ถ ์ ์ค๋ณต ๋ฑ๋ก๋์ดupdateCachedWidth/captureSnapshots๊ฐ ์ฌ๋ฌ ๋ฒ ์คํ๋๋ ๋ฒ๊ทธ ์์ | Fixed stacked post-frame callbacks inbuild()causing redundantupdateCachedWidth/captureSnapshots- snapshot ๋ถ์ฌ ์
Offstage์ child๊ฐ ๋จ์ paper๋ก ๊ต์ฒด๋์ด capture pipeline์ด ์๊ตฌ ์์๋๋ ๋ฌธ์ ์์ (liveFallbackIndices ์ ๊ฑฐ) | Fixed snapshot pipeline corruption where missing snapshots caused Offstage to render paper instead of live pages (removed liveFallbackIndices) _scheduleCaptureRetry์ ๋จ์ผ ์ค์นผ๋ผ ํ๋๊ฐ ๋ฎ์ด์จ์ ธ ์๋ชป๋ ํ๋ผ๋ฏธํฐ๋ก retry๋๋ ๋ฒ๊ทธ ์์ | Fixed capture retry parameter overwrite bug in_scheduleCaptureRetry- ๋๋๊ทธ ์์ฉ ํ ์์ง ์ ์ค์ฒ๋ฅผ ๊ฑฐ๋ถํ ์ ์์ด Scrollable/SelectableText๊ฐ block๋๋ ๋ฌธ์ ์์ | Fixed post-accept vertical gesture rejection so Scrollable/SelectableText can receive scrolls
1.9.5 - 2026-06-28 #
๐ ์์ #
- ์์ ฏ ์๋ฉธ ๋ฐ ์ ์ค์ฒ ๋ ์ด์ด ์ธ๋ง์ดํธ ์์ ์ ๋ฐ์ํ ์ ์๋ Null check ๋ฐ lifecycle ํฌ๋์ ๋ฐฉ์ง | Guarded against null safety/lifecycle crashes during unmounting and disposal
- ํ๋ฉด ํฌ๊ธฐ ๋ณ๊ฒฝ ์ ์บ์ ๋ฌดํจํ ๋ฐ ๋ ์ด์์ ์ฌ๊ณ์ฐ ์ฒ๋ฆฌ ์ถ๊ฐ | Added cache invalidation and layout recalculation on size changes
endRevealStrength๊ธฐ๋ณธ๊ฐ์0.0์ผ๋ก ๋ณ๊ฒฝํ๊ณ , settling ๋จ๊ณ์์์ ๋ฏธ์ธ ๋น์ฃผ์ผ ์์ ๊ฐ์ ์ ์ํด ์ค๊ฐ ๋ ์ด์ด fade transition ์ถ๊ฐ | ChangedendRevealStrengthdefault to0.0and added middle layer fade transition to eliminate settled artifactsflapContentRevealStart/End๋ถ๋ชจ 0 ์ต์ ์ฒ๋ฆฌ | Handled potential division by zero inflapContentRevealStart/Enddivisor
1.9.4 - 2026-06-28 #
โจ ๊ธฐ๋ฅ #
- PageFlipConfig.copyWith() 26๊ฐ ํ๋ ์ ์ ์ง์ ๋ฐ clear-flag๋ก nullable ํ๋ ์ด๊ธฐํ | Added full copyWith() for all 26 fields with clear-flags for nullable fields
๐ ์์ #
- PageFlipConfig.== ์ฐ์ฐ์์ semanticBuilder ํ๋ ๋๋ฝ๋์ด ์๋ชป๋ ๋๋ฑ์ฑ ๋น๊ต | Fixed == operator missing semanticBuilder field causing incorrect equality
- PageFlipStateController.dispose()๊ฐ AnimationController.dispose()๋ฅผ ์ค๋ณต ํธ์ถํ๋ ๋ฒ๊ทธ (๋น๋ฉฑ๋ฑ์ฑ ๋ณดํธ) | Fixed dispose() calling AnimationController.dispose() twice (idempotency guard)
๐งช ํ ์คํธ #
- Phase I-VI ํตํฉ ํ ์คํธ ๋๊ท๋ชจ ์ถ๊ฐ: ์ค์ ์ ํ์ฑ, ์ํ ์ปจํธ๋กค๋ฌ ๋ถ๊ธฐ, ๋ฌผ๋ฆฌ ์์ฑ๊ธฐ๋ฐ 60+๊ฐ, ์์ ฏ ์ ์ค์ฒ, ์๋ฉด๋ชจ๋ยท๋ฉํฐํฐ์น, ๊ธฐํ ๋ถ๋ณ์์ฑ, ๋ฉ๋ชจ๋ฆฌ ์๋ช ์ฃผ๊ธฐ, ํ๋ซํผ ์ฑ๋, ์ ๊ทผ์ฑ, ๋์ฉ๋ ์์ดํ , ์คํธ๋ ์ค | Added comprehensive Phase I-VI tests: 60+ physics property-based, gesture/edge/widget, double-spread/multitouch integration, geometry invariants, memory lifecycle, platform channels, accessibility, large itemCount, stress
- PageFlipConfig ์๋ช , ๋ณต์ฌ, ์คํ๋ ๋๋ชจ๋ 3๊ฐ ํ์ผ 55๊ฐ ํ ์คํธ | Config copyWith, equality, spread mode tests
- ์ปจํธ๋กค๋ฌ ์ฃ์ง์ผ์ด์ค 30๊ฐ ๋ฐ ํ๋ก๊ทธ๋จ API ๊ฒ์ฆ | Controller edge case and programmatic API tests
- ์์ ฏ ์ ์ค์ฒยท์ฝ๋ฐฑยท์ฃ์งํญ ํตํฉ 30๊ฐ ํ ์คํธ + 5๊ฐ ๊ธฐ์กด ํ์ผ ๊ฐ์ | Widget gesture/callback/edge tap tests with 5 existing file enhancements
๐ ์์ #
- ํ ํฑ ๋ฌผ๋ฆฌ ๊ณ์ฐ์ด ํญ์ 400px๋ก ํ๋์ฝ๋ฉ๋์ด ๊ธฐ๊ธฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ง๋ ๊ฐ๋๊ฐ ๋ฌ๋ผ์ง๋ ๋ฒ๊ทธ ์์ (์ค์ ๋ทฐํฌํธ ํญ ์ฌ์ฉ)
- ํ์ด์ง๋ฅผ ๋ง์ด ๋๊ธธ์๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ๋๋ PaperPhysicsEngine ๋งต ๋ฌดํ ์ฑ์ฅ ๋ฒ๊ทธ ์์
- goToPage()๊ฐ ๋๋๊ทธ/์ ๋๋ฉ์ด์ ์ค ํธ์ถ๋๋ฉด ๋ด๋ถ ์ํ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์์ (guard ์ถ๊ฐ)
- ํ ํฑ ํ ์ค์ฒ ๋ ธ์ด์ฆ์ .abs()๋ก ์ธํ ๋ถ์ฐ์ ๋ํจ์๋ก ์ง๋ ์ถ๋ ฅ์ "๋ธ๊น" ๋๋์ด ๋ฐ์ํ๋ ๋ฌธ์ ์์
โก ์ฑ๋ฅ #
- ํ์ด์งํ๋ฆฝ ๋ ์ด์ด ์ค๋ ์ท ๋ ๋๋ง์์ ๋ถํ์ํ RepaintBoundary ์ ๊ฑฐ๋ก GPU compositing layer ์ค๋ฒํค๋ ๊ฐ์
โป๏ธ ๋ฆฌํฉํ ๋ง #
- onHandleEffect์ ๋ฌธ์์ด ๊ธฐ๋ฐ enum ๋งค์นญ(name.contains('Haptic'))์ ์์ ํ switch ๋ฌธ์ผ๋ก ๋ณ๊ฒฝ
- PageFlipGestureRecognizer์ @Deprecated ๋งํน (PageFlipGestureLayer๋ก ๋์ฒด๋จ)
- PageFlipEffectHandler ์ธํฐํ์ด์ค์ viewportWidth setter ์ถ๊ฐ
- shouldRepaint์ ๋๋ฝ๋ performanceProfile ํ๋ ๊ฒ์ฌ ์ถ๊ฐ
1.9.0 - 2026-06-26 #
โจ ๊ธฐ๋ฅ #
- ์ธ๋ถ
vibration๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ณ ๊ณ ์ฑ๋ฅ ํ๋ซํผ ์ฑ๋ ๊ธฐ๋ฐAdvancedHapticEngine์ ๊ท ๊ตฌ์ถ - Android (Core Haptics Composition APIs - Click/Tick/Thud) ๋ฐ iOS (CoreHaptics - CHHapticEngine) ๋ง์ถคํ ๋ค์ดํฐ๋ธ ์ง๋ ์ฐ๋
- ๋๋๊ทธ ์๋์ ๋น๋กํ๋ ๋์ ์ฃผ๊ธฐ ์ค๋กํ๋ง(Dynamic Throttling) ๋ฐ ๋ง์ฐฐ/๊ฐ์ฑ์ ๋ฐ๋ฅธ ๋ฐ์์ฑ ์ต์ ํ
1.8.1 - 2026-06-25 #
๐ ์์ #
- 2๋จ๋ณด๊ธฐ ํ์ด์งํ๋ฆฝ settle ๋จ๊ณ(progress 0.85-0.95)์์ ๋ชฉ์ ์ง ๋์ ํ์ฌ ํ์ด์ง ์ฝํ ์ธ ๊ฐ ํ์๋๋ ๋ฒ๊ทธ ์์
- EPUB TOC ํ์ด์ง(epub:type="toc")๊ฐ ์ผ๋ฐ ์ฑํฐ๋ก ๋ถํ ๋์ด ํ์ด์ง๊ฐ ํฉ์ด์ง๋ ๋ฌธ์ ์์
1.8.0 - 2026-06-25 #
1.7.2 - 2026-06-24 #
Changed #
- Extracted
PageFlipPainterandPageFlipClippersinto separate part files for cleaner code organization. - Haptic engine enhancements:
- iOS/Android platform-specific texture haptic paths with speed-adaptive throttling.
- Weber-Fechner non-linear amplitude curve (pow 1.3-1.4) for slip-release and micro-slip events.
- Independent iOS/Android texture tick throttle tracking.
1.7.1 - 2026-06-24 #
Changed #
- Haptic engine redesigned with event-specific vibration signatures:
startHaptic: single 45ms pulse at amplitude 180impulseHaptic: crisp double-tap pattern for tap-flip confirmationslipRelease: intensity-based double-tap pattern (pages slipping feel)microSlip: intensity-based single pulse (acceleration bursts)sound: 28ms pulse synchronized with audiotexturedHaptic: duration reduced to 10-30ms for cleaner throttle separation
- Added
_vibratePattern()usingVibration.vibrate(pattern:, intensities:)for multi-pulse haptic sequences on amplitude-control-capable devices - Added
_iosHaptic()/_cancelHaptic()primitives - Removed
_triggerImpact()/HapticImpactTypein favour of event-specific handlers - Stick-slip events now use their
intensityfield (0.0-1.0) to dynamically scale vibration duration and amplitude instead of hardcoded light/medium presets
1.7.0 - 2026-06-23 #
Added #
DefaultPageFlipEffectHandleris now exported from the public API (package:real_page_flip/real_page_flip.dart)
Fixed #
_triggerImpact()now firesVibration.vibrate()afterHapticFeedback, ensuring haptic vibration is actually felt on Android devices whereHapticFeedbackis too subtle or imperceptible. Impact events (startHaptic, impulseHaptic) now produce real motor vibration.- Non-amplitude-control Android devices now use
Vibration.vibrate(duration:)instead ofHapticFeedback.selectionClick()during paper-texture haptics (texturedHaptic), providing noticeably stronger feedback. - Duration clamp raised from 5-20ms to 8-35ms so paper-texture vibration pulses are long enough to feel.
1.6.2 - 2026-06-23 #
Changed #
- Minor style and formatting lint fixes to pass strict quality gate standards.
1.6.1 - 2026-06-23 #
Fixed #
- Single backward page flip: unified
foldXandflapMaterialWidthformulas with forward direction. Now single backward foldX moves right-to-left (same as forward) and flap grows with progress, eliminating directional inconsistency.
1.6.0 - 2026-06-22 #
Added #
DevicePerformanceProfileenum (high/medium/low) for adaptive rendering quality.performanceProfilefield onPageFlipConfigandPageFlipLayerView.DefaultPageFlipEffectHandlernow accepts an optionalperformanceProfileto throttle haptic feedback on low-end devices.
Fixed #
- Single-page backward flip: corrected
flapRightOfFoldtofalsefor single-page mode so the flap extends left from foldX (consistent with forward direction). flapSnapshotSpreadIndexnow returnscurrentIndex - 1for single backward (previously returnedcurrentIndex), ensuring the correct snap page is displayed as the flap texture.
1.5.1 - 2026-06-21 #
Changed #
- Split page flip engine library into part files (
page_flip_geometry.dart,page_flip_gesture.dart) for cleaner code organization. - Fixed 12 dart compiler/linter warnings in page flip engine and widgets.
1.5.0 - 2026-06-21 #
Added #
flapRightOfFoldfield onPageFlipGeometryunifying four-mode flap-direction logic.- Single-page backward: spine-anchored fold with flap following finger direction.
- Direction-aware highlight, fold-darkening, edge-fade, and fold-fade gradients.
Changed #
- Single-page forward:
foldXanchored at left spine (x=0), flap extends rightward, shrinking toward spine as page turns. - Double-spread backward: flap extends RIGHT of foldX (previously left).
buildFlapScreenClipPathsupports flap-right-of-fold paths with corrected bleed.- Angle limits simplified for single-page mode.
Fixed #
- Backward single-page flap now shows page content during flip.
- Backward flap curvature direction corrected.
- Clip bleed direction corrected for backward double-spread.
- Single-page fold line no longer moves to opposite edge (eliminated tearing look).
1.4.2 - 2026-06-04 #
Added #
- Updated documentation to clarify that the engine is optimized for vertical mobile devices and does not support horizontal two-page view.
1.4.0 - 2026-05-14 #
Added #
- Direction-aware flip thresholds:
cutoffForwardandcutoffPreviousindependently control drag-release completion. - 12 new test files covering geometry, physics, controllers, and widgets.
- Named geometry constants extracted from inline magic numbers.
Changed #
PageFlipStateControlleraccepts configurable thresholds fromPageFlipConfig.PageFlipPainterconstructor is nowconst.cutoffForwarddefault: 0.8 โ 0.4,cutoffPreviousdefault: 0.1 โ 0.4.
Fixed #
PageFlipConfig,PaperPhysicsConfig,PaperPhysicsFrameequality/hashCode.
1.3.0 - 2026-05-09 #
1.2.3 - 2026-05-02 #
Fixed #
- Replaced WebP tags with raw markdown video links for pub.dev compatibility.
1.2.1 - 2026-05-02 #
Added #
- High-fidelity extended interaction recording.
- Legacy Interaction Demo section.
1.1.2 - 2026-05-02 #
Added #
- Snappy demo video with immediate interaction start.
- Absolute asset URLs for pub.dev compatibility.
1.1.1 - 2026-05-02 #
Added #
- Professional teaser video, GPU optimization guides, Opus audio assets.
- Example app with unique content and stress tests.
1.9.3 - 2026-06-27 #
๐ ์์ #
- ์ฌ์ด๋ ์ฌ์์
stop()+seek()+resume()ํจํด์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๊ฐํ์ ์ฌ์ ์คํจ ํด๊ฒฐ (play()์ setSource() asset I/O ์ ๊ฑฐ) - Android
VIBRATEํผ๋ฏธ์ ๋๋ฝ์ผ๋ก ํ ํฑ์ด ์ ํ ์๋ํ์ง ์๋ ๋ฒ๊ทธ ์์ (AndroidManifest์ ๊ถํ ์ถ๊ฐ) - ๋ค์ดํฐ๋ธ ํ๋ฌ๊ทธ์ธ vibrator ๋ฏธ์ฌ์ฉ ์ error ๋ฐํํ๋๋ก ์์ (Dart fallback ํ์ฑํ)
1.9.2 - 2026-06-27 #
๐ ์์ #
_playSound์์resume()๋์play()๋ฅผ ์ฌ์ฉํ๋๋ก ์์ (audioplayers 6.x:stop()ํresume()์ no-op)AdvancedHapticEngine.playTransient()๋ฐplayThud()์HapticFeedbackํด๋ฐฑ ์ถ๊ฐ (MethodChannel ์คํจ ์ ๊ธฐ๋ณธ ์ง๋ ๋ณด์ฅ)
1.1.0 - 2026-05-01 #
Added #
- Physics-based paper friction interaction logic.
- Dynamic geometry rendering with hardware-accelerated clipping.
- Integrated haptic feedback and sound effect system.
- Semantics support for accessibility.
Changed #
- Refactored
PageFlipWidgetto usePageFlipStateController. - Improved snapshot capturing in
PreRenderManager.
Fixed #
- Layout boundary issues in Stack configurations.
- Memory leak in
PreRenderManagersnapshots.