ChangelogΒΆ
All notable changes to this project are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
UnreleasedΒΆ
2.0.0 2026-09-22ΒΆ
Haze 2.0 rebuilds the library around typed, modular visual effects. Blur moves into its own artifact, Glass joins as an experimental multiplatform effect, and each modifier now declares its input, shareable Style, performance policy, and rendering behavior explicitly.
AddedΒΆ
- Added the
haze-blurartifact and typedModifier.hazeBlurAPI, with replayableHazeBlurStyleprograms that can be shared and extended withthen. - Added the experimental
haze-glassartifact, including Regular and Clear built-in styles, refraction, depth blur, tint, lighting, accessibility settings, progressive effects, and hover, focus, and press responses. - Added
HazeInput.Content,HazeInput.Sources, andHazeInput.Backdropso effects can explicitly select their input. Backdrop includes a portable captured-source fallback and an experimental, opt-in native backend on supported Android versions. - Added
HazeEffectFactoryandHazeEffectRendererfor custom typed effects, plus optionalhaze-blur-material3andhaze-glass-material3integrations. - Added shared
HazePerformanceModecontrols for built-in Blur and Glass, including adaptive, quality, balanced, performance, and fixed-quality profiles.
ChangedΒΆ
- Replaced the mutable
Modifier.hazeEffectBlur DSL with typedModifier.hazeBlurandModifier.hazeGlassAPIs. Styles are immutable, replayable configurations; rendering resources are owned by their modifier nodes. - Moved Blur APIs to
dev.chrisbanes.haze.blurand movedHazeProgressiveto the coredev.chrisbanes.hazepackage. Blur applications now depend on bothhazeandhaze-blur. - Reworked source selection, retained-output policy, cross-window positioning, and default workload-aware sampling around explicit input and performance contracts.
- Updated Kotlin to 2.4.20, Compose Multiplatform to 1.12.0, and Jetpack Compose to 1.12.1.
macosArm64remains supported; the upstream-removediosX64andmacosX64targets are no longer published.
FixedΒΆ
- Corrected source sampling through scaled and rotated graphics layers, nested Haze states, sticky headers, and multiple Compose roots or windows.
- Improved retained-layer lifecycle, invalidation, caching, and teardown behavior across Android, Desktop, iOS, and Web, including RenderScript crash and resource-leak fixes.
- Fixed progressive Blur coverage and tint behavior on Android 12 and 12L, and refined Glass rendering, colour handling, rounded edges, fallback behavior, and animation performance.
RemovedΒΆ
- Removed the Haze 1 Blur surface and the temporary Haze 2 prerelease adapters, including
Modifier.hazeEffectBlur overloads, legacyHazeStyle/HazeTintaliases, mutable effect scopes, and public renderer internals. - Removed readable/copyable Blur and Glass Style internals. Build styles with their factory DSLs,
create colour effects through
HazeColorEffect.tintorcolorFilter, and usethenfor variations.
See the Haze 2.0 migration guide for dependency, import, API, input-policy, and performance-mode changes.
Full Changelog: https://github.com/chrisbanes/haze/compare/1.7.2...2.0.0
Prerelease history
## 2.0.0-rc02 2026-09-18 { id="2.0.0-rc02" } ### Added - Added `RefractionProfile.Edge(width)` to author edge refraction independently of surface lighting. The default `RefractionProfile.Surface` preserves existing custom optics ([#1332](https://github.com/chrisbanes/haze/pull/1332)). - Added an Android tilt-aware Glass sample with fixed and gravity-driven lighting modes ([#1319](https://github.com/chrisbanes/haze/pull/1319)). ### Changed - Calibrated Clear Glass refraction against iOS 27 captures, including the inward edge falloff and wider optical corners that produce curved loops. Clear also uses the accepted brighter tone ([#1332](https://github.com/chrisbanes/haze/pull/1332)). - Calibrated Regular Glass against native iOS 27 light appearance, with a narrower refraction band, brighter tone, and wider diffusion on cards and panels. Fixed the physical-pixel blur cap that prevented larger authored radii from taking effect on dense displays ([#1332](https://github.com/chrisbanes/haze/pull/1332)). - Clear uses a consistent shallow blur across surface sizes ([#1332](https://github.com/chrisbanes/haze/pull/1332)). - Preserved in-gamut source colour when Glass requests a chroma boost, avoiding clipped saturated plateaus, and retained authored tint and edge-shadow Compose `ColorSpace` semantics in colour-managed shader uniforms ([#1334](https://github.com/chrisbanes/haze/pull/1334)). - Lowered the Android compile SDK requirement from the 37.2 preview SDK to the standard Android 37 SDK while preserving the experimental native Backdrop runtime gates and fallback ([#1323](https://github.com/chrisbanes/haze/pull/1323)). - Consolidated Glass Lab into Glass Playground, with a compact selector for comparing the Regular and Clear built-in styles ([#1324](https://github.com/chrisbanes/haze/pull/1324), [#1326](https://github.com/chrisbanes/haze/pull/1326)). ### Fixed - Preserved brush RGB while progressive tint alpha is modulated on Android 12 and 12L ([#1331](https://github.com/chrisbanes/haze/pull/1331)). - Reset retained capture-layer effects before Android's layered progressive blur path records a new frame, preventing stale alpha and render effects across transitions ([#1333](https://github.com/chrisbanes/haze/pull/1333)). - Removed hard one-pixel boundaries from rounded Glass controls and dark bevel bands from progressive Glass over opaque captures ([#1336](https://github.com/chrisbanes/haze/pull/1336)). ## 2.0.0-rc01 2026-09-13 { id="2.0.0-rc01" } ### Added - Added `LocalHazePerformanceMode` for providing the default Blur and Glass performance mode to a composition subtree. Explicit modifier values still take precedence ([#1314](https://github.com/chrisbanes/haze/pull/1314)). - Allow `HazeInput.Backdrop()` to omit its source fallback. When native Backdrop rendering is unavailable, effects without a fallback leave their content unchanged ([#1318](https://github.com/chrisbanes/haze/pull/1318)). - Added direct and embeddable web sample links, sample performance controls, and a Glass music player example ([#1307](https://github.com/chrisbanes/haze/pull/1307), [#1310](https://github.com/chrisbanes/haze/pull/1310), [#1313](https://github.com/chrisbanes/haze/pull/1313), [#1314](https://github.com/chrisbanes/haze/pull/1314)). ### Changed - `HazePerformanceMode.Fixed` now interpolates quality continuously across its supported input-pixel range instead of selecting one of three tiers. `Balanced` remains `Fixed(0.5f)` and now retains more detail in Glass ([#1316](https://github.com/chrisbanes/haze/pull/1316)). - Consolidated performance guidance and published updated Haze 1 versus Haze 2, performance-mode, fixed-quality, and native Backdrop measurements ([#1301](https://github.com/chrisbanes/haze/pull/1301), [#1304](https://github.com/chrisbanes/haze/pull/1304), [#1317](https://github.com/chrisbanes/haze/pull/1317)). ### Fixed - Draw Glass rims without an unnecessary offscreen effect on supported Android and Skiko canvases, while retaining the fallback when the destination canvas cannot use the direct shader path ([#1297](https://github.com/chrisbanes/haze/pull/1297), [#1298](https://github.com/chrisbanes/haze/pull/1298)). - Prevent unrelated sibling redraws from re-recording an unchanged retained Haze source ([#1299](https://github.com/chrisbanes/haze/pull/1299)). ## 2.0.0-beta03 2026-09-07 { id="2.0.0-beta03" } ### Added - Added `HazeInput.Backdrop` with portable source fallback and an experimental native backend for Android 17 QPR2. Native rendering is disabled by default and requires `HazeFeatureFlags.isPlatformBackdropEnabled`; physical Android 37.2 acceptance remains pending ([#1278](https://github.com/chrisbanes/haze/pull/1278)). - Added `GlassAccessibilitySettings` and `LocalGlassAccessibilitySettings` for app-supplied reduced transparency, increased contrast, and visible borders, plus the `edgeShadow` style builder and `GlassOptics.refractionDetailIntensity` controls ([#1272](https://github.com/chrisbanes/haze/pull/1272), [#1275](https://github.com/chrisbanes/haze/pull/1275)). ### Changed - Replaced the experimental `GlassOptics.Adaptive` and `GlassOptics.Fixed` types with one public `GlassOptics` configuration. Blur and depth can now use independent shortest-dimension points through `OpticalSizeValue.Responsive` ([#1272](https://github.com/chrisbanes/haze/pull/1272)). - Refined Glass edge shading and the default specular response ([#1275](https://github.com/chrisbanes/haze/pull/1275)). - Skip source capture while no effects consume it ([#1279](https://github.com/chrisbanes/haze/pull/1279)). - Validate progressive gradient intensities as finite values in `0f..1f` and require at least two stops when converting gradients to brushes ([#1282](https://github.com/chrisbanes/haze/pull/1282)). - Refreshed Android baseline profiles for Haze 2 ([#1293](https://github.com/chrisbanes/haze/pull/1293), [#1294](https://github.com/chrisbanes/haze/pull/1294)). - Updated Kotlin to 2.4.20 ([#1295](https://github.com/chrisbanes/haze/pull/1295)). ### Fixed - Corrected the built-in Regular and Clear Glass blur and depth responses so compact surfaces retain more source detail while larger surfaces increase their blur smoothly ([#1272](https://github.com/chrisbanes/haze/pull/1272)). - Corrected published Compose dependency scopes ([#1283](https://github.com/chrisbanes/haze/pull/1283)). - Fixed `Behind` source selection across nested independent Haze states ([#1290](https://github.com/chrisbanes/haze/pull/1290)). - Accept subpixel blur radii in the RenderScript backend ([#1291](https://github.com/chrisbanes/haze/pull/1291)). - Preserve progressive blur coverage for constant and restricted intensity ranges on Android 12 and 12L ([#1292](https://github.com/chrisbanes/haze/pull/1292)). - Fixed a RenderScript teardown race that could crash during scrolling and activity relaunch ([#1294](https://github.com/chrisbanes/haze/pull/1294)). ## 2.0.0-beta02 2026-08-27 { id="2.0.0-beta02" } ### Added - Added `GlassStyle.regular` and `GlassStyle.clear` as built-in Glass styles. Regular keeps the geometry-adaptive material response, while Clear prioritizes visibility of content behind the material. The optional `haze-glass-material3` artifact adds `GlassStyle.material3()` for applying Material 3 defaults to either built-in or custom styles ([#1264](https://github.com/chrisbanes/haze/pull/1264)). ### Changed - Updated Compose Multiplatform and Jetpack Compose to 1.12.0 ([#1252](https://github.com/chrisbanes/haze/pull/1252), [#1253](https://github.com/chrisbanes/haze/pull/1253)). ### Fixed - Prevented snapshot observers from accessing detached Haze source nodes during Android activity teardown ([#1262](https://github.com/chrisbanes/haze/pull/1262)). ### Removed - Removed `GlassDefaults.style`; use `GlassStyle.regular`, `GlassStyle.clear`, or compose a custom style instead ([#1264](https://github.com/chrisbanes/haze/pull/1264)). ## 2.0.0-beta01 2026-08-20 { id="2.0.0-beta01" } ### Added - Added `refractionFoldStrength` to `GlassOptics.Fixed` and the inline `GlassStyle.optics(...)` builder. The optional edge fold reverses local refraction near the Glass boundary without expanding its capture area ([#1236](https://github.com/chrisbanes/haze/pull/1236)). - Added CameraX and Kamera samples plus a camera guide. Blur and Glass can process live previews rendered into their Compose source layer; Android `PreviewView` integrations must use `ImplementationMode.COMPATIBLE` ([#1238](https://github.com/chrisbanes/haze/pull/1238)). ### Changed - Haze 2 beta finalizes the supported source-selection and Blur contracts. Source predicates now receive library-owned `HazeSourceMetadata` through the member `HazeSourceSelection.where { ... }`; `HazeColorEffect` is factory-only; and a nullable `fallbackColorEffect(null)` explicitly clears an inherited fallback. - On Android 12 and 12L, progressive linear Blur now selects its fallback from the resolved `HazePerformanceMode` tier: full-resolution tiers use the layered approximation, while downsampled tiers use a mask. ### Fixed - Haze effects now sample source content correctly through scaled or rotated `graphicsLayer` transforms, including transforms applied directly to the effect-bearing composable ([#717](https://github.com/chrisbanes/haze/issues/717)). - Glass pointer lights now track direct mouse, stylus, and touch input immediately; focus and `InteractionSource`-derived movement still use `interactionPositionAnimationSpec` ([#1234](https://github.com/chrisbanes/haze/pull/1234)). - Fixed visible refraction seams on elongated, rounded Glass surfaces ([#1235](https://github.com/chrisbanes/haze/pull/1235)). - Glass now preserves captured input when a runtime-shader draw failure falls back in the same frame, including own-content input with a transparent background ([#1230](https://github.com/chrisbanes/haze/pull/1230), [#1231](https://github.com/chrisbanes/haze/pull/1231)). ### Removed - Removed Haze 2 prerelease-only Blur adapters and aliases, including the legacy `HazeBlurStyle(...)` forms, `HazeBlurStyle.Unspecified`, the Blur-package `HazeProgressive` typealias, and deprecated defaults helpers. - Removed `HazeProgressive.LinearGradient.preferPerformance`; choose a `HazePerformanceMode` tier instead. - Removed public `HazeColorEffect` concrete implementations, sentinel/default helpers, and inspection APIs. Create effects with `tint(...)` or `colorFilter(...)`. - Removed the public core `Poko` marker and `HazeLogger.d(...)` operations from the supported API. ## 2.0.0-alpha05 2026-08-12 { id="2.0.0-alpha05" } ### Added - Added `HazePerformanceMode` for built-in Blur and Glass. `Default` is adaptive; `Quality`, `Balanced`, `Performance`, and `Fixed(qualityFraction)` select effect-owned profiles. Custom effects continue to use `HazeSampling` ([#1209](https://github.com/chrisbanes/haze/pull/1209), [#1211](https://github.com/chrisbanes/haze/pull/1211)). - Added optional `haze-blur-material3` and `haze-glass-material3` artifacts. Their `HazeBlurStyle.Material3()` and `GlassStyle.Material3()` factories use the current `MaterialTheme.colorScheme.surface` without adding a Material dependency to the core effect artifacts ([#1215](https://github.com/chrisbanes/haze/pull/1215)). ### Changed - Built-in Blur and Glass now document the shared `HazePerformanceMode` contract: `Default` is `Adaptive`, `Quality` replaces the former full-resolution choice, and prior built-in fixed input-pixel fractions must be remeasured before selecting `Fixed(qualityFraction)`. `HazeSampling` remains the generic contract for custom effects ([#1206](https://github.com/chrisbanes/haze/issues/1206)). - Blur avoids redundant modifier updates when independently recreated `HazeBlurStyle` programs are equivalent. ### Fixed - Glass can now composite transparent captured content onto an explicit background before refraction and blur using `GlassStyle.backgroundColor` ([#1207](https://github.com/chrisbanes/haze/issues/1207)). - Restored the `macosArm64` target across every published module, along with the `sample/macos` app. The target was published in `2.0.0-alpha03` and dropped from `2.0.0-alpha04` in [#1002](https://github.com/chrisbanes/haze/pull/1002). ## 2.0.0-alpha04 2026-08-08 { id="2.0.0-alpha04" } ### Highlights #### Revamped Effect APIs Alpha04 replaces the mutable, nested effect DSL with typed modifiers and explicit rendering policies. Blur now uses `Modifier.hazeBlur`, while Glass uses `Modifier.hazeGlass`. Each modifier declares its input (`HazeInput.Sources` or `HazeInput.Content`), Style, sampling policy, and layer behavior directly:Modifier.hazeBlur(
input = HazeInput.Sources(hazeState),
style = HazeBlurStyle {
blurRadius(20.dp)
},
sampling = HazeSampling.Adaptive,
)
dependencies {
implementation("dev.chrisbanes.haze:haze:2.0.0-alpha04")
implementation("dev.chrisbanes.haze:haze-glass:2.0.0-alpha04")
}
implementation("dev.chrisbanes.haze:haze:2.0.0-alpha01")
implementation("dev.chrisbanes.haze:haze-blur:2.0.0-alpha01")
Modifier.hazeEffect(state = hazeState) {
blurEffect {
blurRadius = 20.dp
colorEffects = listOf(HazeColorEffect.tint(...))
}
}
1.7.2 2026-02-10ΒΆ
ChangedΒΆ
- Add changelog
- Update Compose Multiplatform to 1.10.0
Full Changelog: https://github.com/chrisbanes/haze/compare/1.7.1...1.7.2
1.7.1 2025-11-24ΒΆ
ChangedΒΆ
- Use LruCache rather than SieveCache in #827
Full Changelog: https://github.com/chrisbanes/haze/compare/1.7.0...1.7.1
1.7.0 2025-11-10ΒΆ
HighlightsΒΆ
- π
forceInvalidateOnPreDrawparameter onHazeEffectScope(doc) - Optimized noise texture handling on Android
- Only enable pre-draw listeners when we need to use them
- This should be the last of the v1.x releases (barring any blocking issues which crop up).
Key dependenciesΒΆ
- Kotlin 2.2.20
- Compose Multiplatform 1.9.3
- Jetpack Compose 1.9.4
ChangedΒΆ
- Dependency updates in #752
- Add workaround for Kotlin Yarn errors in #764
- Bump compile and min SDK versions in #773
- Optimize areas and area offsets in #779
- Compose 1.9.x and Kotlin 2.2.20 in #791
- Reduce screenshot test thresholds in #806
- Only enable pre-draw listeners when necessary in #809
- Add a common pre-draw listener in #811
- Invalidate on position change in #812
- Update Android version references in platforms.md by @XIVIX134 in #814
AddedΒΆ
- Add LeakCanary to sample in #769
- [Android] Optimize noise texture in #778
- Enable Kotlin explicit API in #790
- Introduce expandLayerBounds flag in #807
- Add forceInvalidateOnPreDraw flag in #810
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.10...1.7.0
1.6.10 2025-08-13ΒΆ
AddedΒΆ
- Add clipToAreasBounds flag in #744
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.9...1.6.10
1.6.9 2025-07-18ΒΆ
FixedΒΆ
- Fix transparent edges... again in #728
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.8...1.6.9
1.6.8 2025-07-14ΒΆ
ChangedΒΆ
- Reduce unnecessary draw invalidations in #725
FixedΒΆ
- Check if node is attached from updateEffect in #724
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.7...1.6.8
1.6.7 2025-07-06ΒΆ
FixedΒΆ
- Workaround Compose draw exception on Android 9 in #707
- Fix bounded edge treatment not working in #710
- Fix Haze'd dialogs not blurring background content in #714
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.6...1.6.7
1.6.6 2025-06-28ΒΆ
ChangedΒΆ
- Remove dependency on kotlinx-datetime in #704
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.5...1.6.6
1.6.5 2025-06-27ΒΆ
ChangedΒΆ
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.4...1.6.5
1.6.4 2025-06-06ΒΆ
ChangedΒΆ
FixedΒΆ
- Fix overlapping content with layer transformations in #674
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.3...1.6.4
1.6.3 2025-06-01ΒΆ
HighlightsΒΆ
π MacOS CMP targets - Thanks to @YuKongA for adding 'native' MacOS targets. These are completely experimental (and untested), as per MacOS targets for CMP.
AddedΒΆ
FixedΒΆ
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.2...1.6.3
1.6.2 2025-05-20ΒΆ
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.1...1.6.2
1.6.1 2025-05-19ΒΆ
ChangedΒΆ
- Clarify fallbackTint kdoc in #647
FixedΒΆ
- Update outdated Dialog doc by @Skaldebane in #639
- Handle RenderScript not initializing in #645
New ContributorsΒΆ
- @Skaldebane made their first contribution in #639
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.0...1.6.1
1.6.0 2025-05-12ΒΆ
HighlightsΒΆ
π€ Support for all versions of AndroidΒΆ
Haze now supports blurring for all versions of Android, using RenderScript underneath. The new platforms documentation has all of the details.
π¨ Foreground (content) blurringΒΆ
Haze always been a library which enables background blurring. There are times where you need to blur the foreground content though, which Haze has always left to Modifier.blur. With the addition of older Android support, and all of the other features Haze supports, it makes sense for Haze to support both scenarios. New in this release is foreground blurring (doc).
π Blurred edge treatmentΒΆ
With the addition of foreground blurring, the need to be able to customise how content is blurred at the edges is useful. This release contains a new blurredEdgeTreatment on the effect scope, which works the same way as Modifier.blur.
AddedΒΆ
- Add RenderScript backed blur implementation in #590
- Add
HazeState.blurEnabledin #602 - Update docs for 1.6.0 in #603
- Add new platform docs in #605
- Add trace functions in #615
- Add support for content blurring in #616
- Add blurredEdgeTreatment property in #625
ChangedΒΆ
- Remove the final withSaveLayer call in #601
- Tidy up HazeProgressive drawing in #604
- Scale the noise texture appropriately in #613
- Tweaks to Progressive support for RenderScript in #621
- Compose Multiplatform 1.8.0 in #634
FixedΒΆ
- Fix masking for content blurring in #619
- Fix input scaled content being 1px smaller in #622
- Noise fixes for Android in #626
- Fix clamping blur effect on edges in #629
- [RenderScript] Fix tint and noise size being incorrect in #632
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.4...1.6.0
1.6.0-rc02 2025-05-06ΒΆ
ChangedΒΆ
- Compose Multiplatform 1.8.0 in #634
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.0-rc01...1.6.0-rc02
1.6.0-rc01 2025-05-05ΒΆ
FixedΒΆ
- [RenderScript] Fix tint and noise size being incorrect in #632
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.0-beta03...1.6.0-rc01
1.6.0-beta03 2025-05-04ΒΆ
AddedΒΆ
- Add blurredEdgeTreatment property in #625
ChangedΒΆ
- Noise fixes for Android in #626
FixedΒΆ
- Fix clamping blur effect on edges in #629
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.0-beta02...1.6.0-beta03
1.6.0-beta02 2025-04-29ΒΆ
AddedΒΆ
ChangedΒΆ
- Scale the noise texture appropriately in #613
- Tweaks to Progressive support for RenderScript in #621
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.6.0-beta01...1.6.0-beta02
1.6.0-beta01 2025-04-23ΒΆ
HighlightsΒΆ
π Support for all Android devicesΒΆ
We now support for older Android versions, using an implementation of blurring which uses RenderScript. You can read the new Platforms documentation for more information on how to try it.
Big thanks to @desugar-64 for the help on this.
Android 12 is now enabled by defaultΒΆ
We have now identified a fix for the issues which meant that blurring was disabled on Android 12, and it is now enabled by default.
AddedΒΆ
- Add RenderScript backed blur implementation in #590
- Add
HazeState.blurEnabledin #602 - Update docs for 1.6.0 in #603
- Add new platform docs in #605
ChangedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.4...1.6.0-beta01
1.5.4 2025-04-17ΒΆ
ChangedΒΆ
- Re-use BlurEffect instances in #600
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.3...1.5.4
1.5.3 2025-04-13ΒΆ
ChangedΒΆ
- Reduce scope of consumer R8 rules in #579
- Extract BlurEffect interface in #589
- Use
Sampleas routes directly by @Goooler in #593
FixedΒΆ
- Fix links on docs site in #581
- Fix haze effects inside of of pagers by @Monkopedia in #594
New ContributorsΒΆ
- @Goooler made their first contribution in #593
- @Monkopedia made their first contribution in #594
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.2...1.5.3
1.5.2 2025-03-23ΒΆ
ChangedΒΆ
- Migrate samples to AndroidX Navigation in #563
- Disable context-receivers compiler flag in #564
- Update baseline profile in #568
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.1...1.5.2
1.5.1 2025-03-19ΒΆ
FixedΒΆ
- Fix compilation failure of iOS sample by @keta1 in #553
- [Skiko] Fix noise effect not being masked for progressive effect in #555
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.5.0...1.5.1
1.5.0 2025-03-06ΒΆ
HighlightsΒΆ
- Optimised blurring shader for progressive effects. Thanks to @Kyant0 in #537
- HazeProgressive.Brush. You can now supply completely custom masks (via a shader) for progressive effects.
- Added
HazeLogger. You can now turn on Haze's internal logging. Handy for debugging and reporting issues. - Various bug fixes. Thanks to everyone who reported issues.
AddedΒΆ
- Add iOS sample in #532
- Add HazeLogger in #534
- Add HazeProgressive.Brush in #542
- Add HazeProgressive.forShader in #546
ChangedΒΆ
FixedΒΆ
- Fix progressive effect being drawn incorrectly in #538
- Don't create GraphicsLayer if dimension is zero in #540
- Fix support for nested Haze hierarchies in #545
- Fix baseline profile generation in #550
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.4.0...1.5.0
1.4.0 2025-02-28ΒΆ
AddedΒΆ
- Add HazeDialog composable in #513
ChangedΒΆ
- Bump Android Compile SDK to 35 in #512
- Re-introduce expanded layer size in #522
- Use high-precision types in blurring shader in #530
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/1.3.1...1.4.0
1.3.1 2025-02-09ΒΆ
ChangedΒΆ
FixedΒΆ
- Release GraphicsLayer when stopped in #499
Full Changelog: https://github.com/chrisbanes/haze/compare/1.3.0...1.3.1
1.3.0 2025-01-27ΒΆ
AddedΒΆ
- Add Brush support to HazeTint in #481
- Add Bottom Sheet sample in #485
- Add support for radial progressive effects in #491
- Adds section on using Haze in deep UI hierarchies. by @StylingAndroid in #494
ChangedΒΆ
- Move all samples to
sharedin #484
FixedΒΆ
- Fix alpha property changes not invalidating in #490
New ContributorsΒΆ
- @StylingAndroid made their first contribution in #494
Full Changelog: https://github.com/chrisbanes/haze/compare/1.2.2...1.3.0
1.2.2 2025-01-16ΒΆ
FixedΒΆ
- Add workaround for positionOnScreen throwing in #472
- [Skia] Fix hazeSource content changes not updating hazeEffects in #476
Full Changelog: https://github.com/chrisbanes/haze/compare/1.2.1...1.2.2
1.2.1 2025-01-13ΒΆ
FixedΒΆ
- Fix Haze not drawing any effects in previews in #470
- Fix issues with missing effects in LazyLayouts in #469
Full Changelog: https://github.com/chrisbanes/haze/compare/1.2.0...1.2.1
1.2.0 2025-01-09ΒΆ
HighlightsΒΆ
API renamesΒΆ
I have renamed a number of the APIs in this release to better reflect what they actually do these days:
Modifier.haze->Modifier.hazeSourceModifier.hazeChild->Modifier.hazeEffectHazeChildScope->HazeEffectScope
I've kept the old APIs around and deprecated them for easy migration.
Overlapping blurred areasΒΆ
Haze now supports different hazeEffect areas which overlap. See here for more information.
Versioned documentationΒΆ
A small quality of life change, but the documentation website is now versioned: https://chrisbanes.github.io/haze/
ChangedΒΆ
- Stop using synchronized lazy in #446
- Add support for multiple Haze nodes attached to a HazeState in #441
- Rename modifiers for clarity in #452
- [Sample] Hook up back button on Android in #459
- Remove expanded layer size in #461
- Small tidy ups ready for release in #463
Full Changelog: https://github.com/chrisbanes/haze/compare/1.1.1...1.2.0
1.1.1 2024-12-04ΒΆ
ChangedΒΆ
- Use onPlaced for screenshot tests in #433
Full Changelog: https://github.com/chrisbanes/haze/compare/1.1.0...1.1.1
1.1.0 2024-12-02ΒΆ
HighlightsΒΆ
π Input Scale - A new feature in this release is being able to set the input scale, allowing you to downscale content for potential performance gains.
AddedΒΆ
ChangedΒΆ
- Reduce variance in benchmarks in #418
- More benchmark consistency work in #424
- Remove noise scaling on Android in #428
Full Changelog: https://github.com/chrisbanes/haze/compare/1.0.2...1.1.0
1.0.2 2024-11-15ΒΆ
HighlightsΒΆ
π Ability to control where the blurring effect is used - You can now control where the blur effect is used. Specifically for Android, there's more information here.
AddedΒΆ
- Add blurEnabled on HazeChildScope property in #408
Full Changelog: https://github.com/chrisbanes/haze/compare/1.0.1...1.0.2
1.0.1 2024-11-11ΒΆ
AddedΒΆ
- Add
preferPerformanceflag on HazeProgressive in #401
ChangedΒΆ
- Cache RenderEffects in #402
FixedΒΆ
- Implement fallback for HazeProgressive in #400
Full Changelog: https://github.com/chrisbanes/haze/compare/1.0.0...1.0.1
1.0.0 2024-11-07ΒΆ
This is the first stable 1.0.0 release! π
For a full list of changes since 0.7.3, see the migration guide.
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.7.3...1.0.0
0.9.0-rc03 2024-11-02ΒΆ
ChangedΒΆ
- Remove LayoutAwareModifierNode and onPlaced again in #383
FixedΒΆ
- Fix crashes caused by blurRadius of 0px in #382
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-rc02...0.9.0-rc03
0.9.0-rc02 2024-10-26ΒΆ
ChangedΒΆ
- Doc updates for Haze v0.9 in #369
- Upgrade to Robolectric 4.14-beta-1 in #370
- Start using LayoutAwareModifierNode and onPlaced again in #372
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-rc01...0.9.0-rc02
0.9.0-rc01 2024-10-21ΒΆ
HighlightsΒΆ
Performance improvements for progressive blur - On platforms which support runtime shaders (everything other than Android SDK < 33), progressive is ~1.9x faster than before, through the usage of a new (custom) runtime shader.
AddedΒΆ
- Add runtime shader for progressive blur in #368
ChangedΒΆ
- Small micro optimizations in #364
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-beta04.1...0.9.0-rc01
0.9.0-beta04.1 2024-10-16ΒΆ
FixedΒΆ
- Fix defaults for blurRadius and noiseFactor in #361
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-beta04...0.9.0-beta04.1
0.9.0-beta04 2024-10-16ΒΆ
HighlightsΒΆ
Compose Multiplatform 1.7.0ΒΆ
CMP 1.7.0 has gone stable. Go and upgrade.
Progressive blurs (aka gradient blurs)ΒΆ
We now have access to progressive blurring with an API very similar to the Brush gradient APIs.
[!CAUTION] The performance of progressive blurring is untested as yet, but for sure it's going to be slower than without. I also haven't put any performance work into this as yet. That will come for the next release (hopefully rc01).
Tweaked styling APIs (again)ΒΆ
The styling APIs have changed again (sorry about that), but I'm feeling much better about the new API. We now have a the LocalHazeStyle composition local (for global styling), style parameter on hazeChild for node-specific, and then the individual properties on hazeChild block.
AddedΒΆ
ChangedΒΆ
- More benchmark tests (and perf improvements) in #349
- Throw error on descendant layouts in #357
- Style improvements for 0.9.x in #360
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-beta03...0.9.0-beta04
0.9.0-beta03 2024-10-04ΒΆ
ChangedΒΆ
- Only use a GraphicsLayer on Android on hw-accel canvases in #341
- Remove the unused defaultStyle vars in #342
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-beta02...0.9.0-beta03
0.9.0-beta02 2024-10-01ΒΆ
HighlightsΒΆ
- We now depend on Compose Multiplatform 1.7.0-rc01
- Lots of API tweaks!
AddedΒΆ
- Add alpha param to hazeChild in #313
ChangedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-beta01...0.9.0-beta02
0.9.0-beta01 2024-09-05ΒΆ
HighlightsΒΆ
- New version of
hazeChildwhich takes lambda parameters. Should be a lot more efficient if you need to animate properties. - Using Jetpack Compose 1.7.0 (GA)
- Using Compose Multiplatform 1.7.0-beta01
- (New) FluentMaterials class, which mimics Windows blurring styles. Thanks @Sanlorng!
AddedΒΆ
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha08...0.9.0-beta01
0.9.0-alpha08 2024-08-21ΒΆ
AddedΒΆ
- Add Brush suppport for tints in #298
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha07...0.9.0-alpha08
0.9.0-alpha07 2024-08-15ΒΆ
FixedΒΆ
- Add workaround for invalidations not happening on Skia backed platforms in #296
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha06...0.9.0-alpha07
0.9.0-alpha06 2024-08-07ΒΆ
FixedΒΆ
- Fix clipping size in #288
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha05...0.9.0-alpha06
0.9.0-alpha05 2024-08-01ΒΆ
ChangedΒΆ
- Remove shape clipping in #287
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha04...0.9.0-alpha05
0.9.0-alpha04 2024-07-23ΒΆ
ChangedΒΆ
FixedΒΆ
- Fix clipping for rectangles in #279
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha03...0.9.0-alpha04
0.9.0-alpha03 2024-07-19ΒΆ
HighlightsΒΆ
π Masks - You can now supply a Brush to hazeChild which will act as a mask. The mask allows things like gradient blurs, by supplying a Brush.verticalGradient or similar.
AddedΒΆ
- Add ability to provide mask for blurred areas in #267
ChangedΒΆ
- Revert usage of Poko in #268
- Turn off auto invalidation in #271
- Revert "Update plugin mavenpublish to v0.29.0" in #273
FixedΒΆ
- Throw error when background color is not specified in #265
- Fix samples crashing in #270
- Fix content node being placed at incorrect position in #272
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha02...0.9.0-alpha03
0.9.0-alpha02 2024-07-17ΒΆ
FixedΒΆ
- Fix NPE from missing content layer in #263
Full Changelog: https://github.com/chrisbanes/haze/compare/0.9.0-alpha01...0.9.0-alpha02
0.9.0-alpha01 2024-07-16ΒΆ
For more information, see https://chrisbanes.github.io/haze/migrating-0.9/
ChangedΒΆ
- [next] Initial upgrade to Compose Multiplatform 1.7.0-alpha in #250
- New rendering mode in #259
- Add some docs for 0.9 in #261
Full Changelog: https://github.com/chrisbanes/haze/compare/0.7.3...0.9.0-alpha01
0.7.3 2024-07-08ΒΆ
ChangedΒΆ
- Integrate GlobalPositionAwareModifierNode into Haze modifiers in #246
- Add ListOverImage sample in #248
Full Changelog: https://github.com/chrisbanes/haze/compare/0.7.2...0.7.3
0.7.2 2024-06-17ΒΆ
ChangedΒΆ
FixedΒΆ
- Fix sample code in usage docs by @lhoyong in #211
- Fix typo in naming of "lorem ipsum" placeholder value by @twyatt in #215
- Fix CI and docs build in #237
New ContributorsΒΆ
- @lhoyong made their first contribution in #211
- @twyatt made their first contribution in #215
- @nevrozza made their first contribution in #228
Full Changelog: https://github.com/chrisbanes/haze/compare/0.7.1...0.7.2
0.7.1 2024-05-01ΒΆ
ChangedΒΆ
- Remove usage of LFS in #198
- Kotlin 1.9.23 + CMP 1.6.2 in #199
- Don't include test sources in API files in #204
AddedΒΆ
- Add scroll behavior to Scaffold sample in #197
FixedΒΆ
- Fix glitch with clipping content out in #205
- Reset state when LazyLayout reuses node in #203
- [Android] Fix dialog being offset for non edge-to-edge windows in #206
- Fix content clip path at edges in #207
Full Changelog: https://github.com/chrisbanes/haze/compare/0.7.0...0.7.1
0.7.0 2024-04-12ΒΆ
ChangedΒΆ
- Enable Robolectric hardware rendering in #147
- Tidy up settings.gradle.kts in #181
- Remove deprecated library and APIs in #182
FixedΒΆ
- Fix HazeChild being conditionally added in #174
Full Changelog: https://github.com/chrisbanes/haze/compare/0.6.2...0.7.0
0.6.2 2024-03-10ΒΆ
FixedΒΆ
AddedΒΆ
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.6.1...0.6.2
0.6.1 2024-03-09ΒΆ
ChangedΒΆ
- Migrate samples to use Coil in #154
AddedΒΆ
- Add Kotlin WebAssembly support in #153
FixedΒΆ
- [Android] Fix empty bounds handling in #160
Full Changelog: https://github.com/chrisbanes/haze/compare/0.6.0...0.6.1
0.6.0 2024-03-06ΒΆ
HighlightsΒΆ
- [iOS and Desktop] Fix edges not being blurred uniformly (#142). Big thanks to @Dynaruid for contributing this!
- [Android] Fix artifacts on rounded edges (#132)
ChangedΒΆ
- Use Poppins in screenshot testing in #144
FixedΒΆ
- Fixed where the edges appeared as if they were not properly blurred by @Dynaruid in #142
- Fix Android clip/rounding issue in #133
- Correct default value for Noise in Usage.md by @dev-weiqi in #149
New ContributorsΒΆ
- @Dynaruid made their first contribution in #142
- @dev-weiqi made their first contribution in #149
Full Changelog: https://github.com/chrisbanes/haze/compare/0.5.4...0.6.0
0.5.4 2024-02-27ΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.5.3...0.5.4
0.5.3 2024-02-18ΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.5.2...0.5.3
0.5.2 2024-02-14ΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.5.1...0.5.2
0.5.1 2024-02-07ΒΆ
FixedΒΆ
- Fix Android noise texture changing luminance in #126
Full Changelog: https://github.com/chrisbanes/haze/compare/0.5.0...0.5.1
0.5.0 2024-01-31ΒΆ
HighlightsΒΆ
- π Optimizations and performance increases (see performance docs)
- π«οΈ New Materials library (see materials docs)
- π Tidied up styling API
- β¨ Updated to Compose Multiplatform 1.6.0-beta01 (and Jetpack Compose 1.6.0)
- π Merged haze and haze-jetpack-compose
- π (Android) New baseline profiles bundled in library. Thanks to @simonlebras for this.
ChangedΒΆ
- Merge :haze and :haze-jetpack-compose in #106
- Lots of small fixes in #113
- Optimize Android implementations in #115
AddedΒΆ
- Baseline profile by @simonlebras in #93
- Baseline Profile tweaks in #95
- Add HazeStyle class in #110
- Add Haze Materials in #111
- Add macrobenchmark tests in #116
FixedΒΆ
- Fix Small Typo in Docs by @jorgedotcom in #100
New ContributorsΒΆ
- @simonlebras made their first contribution in #93
- @jorgedotcom made their first contribution in #100
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.5...0.5.0
0.4.5 2024-01-12ΒΆ
ChangesΒΆ
- Android Previews (and screenshot tests) now display a scrim, rather than nothing.
- Haze children from different Android windows (i.e. Dialogs) now work
FixedΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.4...0.4.5
0.4.4 2024-01-08ΒΆ
FixedΒΆ
- Fix hazeChild tint not updating on Android base in #83
AddedΒΆ
- Add screenshot tests to verify
hazeChildtint changes in #85
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.3...0.4.4
0.4.3 2024-01-05ΒΆ
FixedΒΆ
- Avoid using
RenderNodeblur implementation on API 31 for now. See #77 - Transparent tints now work everywhere.
AddedΒΆ
- Allow setting a tint on each
hazeChild
ChangedΒΆ
- Fix transparent tints causing crash on Android in #74
- Skip RenderNode impl on API 31 in #79
- Allow override tint on
hazeChildin #81
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.2...0.4.3
0.4.2 2024-01-03ΒΆ
FixedΒΆ
- Android minimum SDK is now 21 to match Compose.
hazeandhazeChildcausing previews to crash.
ChangedΒΆ
- Drop Android minimum sdk version to 21 in #61
- No-op on Android impl when LocalInspectionMode is true in #72
AddedΒΆ
- Add screenshot testing with Roborazzi in #70
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.1...0.4.2
0.4.1 2023-12-12ΒΆ
FixedΒΆ
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/0.4.0...0.4.1
0.4.0 2023-12-11ΒΆ
New API!ΒΆ
I have broken the existing API, but hopefully you can see why. You no longer need to manually calculate bounds. HazeState + Modifier.haze() + Modifier.hazeChild() is all you need.
val hazeState = remember { HazeState() }
Box {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.haze(
// Pass it the HazeState we stored above
state = hazeState,
// Need to provide background color of the content
backgroundColor = MaterialTheme.colorScheme.surface,
),
) {
// todo
}
Text(
text = "Content will be blurred behind this",
modifier = Modifier
// We use hazeChild on anything where we want the background
// blurred. We can even provide a shape.
.hazeChild(
state = hazeState,
shape = RoundedCornerShape(16.dp),
),
)
}
ChangedΒΆ
FixedΒΆ
- Fix position issue by @MohamedRejeb in #52
Full Changelog: https://github.com/chrisbanes/haze/compare/0.3.1...0.4.0
0.3.1 2023-11-10ΒΆ
Small hotfix. We now build Android and JVM targets outputting Java 11 bytecode.
FixedΒΆ
- Fix JVM targets in #28
Full Changelog: https://github.com/chrisbanes/haze/compare/0.3.0...0.3.1
0.3.0 2023-11-08ΒΆ
AddedΒΆ
- π Round Rect support - We now have support for rounded rectangles, thanks to @MohamedRejeb.
- Add RoundRect support by @MohamedRejeb in #16
ChangedΒΆ
- Apply noise texture using HARD_LIGHT in #21
- Use Metalava to track public API in #23
- Provide more customization in the API in #22
New ContributorsΒΆ
- @MohamedRejeb made their first contribution in #16
Full Changelog: https://github.com/chrisbanes/haze/compare/v0.2.0...0.3.0
0.2.0 2023-11-01ΒΆ
ChangedΒΆ
- Update Android sample to use haze-jetpack-compose in #9
- Use NodeElement instead of composed by @qdsfdhvh in #13
- Migrate Android implementations to Modifier.Node in #15
AddedΒΆ
- Add noise to Android implementation in #12
FixedΒΆ
- Fix Skiko backed Haze not displaying multiple Rects in #17
New ContributorsΒΆ
Full Changelog: https://github.com/chrisbanes/haze/compare/v0.1.0...v0.2.0
0.1.0 2023-10-30ΒΆ
First release!
Full Changelog: https://github.com/chrisbanes/haze/commits/v0.1.0