Releases: frostwire/frostwire
frostwire-android-3.0.9-build-763
FrostWire 3.0.9 (Build 763) — Comprehensive Change Report
Release Date: October 27, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso replaced for Coil
- Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
io.coil-kt.coil3:coil |
3.0.4 |
iio.coil-kt.coil3:coil-network-okhttp |
3.0.4 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.8 Build 762
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.9 build 763 OCT/27/2025
- new:Dynamic SoundCloud client ID and app version fetching from remote server for uninterrupted service
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.10.22
- replaced:Picasso for Coil image loading library
- removed:Torlock search performer (old site is down, new site is malicious)
- removed:LimeTorrents search performer
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading (removed on build 760)
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to reduce allocations
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:Arc...
frostwire-android-3.0.8-build-762
FrostWire 3.0.8 (Build 762) — Comprehensive Change Report
Release Date: October 20, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso replaced for Coil
- Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
io.coil-kt.coil3:coil |
3.0.4 |
iio.coil-kt.coil3:coil-network-okhttp |
3.0.4 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.8 Build 762
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.8 build 762 OCT/20/2025
- new:Dynamic SoundCloud client ID and app version fetching from remote server for uninterrupted service
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.10.14
- replaced:Picasso for Coil image loading library
- removed:Torlock search performer (old site is down, new site is malicious)
- removed:LimeTorrents search performer
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading (removed on build 760)
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to reduce allocations
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:Arc...
frostwire-android-3.0.7-build-761
FrostWire 3.0.7 (Build 761) — Comprehensive Change Report
Release Date: October 16, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso replaced for Coil
- Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
io.coil-kt.coil3:coil |
3.0.4 |
iio.coil-kt.coil3:coil-network-okhttp |
3.0.4 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.7 Build 761
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.7 build 761 OCT/16/2025
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.10.14
- replaced:Picasso for Coil image loading library
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading (removed on build 760)
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to reduce allocations
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:ArchiveorgSearchPerformer -> InternetArchiveSearchPerformer
- maintenance:glotorrents search fixed
- maintenance:idope search fixed
- maintenance:...
frostwire-android-3.0.6-build-760
What's Changed
- [android] Replace Picasso with Coil to eliminate HandlerDispatcher crashes by @Copilot in #1215
Full Changelog: frostwire-android-3.0.5-build-759...frostwire-android-3.0.6-build-760
FrostWire 3.0.6 (Build 760) — Comprehensive Change Report
Release Date: October 12, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso 3.0.0-alpha06 upgrade with custom
ImageLoaderrefactor. - Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
io.coil-kt.coil3:coil |
3.0.4 |
iio.coil-kt.coil3:coil-network-okhttp |
3.0.4 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.5 Build 759
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.6 build 760 OCT/16/2025
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.09.26
- replaced:Picasso for Coil image loading library
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading (removed on build 760)
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to r...
frostwire-android-3.0.5-build-759
FrostWire 3.0.5 (Build 759) — Comprehensive Change Report
Release Date: October 12, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso 3.0.0-alpha06 upgrade with custom
ImageLoaderrefactor. - Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
com.squareup.picasso3:picasso |
3.0.0-alpha06 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.5 Build 759
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.5 build 759 OCT/12/2025
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.09.26
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to reduce allocations
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:glotorrents search fixed
- maintenance:idope search fixed
- maintenance:magnetdl search fixed
- maintenance:add BitmapFactory.inSampleSize to prevent OOM crashes
- maintenance:Add Bitmap.recycle() to prevent native...
frostwire-android-3.0.4-build-758
FrostWire 3.0.4 (Build 758) — Comprehensive Change Report
Release Date: October 11, 2025
Based on: FrostWire 2.x → 3.x transition (Android)
🧱 Architectural & Core Upgrades
Migration to jlibtorrent 2.0.12.5
- Full adoption of BitTorrent v2 protocol, including hybrid torrent support and BEP52 compliance.
- Hundreds of performance and stability fixes from upstream libtorrent RC_2_0 branch.
- C++20 standardization: all native builds now compiled with
C++20(C++2aon Windows/MinGW). - Boost 1.88.0, OpenSSL 3.5.2, and SWIG 4.3.1 upgrades for improved compatibility and security.
- Android NDK r28c (16KB page support) → future-proofed for Android 14+ devices.
- JDK 17 build target with full
JAVA_17compatibility. - Mavenized jlibtorrent packages (
com.frostwire:jlibtorrent) for easier integration.
Key New Libtorrent (lt) Features
- Added async APIs:
post_trackers(),post_status(),post_peer_info(),post_piece_availability(),post_file_progress(), etc. - Enhanced
torrent_handlewith new overloads (get_resume_data(flags),add_piece(async)). - New runtime checks for
add_torrent_params::save_pathvalidation. - Major uTP performance improvements: reduced redundant ACKs, resends, and improved congestion control.
- Improved I/O subsystem: switched to memory-mapped files with better sparse region handling.
- Added stricter BEP compliance (filename validation, piece layers, IPv6 priority, I2P improvements).
- Async I/O improvements → better throughput and less thread contention.
⚙️ FrostWire App-Level Enhancements
New Features
- TorrentCSV and Knaben integrated as new torrent search performers.
- Incoming Port Range configuration (
Settings > Torrent Settings > Port Range). - Automatic seeding of finished HTTP downloads, replicating desktop seeding behavior.
- Ad-free experience: all 3rd-party ads and trackers removed.
Only FrostWire support requests, VPN suggestions, and promotional downloads remain. - Updated
yt_dlpbinary to 2025.09.26 for YouTube & media downloading. - Distraction-free search mode enabled by default for cleaner UI.
Performance Optimizations
- Search sorting improved from
O(n² log n)→O(n log n)complexity. - Connection pooling unlocked via OkHttpClient reuse.
- Reduced GC pressure and CPU load in download and search pipelines.
- Fuzzy matching (
PerformersHelper): optimized Levenshtein computation, 8.8× faster sanitization. - I/O operations optimized with buffered streams — up to 96% CPU savings on syscalls.
- Regex eliminations in URL and string sanitizers for major allocation reductions.
- Threading refactors: removal of
Thread.yield()and newRunnabletask model inSearchManager. - Logger,
ThreadPool, andRecyclerViewhot paths heavily optimized. - Startup time reduced via deferred heavy initialization.
- Memory safety improvements with
Bitmap.recycle()andinSampleSizescaling to prevent OOMs.
UI & UX
- Picasso 3.0.0-alpha06 upgrade with custom
ImageLoaderrefactor. - Crash and ANR resilience: multiple handler and dispatcher fixes in
MusicPlaybackService. - ForegroundServiceStartNotAllowedException handling for Android 14+.
- New concurrent-safe URL resolver (
UrlUtils.getFastestMirrorDomain). - Thread-safe WorkManager configuration to prevent
JobScheduleralarm limit exceptions. - Optimized music metadata cleanup and playlist handling in background.
🧠 Code Quality & Refactoring
- SearchManager rewritten to use modern
Runnabletask submission. - Hashtable throttling replaced with lock-free
ConcurrentHashMap. - Removed deprecated APIs (
setDrawingCacheEnabled, replaced with Canvas API). - Consistent GPL v3.0 license headers across all source files.
- Modularized SWIG interface files for maintainability.
- Added
prepare-macos.shand improved build scripts (run-swig.sh,build-only,swig-onlyoptions). - Enhanced exception handling, typed bitfields, and Boost error code wrapping in SWIG bindings.
🧩 Stability & Crash Fixes
- Fixed multiple ANRs in:
MusicPlaybackService.setDataSourceMusicPlaybackService.playFDs- Large result sorting
Picassobackground handlers
- Fixed NullPointerExceptions in
ImageFetcherandHandlerDispatcher. - Fixed ClassCastException in
SearchResultListAdapter. - Fixed ConcurrentModificationException in
Ssl$FWHostnameVerifier. - Fixed ForegroundServiceStartNotAllowedException for Android 14+.
- Fixed thread leaks and race conditions in mirror resolution and image loading.
- Fixed context leaks and improved lifecycle handling in broadcast receivers.
- Fixed OOM risks via aggressive bitmap cleanup and sample downscaling.
🧰 Library & Dependency Upgrades
| Library | Version |
|---|---|
org.jetbrains:annotations |
26.0.2-1 |
androidx.appcompat:appcompat |
1.7.1 |
androidx.browser:browser |
1.9.0 |
androidx.core:core |
1.17.0 |
androidx.exifinterface:exifinterface |
1.4.1 |
androidx.lifecycle:lifecycle-viewmodel-ktx |
2.9.4 |
androidx.work:work-runtime-ktx |
2.10.4 |
com.google.android.material:material |
1.13.0 |
com.google.code.gson:gson |
2.13.2 |
com.google.re2j:re2j |
1.8 |
com.squareup.okhttp3:okhttp |
5.1.0 |
com.squareup.picasso3:picasso |
3.0.0-alpha06 |
com.chaquo.python:gradle |
16.1.0 |
org.codehaus.groovy:groovy-all |
3.0.25 |
com.google.gms:google-services |
4.4.3 |
com.google.firebase:firebase-crashlytics-gradle |
3.0.6 |
com.google.firebase:firebase-bom |
34.3.0 |
🔧 Libtorrent 2.0 Highlights (Technical Breakdown)
Major Improvements
- Disk I/O overhaul → memory-mapped files, reduced syscall overhead.
- uTP protocol refinements for stable low-latency streaming.
- Improved BEP compliance (BEP40, BEP52, IPv6).
- Added BitTorrent v2 torrent creation, validation, and mixed v1/v2 swarm handling.
- Resilient resume data loading/saving with new v2 formats.
- SOCKS5, I2P, DHT, proxy layers fixed and modernized.
- Improved DNS caching and error handling.
- Thread-safe piece picker,
file_progress, andhash_pickerfixes. - Removed deprecated APIs:
lazy_entry,save_state(),load_state(),bittyrant. - Dropped iconv dependency, lighter build footprint.
I2P & Privacy
- Added I2P inbound/outbound length variance settings.
- Fixed I2P announce parsing and protocol quoting.
- Added mixed swarm control (I2P + clearnet).
🧾 Summary
FrostWire 3 marks a major modernization leap — moving to:
- BitTorrent v2 ecosystem,
- 16KB page-aware Android binaries,
- Ad-free user experience,
- Fully optimized search and transfer performance.
This release focuses heavily on speed, stability, and code hygiene:
- Native layer rewritten in C++20,
- App layer streamlined for Android 14+,
- Improved resource handling,
- Significant performance wins in networking, searching, and I/O.
FrostWire 3.0.4 Build 758
The most stable, efficient, and privacy-respecting FrostWire release to date.
FrostWire 3.0.4 build 758 OCT/11/2025
- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- new:No more third party ads or advertising tracking of any kind. Only frostwire support requests, vpn suggestions and promotional free downloads.
- yt_dlp-2025.09.26
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- improvement:Optimize stackBlur() with array pooling to reduce allocations
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:glotorrents search fixed
- maintenance:idope search fixed
- maintenance:magnetdl search fixed
- maintenance:add BitmapFactory.inSampleSize to prevent OOM crashes
- maintenance:Add Bitmap.recycle() to prevent native...
frostwire-android-3.0.3-build-757
FrostWire 3.0.3 build 757 OCT/04/2025

- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- yt_dlp-2025.09.23
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:glotorrents search fixed
- maintenance:idope search fixed
- maintenance:magnetdl search fixed
- speed-up:reuse OkHttpClient instances to unlock connection pooling and reduce GC pressure
- speed-up:Replace global Hashtable throttling with lock-free ConcurrentHashMap in TaskThrottle
- speed-up:Cache torrent-search date parsers to eliminate per-result SimpleDateFormat allocations
- speed-up:Use buffered I/O for large transfers in OkHttpClientWrapper.save and ZipUtils.unzip. Up to 96% CPU savings in sys write calls, 30-50% reduction in CPU during I/O operations, search results should come out a lot faster
- crash:ConcurrentModificationException in Ssl$FWHostnameVerifier
- fix:Picasso HandlerDispatcher NullPointerException on network state changes when app is backgrounded by keeping Picasso alive instead of shutting down
- org.jetbrains:annotations:26.0.2-1
- androidx.appcompat:appcompat:1.7.1
- androidx.browser:browser:1.9.0
- com.chaquo.python:gradle:16.1.0, now with linked 16KB mode compatible with android compile sdk 36
- org.codehaus.groovy:groovy-all:3.0.25
- com.squareup.picasso3:picasso:3.0.0-alpha06 and refactor of ImageLoader to use it
- com.google.gms:google-services:4.4.3
- com.google.firebase:firebase-crashlytics-gradle:3.0.6
- androidx.core:core:1.17.0
- androidx.exifinterface:exifinterface:1.4.1
- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4
- com.google.android.material:material:1.13.0
- com.google.code.gson:gson:2.13.2
- com.google.re2j:re2j:1.8
- com.squareup.okhttp3:okhttp:5.1.0
- androidx.work:work-runtime-ktx:2.10.4
- com.google.firebase:firebase-bom:34.3.0
- com.applovin:applovin-sdk:13.4.0
- com.applovin.mediation:unityads-adapter:4.16.1.0
- Maintenance:all license headers are consistent with GPL 3.0
- jlibtorrent:libraries are now compiled with C++20 (ming/windows with C++2a which is the same)
- jlibtorrent:g++-9 upgraded to g++-11 for linux build
- jlibtorrent:new Sha256Hash::swig()
- jlibtorrent:new SessionManager::find(Sha256Hash) and SessionManager::find(TorrentInfo) methods
- jlibtorrent:built with android NDK r28c with 16K page size support
- Android 64-bit binaries are compiled to have 16KB max-page-size
- jlibtorrent:New com.frostwire:jlibtorrent- maven packages for easier integration with gradle/maven
- jlibtorrent:new torrent_handle::get_resume_data() : add_torrent_params
- jlibtorrent:new torrent_handle::get_resume_data(resume_data_flags_t flags) : add_torrent_params
- jlibtorrent:new settings_pack.int_types i2p_inbound_length_variance
- jlibtorrent:new settings_pack.int_types i2p_outbound_length_variance
- jlibtorrent:Jar built with JDK 17 - JAVA_17 compatibility
- jlibtorrentBoost 1.88.0 upgrade
- jlibtorrent:OpenSSL 3.5.2 upgrade (from 1.1.1t)
- jlibtorrent:Upgraded SWIG to 4.3.1
- jlibtorrent:Gradle 9.0.0
- dev: junit upgraded from 4.13.1 -> 4.13.2
- lt:add option to send host header in HTTP proxy CONNECT command
- lt:cache DNS failures for a shorter time
- lt:file_renamed_alert is always posted, regardless of alert mask
- lt:add feature to request resume data synchronously
- lt:don't leak file descriptors to child processes (O_CLOEXEC)
- lt:optimize the utp resend
- lt:optimize tracker announcements
- fix handling of invalid filenames
- add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
- lt: validate add_torrent_params::save_path at run-time
- lt: use stricter rules for what filenames are valid on Android
- lt: fix applying IP filter to DHT traffic (HanabishiRecca)
- lt: fix race condition when cancelling requests after becoming a seed
- lt: fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
- lt: fix bug where file_progress could sometimes be reported as >100%
- jlibtorrent:BDecodeNode: hasList, hasDict, hasString, hasInt, getList, getDict, getString, getInt
- lt:limit piece size in torrent creator
- lt:don't hint FADV_RANDOM on posix systems. May improve seeding performance
- lt:allow boost connect while checking resume data if no_verify_files flag is set
- lt:fix BEP-40 peer priority for IPv6
- lt:fix file pre-allocation when changing file priority (HanabishiRecca)
- jlibtorrent:SWIG interface files have been modularized for better maintainability and readability
- jlibtorrent:Added missing alert types
- jlibtorrent:Introduced typed_bitfield template
- jlibtorrent:Operator renaming for Java compatibility
- jlibtorrent:Included boost_system_error_code.i
- jlibtorrent:Added prepare-macos.sh script
- jlibtorrent:Updated run-swig.sh script
- jlibtorrent:Set TORRENT_ABI_VERSION=4
- jlibtorrent:Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
- jlibtorrent:Android NDK r26d (LTS) upgrade (from r25c)
- jlibtorrent:Added
--swig-onlyand--build-onlyoptions to swig/build scripts - jlibtorrent:Added
prepare-macos.shscript for macOS build setup - jlibtorrent:Updated
run-swig.shscript for improved SWIG processing - jlibtorrent:Enhanced exception handling in SWIG interfaces
- jlibtorrent:Fixed issues in file_storage.hpp and ip_filter.hpp
- jlibtorrent:Adjusted build flags and macros for Boost and libtorrent compatibility
- jlibtorrent:Enabled SWIG directors for specific classes
- lt:fix uTP issue where closing the connection could corrupt the payload
- lt:apply DSCP/TOS to sockets before initiating the TCP connection
- lt:assume copy_file_range() exists on linux (unless old glibc)
- lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
- lt:fix integer overflow in piece picker
- lt:torrent_status::num_pieces counts pieces passed hash check, as documented
- lt:check settings_pack::max_out_request_queue before performance alert
- lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
- lt:add feature to async_move_storage() to not move files
- lt:fix reject resume data if it contains mismatching info hashes
- lt:fix clear the candidate_cache when clear peer_list
- lt:fix missing python converter for dht::announce_flags_t
- lt:fix issue with web seed connections when they close and re-open
- lt:fallocate() not supported is not a fatal error
- lt:fix proxying of IPv6 connections via IPv4 proxy
- lt:treat CGNAT address range as local IPs
- lt:add stricter checking of piece layers when loading torrents
- lt:add stricter checking of v1 and v2 hashes being consistent
- lt:cache failed DNS lookups as well as successful ones
- lt:add an i2p torrent state to control interactions with clear swarms
- lt:fix i2p SAM protocol parsing of quoted messages
- lt:expose i2p peer destination in peer_info
- lt:fix i2p tracker announces
- lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
- lt:improve handling of allow_i2p_mixed setting to work for magnet links
- lt:fix web seed request for renamed single-file torrents
- lt:fix issue where web seeds could disappear from resume data
- lt:extend save_resume with additional conditional flags
- lt:fix issue with retrying trackers in tiers > 0
- lt:fix last_upload and last_download resume data fields to use posix time
- lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
- lt:fix I2P issue introduced in 2.0.0
- lt:add async tracker status query, post_trackers()
- lt:add async torrent status query, post_status()
- lt:support loading version 2 of resume data format
- lt:fix issue with odd piece sizes
- lt:add async piece availability query, post_piece_availability()
- lt:add async download queue query, post_download_queue()
- lt:add async file_progress query, post_file_progress()
- lt:add async peer_info query, post_peer_info()
- lt:fix uTP streams timing out instead of closing cleanly
- lt:add write_torrent_file_buf() overload ...
frostwire-android-3.0.2-build-756
FrostWire 3.0.2 build 756 OCT/03/2025

- new:Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new:Knaben search performer, a new torrent search source
- new:TorrentCSV search performer, a new torrent search source
- new:Settings > Torrent Settings > Incoming Connection Port Range selection
- new:Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- yt_dlp-2025.09.23
- removed:Torlock search performer (old site is down, new site is malicious)
- freeze:ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze:sorting through too many results could cause an ANR when cleaning up titles
- freeze:ANR in MusicPlaybackService.setDataSource
- freeze:ANR in MusicPlaybackService.playFDs
- fix:logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix:ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix:Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix:Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix:ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix:HandlerDispatcher NullPointerException crashes in Picasso image loading
- freeze:in playFDs
- freeze:in MusicPlaybackService.setDataSource
- crash:NPE in ImageFetcher.loadCurrentArtwork()
- improvement:PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- maintenance:Avoid possible context leak on EngineBroadcastReceiver
- maintenance:all license headers are GPL 3.0
- maintenance:archive.org search fixed
- maintenance:glotorrents search fixed
- maintenance:idope search fixed
- maintenance:magnetdl search fixed
- speed-up:reuse OkHttpClient instances to unlock connection pooling and reduce GC pressure
- speed-up:Replace global Hashtable throttling with lock-free ConcurrentHashMap in TaskThrottle
- speed-up:Cache torrent-search date parsers to eliminate per-result SimpleDateFormat allocations
- speed-up:Use buffered I/O for large transfers in OkHttpClientWrapper.save and ZipUtils.unzip. Up to 96% CPU savings in sys write calls, 30-50% reduction in CPU during I/O operations, search results should come out a lot faster
- crash:ConcurrentModificationException in Ssl$FWHostnameVerifier
- fix:Picasso HandlerDispatcher NullPointerException on network state changes when app is backgrounded by keeping Picasso alive instead of shutting down
- org.jetbrains:annotations:26.0.2-1
- androidx.appcompat:appcompat:1.7.1
- androidx.browser:browser:1.9.0
- com.chaquo.python:gradle:16.1.0, now with linked 16KB mode compatible with android compile sdk 36
- org.codehaus.groovy:groovy-all:3.0.25
- com.squareup.picasso3:picasso:3.0.0-alpha06 and refactor of ImageLoader to use it
- com.google.gms:google-services:4.4.3
- com.google.firebase:firebase-crashlytics-gradle:3.0.6
- androidx.core:core:1.17.0
- androidx.exifinterface:exifinterface:1.4.1
- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4
- com.google.android.material:material:1.13.0
- com.google.code.gson:gson:2.13.2
- com.google.re2j:re2j:1.8
- com.squareup.okhttp3:okhttp:5.1.0
- androidx.work:work-runtime-ktx:2.10.4
- com.google.firebase:firebase-bom:34.3.0
- com.applovin:applovin-sdk:13.4.0
- com.applovin.mediation:unityads-adapter:4.16.1.0
- Maintenance:all license headers are consistent with GPL 3.0
- jlibtorrent:libraries are now compiled with C++20 (ming/windows with C++2a which is the same)
- jlibtorrent:g++-9 upgraded to g++-11 for linux build
- jlibtorrent:new Sha256Hash::swig()
- jlibtorrent:new SessionManager::find(Sha256Hash) and SessionManager::find(TorrentInfo) methods
- jlibtorrent:built with android NDK r28c with 16K page size support
- Android 64-bit binaries are compiled to have 16KB max-page-size
- jlibtorrent:New com.frostwire:jlibtorrent- maven packages for easier integration with gradle/maven
- jlibtorrent:new torrent_handle::get_resume_data() : add_torrent_params
- jlibtorrent:new torrent_handle::get_resume_data(resume_data_flags_t flags) : add_torrent_params
- jlibtorrent:new settings_pack.int_types i2p_inbound_length_variance
- jlibtorrent:new settings_pack.int_types i2p_outbound_length_variance
- jlibtorrent:Jar built with JDK 17 - JAVA_17 compatibility
- jlibtorrentBoost 1.88.0 upgrade
- jlibtorrent:OpenSSL 3.5.2 upgrade (from 1.1.1t)
- jlibtorrent:Upgraded SWIG to 4.3.1
- jlibtorrent:Gradle 9.0.0
- dev: junit upgraded from 4.13.1 -> 4.13.2
- lt:add option to send host header in HTTP proxy CONNECT command
- lt:cache DNS failures for a shorter time
- lt:file_renamed_alert is always posted, regardless of alert mask
- lt:add feature to request resume data synchronously
- lt:don't leak file descriptors to child processes (O_CLOEXEC)
- lt:optimize the utp resend
- lt:optimize tracker announcements
- fix handling of invalid filenames
- add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
- lt: validate add_torrent_params::save_path at run-time
- lt: use stricter rules for what filenames are valid on Android
- lt: fix applying IP filter to DHT traffic (HanabishiRecca)
- lt: fix race condition when cancelling requests after becoming a seed
- lt: fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
- lt: fix bug where file_progress could sometimes be reported as >100%
- jlibtorrent:BDecodeNode: hasList, hasDict, hasString, hasInt, getList, getDict, getString, getInt
- lt:limit piece size in torrent creator
- lt:don't hint FADV_RANDOM on posix systems. May improve seeding performance
- lt:allow boost connect while checking resume data if no_verify_files flag is set
- lt:fix BEP-40 peer priority for IPv6
- lt:fix file pre-allocation when changing file priority (HanabishiRecca)
- jlibtorrent:SWIG interface files have been modularized for better maintainability and readability
- jlibtorrent:Added missing alert types
- jlibtorrent:Introduced typed_bitfield template
- jlibtorrent:Operator renaming for Java compatibility
- jlibtorrent:Included boost_system_error_code.i
- jlibtorrent:Added prepare-macos.sh script
- jlibtorrent:Updated run-swig.sh script
- jlibtorrent:Set TORRENT_ABI_VERSION=4
- jlibtorrent:Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
- jlibtorrent:Android NDK r26d (LTS) upgrade (from r25c)
- jlibtorrent:Added
--swig-onlyand--build-onlyoptions to swig/build scripts - jlibtorrent:Added
prepare-macos.shscript for macOS build setup - jlibtorrent:Updated
run-swig.shscript for improved SWIG processing - jlibtorrent:Enhanced exception handling in SWIG interfaces
- jlibtorrent:Fixed issues in file_storage.hpp and ip_filter.hpp
- jlibtorrent:Adjusted build flags and macros for Boost and libtorrent compatibility
- jlibtorrent:Enabled SWIG directors for specific classes
- lt:fix uTP issue where closing the connection could corrupt the payload
- lt:apply DSCP/TOS to sockets before initiating the TCP connection
- lt:assume copy_file_range() exists on linux (unless old glibc)
- lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
- lt:fix integer overflow in piece picker
- lt:torrent_status::num_pieces counts pieces passed hash check, as documented
- lt:check settings_pack::max_out_request_queue before performance alert
- lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
- lt:add feature to async_move_storage() to not move files
- lt:fix reject resume data if it contains mismatching info hashes
- lt:fix clear the candidate_cache when clear peer_list
- lt:fix missing python converter for dht::announce_flags_t
- lt:fix issue with web seed connections when they close and re-open
- lt:fallocate() not supported is not a fatal error
- lt:fix proxying of IPv6 connections via IPv4 proxy
- lt:treat CGNAT address range as local IPs
- lt:add stricter checking of piece layers when loading torrents
- lt:add stricter checking of v1 and v2 hashes being consistent
- lt:cache failed DNS lookups as well as successful ones
- lt:add an i2p torrent state to control interactions with clear swarms
- lt:fix i2p SAM protocol parsing of quoted messages
- lt:expose i2p peer destination in peer_info
- lt:fix i2p tracker announces
- lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
- lt:improve handling of allow_i2p_mixed setting to work for magnet links
- lt:fix web seed request for renamed single-file torrents
- lt:fix issue where web seeds could disappear from resume data
- lt:extend save_resume with additional conditional flags
- lt:fix issue with retrying trackers in tiers > 0
- lt:fix last_upload and last_download resume data fields to use posix time
- lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
- lt:fix I2P issue introduced in 2.0.0
- lt:add async tracker status query, post_trackers()
- lt:add async torrent status query, post_status()
- lt:support loading version 2 of resume data format
- lt:fix issue with odd piece sizes
- lt:add async piece availability query, post_piece_availability()
- lt:add async download queue query, post_download_queue()
- lt:add async file_progress query, post_file_progress()
- lt:add async peer_info query, post_peer_info()
- lt:fix uTP streams timing out instead of closing cleanly
- lt:add write_torrent_file_buf() overload ...
frostwire-android-3.0.0-build-754
FrostWire ORINOCO 3.0.0 build 754 SEP/28/2025
- new: Powered by jlibtorrent 2.0.12.5 with bittorrent v2 protocol support with hundreds of bug fixes and performance improvements
- new: Knaben search performer, a new torrent search source
- new: TorrentCSV search performer, a new torrent search source
- new: Settings > Torrent Settings > Incoming Connection Port Range selection
- new: Seed finished HTTP transfers if seeding is enabled (automatically creates torrent of finished download like on desktop)
- yt_dlp-2025.09.23
- removed: Torlock search performer (old site is down, new site is malicious)
- freeze: ensure MusicUtils.removeFromPlaylist ContentResolver activity is in the background
- freeze: sorting through too many results could cause an ANR when cleaning up titles
- freeze: ANR in MusicPlaybackService.setDataSource
- freeze: ANR in MusicPlaybackService.playFDs
- fix: logic bug in PerformersHelper.countMatchedTokens(), matched tokens were not counted correctly
- fix: ForegroundServiceStartNotAllowedException by adding foreground check and error handling
- fix: Android 14+ ForegroundServiceStartNotAllowedException in MusicPlaybackService
- fix: Android JobScheduler alarm limit exceeded crashes by configuring WorkManager
- fix: ClassCastException in SearchResultListAdapter OnLinkClickListener
- fix: HandlerDispatcher NullPointerException crashes in Picasso image loading
- freeze: in playFDs
- freeze in MusicPlaybackService.setDataSource
- crash: NPE in ImagfeFetcher.loadCurrentArtwork()
- improvement: PerformersHelper.sanitize() 8.8x speed gains in title normalization by not using a regex and instead simple string replacements
- Avoid possible context leak on EngineBroadcastReceiver
- maintenance: all license headers are GPL 3.0
- maintenance: archive.org search fixed
- maintenance: glotorrents search fixed
- org.jetbrains:annotations:26.0.2-1
- androidx.appcompat:appcompat:1.7.1
- androidx.browser:browser:1.9.0
- com.chaquo.python:gradle:16.1.0, now with linked 16KB mode compatible with android compile sdk 36
- org.codehaus.groovy:groovy-all:3.0.25
- com.squareup.picasso3:picasso:3.0.0-alpha06 and refactor of ImageLoader to use it
- com.google.gms:google-services:4.4.3
- com.google.firebase:firebase-crashlytics-gradle:3.0.6
- androidx.core:core:1.17.0
- androidx.exifinterface:exifinterface:1.4.1
- androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4
- com.google.android.material:material:1.13.0
- com.google.code.gson:gson:2.13.2
- com.google.re2j:re2j:1.8
- com.squareup.okhttp3:okhttp:5.1.0
- androidx.work:work-runtime-ktx:2.10.4
- com.google.firebase:firebase-bom:34.3.0
- com.applovin:applovin-sdk:13.4.0
- com.applovin.mediation:unityads-adapter:4.16.1.0
- Maintenance:all license headers are consistent with GPL 3.0
- jlibtorrent:libraries are now compiled with C++20 (ming/windows with C++2a which is the same)
- jlibtorrent:g++-9 upgraded to g++-11 for linux build
- jlibtorrent:new Sha256Hash::swig()
- jlibtorrent:new SessionManager::find(Sha256Hash) and SessionManager::find(TorrentInfo) methods
- jlibtorrent:built with android NDK r28c with 16K page size support
- Android 64-bit binaries are compiled to have 16KB max-page-size
- jlibtorrent:New com.frostwire:jlibtorrent- maven packages for easier integration with gradle/maven
- jlibtorrent:new torrent_handle::get_resume_data() : add_torrent_params
- jlibtorrent:new torrent_handle::get_resume_data(resume_data_flags_t flags) : add_torrent_params
- jlibtorrent:new settings_pack.int_types i2p_inbound_length_variance
- jlibtorrent:new settings_pack.int_types i2p_outbound_length_variance
- jlibtorrent:Jar built with JDK 17 - JAVA_17 compatibility
- jlibtorrentBoost 1.88.0 upgrade
- jlibtorrent:OpenSSL 3.5.2 upgrade (from 1.1.1t)
- jlibtorrent:Upgraded SWIG to 4.3.1
- jlibtorrent:Gradle 9.0.0
- dev: junit upgraded from 4.13.1 -> 4.13.2
- lt:add option to send host header in HTTP proxy CONNECT command
- lt:cache DNS failures for a shorter time
- lt:file_renamed_alert is always posted, regardless of alert mask
- lt:add feature to request resume data synchronously
- lt:don't leak file descriptors to child processes (O_CLOEXEC)
- lt:optimize the utp resend
- lt:optimize tracker announcements
- fix handling of invalid filenames
- add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
- lt: validate add_torrent_params::save_path at run-time
- lt: use stricter rules for what filenames are valid on Android
- lt: fix applying IP filter to DHT traffic (HanabishiRecca)
- lt: fix race condition when cancelling requests after becoming a seed
- lt: fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
- lt: fix bug where file_progress could sometimes be reported as >100%
- jlibtorrent:BDecodeNode: hasList, hasDict, hasString, hasInt, getList, getDict, getString, getInt
- lt:limit piece size in torrent creator
- lt:don't hint FADV_RANDOM on posix systems. May improve seeding performance
- lt:allow boost connect while checking resume data if no_verify_files flag is set
- lt:fix BEP-40 peer priority for IPv6
- lt:fix file pre-allocation when changing file priority (HanabishiRecca)
- jlibtorrent:SWIG interface files have been modularized for better maintainability and readability
- jlibtorrent:Added missing alert types
- jlibtorrent:Introduced typed_bitfield template
- jlibtorrent:Operator renaming for Java compatibility
- jlibtorrent:Included boost_system_error_code.i
- jlibtorrent:Added prepare-macos.sh script
- jlibtorrent:Updated run-swig.sh script
- jlibtorrent:Set TORRENT_ABI_VERSION=4
- jlibtorrent:Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
- jlibtorrent:Android NDK r26d (LTS) upgrade (from r25c)
- jlibtorrent:Added
--swig-onlyand--build-onlyoptions to swig/build scripts - jlibtorrent:Added
prepare-macos.shscript for macOS build setup - jlibtorrent:Updated
run-swig.shscript for improved SWIG processing - jlibtorrent:Enhanced exception handling in SWIG interfaces
- jlibtorrent:Fixed issues in file_storage.hpp and ip_filter.hpp
- jlibtorrent:Adjusted build flags and macros for Boost and libtorrent compatibility
- jlibtorrent:Enabled SWIG directors for specific classes
- lt:fix uTP issue where closing the connection could corrupt the payload
- lt:apply DSCP/TOS to sockets before initiating the TCP connection
- lt:assume copy_file_range() exists on linux (unless old glibc)
- lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
- lt:fix integer overflow in piece picker
- lt:torrent_status::num_pieces counts pieces passed hash check, as documented
- lt:check settings_pack::max_out_request_queue before performance alert
- lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
- lt:add feature to async_move_storage() to not move files
- lt:fix reject resume data if it contains mismatching info hashes
- lt:fix clear the candidate_cache when clear peer_list
- lt:fix missing python converter for dht::announce_flags_t
- lt:fix issue with web seed connections when they close and re-open
- lt:fallocate() not supported is not a fatal error
- lt:fix proxying of IPv6 connections via IPv4 proxy
- lt:treat CGNAT address range as local IPs
- lt:add stricter checking of piece layers when loading torrents
- lt:add stricter checking of v1 and v2 hashes being consistent
- lt:cache failed DNS lookups as well as successful ones
- lt:add an i2p torrent state to control interactions with clear swarms
- lt:fix i2p SAM protocol parsing of quoted messages
- lt:expose i2p peer destination in peer_info
- lt:fix i2p tracker announces
- lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
- lt:improve handling of allow_i2p_mixed setting to work for magnet links
- lt:fix web seed request for renamed single-file torrents
- lt:fix issue where web seeds could disappear from resume data
- lt:extend save_resume with additional conditional flags
- lt:fix issue with retrying trackers in tiers > 0
- lt:fix last_upload and last_download resume data fields to use posix time
- lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
- lt:fix I2P issue introduced in 2.0.0
- lt:add async tracker status query, post_trackers()
- lt:add async torrent status query, post_status()
- lt:support loading version 2 of resume data format
- lt:fix issue with odd piece sizes
- lt:add async piece availability query, post_piece_availability()
- lt:add async download queue query, post_download_queue()
- lt:add async file_progress query, post_file_progress()
- lt:add async peer_info query, post_peer_info()
- lt:fix uTP streams timing out instead of closing cleanly
- lt:add write_torrent_file_buf() overload for generating .torrent files
- lt:add create_torrent::generate_buf() function to generate into a buffer
- lt:fix copy_file when the file ends with a sparse region
- lt:uTP performance, fix packet loss when sending is stalled
- lt:fix trackers being stuck after session pause/resume
- lt:fix bug in hash_picker with empty files
- lt:uTP performance, prevent premature timeouts/resends
- lt:add option to not memory map files below a certain size
- lt:settings_pack now returns default values when queried for missing settings
- lt:fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
- lt:improve error reporting from file copy and move
- lt:tweak pad file placement to match reference implementation (tail-padding)
- lt:uTP performance, more lenient nagle's algorithm to always allow one outstanding u...
frostwire-desktop-6.14.0-build-326
frostwire (6.14.0) stable; urgency=high
- Telluride Video Downloader build 38
- Filter out search results with no keyword matches, considers fuzzy matches
- New app_splash image
- FrostWire 6.14.0 build 326
- Make download button on slide panel transparent
- Black background behind author on slide controls overlay
- Don't paint search tabbed pane background on default theme either
- Settings button on status bar (StatusLine) now looks good
- Dark theme fixes for delete files dialog
- Dark theme for search tab headers, refactor checking what theme is on
- Robust runtime theme switch & readable dialogs in FlatLaf dark mode
- Ignore some exceptions while updating window hierarchy on theme change
- General UI cleanup
- Background color for main searchboxes fixed when focused
- Refine dark theme UI, panel and textfield backgrounds darker
- Icon brightening support and clean-up sweep
- LibraryExplorer Tree background is darker for dark theme, speaker icon is brightened
- TransferDetailGeneral: support dark theme backgrounds and text
- Make transfer-detail pieces & tables use dark theme background
- Dark theme: unify table, panel and toggle-button backgrounds
- Actions for transfers, library and search had icons brightened in dark mode
- Transfer seeding renderer icon brightened for dark mode
- Enhanced icon repainting capabilities for dark mode
- ThemeMediator: Improved handling of table row alternate colors
- DefaultTableBevelledCellRenderer: Don't paint border when not selected, removed useless isSelected property
- Source renderer fix
- Fix progress bar renderer to preserve row striping and selection highlights
- FWAbstractJPanelTableCellRenderer: Don't paint beveled border
- LibraryFilesTableMediator cleanup
- LibraryFilesTableDataLine cleanup
- MediaPlayerComponent cleanup, layout uses all vertical space available
- Dark theme polish: transparent media panels, dynamic separators, dark result background
- Add dark mode gradient colors for application header
- Dark-theme table polish – dynamic striping & renderer fixes
- ThemeMediator.loadDarkTheme(): define UIManager "Table.alternateRowColor" (15% darker than background).
- FWAbstractJPanelTableCellRenderer: use Look-and-Feel selection/alternate colours instead of hard-coded white; keep foreground in sync.
- SourceRenderer: make cell opaque and apply same dynamic row / selection colours.
- Basic theme switching working
- Updated changelog file
- Added script to open test reports
-- FrostWire Team contact@frostwire.com Tue, 13 May 2025 15:11:00 -0600
