Skip to content

feat(ui): add alternative breathing visualizations #7

@eddmann

Description

@eddmann

Summary

Add alternative visual representations for the breathing exercise beyond the current circle animation, including a square with directional movement and shimmer transitions between phases.

Description

The app currently uses a single BreathingCircle component that scales between 1.0x and 1.5x to represent inhale/exhale phases. This feature request proposes adding alternative visualization options to provide users with variety and potentially better suit different preferences.

Applies to both watchOS and iOS apps.

Proposed Visualizations

1. Square with Directional Movement

  • A square shape that animates:
    • Inhale: Expands horizontally (left-to-right fill or stretch)
    • Exhale: Contracts vertically (top-to-bottom drain or shrink)
  • Provides a more geometric/structured visual cue

2. Shimmer Transitions

  • Add a shimmer or glow effect that transitions between breathing phases
  • Visual pulse/sparkle effect when switching from inhale → exhale and exhale → inhale
  • Enhances the feedback at phase boundaries

Implementation Considerations

  • Create a protocol/abstraction for breathing visualizations (e.g., BreathingVisualization)
  • Current implementations in OvloWatch/Views/Components/BreathingCircle.swift and OvloPhone/Views/Components/BreathingCircle.swift can serve as reference
  • New visualizations should accept the same inputs: BreathingState, size, progress values
  • Consider adding a settings option to let users choose their preferred visualization
  • Maintain accessibility by ensuring animations aren't the only feedback mechanism (haptics already exist)
  • Consider moving shared visualization components to Shared/ directory

Acceptance Criteria

  • At least one alternative visualization (square) implemented on both platforms
  • Shimmer/transition effects between phases
  • User can select visualization preference in settings
  • Existing circle visualization remains available

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions