You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG
+37Lines changed: 37 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,42 @@
1
1
# Kemono Downloader Release Notes
2
2
3
+
## v5.10.0 (10 February 2026)
4
+
**feat: Fast Mode, SQLite hash storage, and customizable font settings**
5
+
6
+
- Add file size validation to HashDB for corruption detection
7
+
Adds a `file_size` column to the SQLite hash database schema. When a file is successfully downloaded, its actual size on disk is now stored alongside the hash. On subsequent download attempts, the stored file size is compared against the existing file's size before performing the more expensive MD5 hash check. If a size mismatch is detected (indicating corruption or incomplete download), the file is automatically re-downloaded. Includes automatic schema migration for existing databases (ALTER TABLE) and backward compatibility for legacy JSON-migrated entries (default file_size of 0). Adds 7 new unit tests covering file_size storage, retrieval, corruption detection, legacy migration, and old-DB schema migration.
8
+
9
+
- Fix progress bars to accurately reflect download progress
10
+
Resolves multiple issues causing progress bars to not reflect actual download state:
11
+
- **Post Downloader**: Added `bool` success flag to `file_completed` signal (now `pyqtSignal(int, str, bool)`), matching Creator Downloader's existing pattern. Failed files now emit `file_completed(index, url, False)` instead of silently returning, ensuring they are counted in progress.
12
+
- **Post Downloader**: Removed premature `file_completed` emission from inside the chunk download loop (was firing at progress == 100 before size validation completed).
13
+
- **Both Downloaders**: Overall progress bar now calculates percentage as `(completed + failed) / total` instead of `completed / total`, so failed files no longer stall the progress bar.
14
+
- **Post Downloader**: Added `failed_files` tracking set to the UI class with proper clearing alongside `completed_files` at all reset points.
15
+
- **Post Downloader**: Download completion check now uses `completed + failed >= total` instead of `completed == total`.
16
+
17
+
- Add Fast Mode to Post Downloader and Creator Downloader
18
+
Introduces a Fast Mode toggle (with qtawesome bolt icon) to both downloader tabs. When enabled, Fast Mode automatically selects all download categories, locks manual options to prevent accidental changes, and reveals a batch URL input area for pasting multiple URLs at once (one per line). Completed items are automatically removed from the queue. An info button (ℹ) explains the feature in a dialog. Includes full translations for all four languages and new unit tests.
19
+
20
+
- Fix Creator Downloader fast mode batch download
21
+
In fast mode, pressing Download now auto-detects and downloads all posts for each queued creator sequentially instead of requiring manual post selection. Uses a pipeline of `_fast_mode_process_next()` → PostDetectionThread → `_fast_mode_auto_download()` → `prepare_files_for_download()` to process each creator URL and advance to the next on completion.
22
+
23
+
- Lock UI controls during active downloads
24
+
All UI elements (inputs, checkboxes, buttons, queue lists, pagination, other tabs, and settings tab) are disabled during a download in both Post and Creator downloader tabs. Only the Cancel button and Expand Logs remain enabled. New `set_downloading_ui_state()` method in both tabs provides comprehensive lock/unlock behavior.
25
+
26
+
- Fix Expand Logs window freezing
27
+
Both Post and Creator downloader LogsWindow dialogs now use QTimer-based batched updates (500ms interval) instead of synchronous HTML copying on every log entry, preventing UI freezes during heavy download logging.
28
+
29
+
- Migrate file deduplication from JSON to SQLite
30
+
Replaces the `file_hashes.json` flat-file backend with a new `hash_db.py` module backed by SQLite (WAL mode, thread-safe). The `HashDB` class provides `has()`, `add()`, `remove()`, and `all_hashes()` methods. Existing JSON hash files are automatically migrated on first access. Improves performance and reliability for large hash sets. Includes 16 unit tests covering CRUD, migration, and thread safety.
31
+
32
+
- Add font settings to the Settings tab
33
+
Introduces a new Font Settings group in the settings UI, allowing users to switch the application-wide font between JetBrains Mono (default) and Poppins. Fonts are bundled as TTF files (Regular, Bold, Medium weights) and loaded at startup via QFontDatabase. The selected font is persisted via QSettings and applied across the entire application, including the intro screen, help tab, and browser extension tab. Adds `font_changed` signal to SettingsTab, dynamic `_get_font_family()` helpers in HelpTab and ExtensionTab, recursive font propagation in `KemonoDownloader.apply_font()`, and translations for the font UI in all four languages (English, Japanese, Korean, Chinese-Simplified). Includes 39 new unit tests covering defaults, combo box, signal emission, dialog messages, reset, bundled files, translations, QSettings persistence, and UI elements.
34
+
35
+
- **fix:** Replace `locale.getlocale(locale.LC_ALL)` with `locale.getlocale(locale.LC_CTYPE)` in downloader modules to prevent `TypeError` on Python 3.14/CachyOS; ensures locale detection works across all OSes and Python versions.
36
+
37
+
- Include PyQt BaseApp in Flatpak config to provide `libgssapi_krb5.so.2` and prevent runtime crashes
38
+
39
+
3
40
## v5.9.0 (09 February 2026)
4
41
**feat: Creator filename/folder customization, browser extension, and misc fixes**
@@ -158,14 +158,16 @@ KemonoDownloader offers a comprehensive set of features designed to efficiently
158
158
|**Creator Downloader**| Bulk download entire creator profiles or selected posts. Configurable options for main files, attachments, and content images. |
159
159
|**File Type Support**| Handles images (JPG, PNG, GIF, WebP), videos (MP4, AVI, MOV), archives (ZIP, 7Z, RAR), documents (PDF, TXT), audio (MP3, WAV), and more. |
160
160
|**URL Import**| Import multiple creator URLs from .txt files for batch processing. |
161
+
|**Fast Mode**| One-click toggle that selects all file categories, locks options, and enables batch URL input for rapid bulk downloading. In Creator Downloader, auto-detects and downloads all posts for each queued creator sequentially. |
162
+
|**Download UI Lock**| All controls are disabled during active downloads (except Cancel and Expand Logs) to prevent accidental changes. |
161
163
162
164
### $\color{#90a4ae}{\sf{\text{Performance and Reliability}}}$
0 commit comments