Help us test BleachBit 6.0.5 beta, a release focused on stability, reliability, speed, and conservative feature enhancements. This release makes BleachBit noticeably faster, especially at startup, during deep scans, and when wiping files. It also introduces a cleaner for the Helium browser; expands cleaning across web browsers, Docker, and Claude Code; and resolves various crashes, freezes, and preference issues.
Highlights of enhancements and features:
- Major Performance Improvements: Significantly faster application startup through lazy-loading modules and optimized list sorting/processing, accelerated deep scans, and faster file wiping using 512 KiB blocks.
- New and Expanded Cleaners: Adds a cleaner for the Helium browser, Docker Desktop support on macOS, Docker's AI assistant option, Claude Code support, and expanded cleaning across multiple web browsers, GIMP, Google Earth, VLC, Zoom, and Visual Studio Code.
- macOS support continues to mature: while more work is needed for a smooth experience on macOS, the gap is quickly closing.
Special thanks to XhmikosR for again being the top contributor this release cycle, trhuxtonr for macOS improvements, and Josh Santiago for deep scan optimizations.
Since version 6.0.4, there have been 259 changes. As with the large 6.0.4 release, these release notes use expandable summaries to reduce clutter: click the arrow for more detail.
All Platforms
This release makes BleachBit noticeably faster, especially at startup, during deep scans, and when wiping files. This releases adds a cleaner for the Helium browser, expanding cleaning across web browsers, Docker, and Claude Code, and fixing crashes, freezes, and lost preferences.
- 4a93da8c - Add a cleaner for Helium browser
- 3ac138ba - Clean more crash reports across many web browsers
- 92198768 - Add Windows and Linux support to the new Docker cleaner. Also add a cleaning option for Docker's AI assistant.
- 0628eed3 - Improve cleaning of GPUPersistentCache, Dawn{Graphite,WebGPU}Cache
- 3cac6b7b - Overhaul cleaning of Network Persistent State (NPS)
- 31b4dfd3 - Fix language selection in preferences dialog
- 3a48079a - Quickly abort wiping CD-ROM instead of freezing
- 32c9a5e5 - Fix crash in Arabic and Hebrew when wiping was nearing completion
- b9bd31c2 - Allow comma-separated lsits and negatio in the CleanerML os attribute
- 23db88d9 - Clean more cache and session files in Claude Code and detect it running on macOS
- 9c76ef80 - Detect CD-ROM
- 303cb56a - Fix preference changes being lost when quitting with Ctrl+Q (Cmd+Q on macOS) instead of the window's close button
- 6f0b2615 - Speed up processing paths during deep scan
- a69db918 - Wipe file contents in 512 KiB blocks instead of 4 KiB to improve wiping speed
- b74bf6c4 - Fail closed on unrecognized tokens in CleanerML os attribute
- 0b4032d9 - Avoid bindtextdomain() error messages during startup when GTK is not available
- 4254a45a - Reload the app menu only after translations are set up again for speed
- ba9bf768 - Avoid updating the cleaner list twice when a refresh starts while one is still in progress
- d8a3af7c - Import psutil on first use instead of at module import to boost startup speed
- 8e35a6b6 - Scan for orphaned wipe files off the main thread to boost startup speed
- 2effe1d6 - Speed up sorting of the cleaner list to boost application startup
- 79fca2c4 - Show startup messages in their own idle callback to boost application startup speed
- 722f3fc2 - Delay initialization of the preferences dialog during startup to boost application startup speed
- e5721315 - Speed up refreshing the cleaner list (such as after closing Preferences)
- 4c450c36 - Load the app menu once instead of twice to boost startup speed
- 47612d91 - Import minidom on first use instead of at module import to boost startup speed
- 71b1d42a - Import urllib.request on first use instead of at module import to boost startup speed
- 8208143f - Speed up loading cleaner definitions to boost startup speed
- 60ad2708 - Queue one log scroll at a time instead of one per line
- dee7bdd0 - Drop the direct log scroll from worker_done()
- 30e5419a - Speed up deleting files by checking each path's type once instead of several times
- 1a9cc66e - Speed up the startup check for leftover wipe files
- 29eee44f - Cache the process list for is_process_running()
- 8ce0d38a - Improve user-facing messages
- 3796a6d4 - Use options.commit() instead of close() in on_quit()
- 24c6398f - Fix: when CLI was given multiple paths to wipe and one failed, the others would not be attempted.
- 88fde7f7 - Fix: new test caused tests to crash on Windows
- 73b9a980 - Fix leaked code comment into translation hint
- 82852d8c - Move the duplicated infobar code into a shared mixin
- 960f9b4c - Share one helper for the PyGObject asyncio warning filters
Windows
Windows users get noticeably faster startup, lower memory usage, and fewer antivirus false positives. Program files are no longer stored compressed, so compared to 6.0.4 the installed app uses about 25 MB more disk space and the portable zip is about 1 MB larger, though the installer download is about 2 MB smaller. This tradeoff balances multiple considerations, optimizing for speed and a smooth experience with security software. This release also brings a more polished installer and updated interface libraries, and it fixes wiping FAT32 drives, cleaning security files in Chromium-based browsers, and applying language changes without a restart.
- d123995e - Fix cleaning of TransportSecurity files for Chromium-based browsers on Windows
- f37404bc - Ship fc-cache.exe again so the installer can build the font cache for fontconfig
- 94df1e2d - Fix wiping FAT32 on Windows
- 67c6cfff - Fix: application menu required application restart after changing languages to take effect
- 23c898f5 - Shrink the Windows build by ~1 MB by removing unused modules and codecs
- 296af28e - Exclude unittest and test from library.zip to shrink the Windows build by ~150 KB
- 348b25d6 - Skip redundant language dialog in the elevated installer
- c37c73c2 - In System Information, show an environment variable with compatibility mode settings
- cf3f00a4 - In the Windows installer, show the license as rich text instead of plain text
- d01e5693 - Write the Add/Remove Programs links to the real uninstall key
- d3f61ea3 - Use English instead of fuzzy translations in the installer
- 97fbf06e - Keep the fontconfig cache inside the portable folder
- d8b8e033 - Fix translated uninstaller text being replaced by an unrelated string
- c4a7a2e8 - Match any fontconfig cache version when checking for a font cache
- 62270430 - Keep the keyboard hook responsive while the splash screen starts
- 21e7ebcc - Store Python modules in library.zip uncompressed to speed up application startup
- 7742e281 - Yield between winapp2.ini sections so the GUI keeps painting
- 4bc12f5e - Probe each winapp2 Detect key once per load to boost startup speed
- 10072c95 - Speed up importing Winapp2.ini cleaners to boost startup speed
- b508b67d - Add line break for Italian NSIS finish/reboot pages
- a8a43222 - Remove two unneeded .pyd files that took 43 KB to shrink installation footprint
- 3107d0b8 - Disable executable compression (UPX) for exe, dll, and pyd files to reduce false positives with antivirus software, improve application startup, reduce memory usage, and shrink the installer (~500 KB) at the tradeoff of increasing installed footprint (~22MB) and larger portable zip file (~2.6 MB)
- 48a60f56 - Bind the loop value into the system path lambda
- 0dfde857 - Use ctypes.windll instead of importing windll
- 89dd8cef - Update bundled dependencies to PyGObject 3.58.0, Pango 1.58.0, and HarfBuzz 14.4.0
POSIX
POSIX users get fixes for language detection and locale matching, including on C.UTF-8 systems, broader localization support beyond Linux, and a fix so scans for unneeded localization files skip unreadable folders instead of stopping.
- 4a0d2687 - Find the package in
/share when installed with make install - 2500f39c - Fix: skip folders without read permission when scanning for unneeded localization files, instead of stopping the scan
- b1f5827d - Check whether a temporary file is open last, not first
- 01b0c97d - Fix automatic language detection when the system locale is C.UTF-8
- 8f1fc1a1 - Prefer UTF-8 in locale matching
- 9af3246c - Load localization paths on Unix, not only Linux.
- 452fbf5f - Extract normalize_locale_code() and use it consistently
Linux
Linux users get expanded cleaning for snap packages and LibreWolf, a fix for running BleachBit as administrator on Fedora and Debian-based distributions, and a fix for building .rpm packages on openSUSE Leap 16.1.
- 6c4977e8 - Clean more snap revisions, while avoiding duplicates in the preview. Clean more LibreWolf installed as deb or Flatpak.
- 7dc2e355 - Fix building .rpm for openSUSE Leap 16.1
- 61f0d1ca - Fix 'BleachBit as Administrator' on Fedora and other Red Hat-based distributions by using pkexec instead of consolehelper
- e1f7ee7b - Recommend pkexec for the .deb administrator launcher
- 429724b9 - Drop the redundant attachments action from the Geary cleaner
macOS
macOS users get a new Docker Desktop cleaner, expanded support in existing cleaners such as GIMP, Google Earth, VLC, Zoom, and Visual Studio Code, and cleaning of orphaned Chrome framework versions. This release fixes translations, language detection, and menu updates after language changes, and adds support for macOS 27 (Golden Gate).
- 3ec5c185 - Add cleaner for Docker Desktop (initially here only for macOS)
- dcc141fb - Add macOS support to cleaners for GIMP and Google Earth
- 0db93d42 - Clean orphaned Chrome framework versions on macOS
- c522f843 - Fix locale directory resolution in macOS .app to enable translations
- 8e6a42ed - Add macOS support for to the VLC and Zoom cleaners
- 17c50abd - Add macOS support to the Devin cleaner
- 887f75b6 - Add macOS support to Visual Studio Code and forks
- 798343b3 - Fix automatic language detection when the app is launched from Finder on macOS
- 675e377a - Fix detection of read-only status of paths such as /tmp
- 6bec78c5 - Fix hamburger menu not following language changes on macOS (#2335)
- 25d73999 - Add codename for macOS 27 (Golden Gate)
- 1d76a22b - In System Information, show macOS version number for unknown codenames
- c6eb1397 - Hide desktop_entry and localizations, which are not compatible with macOS, in the System cleaner
- ed17f372 - Detect process names in versioned binaries
- 60f5026e - Avoid a possible error when detecting the system language on macOS
- 31a1ef09 - Improve error handling when reading the macOS language preferences
- 86792f03 - Explain empty except clause in Safari cookie temp file cleanup
BSD
BSD users get more reliable detection of open files on FreeBSD and improvements to the FreeBSD testing infrastructure, including resuming interrupted image downloads.
Developers
This release adds a unified make lint that enforces pylint, pyflakes, shellcheck, and autopep8 findings, backed by a new lint workflow and a dedicated Windows pylint job, plus a large cleanup that fixes or documents each finding. It also hardens the Windows, macOS, and RPM build pipelines to fail fast on warnings, missing files, crashes, and upload errors, and adds conveniences like opt-in UPX compression and a startup timing profiler.
- 0f2f9d13 - Log cleaners dropped from the Windows build at info level
- e75c0dbe - Run the Windows build unbuffered so py2exe output stays in order
- f244e13c - Fail the Windows build on NSIS warnings
- f5781078 - Install dev/lint tools via Homebrew on macOS
- 4f626442 - Bump the github-actions group with 3 updates
- 85e1189b - Bump pyflakes from 3.4.0 to 4.0.0
- d4c15706 - Bump the pip group across 1 directory with 2 updates
- e7ad7e31 - Fail the RPM check when BleachBit crashes before wc -l
- d5fa20e4 - Name the UPX installer the way windows.setup expects
- bbec1437 - Fail the Windows build check when a required module is missing
- 38c8fc78 - Fail the Windows deploy when any upload fails, not just the last one
- d70d7847 - Drop Windows build cleanup steps for files that are no longer produced
- 89a0b750 - Skip the missing-tool pause in the Windows build on CI
- 4e208b3e - Retry the test ISO download on Windows and Linux, including refused connections
- 4f9fe842 - Fail the macOS smoke test when --list exits with an error
- 8cca2727 - Drop pytest-rerunfailures and serialize the clipboard test
- 3a9e4b90 - Fail the Windows build when a file to copy is missing
- f78ece1d - Stop copying GTK paths the vcpkg bundle does not have
- b865f009 - Silence the NSIS warning for the Italian reboot text override
- a97cdf45 - Check the exe still starts after repacking library.zip
- 4d429a93 - Log startup timings when BLEACHBIT_STARTUP_PROFILE is set
- 39fb4502 - Fix lint and run `make pretty`
- 81333f78 - Include windows/ directory in lint and pretty targets
- 197f6727 - Improve logging in GitHub Actions for Windows build
- 574a2f70 - Fix dev install for openSUSE Leap 16
- 012aa25d - Fix: test_with_sudo
- 4baa3504 - Fail make lint on pylint and autopep8 findings
- a6c5a87b - Add a Windows pylint job that checks the win32 calls for real
- e02279ca - Narrow the pylint ignore list on Windows and add a lint-pylint target
- a9150ab4 - Allow pylint to introspect pywin32 where it is installed
- f5b83336 - Silence the remaining pylint findings with a reason at each site
- b56cca65 - Run shellcheck as a single invocation, parallel with pyflakes and pylint
- 72ba80a6 - Pin the lint tool installs to requirements-lint.txt and use it in CI
- 77ba9f33 - Fix and document the names that shadowed or redefined another
- 7dba1afb - Raise RuntimeError instead of a bare Exception
- 24924521 - Compare against the True sentinel with is
- 189d08c6 - Fix or silence the pylint warnings that are deliberate or platform-guarded
- c591ea38 - Run autopep8
- 01226550 - Use else for the unknown-OS branch so the import chain is exhaustive
- 029d07d3 - Add docstrings to the custom action methods
- 15878339 - Drop else and elif after a branch that always exits
- c79a8e84 - Use list() and in-comparisons instead of the long forms
- dce2cd16 - Simplify negated comparisons and redundant expressions
- 0b205a96 - Remove redundant returns, imports, and an override
- 2a018507 - Use a comment instead of a bare string statement
- 308a5927 - Drop the now-redundant inline import-outside-toplevel disables
- 2fc2dd43 - Add a pylint config tuned to the project's conventions
- 9d90305b - Find pyflakes by module when the distro binary name differs
- f0e50980 - Fix the remaining pyflakes findings
- 09bf052b - Fix or silence the shellcheck findings in the shell scripts
- 2c78e4fc - Fail make lint on shellcheck and pyflakes findings
- 4e717963 - Add a lint workflow running make lint on Linux with default Python
- 464ba753 - Pass check=False to subprocess.run explicitly
- d028a7ce - Specify the encoding when opening text files
- 769aa433 - Let logging do the formatting instead of formatting eagerly
- dd6f2a03 - Chain the original exception when re-raising as OSError
- b54b66c3 - Improve return type for get_filesystem_type()
- e21a407c - Fix: remove unneeded localedef in local Docker
Localization
61 languages were updated with 337 changes: The most active were suomen kieli (68), svenska (37) and Ελληνικά (14)
For more info, see also commit log (since 6.0.4), list of closed issues (fixed in 6.0.5).
Downloads
Downloads are available at download.bleachbit.org and SourceForge.
Linux users can download .deb or .rpm packages, while Windows users can download a digitally signed installer or a portable package.
After testing
If something is broken, please file a bug report.
- andrew's blog
- Log in or register to post comments