18 Commits

Author SHA1 Message Date
aa32ff1c2b feat: Refine audio playback eligibility logic with URL validation and classifier fallback
- Replace simple tag-based audio detection with multi-condition validation in isAudioPlayable()
- Add AudioUrlValidator.isStreamable() check to verify URL technical playability
- Implement AudioClassifier.isAudioUrl() fallback for platform/stream recognition without explicit tags
- Prevent Play button display for audio-tagged articles without streamable URLs
- Add comprehensive French documentation explaining
2026-02-12 16:39:10 -05:00
e742502bdc feat: Add PENDING_DELETE filter to all paginated queries and implement accordion-style drawer navigation
- Add sync_status != 'PENDING_DELETE' condition to all PagingSource queries in LinkDao (getAllLinksPaged, searchLinks, searchLinksFullText, getLinksByTag, getLinksByMultipleTags, getLinksInCollectionPaged, getDeadLinks, getPinnedLinksPaged)
- Update LinkRepositoryImpl to exclude PENDING_DELETE items in dynamic query builder and multi-tag filtering
- Replace independent drawer accordion states
2026-02-12 11:24:28 -05:00
b9efb14b8d feat: Implement automated versioning system with PowerShell build script and centralized version management
- 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
2026-02-12 10:08:58 -05:00
4ed567eb3a feat: Migrate grid view to staggered layout with Google Keep-style cards and enhanced tag interaction
- 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
2026-02-11 19:23:01 -05:00
4bd1b5a6f3 feat: Add DASH support and stream resolution with conflict-safe sync protection
- 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
2026-02-11 16:31:04 -05:00
2b8134f5b7 feat: Add audio playback system with Media3 and comprehensive audio content classification
- 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
2026-02-11 11:23:22 -05:00
1deac8850a feat: Add app widget system with Glance, reader mode, and reading reminders
- 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
2026-02-11 08:54:29 -05:00
ec0931134c docs: Update comprehensive documentation with AI features, health checks, and architecture improvements
- 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
2026-02-10 21:15:30 -05:00
c8a9e6653b feat: Add dedicated pinned bookmarks screen with paginated data loading
- 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
2026-02-09 14:43:27 -05:00
98f2ef2e7e feat: Migrate UI theme system from hardcoded colors to Material3 dynamic theming
- 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
2026-02-09 12:56:33 -05:00
80ab3009aa chore: Remove outdated documentation files (analysis and build instructions) 2026-02-09 09:48:25 -05:00
02c7300c3b feat: Implement link health monitoring system with periodic checks and dead link detection
- 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
2026-01-31 13:19:53 -05:00
f88b7ffad3 feat: Integrate Google Gemini AI for bookmark enrichment and improve content classification
- 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
2026-01-31 11:19:41 -05:00
4021aacc1d feat: Add file sharing support and collections configuration management
- 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
2026-01-30 20:33:20 -05:00
fdacf2248a feat: Implement multi-tag filtering with dynamic SQL queries and improved UI
- 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
2026-01-29 20:42:52 -05:00
7277342d4a docs: Comprehensive README update with new features and architecture details
- 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
2026-01-29 13:14:47 -05:00
a9475c16b1 feat: Update Gradle wrapper to version 8.13
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
2026-01-28 11:38:49 -05:00
1438003f94 first commit 2026-01-11 19:47:49 -05:00