Skip to content

Clearful 3.32.0

Release note Version 3.32.0 was released on 2026-04-18.

  • Changed the entry/sidebar Pro gates on macOS to open the existing paywall route instead of starting purchases inline.
  • Updated the legacy payramp card on macOS to remove inline purchase/card-tap behavior and use a single explicit View Pro plans CTA.
  • Preserved feature-aware paywall routing for entry media, audio, AI, and future panel types while keeping iOS/Android inline purchase behavior unchanged.
  • Added focused tests covering the macOS route-only action mode, feature-aware paywall routing, and the one-button macOS CTA layout.
  • Updated paywall media copy to use Add Media / Add media so the upgrade surface reflects photo and video support.

Fix macOS video thumbnail generation and fallback visibility

Section titled “Fix macOS video thumbnail generation and fallback visibility”
  • Replaced the unsupported macOS video_thumbnail plugin path with a native AVAssetImageGenerator method channel implementation.
  • Added debug-visible failure details plus production telemetry when video poster generation or thumbnail upload fails.
  • Added a subtle “Preview unavailable” snackbar so users know the video upload succeeded even when its poster image could not be created.
  • Added a focused service test for the new macOS thumbnail channel flow.
  • Updated the macOS runner app delegate for secure restorable state compatibility with current Flutter/Xcode tooling.
  • Replaced the biometric route check’s AutoRouter.of(context) ancestor lookup with direct root-router state reads so hot reload no longer crashes on deactivated widget trees.
  • Preserved previous route classification semantics by continuing to return null before the router has segments and by reading the current path rather than the full URL.
  • Added focused regression tests covering public vs protected paths, query-string handling, and no-context router reads.
  • Added native timezone integration via flutter_timezone in TimezoneService.
  • Added resilient timezone fallback logic and stream-driven timezone sync updates.
  • Added immutable streakV2 snapshot payload on new entry writes (including quick-add and app-intent entries).
  • Hardened timezone resolution to ignore stale cached timezone values when the current device offset no longer matches.
  • Updated streakV2 snapshot generation to derive localDayKey, localWeekKey, and utcOffsetMinutes from the same createdOn + timezone source of truth.
  • Added targeted unit tests for timezone resolution and streak snapshot key generation.
  • Documented rollout-time v1/v2 streak document states in:
    • mobile/docs/features/2026-02-08_streaks_v2_timezone_snapshot_capture.md
    • api/docs/2026_02_06_streaks_v2_architecture_spec.md

Activation-first onboarding experiment on iOS

Section titled “Activation-first onboarding experiment on iOS”
  • Added a first-value treatment flow that shortens welcome, routes eligible new users into a dedicated first-entry screen, and delays the native paywall until after the first saved entry.
  • Reworked the treatment onboarding screen around three curated guided journaling lanes, clearer copy, and a fixed bottom CTA bar.
  • Added experiment-safe suppression for upgrade, reminders, rate-app, and feature announcement prompts while treatment users are in the first-entry flow.
  • Added Pro-safe paywall routing so users who become subscribers inside the entry flow still land on Today instead of being stranded on onboarding.
  • Changed blank free-write exits to fall through to Today instead of looping users back into onboarding.
  • Hardened startup analytics property syncing by aliasing long Remote Config keys to Firebase-safe user property names.

Harden paywall presentation and fallback behavior

Section titled “Harden paywall presentation and fallback behavior”
  • Added a remote-config kill switch (rc_paywalls_enabled) to disable RC Paywalls globally without an app update.
  • Added explicit fallback to native UpgradeView when offerings are unavailable or placement/offering resolution fails.
  • Added paywall telemetry events (paywall_presented, paywall_present_failed) with offering and feature context to diagnose conversion drops.
  • Expanded use_native_ui metadata parsing to support common truthy values (true, 1, yes) and avoid config mismatch.