Changelog
All notable changes to the Coryn AI Android SDK are documented here. This project follows Keep a Changelog and Semantic Versioning.
[Unreleased]
Added
Coryn.acceptToast(context, textOrResource, duration, show = true)to show and record standard Toasts.Coryn.acceptToast(context, toast, text, show = true)for configured Toasts. Replay uses the supplied text, never the custom layout. For sensitive content, provide safe replacement text, passshow = false, and show the real Toast yourself.Coryn.onHiddenPositionWillChange()for exceptional manual geometry changes. Call it before temporary drawing-position changes or attached Popup/Overlay elevation or surface-inset changes. Normal scrolling and layout changes need no notification.- Automatic Screen Text collection for Views and Compose, respecting Coryn hiding. Identical text is collected once and unchanged text is not repeated.
Coryn.addApiRequest()and an optional OkHttp interceptor with configurable header and URL-parameter redaction.Coryn.setZOrderOnTop(),Coryn.setZOrderMediaOverlay()and Kotlin extensions for SurfaceView ordering.network.isUploadOnMeteredNetworkAllowedand the Java builder equivalent. Uploads require an unmetered network by default.- Recording-time
overscrollStrategy:Reject,None,AdditionalPaddingDpandAdditionalPaddingPercent, with 5% directional padding by default. memoryLeakCodePackagesto extend Fragment and ViewModel diagnostic coverage.- “Frame unavailable” placeholders and capture failure codes for troubleshooting.
ScreenOffapplication state, including Always-On Display. UI capture and State collection pause while the device is non-interactive.
Changed
- Recording now starts and stops through
Coryn.startRecording()/Coryn.stopRecording(), separately from initialisation. - Added
network.baseUrlfor self-hosted deployments. - Renamed
CorynStateProviderViewtoCorynStateProviderRoot. - Renamed privacy masking APIs to
hideFromUiCapture/corynHideFromUiCapture. - Raised the State/Event size budget from 100 KB to 200 KB per 15-second recording segment.
- Required
CorynOverscrollFactoryWrapperaround hidden Compose content using a non-null overscroll factory. - Updated build requirements: Compose minimum 1.8.0, recommended 1.9.3+; AGP 8.6+, Kotlin 2.1+, and
compileSdk35+. - Expanded built-in context and error reporting with jank, freezes, potential memory leaks and ANRs on API 30+.
CorynStateMapcopies its outer input map. Nested values must remain stable; invalid State/Event JSON is reported as an integration error.- Recordings and storage limits are separate per process. Initialise each recording process consistently; processes can upload concurrently.
- Reorganised integration guides into UI Captures, States and Events sections.
Fixed
- Improved privacy masking for moving and recycled Views.
- Improved capture updates for popups.
- Improved recovery from temporary State Provider failures.
- Preserved project feature flags in release builds using R8.
- Improved recording reliability under storage and payload limits.
[1.0.0] — 2026-06-01
Added
- Initial release of the Coryn AI Android SDK.
- Session recording for XML View-based applications (
recorderartifact). - Session recording with Jetpack Compose support (
recorder-composeartifact). - Screen registration via
Coryn.registerScreen()andCorynScreenRootComposable. - State Provider API:
CorynStateProvider,CorynStateProviderRoot,CorynScreenStateProviderRoot. - Map-based States via
CorynStateMapwith Gson and Moshi backends. - Event recording via
Coryn.addEvent(). - Privacy masking:
Coryn.hideFromUiCapture(),Modifier.corynHideFromUiCapture(). - Overlay Root Touch Listener integration via
Coryn.setRootOnTouchListener(). - In-app Log Viewer with configurable indicator visibility.
- Kotlin DSL and Java-friendly
CorynConfiguration.Builderfor initialisation.