Skip to main content
Version: 1.0.0

Changelog

All notable changes to Mirror will be documented in this file.
This project adheres to the Keep a Changelog format.


[3.0.0] — 2025-05-23​

Hybrid Native + WebView architecture (Current)
Everything in Kotlin, with 3D rendering handled via local WebView + React overlay served from NanoHTTPD.

Added​

  • Two-face landscape mode: snapshot and try-on experience for 2 people simultaneously.
  • Auto-carousel for landscape glasses → rotates every 10 seconds if idle.
  • Snapshot feature:
    • QR code generation & overlay on snapshot images.
    • Upload snapshot to Firebase.
    • Local saving and sharing.
  • Advanced filters:
    • Gender, brand, frame type filtering in portrait journey.
    • Landscape-specific filters (if available).
  • UI Enhancements:
    • Carousel for portrait try-on.
    • Side menu with multi-language support.
    • Terms & Conditions dialog with QR code for privacy policy.
    • New pager view for selecting glasses.
  • Stability filters:
    • One Euro Filter → reduce jittering with multiple faces.
    • Kalman Filter → stabilize landmark tracking & depth correction.
  • Video player integration for idle state with fallback to looping brand video.
  • Local WebView for model viewer with transparent overlay above camera stream.

Changed​

  • Replaced SceneView rendering (v2) with React-based GLB renderer in WebView to fix transparency & sheenColor issues.
  • Refactored model viewer to split fragments for portrait and landscape modes.
  • Improved UI for brand/frame/gender selectors with detailed animations and progress indicators.
  • Language selector improved; Android < 13 supported with new logic.
  • Enhanced inactivity handling: auto return to video if no interaction.
  • Updated filter logic in VTO activity to handle multiple variants and publications.
  • Improved QR snapshot preview and model countdown animations.

Fixed​

  • Fixed glass rendering issues for transparent models (previously problematic in SceneView).
  • Fixed crash with sheenColorIndex in Filament.
  • Fixed depth estimation at rotated face edges.
  • Fixed multiple duplicate tags and duplicate type conflicts.
  • Fixed disappearing GLB models by ensuring all assets stored locally.
  • Fixed alignment issues in portrait vs landscape layouts.
  • Fixed snapshot UI bugs inside Dialog and countdown race conditions.
  • Fixed auto-terminate of VTO if no faces detected after 3 minutes.
  • Fixed bugs with brand image display in selection screens.
  • Fixed crash when less than 6 glasses were available in selector.

[2.0.0] — 2025-02-01​

Full Kotlin + SceneView version
Jetpack Compose + SceneView rendering with Filament.

Added​

  • Full Kotlin rewrite (removed web stack).
  • Face tracking with MediaPipe Face Landmarker.
  • Two-face detection (landscape mode) for shared try-on experience.
  • Session management via Realm.
  • Automatic session video fallback.

Known Issues​

  • Rendering crashes with sheenColorIndex materials.
  • Poor transparency rendering for clear/optical frames.
  • Stability problems with Filament under load.

[1.0.0] — 2024-02-01​

Web-based version (React packaged as WebApp)

Added​

  • Initial version built in React, shipped as a packaged web app on device.
  • First demo at MIDO 2024.
  • Supported offline asset loading.

Known Issues​

  • Poor video quality from camera inside web container.
  • Limited performance with real-time AR.