Releases: Tribler/tribler
v7.13.1-RC2
Overview
We are excited to announce Tribler 7.13.1-RC2, a bugfix release that notably enhances the stability of Tribler, especially during startup. This update addresses several critical issues, including problems related to Tribler startup, database corruption, and various other bugs. Our team has worked diligently to ensure a smoother and more reliable experience for our users.
What's Changed since RC1:
- Use the default event loop on Windows by @qstokkink in #7677
- Use dedicated exit codes when another primary GUI/Core process is running by @kozlovsky in #7746
- Reconnect to the Core in case of EventReqestManager disconnection by @kozlovsky in #7747
Startup stability fixes
- #7603: Use the
filelock
library to determine the primary process by @kozlovsky in #7660 - #7592: Fix Core crash caused by
TimeoutError
when REST HTTP server is starting by @kozlovsky in #7617 - #7641: Fix
TypeError
inStartDownloadDialog
during Tribler UI startup by @drew2a in #7662
Database Integrity
- #5252: Handle the database corruption error by regenerating the corrupted database on the fly by @kozlovsky in #7628
General stability fixes
- #7602 Fix race condition in
SlowCoroWatchingThread
by @kozlovsky in #7613 - #7600: Handle exceptions in
task.print_stack()
by @kozlovsky in #7614 - #7598: Use
safe_repr
function to display alert reprs by @kozlovsky in #7616 - #7056: Return
RESTResponse
error for timed out metainfo request by @drew2a in #7627 - #7670: Removed circuit from peer_info by @egbertbouman in #7700
Localization robustness
- #7599: Fix
TypeError
when the translated string does not have the correct number of positional parameters by @kozlovsky in #7615
Enhanced error reporting
- Add the reason for the
OperationalError: unable to open database file
when opening processes.sqlite by @kozlovsky in #7612 - Add Tribler Config to the sentry event by @drew2a in #7665
- Show correct stack trace for CoreCrashedError. by @drew2a #7713 (Implemented in #7722)
Full Changelog: v7.13.1-RC1...v7.13.1-RC2
v7.13.1-RC1
Overview
We are excited to announce Tribler 7.13.1-RC1, a bugfix release that notably enhances the stability of Tribler, especially during startup. This update addresses several critical issues, including problems related to Tribler startup, database corruption, and various other bugs. Our team has worked diligently to ensure a smoother and more reliable experience for our users.
Startup stability fixes
- #7603: Use the
filelock
library to determine the primary process by @kozlovsky in #7660 - #7592: Fix Core crash caused by
TimeoutError
when REST HTTP server is starting by @kozlovsky in #7617 - #7641: Fix
TypeError
inStartDownloadDialog
during Tribler UI startup by @drew2a in #7662
Database Integrity
- #5252: Handle the database corruption error by regenerating the corrupted database on the fly by @kozlovsky in #7628
General stability fixes
- #7602 Fix race condition in
SlowCoroWatchingThread
by @kozlovsky in #7613 - #7600: Handle exceptions in
task.print_stack()
by @kozlovsky in #7614 - #7598: Use
safe_repr
function to display alert reprs by @kozlovsky in #7616 - #7056: Return
RESTResponse
error for timed out metainfo request by @drew2a in #7627 - #7670: Removed circuit from peer_info by @egbertbouman in #7700
Localization robustness
- #7599: Fix
TypeError
when the translated string does not have the correct number of positional parameters by @kozlovsky in #7615
Enhanced error reporting
- Add the reason for the
OperationalError: unable to open database file
when opening processes.sqlite by @kozlovsky in #7612 - Add Tribler Config to the sentry event by @drew2a in #7665
- Show correct stack trace for CoreCrashedError. by @drew2a #7713 (Implemented in #7722)
Full Changelog: v7.13.0...v7.13.1-RC1
v7.13.0
Overview
We're ecstatic to introduce the latest version of Tribler, packed with exciting features and significant enhancements! Here's a rundown of the most notable changes:
Instant search with superior result quality:
- Experience lightning-fast local search queries, now 100x faster than in the previous release (because of broken feature) (#7166);
- Enjoy real-time, remote results from other peers as they appear instantly (#7025);
- Benefit from an advanced ranking algorithm that considers multiple factors, such as title structure, creation date, and the number of seeders/leechers (#7025);
- Discover similar results for known content categories, now conveniently grouped for an improved UI experience.
We're confident that you'll love the revamped search experience. As more peers upgrade to the new version, the distributed search will deliver even higher-quality results with the enhanced ranking system!
With these updates, Tribler is gradually evolving into a decentralized search engine, rivaling the speed of YouTube's video search.
Introducing the Knowledge Component: A Leap Towards Decentralized Search Excellence
Google's power resides in its PageRank algorithm. Creating a decentralized alternative to Big Tech has proven challenging, but with this release, we take another small step on this journey. Our ultimate goal is to achieve self-organizing trust, the fundamental building block for a decentralized PageRank system. The concrete use-case we aim to address is collective decision-making in the peer-to-peer world, such as determining whether Justin Bieber is gay.
Is Justin Bieber gay?
Explore the details of this scientifically serious issue related to trust, spam, and crowdsourcing. For the record, we believe Justin Bieber's music is neither Black Metal
nor gay
. We consider this an exemplary use-case for Tribler's zero-trust architecture to solve. Our distributed trust ledger has been under incremental development since before Bitcoin. We have not yet deployed our decentralized reputation and trust framework, as our MeritRank algorithm is still not ready for production. However, we have upgraded the BitTorrent tag-based metadata enrichment from pure text labels into the KnowledgeComponent
(#7070). As a test, we offer semantic clustering within Tribler when searching for "Ubuntu," providing cleaner search results and filtering duplicates.
No other peer-to-peer project, such as IPFS, Mojo Nation, or Freenet, has ever cracked semantic search. With the KnowledgeComponent
, we take another challenging step towards a Google-quality search engine. It signifies a move towards semantics, a search engine that understands your preferences and helps you discover content without interference from lawyers or governments.
Creative Commons licensed promotional picture:
Enhanced Torrent Health: Accurate Sharing Between Peers
Tribler peers exchange information about torrent popularity, allowing torrents with a substantial number of seeders to appear on the "Popular" page and receive priority in search results. We identified several critical bugs (#7295) in the previous algorithm, causing invalid torrent health records to spread across the network and skew the results on the "Popular" page. These bugs have now been fixed, and the gossiping algorithm has been optimized for efficient sharing of popular torrents (#6950).
Improved Stability for a Smoother Experience
This release of Tribler is set to be the most stable in recent times. Our development team has successfully identified and resolved numerous obscure bugs that previously led to crashes and freezes. We're confident that this version of Tribler will impress you with its enhanced stability and reliability.
Features
- 100x speedup for full-text search queries with better quality by @kozlovsky in #7025, #7166, #7259
- Upgrade the
TagComponent
to theKnowledgeComponent
by @drew2a in #7070 - #2455 Added edit metadata GUI elements by @devos50 in #7112
- Update Popularity community by @xoriole in #6950
- Add Tribler translation to Spanish by @Manuel-Senpai in #7235, #7246
Bugfixes
(click to view)
- Fix #7295 invalid health records infect Tribler nodes and spread from machine to machine fixed by @kozlovsky & @drew2a in #7286, #7313, #7322
- Add ProcessLocker to ensure that no more than one Tribler GUI/Core process runs locally at any moment by @kozlovsky in #7212
- Hopefully fix #7137 CoreConnectTimeoutError: Could not connect with the Tribler Core within 120 seconds by @kozlovsky in #7251
- #6994 Tribler Core process continues to work after the GUI process crash by @kozlovsky in #6995
- Fix TriblerProcess.is_running() by @kozlovsky in #7461
- #7556 ConnectionResetError: Connection lost by @kozlovsky in #7566
- #7547 TimeoutError on getting torrentinfo by @xoriole in #7553
- #7564 OSError in SocksServersComponent: error while attempting to bind on address by @kozlovsky in #7565
- #7538 Incorrect tracker status shown on Tracker tab by @xoriole in #7555
- Add Logging for Slow Database Sessions by @kozlovsky in #7494
- Handle no space available situation on upgrade by @xoriole in #7496
- Consider HealthInfo with negative seeders and leechers as invalid by @drew2a in #7487
- The
get_circuit_slots
method ofDebugEndpoint
should handle the case whentunnel_community
isNone
by @kozlovsky in #7504 - Properly stop the non-primary process by @kozlovsky in #7349
- Detect slow coroutines and freezes in the asyncio loop by @kozlovsky in #7414
- Fixes #7344: AssertionError "transport is not None" in aiohttp/web_request.py by @kozlovsky in #7385
- Temporarily increase the core manager API port check timeout to be sure it is big enough by @kozlovsky in #7419
- Profiling of slow coroutines by @kozlovsky in #7446
- Fix the step interval of DiscoveryBooster by @kozlovsky in #7449
- 100x speedup of EdgeWalk.take_step() by caching results of GigaChannelCommunity.guess_address() by @kozlovsky in #7450
- Add extended logging to RESTManager.site.start() call by @kozlovsky in #7451
- Send events to GUI only before shutdown and in the proper order by @kozlovsky in #7364
- Skip
on_tribler_exception
if EventsEndpoint is shutting down. by @drew2a in #7357 - Decrease the frequency of the
downloads
request by @drew2a in #7377 - Check on the ancient version by @drew2a in #7383
- Fix #7386 "The connection to the Tribler Core was lost" by @xoriole in #7387
- Ignore old responses for the DownloadsPage by @drew2a in #7391
- Stop sending requests after shutdown by @drew2a in #7405
- Suppress
ConnectionResetError
by @drew2a in #7404 - Make
KnowledgeRulesProcessor
less aggressive by @drew2a in #7418 - Add queue for multithread processing by @drew2a in #7417
- Fix crash on Ubuntu while selecting File Chooser by @xoriole in #7484
- Fix empty
saveas
issue by @drew2a in #7346 - Read the language file in
utf-8
encoding. by @drew2a in #7355 - Check EditMetadataDialog on closed by @drew2a in #7371
- Fix KeyError for translations by @drew2a in #7370
- Refactor the Downloads page by @drew2a in #7378
- Add a description to the error when trying to download a newer version of the channel by @kozlovsky in #7380
- Fixes #7395 "Labels on Discovered channels are missing" by @kozlovsky in #7402
- Fix
FileNotFoundError
by @drew2a in #7401 - Fix #7453 KeyError when clicking on a personal channel by @xoriole in #7454
- Fix invalid handle when there is no torrent metadata by @xoriole in #7415
- Use a separate
misc
table for the KnowledgeDB by @drew2a in #7413 - Add reprocess feature for
KnowledgeRulesProcessor
by @drew2a in #7379 - Add
CONTENT_ITEM
relation by @drew2a in #7445 - Fixes the download torrent dialog behavior after closing it by clicking somewhere outside the dialog area by @kozlovsky in #7465
- Fixes #7473 FileNotFoundError when displaying the settings page by @kozlovsky in #7474
- Handle
IndexError
by @drew2a in #7480 - Fixes #7462 The Tribler window does not unminimize when clicking on a torrent file by @kozlovsky in #7463
- Fixes #7467 ConnectionResetError by @kozlovsky in #7472
- Fixes the space bug in the Sentry Scrubber by @drew2a in #7470
- Fixes #7406 UnicodeDecodeError in on_tracker_error_alert by @kozlovsky in #7468
- Print
Queue is full
once per 5 seconds by @drew2a in #7493 - Accept error values of any type in TriblerProcess.set_error by @kozlovsky in #7537
- #7558 creating large torrent files by @xoriole in #7559
- #5833 WatchFolder PermissionDenied by @drew2a in #6966, #7016
- #6884 Add Magnet Dialog disappears until restarted by @drew2a in #6885
- #6890 Fix Eva InvalidStateError by @drew2a in #6891
- #6833 Avoid incorrect padding by @drew2a in #6898
- #6973 Rewrite window geometry restoring by @drew2a in #7008
- #6987 Handle incorrect tracker URLs by @drew2a in #7012
- #3037 Fix "bencoded item count limit exceeded" by @drew2a in #7015
- #7051 Fix stack overflow for a torrent with a deep directory structure by @kozlovsky in #7052
- #5816 RuntimeError: nested asn1 error by @drew2a in #7128, #7302
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7044
- #7053 Tribler becomes unresponsive with a large tags.db by @drew2a in #7062
- Fix #7065 error while attempting to bind on address by @drew2a #7071
- #7080 The Upgrader might not copy some files by @drew2a in #7083
- #7077 Tribler is asking to upgrade version too frequently by @drew...
v7.13.0-RC4
Overview
We're ecstatic to introduce the latest version of Tribler, packed with exciting features and significant enhancements! Here's a rundown of the most notable changes:
Instant search with superior result quality:
- Experience lightning-fast local search queries, now 100x faster than in the previous release (because of broken feature) (#7166);
- Enjoy real-time, remote results from other peers as they appear instantly (#7025);
- Benefit from an advanced ranking algorithm that considers multiple factors, such as title structure, creation date, and the number of seeders/leechers (#7025);
- Discover similar results for known content categories, now conveniently grouped for an improved UI experience.
We're confident that you'll love the revamped search experience. As more peers upgrade to the new version, the distributed search will deliver even higher-quality results with the enhanced ranking system!
With these updates, Tribler is gradually evolving into a decentralized search engine, rivaling the speed of YouTube's video search.
Introducing the Knowledge Component: A Leap Towards Decentralized Search Excellence
Google's power resides in its PageRank algorithm. Creating a decentralized alternative to Big Tech has proven challenging, but with this release, we take another small step on this journey. Our ultimate goal is to achieve self-organizing trust, the fundamental building block for a decentralized PageRank system. The concrete use-case we aim to address is collective decision-making in the peer-to-peer world, such as determining whether Justin Bieber is gay.
Is Justin Bieber gay?
Explore the details of this scientifically serious issue related to trust, spam, and crowdsourcing. For the record, we believe Justin Bieber's music is neither Black Metal
nor gay
. We consider this an exemplary use-case for Tribler's zero-trust architecture to solve. Our distributed trust ledger has been under incremental development since before Bitcoin. We have not yet deployed our decentralized reputation and trust framework, as our MeritRank algorithm is still not ready for production. However, we have upgraded the BitTorrent tag-based metadata enrichment from pure text labels into the KnowledgeComponent
(#7070). As a test, we offer semantic clustering within Tribler when searching for "Ubuntu," providing cleaner search results and filtering duplicates.
No other peer-to-peer project, such as IPFS, Mojo Nation, or Freenet, has ever cracked semantic search. With the KnowledgeComponent
, we take another challenging step towards a Google-quality search engine. It signifies a move towards semantics, a search engine that understands your preferences and helps you discover content without interference from lawyers or governments.
Creative Commons licensed promotional picture:
Enhanced Torrent Health: Accurate Sharing Between Peers
Tribler peers exchange information about torrent popularity, allowing torrents with a substantial number of seeders to appear on the "Popular" page and receive priority in search results. We identified several critical bugs (#7295) in the previous algorithm, causing invalid torrent health records to spread across the network and skew the results on the "Popular" page. These bugs have now been fixed, and the gossiping algorithm has been optimized for efficient sharing of popular torrents (#6950).
Improved Stability for a Smoother Experience
This release of Tribler is set to be the most stable in recent times. Our development team has successfully identified and resolved numerous obscure bugs that previously led to crashes and freezes. We're confident that this version of Tribler will impress you with its enhanced stability and reliability.
Get paid to work on Tribler and earn a phd?
See open position: PhD Decentralised Machine Learning
- Challenge: Developing and building a fully decentralised video search engine.
- Change: Eliminating the need for servers when developing machine learning.
- Impact: Safe machine learning benefiting billions of users.
Features
- 100x speedup for full-text search queries with better quality by @kozlovsky in #7025, #7166, #7259
- Upgrade the
TagComponent
to theKnowledgeComponent
by @drew2a in #7070 - #2455 Added edit metadata GUI elements by @devos50 in #7112
- Update Popularity community by @xoriole in #6950
- Add Tribler translation to Spanish by @Manuel-Senpai in #7235, #7246
Bugfixes
(click to view)
- Fix #7295 invalid health records infect Tribler nodes and spread from machine to machine fixed by @kozlovsky & @drew2a in #7286, #7313, #7322
- Add ProcessLocker to ensure that no more than one Tribler GUI/Core process runs locally at any moment by @kozlovsky in #7212
- Hopefully fix #7137 CoreConnectTimeoutError: Could not connect with the Tribler Core within 120 seconds by @kozlovsky in #7251
- #6994 Tribler Core process continues to work after the GUI process crash by @kozlovsky in #6995
- Fix TriblerProcess.is_running() by @kozlovsky in #7461
- #7556 ConnectionResetError: Connection lost by @kozlovsky in #7566
- #7547 TimeoutError on getting torrentinfo by @xoriole in #7553
- #7564 OSError in SocksServersComponent: error while attempting to bind on address by @kozlovsky in #7565
- #7538 Incorrect tracker status shown on Tracker tab by @xoriole in #7555
- Add Logging for Slow Database Sessions by @kozlovsky in #7494
- Handle no space available situation on upgrade by @xoriole in #7496
- Consider HealthInfo with negative seeders and leechers as invalid by @drew2a in #7487
- The
get_circuit_slots
method ofDebugEndpoint
should handle the case whentunnel_community
isNone
by @kozlovsky in #7504 - Properly stop the non-primary process by @kozlovsky in #7349
- Detect slow coroutines and freezes in the asyncio loop by @kozlovsky in #7414
- Fixes #7344: AssertionError "transport is not None" in aiohttp/web_request.py by @kozlovsky in #7385
- Temporarily increase the core manager API port check timeout to be sure it is big enough by @kozlovsky in #7419
- Profiling of slow coroutines by @kozlovsky in #7446
- Fix the step interval of DiscoveryBooster by @kozlovsky in #7449
- 100x speedup of EdgeWalk.take_step() by caching results of GigaChannelCommunity.guess_address() by @kozlovsky in #7450
- Add extended logging to RESTManager.site.start() call by @kozlovsky in #7451
- Send events to GUI only before shutdown and in the proper order by @kozlovsky in #7364
- Skip
on_tribler_exception
if EventsEndpoint is shutting down. by @drew2a in #7357 - Decrease the frequency of the
downloads
request by @drew2a in #7377 - Check on the ancient version by @drew2a in #7383
- Fix #7386 "The connection to the Tribler Core was lost" by @xoriole in #7387
- Ignore old responses for the DownloadsPage by @drew2a in #7391
- Stop sending requests after shutdown by @drew2a in #7405
- Suppress
ConnectionResetError
by @drew2a in #7404 - Make
KnowledgeRulesProcessor
less aggressive by @drew2a in #7418 - Add queue for multithread processing by @drew2a in #7417
- Fix crash on Ubuntu while selecting File Chooser by @xoriole in #7484
- Fix empty
saveas
issue by @drew2a in #7346 - Read the language file in
utf-8
encoding. by @drew2a in #7355 - Check EditMetadataDialog on closed by @drew2a in #7371
- Fix KeyError for translations by @drew2a in #7370
- Refactor the Downloads page by @drew2a in #7378
- Add a description to the error when trying to download a newer version of the channel by @kozlovsky in #7380
- Fixes #7395 "Labels on Discovered channels are missing" by @kozlovsky in #7402
- Fix
FileNotFoundError
by @drew2a in #7401 - Fix #7453 KeyError when clicking on a personal channel by @xoriole in #7454
- Fix invalid handle when there is no torrent metadata by @xoriole in #7415
- Use a separate
misc
table for the KnowledgeDB by @drew2a in #7413 - Add reprocess feature for
KnowledgeRulesProcessor
by @drew2a in #7379 - Add
CONTENT_ITEM
relation by @drew2a in #7445 - Fixes the download torrent dialog behavior after closing it by clicking somewhere outside the dialog area by @kozlovsky in #7465
- Fixes #7473 FileNotFoundError when displaying the settings page by @kozlovsky in #7474
- Handle
IndexError
by @drew2a in #7480 - Fixes #7462 The Tribler window does not unminimize when clicking on a torrent file by @kozlovsky in #7463
- Fixes #7467 ConnectionResetError by @kozlovsky in #7472
- Fixes the space bug in the Sentry Scrubber by @drew2a in #7470
- Fixes #7406 UnicodeDecodeError in on_tracker_error_alert by @kozlovsky in #7468
- Print
Queue is full
once per 5 seconds by @drew2a in #7493 - Accept error values of any type in TriblerProcess.set_error by @kozlovsky in #7537
- #7558 creating large torrent files by @xoriole in #7559
- #5833 WatchFolder PermissionDenied by @drew2a in #6966, #7016
- #6884 Add Magnet Dialog disappears until restarted by @drew2a in #6885
- #6890 Fix Eva InvalidStateError by @drew2a in #6891
- #6833 Avoid incorrect padding by @drew2a in #6898
- #6973 Rewrite window geometry restoring by @drew2a in #7008
- #6987 Handle incorrect tracker URLs by @drew2a in #7012
- #3037 Fix "bencoded item count limit exceeded" by @drew2a in #7015
- #7051 Fix stack overflow for a torrent with a deep directory structure by @kozlovsky in #7052
- #5816 Runti...
v7.13.0-RC3
Overview
This release has important bug fixes that improve Tribler speed and stability.
What's Changed Since the Latest RC2 Release:
Startup/Shutdown Logic Fixes
- Fixes TriblerProcess.is_running() by @kozlovsky in #7461
The Application Logic Fixes
- Add Logging for Slow Database Sessions by @kozlovsky in #7494
- Handle no space available situation on upgrade by @xoriole in #7496
- Consider HealthInfo with negative seeders and leechers as invalid by @drew2a in #7487
- The
get_circuit_slots
method ofDebugEndpoint
should handle the case whentunnel_community
isNone
by @kozlovsky in #7504
UI Fixes
- Fix crash on Ubuntu while selecting File Chooser by @xoriole in #7484
- Fixes the download torrent dialog behavior after closing it by clicking somewhere outside the dialog area by @kozlovsky in #7465
- Fixes #7473 FileNotFoundError when displaying the settings page by @kozlovsky in #7474
- Handle
IndexError
by @drew2a in #7480 - Fixes #7462 The Tribler window does not unminimize when clicking on a torrent file by @kozlovsky in #7463
Error-Handling Fixes
- Fixes #7467 ConnectionResetError by @kozlovsky in #7472
- Fixes the space bug in the Sentry Scrubber by @drew2a in #7470
- Fixes #7406 UnicodeDecodeError in on_tracker_error_alert by @kozlovsky in #7468
- Print
Queue is full
once per 5 seconds by @drew2a in #7493 - Accept error values of any type in TriblerProcess.set_error by @kozlovsky in #7537
Test fixes
- Modify the pytest output to include the execution duration for all tests by @drew2a in #7482
- Fix GUI Test non-zero exit code by @xoriole in #7501
- Fix calling
await app.shutdown()
in REST API tests by @kozlovsky in #7502 - Fix the
get_torrent_health
endpoint in GUI tests by @kozlovsky in #7505 - Use TestError instead of AssertionError in test to avoid confusion by @kozlovsky in #7503
- Fix print issue on core manager repeated test by @xoriole in #7511
Build fixes
- Fix ImportError: DLL load failed while importing libtorrent: The specified module could not be found by @kozlovsky in #7533
What's Changed Since the Tribler 7.12:
Overview
We're ecstatic to introduce the latest version of Tribler, packed with exciting features and significant enhancements! Here's a rundown of the most notable changes:
Instant search with superior result quality:
- Experience lightning-fast local search queries, now 100x faster than in the previous release (because of broken feature) (#7166);
- Enjoy real-time, remote results from other peers as they appear instantly (#7025);
- Benefit from an advanced ranking algorithm that considers multiple factors, such as title structure, creation date, and the number of seeders/leechers (#7025);
- Discover similar results for known content categories, now conveniently grouped for an improved UI experience.
We're confident that you'll love the revamped search experience. As more peers upgrade to the new version, the distributed search will deliver even higher-quality results with the enhanced ranking system!
With these updates, Tribler is gradually evolving into a decentralized search engine, rivaling the speed of YouTube's video search.
Introducing the Knowledge Component: A Leap Towards Decentralized Search Excellence
Google's power resides in its PageRank algorithm. Creating a decentralized alternative to Big Tech has proven challenging, but with this release, we take another small step on this journey. Our ultimate goal is to achieve self-organizing trust, the fundamental building block for a decentralized PageRank system. The concrete use-case we aim to address is collective decision-making in the peer-to-peer world, such as determining whether Justin Bieber is gay.
Is Justin Bieber gay?
Explore the details of this scientifically serious issue related to trust, spam, and crowdsourcing. For the record, we believe Justin Bieber's music is neither Black Metal
nor gay
. We consider this an exemplary use-case for Tribler's zero-trust architecture to solve. Our distributed trust ledger has been under incremental development since before Bitcoin. We have not yet deployed our decentralized reputation and trust framework, as our MeritRank algorithm is still not ready for production. However, we have upgraded the BitTorrent tag-based metadata enrichment from pure text labels into the KnowledgeComponent
(#7070). As a test, we offer semantic clustering within Tribler when searching for "Ubuntu," providing cleaner search results and filtering duplicates.
No other peer-to-peer project, such as IPFS, Mojo Nation, or Freenet, has ever cracked semantic search. With the KnowledgeComponent
, we take another challenging step towards a Google-quality search engine. It signifies a move towards semantics, a search engine that understands your preferences and helps you discover content without interference from lawyers or governments.
Creative Commons licensed promotional picture:
Enhanced Torrent Health: Accurate Sharing Between Peers
Tribler peers exchange information about torrent popularity, allowing torrents with a substantial number of seeders to appear on the "Popular" page and receive priority in search results. We identified several critical bugs (#7295) in the previous algorithm, causing invalid torrent health records to spread across the network and skew the results on the "Popular" page. These bugs have now been fixed, and the gossiping algorithm has been optimized for efficient sharing of popular torrents (#6950).
Improved Stability for a Smoother Experience
This release of Tribler is set to be the most stable in recent times. Our development team has successfully identified and resolved numerous obscure bugs that previously led to crashes and freezes. We're confident that this version of Tribler will impress you with its enhanced stability and reliability.
Get paid to work on Tribler and earn a phd?
See open position: PhD Decentralised Machine Learning
- Challenge: Developing and building a fully decentralised video search engine.
- Change: Eliminating the need for servers when developing machine learning.
- Impact: Safe machine learning benefiting billions of users.
Features
- 100x speedup for full-text search queries with better quality by @kozlovsky in #7025, #7166, #7259
- Upgrade the
TagComponent
to theKnowledgeComponent
by @drew2a in #7070 - #2455 Added edit metadata GUI elements by @devos50 in #7112
- Update Popularity community by @xoriole in #6950
- Add Tribler translation to Spanish by @Manuel-Senpai in #7235, #7246
Bugfixes
(click to view)
- Fix #7295 invalid health records infect Tribler nodes and spread from machine to machine fixed by @kozlovsky & @drew2a in #7286, #7313, #7322
- Add ProcessLocker to ensure that no more than one Tribler GUI/Core process runs locally at any moment by @kozlovsky in #7212
- Hopefully fix #7137 CoreConnectTimeoutError: Could not connect with the Tribler Core within 120 seconds by @kozlovsky in #7251
- #6994 Tribler Core process continues to work after the GUI process crash by @kozlovsky in #6995
- #5833 WatchFolder PermissionDenied by @drew2a in #6966, #7016
- #6884 Add Magnet Dialog disappears until restarted by @drew2a in #6885
- #6890 Fix Eva InvalidStateError by @drew2a in #6891
- #6833 Avoid incorrect padding by @drew2a in #6898
- #6973 Rewrite window geometry restoring by @drew2a in #7008
- #6987 Handle incorrect tracker URLs by @drew2a in #7012
- #3037 Fix "bencoded item count limit exceeded" by @drew2a in #7015
- #7051 Fix stack overflow for a torrent with a deep directory structure by @kozlovsky in #7052
- #5816 RuntimeError: nested asn1 error by @drew2a in #7128, #7302
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7044
- #7053 Tribler becomes unresponsive with a large tags.db by @drew2a in #7062
- Fix #7065 error while attempting to bind on address by @drew2a #7071
- #7080 The Upgrader might not copy some files by @drew2a in #7083
- #7077 Tribler is asking to upgrade version too frequently by @drew2a in #7101, by @vi in #7102
- #7107 Error on rendering tablecontentdelegate by @xoriole in #7108
- #6699 the width of the Size column on Windows when the display scaling is more than 100% by @kozlovsky in #7131
- #7056 adding torrent with invalid magnet link to channel by @xoriole in #7058
- #7106 crash when file progress is empty by @xoriole in #7114
- #7149 Core Tribler not...
v7.13.0-RC2
Overview
This release has important bug fixes that improve Tribler speed and stability.
What's Changed Since the Latest RC1 Release:
Stability fixes:
- Properly stop the non-primary process by @kozlovsky in #7349
- Detect slow coroutines and freezes in the asyncio loop by @kozlovsky in #7414
- Fixes #7344: AssertionError "transport is not None" in aiohttp/web_request.py by @kozlovsky in #7385
- Temporarily increase the core manager API port check timeout to be sure it is big enough by @kozlovsky in #7419
- Profiling of slow coroutines by @kozlovsky in #7446
- Fix the step interval of DiscoveryBooster by @kozlovsky in #7449
- 100x speedup of EdgeWalk.take_step() by caching results of GigaChannelCommunity.guess_address() by @kozlovsky in #7450
- Add extended logging to RESTManager.site.start() call by @kozlovsky in #7451
- Send events to GUI only before shutdown and in the proper order by @kozlovsky in #7364
- Skip
on_tribler_exception
if EventsEndpoint is shutting down. by @drew2a in #7357 - Decrease the frequency of the
downloads
request by @drew2a in #7377 - Check on the ancient version by @drew2a in #7383
- Fix #7386 "The connection to the Tribler Core was lost" by @xoriole in #7387
- Ignore old responses for the DownloadsPage by @drew2a in #7391
- Stop sending requests after shutdown by @drew2a in #7405
- Suppress
ConnectionResetError
by @drew2a in #7404 - Make
KnowledgeRulesProcessor
less aggressive by @drew2a in #7418 - Add queue for multithread processing by @drew2a in #7417
UI-related fixes:
- Fix empty
saveas
issue by @drew2a in #7346 - Read the language file in
utf-8
encoding. by @drew2a in #7355 - Check EditMetadataDialog on closed by @drew2a in #7371
- Fix KeyError for translations by @drew2a in #7370
- Refactor the Downloads page by @drew2a in #7378
- Add a description to the error when trying to download a newer version of the channel by @kozlovsky in #7380
- Fixes #7395 "Labels on Discovered channels are missing" by @kozlovsky in #7402
- Fix
FileNotFoundError
by @drew2a in #7401 - Fix #7453 KeyError when clicking on a personal channel by @xoriole in #7454
Core-related fixes:
- Fix invalid handle when there is no torrent metadata by @xoriole in #7415
- Use a separate
misc
table for the KnowledgeDB by @drew2a in #7413 - Add reprocess feature for
KnowledgeRulesProcessor
by @drew2a in #7379 - Add
CONTENT_ITEM
relation by @drew2a in #7445
Test, build, and reports fixes:
- Disable logging in the faker module for pytest. by @drew2a in #7348
- Disable logging in tests for
faker.factory
andPyQT5.uic
by @drew2a in #7384 - Fix test check core API port timeout by @kozlovsky in #7420
- Add
tribler_stopped
tag to the Sentry by @drew2a in #7365 - Sentry: add the field
additional_information
by @drew2a in #7394 - Add an option to cease the collection of breadcrumbs by @drew2a in #7426
- Increase the size of log files from 100 kilobytes to 1 megabyte, and the number of log backups from 1 to 2 by @kozlovsky in #7455
- Pin pip version for the macOS build by @drew2a in #7375
- Remove events and requests from Sentry report by @drew2a in #7376
What's Changed Since the Tribler 7.12:
Overview
We're ecstatic to introduce the latest version of Tribler, packed with exciting features and significant enhancements! Here's a rundown of the most notable changes:
Instant search with superior result quality:
- Experience lightning-fast local search queries, now 100x faster than in the previous release (because of broken feature) (#7166);
- Enjoy real-time, remote results from other peers as they appear instantly (#7025);
- Benefit from an advanced ranking algorithm that considers multiple factors, such as title structure, creation date, and the number of seeders/leechers (#7025);
- Discover similar results for known content categories, now conveniently grouped for an improved UI experience.
We're confident that you'll love the revamped search experience. As more peers upgrade to the new version, the distributed search will deliver even higher-quality results with the enhanced ranking system!
With these updates, Tribler is gradually evolving into a decentralized search engine, rivaling the speed of YouTube's video search.
Introducing the Knowledge Component: A Leap Towards Decentralized Search Excellence
Google's power resides in its PageRank algorithm. Creating a decentralized alternative to Big Tech has proven challenging, but with this release, we take another small step on this journey. Our ultimate goal is to achieve self-organizing trust, the fundamental building block for a decentralized PageRank system. The concrete use-case we aim to address is collective decision-making in the peer-to-peer world, such as determining whether Justin Bieber is gay.
Is Justin Bieber gay?
Explore the details of this scientifically serious issue related to trust, spam, and crowdsourcing. For the record, we believe Justin Bieber's music is neither Black Metal
nor gay
. We consider this an exemplary use-case for Tribler's zero-trust architecture to solve. Our distributed trust ledger has been under incremental development since before Bitcoin. We have not yet deployed our decentralized reputation and trust framework, as our MeritRank algorithm is still not ready for production. However, we have upgraded the BitTorrent tag-based metadata enrichment from pure text labels into the KnowledgeComponent
(#7070). As a test, we offer semantic clustering within Tribler when searching for "Ubuntu," providing cleaner search results and filtering duplicates.
No other peer-to-peer project, such as IPFS, Mojo Nation, or Freenet, has ever cracked semantic search. With the KnowledgeComponent
, we take another challenging step towards a Google-quality search engine. It signifies a move towards semantics, a search engine that understands your preferences and helps you discover content without interference from lawyers or governments.
Creative Commons licensed promotional picture:
Enhanced Torrent Health: Accurate Sharing Between Peers
Tribler peers exchange information about torrent popularity, allowing torrents with a substantial number of seeders to appear on the "Popular" page and receive priority in search results. We identified several critical bugs (#7295) in the previous algorithm, causing invalid torrent health records to spread across the network and skew the results on the "Popular" page. These bugs have now been fixed, and the gossiping algorithm has been optimized for efficient sharing of popular torrents (#6950).
Improved Stability for a Smoother Experience
This release of Tribler is set to be the most stable in recent times. Our development team has successfully identified and resolved numerous obscure bugs that previously led to crashes and freezes. We're confident that this version of Tribler will impress you with its enhanced stability and reliability.
Get paid to work on Tribler and earn a phd?
See open position: PhD Decentralised Machine Learning
- Challenge: Developing and building a fully decentralised video search engine.
- Change: Eliminating the need for servers when developing machine learning.
- Impact: Safe machine learning benefiting billions of users.
Features
- 100x speedup for full-text search queries with better quality by @kozlovsky in #7025, #7166, #7259
- Upgrade the
TagComponent
to theKnowledgeComponent
by @drew2a in #7070 - #2455 Added edit metadata GUI elements by @devos50 in #7112
- Update Popularity community by @xoriole in #6950
- Add Tribler translation to Spanish by @Manuel-Senpai in #7235, #7246
Bugfixes
(click to view)
- Fix #7295 invalid health records infect Tribler nodes and spread from machine to machine fixed by @kozlovsky & @drew2a in #7286, #7313, #7322
- Add ProcessLocker to ensure that no more than one Tribler GUI/Core process runs locally at any moment by @kozlovsky in #7212
- Hopefully fix #7137 CoreConnectTimeoutError: Could not connect with the Tribler Core within 120 seconds by @kozlovsky in #7251
- #6994 Tribler Core process continues to work after the GUI process crash by @kozlovsky in #6995
- #5833 WatchFolder PermissionDenied by @drew2a in #6966, #7016
- #6884 Add Magnet Dialog disappears until restarted by @drew2a in #6885
- #6890 Fix Eva InvalidStateError by @drew2a in #6891
- #6833 Avoid incorrect padding by @drew2a in #6898
- #6973 Rewrite window geometry restoring by @drew2a in #7008
- #6987 Handle incorrect tracker URLs by @drew2a in #7012
- #3037 Fix "bencoded item count limit exceeded" by @drew2a in #7015
- #7051 Fix stack overflow for a torrent with a deep directory structure by @kozlovsky in #7052
- #5816 RuntimeError: nested asn1 error by @drew2a in #7128, #7302
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7044
- #7053 Tribler becomes unresponsive with a large tags.db by @drew2a in #7062
- Fix #7065 error while attempting to bind on address by @drew2a #7071
- #7080 The Upgrader might not copy some files by @drew2a in #7083
- #7077 Tribler is asking to upgrade version too frequently by @drew2a in #7101, by @vi in #7102
- #7107 Error on rendering tablecontentdelegate by @xoriole in #7108
- #6699 the width of the Size column on Windows when the display sca...
v7.13.0-RC1
Overview
We're ecstatic to introduce the latest version of Tribler, packed with exciting features and significant enhancements! Here's a rundown of the most notable changes:
Instant search with superior result quality:
- Experience lightning-fast local search queries, now 100x faster than in the previous release (because of broken feature) (#7166);
- Enjoy real-time, remote results from other peers as they appear instantly (#7025);
- Benefit from an advanced ranking algorithm that considers multiple factors, such as title structure, creation date, and the number of seeders/leechers (#7025);
- Discover similar results for known content categories, now conveniently grouped for an improved UI experience.
We're confident that you'll love the revamped search experience. As more peers upgrade to the new version, the distributed search will deliver even higher-quality results with the enhanced ranking system!
With these updates, Tribler is gradually evolving into a decentralized search engine, rivaling the speed of YouTube's video search.
Introducing the Knowledge Component: A Leap Towards Decentralized Search Excellence
Google's power resides in its PageRank algorithm. Creating a decentralized alternative to Big Tech has proven challenging, but with this release, we take another small step on this journey. Our ultimate goal is to achieve self-organizing trust, the fundamental building block for a decentralized PageRank system. The concrete use-case we aim to address is collective decision-making in the peer-to-peer world, such as determining whether Justin Bieber is gay.
Is Justin Bieber gay?
Explore the details of this scientifically serious issue related to trust, spam, and crowdsourcing. For the record, we believe Justin Bieber's music is neither Black Metal
nor gay
. We consider this an exemplary use-case for Tribler's zero-trust architecture to solve. Our distributed trust ledger has been under incremental development since before Bitcoin. We have not yet deployed our decentralized reputation and trust framework, as our MeritRank algorithm is still not ready for production. However, we have upgraded the BitTorrent tag-based metadata enrichment from pure text labels into the KnowledgeComponent
(#7070). As a test, we offer semantic clustering within Tribler when searching for "Ubuntu," providing cleaner search results and filtering duplicates.
No other peer-to-peer project, such as IPFS, Mojo Nation, or Freenet, has ever cracked semantic search. With the KnowledgeComponent
, we take another challenging step towards a Google-quality search engine. It signifies a move towards semantics, a search engine that understands your preferences and helps you discover content without interference from lawyers or governments.
Creative Commons licensed promotional picture:
Enhanced Torrent Health: Accurate Sharing Between Peers
Tribler peers exchange information about torrent popularity, allowing torrents with a substantial number of seeders to appear on the "Popular" page and receive priority in search results. We identified several critical bugs (#7295) in the previous algorithm, causing invalid torrent health records to spread across the network and skew the results on the "Popular" page. These bugs have now been fixed, and the gossiping algorithm has been optimized for efficient sharing of popular torrents (#6950).
Improved Stability for a Smoother Experience
This release of Tribler is set to be the most stable in recent times. Our development team has successfully identified and resolved numerous obscure bugs that previously led to crashes and freezes. We're confident that this version of Tribler will impress you with its enhanced stability and reliability.
Get paid to work on Tribler and earn a phd?
See open position: PhD Decentralised Machine Learning
- Challenge: Developing and building a fully decentralised video search engine.
- Change: Eliminating the need for servers when developing machine learning.
- Impact: Safe machine learning benefiting billions of users.
Features
- 100x speedup for full-text search queries with better quality by @kozlovsky in #7025, #7166, #7259
- Upgrade the
TagComponent
to theKnowledgeComponent
by @drew2a in #7070 - #2455 Added edit metadata GUI elements by @devos50 in #7112
- Update Popularity community by @xoriole in #6950
- Add Tribler translation to Spanish by @Manuel-Senpai in #7235, #7246
Bugfixes
(click to view)
- Fix #7295 invalid health records infect Tribler nodes and spread from machine to machine fixed by @kozlovsky & @drew2a in #7286, #7313, #7322
- Add ProcessLocker to ensure that no more than one Tribler GUI/Core process runs locally at any moment by @kozlovsky in #7212
- Hopefully fix #7137 CoreConnectTimeoutError: Could not connect with the Tribler Core within 120 seconds by @kozlovsky in #7251
- #6994 Tribler Core process continues to work after the GUI process crash by @kozlovsky in #6995
- #5833 WatchFolder PermissionDenied by @drew2a in #6966, #7016
- #6884 Add Magnet Dialog disappears until restarted by @drew2a in #6885
- #6890 Fix Eva InvalidStateError by @drew2a in #6891
- #6833 Avoid incorrect padding by @drew2a in #6898
- #6973 Rewrite window geometry restoring by @drew2a in #7008
- #6987 Handle incorrect tracker URLs by @drew2a in #7012
- #3037 Fix "bencoded item count limit exceeded" by @drew2a in #7015
- #7051 Fix stack overflow for a torrent with a deep directory structure by @kozlovsky in #7052
- #5816 RuntimeError: nested asn1 error by @drew2a in #7128, #7302
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7044
- #7053 Tribler becomes unresponsive with a large tags.db by @drew2a in #7062
- Fix #7065 error while attempting to bind on address by @drew2a #7071
- #7080 The Upgrader might not copy some files by @drew2a in #7083
- #7077 Tribler is asking to upgrade version too frequently by @drew2a in #7101, by @vi in #7102
- #7107 Error on rendering tablecontentdelegate by @xoriole in #7108
- #6699 the width of the Size column on Windows when the display scaling is more than 100% by @kozlovsky in #7131
- #7056 adding torrent with invalid magnet link to channel by @xoriole in #7058
- #7106 crash when file progress is empty by @xoriole in #7114
- #7149 Core Tribler notifier should work in async mode by @kozlovsky in #7151
- #7154 Error on clicking blank space below the item list on personal channel by @drew2a in #7155
- #7157 RuntimeError: invalid torrent handle used by @drew2a in #7157
- #7172 ValueError: invalid literal for int() with base 10 by refactoring get max_lines logic by @drew2a in #7173
- #7181 Enable token balance refresh only if widget is available by @xoriole in #7201
- #7059 Handle non-existing file in torrent info endpoint by @xoriole in #7203
- Link detection fix by @Dmole in #6716
- #7041 Request Error while pressing the "download" button by @drew2a in #7211
- #7177 Tribler does not close if left idle for a few hours by @xoriole in #7202
- #7213 ValueError: invalid literal for int() with base 10 in TorrentDef.is_private() by @kozlovsky in #7214
- #7216 AssertionError in RestManager.stop() by @kozlovsky in #7217
- #7218 Do not load Debug Window if settings is not available yet by @xoriole in #7219
- #7223 UnicodeDecodeError in on_metadata_received_alert by @drew2a in #7224
- #7225 ClientConnectorError: Cannot connect to host by @drew2a in #7226
- #7117 RuntimeError: invalid torrent handle used by @drew2a in #7230
- #7231 Ignore payout in the case of the
OrmError
happens by @drew2a in #7236 - #7271 ValueError: "Unable to convert 222222 to QColor" by @kozlovsky in #7272
- #7253 Tribler does not run if the state directory does not already exist by @kozlovsky in #7257
- #7187 A download in GUI fluctuates between "0%" and "Seeding" by @drew2a in #7205
- #7318 GUI downloads status update by @drew2a in #7319
- #7316 mathematical mistake in the download progress bar drawing by @drew2a in #7317
- #7321 KeyError while surfing through a channel's content by @kozlovsky in #7323
- Fix item_rank(), torrent_rank(), freshness_rank() functions by @kozlovsky in #7338
- #7333 On GUI side, handle Core REST API responses without data by @kozlovsky in #7334
- Rename the column with a torrent's creation date from "Updated" to "Created" to avoid confusion by @kozlovsky in #7340
- #6842 Some settings are not used if torrent loaded from watch folder by @drew2a in #6863
- #7314 long shutdown by @drew2a in #7315
- #7188 Add shutdown for the KnowledgeRulesProcessor by @drew2a in #7189
- #7192 Task was destroyed but it is pending! Transfer.start_request() by @drew2a in #7193
- Remove streaming related sentences from main README.md by @drew2a in #6826
Code improvements
(click to view)
- #7158 Limit the log size by @drew2a in #7160
- Obfuscate machine name for Sentry events by @drew2a in #7023
- Add core stdout breadcrumb by @drew2a in #7022, #7033
- #7066 Extract a real core error from
CoreError
for the Sentry Reporter by @drew2a in #7072 - Simplify Session class by @drew2a in #6955
- Add "subclass match" for session.get_instance() by @drew2a in #7060
- Improve the EVA protocol by @drew2a in #6831, #6889, #6878, #6882, #6883, #6887
- Config refactoring by @drew2a in #6879
- Add typing...
v7.12.1
Overview
- This release should greatly improve the speed and stability of Tribler startup:
- Now, if a user has a large number of downloads, Tribler windows should open much faster.
- All different errors of type "Tribler GUI cannot connect to Tribler Core" should go away.
- Tribler should not crash anymore while copying files from the previous directory.
- The copying of the state directory is now atomic, and files should not be corrupted if the copying is interrupted in the middle.
- No more orphan Core processes if the GUI process was suddenly terminated.
- The token balance is now hidden until the algorithm for calculating the balance is updated.
- Some bugs that caused Tribler crashes were fixed.
Bugfixes
- Load download checkpoints in the background by @kozlovsky in #7024
- Provide atomicity of state dir copying by @kozlovsky in #7055
- Handle exceptions in UpgradeManager by @kozlovsky in #7007
- EventManager's timeout should ignore the upgrade duration by @kozlovsky in #7006
- Fix reconnection logic in EventRequestManager by @kozlovsky in #7001
- Fix CoreConnectTimeoutError by calculating the correct timeout for the request by @kozlovsky in #7054
- Fix QNetworkReply.UnknownNetworkError (99) when connecting to Core by @kozlovsky in #7019
- Unconditionally include RESTComponent when starting Tribler Core by @kozlovsky in #7045
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7046
- ProcessChecker refactoring by @drew2a in #6941
- Shut down the Tribler Core process if the GUI process crashes by @kozlovsky in #6996
- Stop Core on components startup exception by @kozlovsky in #7021
- Show the last error code and error name on timeout in EventRequestManager by @kozlovsky in #7020
- Hide token balance value by @kozlovsky in #7049
- Fix failing GUI test on Linux Github action by @xoriole in #6982
- Handle TypeError on tdef to metadata conversion by @xoriole in #6991
- Add Null check for
entry.tag_processor_version
by @drew2a in #7009 - Add format_error_message function to CoreManager by @drew2a in #6881
- Protect
cache_exitnodes_to_disk
from raising OSErrors by @drew2a in #7039 - Fix
UnicodeDecodeError
by @drew2a in #7040 - Add
SSLError
to exceptions by @drew2a in #7043
Full Changelog: v7.12.0...v7.12.1
V7.12.1-RC4
Overview
- The release fixes a startup crash when Tribler has a big number of active torrents;
- Now Tribler instance that has a big number torrents should start much faster;
- The token balance value is hidden until the balance algorithm is updated;
- Several other errors are fixed as well.
Bugfixes
- Load checkpoints in the background by @kozlovsky in #7024
- Fix
UnicodeDecodeError
by @drew2a in #7040 - Add
SSLError
to exceptions by @drew2a in #7043 - Protect
cache_exitnodes_to_disk
from raising OSErrors by @drew2a in #7039 - Unconditionally include RESTComponent when starting Tribler Core by @kozlovsky in #7045
- Fix initialization of Ipv8Endpoint in RESTComponent by @kozlovsky in #7046
- Fix GuiProcessWatcher tests by @kozlovsky in #7042
- Hide token balance value by @kozlovsky in #7049
Full Changelog: v7.12.0...v7.12.1-RC4
v7.12.1-RC2
Overview
This release fixes several startup issues when Tribler GUI freezes during the load screen or shows a "cannot connect to the Tribler Core" error. Some errors are fixed, and for other errors, the feedback dialog should display the reason for a problem so the user can report it to developers.
Bugfixes
- An attempt to fix QNetworkReply.UnknownNetworkError (99) when connecting to Core by @kozlovsky in #7019
- Fix/stop Core on components startup exception by @kozlovsky in #7021
- Show the last error code and error name on timeout in EventRequestManager by @kozlovsky in #7020
- Add
format_error_message
function to CoreManager by @drew2a in #7014
Full Changelog: v7.12.1-RC1...v7.12.1-RC2