Changelog
Every release of Crease, newest first.
The current version is 1.3.0. This page is copied from CHANGELOG.md in the repository at build time.
All notable changes to io.github.jantursky:crease are listed here. The format follows Keep a Changelog, and versions follow Semantic Versioning.
Unreleased
1.3.0 - 2026-10-28
Added
rememberFoldStateFlow()returns the fold state as aStateFlowfor view-models and other code outside composition,StateFlow<FoldState>.postures()emits the posture only when it changes, andrememberPostureTransition()gives the posture before the latest change and the current one.kotlinx-coroutines-coreis now anapidependency.
1.2.0 - 2026-10-28
Added
crease-test, a third artifact (io.github.jantursky:crease-test) for tests:ComposeUiTest.setContentWithFold()composes content under a fold state and returns aFoldController, whoseupdate,moveToandplaychange the state while the composition stays alive, so remembered state survives.FoldStatePresets.SeamlessandFoldStatePresets.Dividedbuild a state for every posture.
1.1.0 - 2026-10-24
Added
crease-cover, a second artifact (io.github.jantursky:crease-cover):rememberCoverDisplayState()reports whether the outer display of a foldable can show content (Unsupported,Unavailable,Available,Active), andCoverDisplayshows a composable there. On iOS 27.1 it registers a camera capture scene accessory, which the system presents only with an active camera session. On Android it presents on the rear display area through WindowManager.ProvideCoverDisplayStatefeeds a fixed state to previews and tests.rememberCameraDirections()reports which cameras face the viewer on the current display, throughAVCaptureDeviceDirectionCoordinatoron iOS 27.1, andnullelsewhere. The iOS and Android presentation and the camera directions are not tested on a device.
1.0.0 - 2026-10-23
Added
- Hinge state on Android foldables and iPhone Duo:
rememberHinge()andrememberFoldState()give aHingewith itsHingeStatus(Closed,PartiallyOpen,FullyOpen) and, where the device has a sensor, its angle in degrees. - Fold geometry: a
Foldhas bounds in window pixels, an orientation, and flags for whether it separates content and whether it occludes it.FoldStatelists the folds and the camera cutouts, and gives thePosture(Closed,Flat,Book,Tabletop). FoldState.closed(),FoldState.flat(),FoldState.book()andFoldState.tabletop()build a state for previews and tests, andProvideFoldStatesupplies one to a part of the composition tree.FoldAwareTwoPanesplits its content at a separating fold, with aTwoPaneFallback(FirstOnly,SideBySide,Stacked) for when there is no fold.TabletopLayoutshows its top and bottom content above and below a tabletop fold, and a flat layout otherwise.Modifier.avoidFold()keeps an element’s content on the larger side of a separating fold.- Targets: Android, iOS (iPhone Duo), JVM and wasmJs. JVM and wasmJs report no hinge unless a state is provided.