Skip to content

Changelog

This page tracks notable user-facing changes to package:pose_flow and package:pose_flow_studio. For day-to-day commits, see the source repository’s git history.

Unreleased

Renamed: Exercise* → Movement*

Several public classes were renamed for naming consistency with PoseFlow’s positioning as a general human-movement library (rather than a fitness-specific one):

Old nameNew name
ExerciseConfigMovementConfig
ExerciseMetadataMovementMetadata
ExerciseConfigLoaderMovementConfigLoader
ExerciseConfigExceptionMovementConfigException
ExerciseLibraryMovementLibrary
ExerciseProfileMovementProfile
TrackedExerciseViewTrackedMovementView
TrackedExerciseStateTrackedMovementState
TrackedExerciseViewStateTrackedMovementViewState

The old names are still exported as @Deprecated typedefs, so existing call sites compile against this release without code changes. The compiler emits deprecation warnings at each usage prompting the migration. Plan to remove the typedefs in a future minor release.

Migration: replace each old name with the corresponding new one. A find-and-replace across your project handles the mechanical edit; the deprecation warnings tell you when there’s anything left to fix.

Coordinate-space contract: one canonical Pose

PoseCameraView previously exposed two pose callbacks (onPoseUpdate for display-space, onRawPoseUpdate for buffer- space). The raw callback was a holdover from a deleted vector- similarity matcher and has been removed.

PoseCameraView now emits a single canonical Pose via onPoseUpdate: orientation-rotated, selfie-mirrored on the front camera, normalised to [0, 1] against the post-rotation buffer dimensions. Authoring (Studio) and playback (your app) agree on coordinate scale by construction.

If you previously consumed onRawPoseUpdate, switch to onPoseUpdate. If you applied any manual rotation / mirror to a display-space pose before feeding the tracker, remove it: the tracker expects display-space directly.

Camera bucket height-classifier boundary

CameraAngleDetector._detectHeight now uses an inclusive >= check against _heightFloorMin = 0.55 so the boundary case lands in the floor bucket. Matches the constant’s “minimum for floor” semantic intent. The change is a no-op for non-boundary inputs.