diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a38d800 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,434 @@ +# Yumemi Changelog + +A comprehensive list of all changes, improvements, and fixes made to the Yumemi manga reader app. + +**Yumemi** is a fork of the Kotatsu manga reader, enhanced with extensive performance optimizations, reliability improvements, and quality-of-life features. + +--- + +## Table of Contents + +- [Major Features](#major-features) +- [Performance Optimizations](#performance-optimizations) +- [Network & Connectivity](#network--connectivity) +- [Database & Storage](#database--storage) +- [Code Quality & Bug Fixes](#code-quality--bug-fixes) +- [Configuration & Settings](#configuration--settings) + +--- + +## Major Features + +### Improvement #11: Source Health Monitor +*Commit: 3b00220 | Date: 2026-01-22* + +A comprehensive system for tracking manga source reliability and performance metrics. + +**Database Layer:** +- `SourceHealthEntity`: Stores health metrics per source including success/failure counts, response time statistics (avg, min, max) using exponential moving average, consecutive failure tracking, and last error message storage +- `SourceHealthDao`: CRUD operations with health-aware queries for filtering by reliability +- Migration 28→29 creates the source_health table with proper indexing + +**Repository Layer:** +- `SourceHealthRepository`: High-level API for querying health data +- `HealthSummary`: Aggregate statistics across all tracked sources +- Health status enum: UNKNOWN, HEALTHY, DEGRADED, POOR, CRITICAL + +**Health Metrics:** +- Success rate calculation: (success_count / total) × 100 +- Reliability score (0-100): 70% from success rate + 30% from response time scoring +- Response time scoring: <1s=30pts, <2s=25pts, <3s=20pts, etc. +- Health status thresholds: ≥80=HEALTHY, ≥60=DEGRADED, ≥40=POOR, <40=CRITICAL + +**Integration:** +- `SourceHealthTracker`: Automatically records metrics for operations +- Empty result detection for identifying potential source issues + +--- + +### Improvement #10: Enhanced App Update Check +*Commit: bb33f23 | Date: 2026-01-22* + +Automatic background checking for app updates with rich notifications. + +**Core Components:** +- `AppUpdateCheckWorker`: Background worker using WorkManager with configurable intervals (6/12/24/48/72 hours) +- `AppUpdateNotifier`: Rich notification system displaying version, APK size, and changelog preview +- `AppUpdateDismissReceiver`: Handles notification dismissal + +**Settings:** +- `isAutoUpdateCheckEnabled`: Toggle background checks (default: true) +- `updateCheckIntervalHours`: Frequency selection +- `isUpdateCheckWifiOnly`: Restrict to WiFi (default: false) +- `skipVersion`/`isVersionSkipped`: Skip specific versions + +**Features:** +- WiFi-only option for data-conscious users +- Exponential backoff retry (max 3 attempts) +- Respects stable/unstable release preferences +- Android 13+ notification permission handling + +--- + +### Improvement #8: Download Resume Support +*Commit: e2f97b5 | Date: 2026-01-22* + +Resume interrupted downloads instead of starting over. + +**Components:** +- `ResumableDownloader`: HTTP Range request support with server capability detection +- `DownloadStateTracker`: Persistent download state with 7-day auto-cleanup +- Thread-safe implementation with mutex protection + +**Features:** +- Detects server support via Accept-Ranges header +- Resumes from last byte position on retry +- Falls back gracefully when resume not supported +- Validates Content-Range responses + +--- + +### Improvement #7: DNS Prefetching +*Commit: 65a0879 | Date: 2026-01-22* + +Proactive DNS resolution for faster page loads. + +**Components:** +- `DnsPrefetcher`: OkHttp Dns implementation with 5-minute TTL cache +- `DnsPrefetchManager`: Source-aware prefetching for enabled sources + +**Features:** +- Proactive refresh before cache expiry +- Pre-configured common CDN domains (jsdelivr, cloudflare, googleapis) +- Source-specific CDN domains (MangaDex, Webtoon) +- Network-aware (skips when offline) +- Seamless integration with existing DNS-over-HTTPS + +--- + +### Improvement #6: Network Quality Adaptive Behavior +*Commit: f2f8190 | Date: 2026-01-22* + +Dynamic app behavior based on real-time network conditions. + +**Components:** +- `NetworkQuality` enum: OFFLINE, POOR, MODERATE, GOOD, EXCELLENT +- `NetworkQualityMonitor`: Real-time network assessment +- `AdaptiveNetworkSettings`: Dynamic configuration provider +- `BandwidthTrackingInterceptor`: Automatic download speed tracking + +**Adaptive Settings:** +| Network Quality | Connect Timeout | Read Timeout | Concurrent Downloads | Preload Pages | +|-----------------|-----------------|--------------|----------------------|---------------| +| EXCELLENT | 10s | 30s | 6 | 5 | +| GOOD | 15s | 45s | 4 | 3 | +| MODERATE | 20s | 60s | 2 | 2 | +| POOR | 30s | 90s | 1 | 1 | +| OFFLINE | - | - | 0 | 0 | + +**Features:** +- WiFi/cellular/ethernet detection +- Cellular network type detection (2G/3G/4G/5G) +- Bandwidth estimation from downloads +- Observable network quality state + +--- + +### Improvement #5: Scrobbler Offline Queue +*Commit: 0c9ebd9 | Date: 2026-01-22* + +Queue scrobbling operations when offline for later sync. + +--- + +### Directory Sharing for Local Manga +*Commit: e4ef5bc | Date: 2026-01-21* + +Share local manga stored as directories (containing images) in addition to CBZ files. + +**Features:** +- Support for CBZ, CBR, ZIP file types +- Share all files in a directory as multiple streams +- Proper MIME type detection +- Hidden file filtering + +--- + +### Enhanced Adblock with CSS Element Hiding +*Commit: 17e87f1 | Date: 2026-01-21* + +More powerful ad blocking with CSS-based element hiding. + +**CSS Element Hiding (`##` rules):** +- Parse `##selector` rules and store CSS selectors +- Generate injectable JavaScript to hide matched elements +- Creates `