Skip to content

Clearful 3.29.0

Release note Version 3.29.0 was released on 2025-07-30.

  • Updated Amplitude integration to properly support macOS platform.
  • Clarified platform-specific handling for Mixpanel (client SDK on mobile vs cloud functions on macOS).
  • Improved null safety in Sentry message sanitization.
  • Result: Analytics now work correctly across all platforms including macOS desktop app.

Enhanced Privacy Protection for Error Reporting

Section titled “Enhanced Privacy Protection for Error Reporting”
  • Added comprehensive Sentry event sanitization to protect user privacy in error reports.
  • Implemented beforeSend callback to detect and redact sensitive journal content from error messages.
  • Created SentrySanitizer service that removes TextEditingValue, DocumentSnapshot, and other content data.
  • Sanitizes exceptions, breadcrumbs, contexts, and extra data before sending to Sentry.
  • Preserves stack traces and debugging information while removing user-generated content.
  • Result: User journal entries are never exposed in error reports while maintaining debugging capabilities.
  • Created comprehensive feature announcement system to notify users about new features after app updates.
  • Announcements show once per version across all devices using cross-device synchronization.
  • Built with SuperEditor for rich content display including text formatting, images, and lists.
  • Platform-specific UI: bottom sheets on mobile/tablet, modal dialogs on desktop/web.
  • Integrated with EventsService.
  • Added Firestore-based content delivery with smart caching and version targeting.
  • Implemented analytics tracking for announcement views, dismissals, and CTA clicks.
  • Supports conditional targeting (version ranges, Pro users, regions).
  • Result: Users are automatically informed about new features without visiting external sources.

Smart Auto-Save System with 45-Second Intervals

Section titled “Smart Auto-Save System with 45-Second Intervals”
  • Replaced conflicting dual auto-save systems with single smart 45-second timer.
  • Added typing detection to defer saves during rapid typing (4+ keystrokes in 2 seconds).
  • Implemented maximum 90-second save limit to ensure data safety.
  • Fixed background save logic to prevent unnecessary saves when no changes exist.
  • Removed legacy 500ms debounced save system and cleaned up redundant code.
  • Result: Eliminated 2-3 second UI freezes during auto-save while respecting user typing flow.
  • Upgraded google_sign_in from v6.3.0 to v7.1.0 to support latest authentication features.
  • Migrated to new singleton instance pattern using GoogleSignIn.instance.
  • Added one-time initialization with clientId/serverClientId configuration.
  • Removed desktop_webview_auth dependency - now using native plugin support for macOS.
  • Updated iOS Info.plist with GIDClientID configuration.
  • Updated macOS Info.plist with GIDClientID and CFBundleURLSchemes configuration.
  • Added google-signin-client_id meta tag to web/index.html for web support.
  • Refactored AuthRepository to use new v7 API methods for sign-in, linking, and reauthentication.
  • Removed all desktop-specific Google sign-in code, simplifying the authentication flow.
  • Implemented web-specific file handling in FileService for temporary file operations.
  • Created WebTempDirectory and WebFile classes to provide in-memory file storage on web platform.
  • Fixed file operations in review_view.dart to work correctly on web using XFile.fromData().
  • Web file operations now use in-memory storage, allowing code to work without modification across platforms.
  • Fixed frame drops during fast typing by removing expensive synchronous work from UI thread.
  • Implemented incremental content tracking (O(Δ)) replacing full document scans (O(N)).
  • Added single long-lived auto-save timer to eliminate rapid timer creation/cancellation.
  • Added toolbar update throttling (120ms) to reduce excessive widget rebuilds.
  • Result: All frames now <16ms during 120 WPM typing on mid-range devices.
  • Fixed issue where images captured from camera on iOS devices showed red/green artifacts in thumbnails.
  • Implemented platform-specific image loading to work around Flutter bug #168849.
  • iOS devices now load images without size constraints to avoid color corruption.
  • Other platforms continue to use optimized image loading for better memory efficiency.
  • Implemented tap-to-view fullscreen functionality for images in journal entries.
  • Uses interaction mode similar to links - tap center opens gallery, tap edges places cursor.
  • Created InteractiveImageComponent that respects editor interaction mode state.
  • Added edge detection (40px from sides) to maintain keyboard activation on edge taps.
  • Integrated with existing fullscreen image gallery with swipe navigation between all entry images.
  • Added visual hint on desktop when in interaction mode (subtle border on hover).
  • Created separate ReadOnlyImageComponent for reader views (always interactive).
  • Maintains smooth transitions with hero animations and haptic feedback.

Audio Recording UI with Real-time Waveform Visualization

Section titled “Audio Recording UI with Real-time Waveform Visualization”
  • Implemented new audio recording interface with live waveform visualization matching Apple’s design language.
  • Added persistent recording state using singleton repository pattern - recordings continue when panel is closed.
  • Created mini waveform indicator on microphone button showing real-time recording status.
  • Implemented smooth state transitions between idle, recording, paused, completed, and transcribing states.
  • Added 10-minute recording limit with visual indicator (timer turns red at limit).
  • Implemented automatic audio level normalization with noise floor filtering for better waveform display.
  • Added platform-specific audio format selection (wav for web, mp4 for Android, m4a for iOS).
  • Integrated with Firebase AI remote configuration for dynamic model and prompt management.
  • Implemented proper app lifecycle handling - recordings pause when app goes to background.
  • Added simplified edge case handling - recordings are discarded when exiting entries.
  • Updated to use GetItMixin pattern instead of Provider for dependency injection.
  • Removed button scale animations for cleaner press interactions, kept color feedback.
  • Implemented comprehensive remote configuration system for Firebase AI features.
  • Created domain models for hierarchical configuration structure (global settings, features, models).
  • Added FirebaseAiConfigRepository for managing and accessing remote configurations.
  • Updated audio transcription to use dynamic model selection, prompts, and settings from remote config.
  • Implemented max duration limits, audio format validation, and feature flags from remote configuration.
  • Added support for A/B testing different prompts and model configurations.
  • Created extensive documentation and sample JSON configuration files.
  • Enabled graceful fallbacks to default configuration on errors.
  • Aligned image upload saves with EntryController’s debouncing system.
  • Reduced database writes by 50-70% when uploading multiple images.
  • Replaced direct saves with debounced save timer to batch changes efficiently.
  • Maintained data safety while improving performance for multi-image uploads.
  • Added Apple Notes-style collapsible functionality to the pinned entries section.
  • Implemented smooth expand/collapse animations with animated chevron icon.
  • Added persistent state storage to SharedPreferences for remembering user preference.
  • Enhanced web accessibility with proper semantics, mouse cursors, and enlarged tap targets.
  • Implemented seamless transitions when switching between editor overlays (formatting, image, audio, AI).
  • Added content cross-fade animations for smooth visual transitions.
  • Introduced animated size adjustments to accommodate different panel heights.
  • Overlay container now persists during content changes, eliminating jarring hide/show behavior.
  • Introduced image zoom functionality.
  • Added smooth zoom animations with Apple Photos-style tap-to-zoom behavior.
  • Implemented web navigation arrows and click-outside-to-close functionality.
  • Improved state synchronization and image preloading for smoother navigation.
  • Introduced PdfService to handle the creation and formatting of PDF files.
  • Enhanced ExportService to support exporting both single and multiple entries in PDF format, and added functionality to export single entries in plain text.
  • Enhanced ExportEntriesCell to support exporting single and multiple entries.