Clearful 3.29.0
Release note Version 3.29.0 was released on 2025-07-30.
Fix Analytics for macOS Platform
Section titled “Fix Analytics for macOS Platform”- 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.
In-App Feature Announcement System
Section titled “In-App Feature Announcement System”- 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.
Upgrade Google Sign-In to v7
Section titled “Upgrade Google Sign-In to v7”- 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.
Add Web Support for FileService
Section titled “Add Web Support for FileService”- 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.
Performance - Eliminated Typing Jank
Section titled “Performance - Eliminated Typing Jank”- 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 iOS Image Color Distortion
Section titled “Fixed iOS Image Color Distortion”- 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.
Interactive Images in Journal Entries
Section titled “Interactive Images in Journal Entries”- 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.
Firebase AI Remote Configuration
Section titled “Firebase AI Remote Configuration”- 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.
Optimized Image Upload Save Strategy
Section titled “Optimized Image Upload Save Strategy”- 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.
Collapsible Pinned Entries
Section titled “Collapsible Pinned Entries”- 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.
Smooth Editor Overlay Transitions
Section titled “Smooth Editor Overlay Transitions”- 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.
Enhanced Image Gallery in Reviews
Section titled “Enhanced Image Gallery in Reviews”- 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.
More Entry Export Options
Section titled “More Entry Export Options”- Introduced
PdfServiceto handle the creation and formatting of PDF files. - Enhanced
ExportServiceto support exporting both single and multiple entries in PDF format, and added functionality to export single entries in plain text. - Enhanced
ExportEntriesCellto support exporting single and multiple entries.