- Add TimezonePreferences to SettingsViewModel and TodoNotificationReceiver entry point
- Create timezone settings section in SettingsScreen with dropdown selector for common timezones
- Apply user timezone to notification date formatting in TodoNotificationReceiver
- Refactor TodoScreen FAB into expandable menu with separate AI Brain Dump and manual task creation options
- Add animated sub-FABs with labels
- Add TodoEntity, TodoDao, TodoRepository, and TodoRepositoryImpl for local todo storage with sync support
- Implement TodoViewModel with CRUD operations, group management, and subtask handling
- Create TodoScreen with Kanban-style board view, group-based organization, and drag-to-reorder support
- Add BrainDumpSheet for AI-powered task extraction from natural language input using Gemini API
- Implement TodoNot
- Create MarkdownUtils.preprocessMarkdown() for consistent Markdown normalization
- Apply preprocessing to LinkDetailsView description rendering
- Apply preprocessing to MarkdownPreview and MarkdownReader components
- Bump version to 1.4.0 (VERSION_CODE 13)
- Add version.properties file as single source of truth for VERSION_NAME and VERSION_CODE
- Create build.ps1 script with automated version bumping (Major/Minor/Patch/None) and build orchestration
- Update app/build.gradle.kts to read version from version.properties instead of hardcoded values
- Display dynamic version info in Settings screen using BuildConfig.VERSION_NAME and VERSION_CODE
- Add
- Replace LazyVerticalGrid with LazyVerticalStaggeredGrid for dynamic height cards
- Remove fixed height constraints (heightIn) to allow wrap-content behavior
- Add onTagClick callback to GridViewItem for tag filtering support
- Increase description maxLines from 3 to 6 for better content preview
- Replace tag preview badges with full clickable TagChip components in LazyRow
- Standardize action
- Add Media3 DASH dependency for adaptive streaming support
- Implement StreamResolver for URL resolution and MIME type detection
- Update AudioHandler to resolve streams before playback with proper MIME hints
- Add immediate buffering state feedback in UI during stream resolution
- Protect local pending changes from being overwritten during sync operations
- Add French comment clarifying sync conflict prevention logic
- Add Media3 dependencies (ExoPlayer, HLS, MediaSession, UI) for audio streaming
- Implement AudioPlayerService as MediaSessionService with foreground playback support
- Create AudioHandler for playback control and AudioMedia domain model with AudioContentType enum
- Add MiniPlayerBar and FullPlayerSheet UI components with play/pause, seek, and navigation controls
- Implement AudioClassifier with strict priority
- Add Glance dependencies (glance-appwidget:1.1.0, glance-material3:1.1.0) for Compose-based widgets
- Implement RecentLinksWidget (4×2) and QuickStatsWidget (2×1) with Glance framework
- Add legacy RemoteViews widget (ShaarliWidgetProvider) for backward compatibility
- Create WidgetSearchActivity for widget configuration and WidgetUpdateWorker for periodic updates
- Add reader mode support with readerContent and readerContentFetchedAt
- Document automatic token verification on startup and note:// prefix for Markdown notes
- Add extensive AI capabilities section (Gemini integration, auto-tagging, content classification, multi-model fallback)
- Document link health monitoring system with dead link detection and exclusion features
- Add file sharing support (Markdown/text files) and deep links documentation
- Update technology
- Add getPinnedLinksPaged() query to LinkDao for paginated pinned link retrieval
- Implement getPinnedLinksStream() in LinkRepository with PagingConfig for efficient data loading
- Create PinnedScreen navigation route and composable in NavGraph
- Add "Épinglés" (Pinned) drawer navigation item with PushPin icon in FeedScreen
- Wire navigation callbacks from FeedScreen through NavGraph to PinnedScreen
- Inject ThemePreferences into MainActivity and apply dynamic theme selection
- Replace all hardcoded color references (DeepNavy, DarkNavy, CyanPrimary, TextPrimary, etc.) with MaterialTheme.colorScheme equivalents throughout AddLinkScreen and LoginScreen
- Update component colors to use Material3 color roles (primary, onBackground, surfaceVariant, outline, etc.)
- Migrate GlassCard, buttons, text fields, switches, and progress
- Add LinkHealthCheckWorker for automated bi-daily link validation (12-hour intervals)
- Extend LinkEntity with isDeadLink and lastHealthCheck fields for tracking link status
- Create LinkDao queries for dead link retrieval and health status updates
- Implement getDeadLinksStream() in LinkRepository for paginated dead link viewing
- Add GeminiRepository.generateTags() method with model fallback strategy and
- Add Google Gemini AI SDK dependency (generativeai:0.9.0)
- Implement GeminiRepository with API key management in TokenManager
- Create AI enrichment feature with loading states and error handling in AddLinkViewModel
- Add AI magic button with shimmer animation to AddLinkScreen for automatic bookmark analysis
- Extend ContentType enum with MUSIC and NEWS categories
- Enhance content type detection with expande
- Add intent filters for markdown and text file sharing (text/*, application/octet-stream)
- Implement file content reading with filename extraction and automatic tagging
- Enable edge-to-edge mode with proper IME insets handling for keyboard
- Add collections configuration dirty flag and bookmark ID tracking to TokenManager
- Create CollectionsConfigDto and CollectionConfigDto for JSON serialization
- Add collection query methods
- Add RawQuery method getLinksByTags() to LinkDao for flexible tag filtering
- Implement dynamic SQL query generation for AND-based multi-tag filtering in LinkRepositoryImpl
- Parse and normalize tag input with whitespace handling and deduplication
- Replace single tag chip with FlowRow layout to display multiple selected tags
- Add individual tag removal capability while maintaining filter state
- Improve tag filter banner
- Add extensive documentation for offline mode, sync, collections, and dashboard features
- Document new Material You theming, OLED mode, and widget capabilities
- Include detailed sections on metadata extraction, Markdown editor, and import/export
- Update technology stack versions (Kotlin 2.0.0, Hilt 2.51.1, Retrofit 2.11.0, Room 2.6.1)
- Simplify installation and compilation instructions
- Add user guide with first-time setup and
feat: Add JitPack repository to dependency resolution management
feat: Create ViewStyle enum for bookmark display styles
feat: Implement EditLinkScreen with ViewModel for editing links
feat: Add EditLinkViewModel to manage link editing state and logic
feat: Create LinkItemViews for displaying links in various formats
chore: Add build output and compile output logs