BCUninstaller/Bulk-Crap-Uninstaller
51.9
Adequate · 5 August 2026
94.7k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a comprehensive Windows application management and uninstallation suite, featuring a primary GUI for discovering, filtering, and removing installed software, alongside specialized utilities for managing startup entries, system junk, and Windows updates. It includes a modular architecture with shared helper libraries for file system operations, logging, and UI controls, as well as headless console tools for automated uninstallation and system tweaking. The codebase has been modernized to .NET 8, with a strong emphasis on localization, structured logging, and robust error handling.
How it got here
2015–2017 — Modernization and refactoring
74 changes.
The codebase underwent a major modernization, migrating to .NET 8 and the SDK-style project format while removing legacy components like .NET 3.5 support and old Windows Forms designer files. This period focused on refactoring the core uninstaller and junk detection architectures to be more modular and stable, while introducing new features such as multi-condition filtering, bulk uninstallation, and advanced clipboard operations.
2018–2026 — Library consolidation and UI automation
22 changes.
This period focused on building a comprehensive shared utility library (KlocTools) to centralize file system, process, and reflection operations, while introducing new console and launcher executables for application management. Significant effort was also directed toward automating NSIS uninstaller interactions and expanding localization support across multiple languages.
Features
About box displays version, architecture, and translator credits
The About dialog now shows the application's version number, architecture (e.g., 64-bit, ARM64), and a list of translation contributors. This is supported by the new \UninstallerListDoubleClickAction\ enum and the regenerated designer code and resource files for the AboutBox.
source/BulkCrapUninstaller/Forms/Windows · high confidence
Add BCU launcher executable
The BCU-launcher project has been added, introducing a new launcher executable that detects the user's Windows architecture (32-bit or 64-bit) and the OS version to locate and start the correct version of BCUninstaller. The launcher includes versioning (1.2.0.0) and displays specific error messages if the required files are missing or if the system runs an unsupported Windows version.
source/BCU-launcher · high confidence
Add KlocTools extension utilities
A new set of extension methods has been added to the KlocTools library, providing utility functions for various types. This includes BooleanTools for converting between boolean and CheckState values, CheckBoxExtension for managing checkbox states, CollectionExtensions for list and dictionary operations (such as Move, AsReadOnly, and Distinct), DictionaryExtensions for XML serialization, EnumerableExtensions for safe enumeration and disposal, EventExtensions for cancellable event invocation, FormsExtensions for control updates and child enumeration, IconExtensions for playing system sounds, IoExtensions for file and drive information, MiscExtensions for default/empty checks, ParentProcessUtilities for identifying parent processes, ProcessExtensions for managing child processes and command lines, ReadOnlyDictionaryWrapper for immutable collections, RegistryKeyExtensions for safe registry access, RichTextBoxExtensions for colored text appending, StreamExtensions for copying streams, StringExtensions for string manipulation, and TimeExtensions for fuzzy time formatting.
source/KlocTools/Extensions · high confidence
Add SimpleTreeMap test project
A new test project named SimpleTreeMapTests has been added to the solution. It includes a Windows Forms application that instantiates the SimpleTreeMap.TreeMap control on a main form, configuring it with object name and value getters and populating it with a sample dataset for testing purposes.
source/SimpleTreeMapTests · high confidence
Add installer translations for Hindi, Ukrainian, and Vietnamese
The installer now supports installation in Hindi, Ukrainian, and Vietnamese. These new language files allow users to interact with the setup wizard in their preferred language, covering all standard installation steps such as license agreements, component selection, and error messages.
installer/lang · high confidence
Added Advanced Clipboard Copy control for pattern-based clipboard operations
A new 'Advanced Clipboard Copy' user control has been added to the application, providing a dedicated UI for copying items to the clipboard using customizable text patterns. The feature includes a text input for the pattern, a dropdown to insert predefined item types, and a checkbox to toggle unescaping of special characters. The implementation includes the C\# code-behind, the designer file, and resource files for multiple languages (Arabic, German, Spanish, French, Hungarian, Italian, Japanese, and Czech), enabling users to generate formatted clipboard content based on selected applications.
source/BulkCrapUninstaller/Controls · high confidence
Added Advanced Clipboard Copy window for exporting application details
A new 'Advanced Clipboard Copy' dialog has been introduced, allowing users to copy detailed information about selected applications to the system clipboard. This feature includes a dedicated window with 'Copy All' and 'Close' buttons, supporting multiple languages as evidenced by the addition of localized resource files (e.g., .resx) for Arabic, German, Spanish, French, Hungarian, Italian, Japanese, and Dutch.
source/BulkCrapUninstaller/Forms/Helpers · high confidence
Added Browser Helper Object startup entry support
The application now scans the Windows registry for Browser Helper Objects (BHOs) and lists them as startup entries. This new feature allows users to view, disable, and delete BHOs that are registered under the 'Browser Helper Objects' and 'AutorunsDisabled' registry keys, including handling for 64-bit (Wow6432Node) entries.
source/UninstallTools/Startup/Browser · high confidence
Added OculusHelper to manage and remove Oculus applications
A new internal helper, OculusHelper, has been introduced to detect installed Oculus applications by scanning registry keys and manifest files, and to uninstall them by deleting associated files and directories. The helper exposes a /query command to list apps and an /uninstall command to remove them, including a restart of the Oculus library service to update the system state.
source/OculusHelper · high confidence
Added Universal Uninstaller for deleting files and directories
A new Universal Uninstaller component has been introduced, providing a mechanism to recursively delete files and directories. This includes a console application entry point that supports both interactive selection via a tree-view UI and a quiet mode for headless execution. The feature is supported by a new \NetSettingBinder\ library, which offers a thread-safe, generic settings binding helper to manage property change notifications and UI synchronization.
source/UniversalUninstaller · high confidence
Added Windows Task Scheduler startup entry support
The application now detects and manages startup entries created by Windows Task Scheduler. This is implemented via new \TaskEntry\ and \TaskEntryFactory\ classes in the \UninstallTools.Startup.Task\ namespace, which parse task XML to extract command paths and arguments, allowing users to disable or delete scheduled task-based startup items alongside other startup methods.
source/BulkCrapUninstallerTests/Properties, source/UninstallTools/Startup/Task · high confidence
Added Windows Update helper utility for listing and uninstalling updates
The WinUpdateHelper tool was introduced to allow users to list installed Windows updates or uninstall specific updates via the command line. The utility supports 'list' and 'uninstall' commands, utilizing the Windows Update Agent API to query and manage updates. It includes a comprehensive mapping of Windows Update error codes (Hresult.cs) to provide detailed error messages for troubleshooting. This helper is designed to run on .NET v4 and above, with specific handling for older .NET versions that lack Unicode output support.
source/WinUpdateHelper · high confidence
Added custom notes feature for uninstaller entries
Users can now save and view custom notes for each application entry. This is implemented via a new \CustomNotesManager\ class that persists notes to a \CustomNotes.xml\ file, and the \ApplicationUninstallerEntry\ model now exposes a \CustomNote\ property backed by this manager. The \ApplicationEntrySerializer\ was also added to handle serialization of application entries, ensuring that custom notes and other data are correctly exported to XML.
source/UninstallTools · high confidence
Added event argument and sorting components to KlocTools
The KlocTools library now includes new classes to support progress tracking and list sorting. A \CountingUpdateEventArgs\ class has been added to the \Klocman.Events\ namespace to handle update progress events, exposing properties for minimum, maximum, and current values, along with calculated percentage and completion status. Additionally, a \ListViewColumnSorter\ class has been introduced in the \Klocman\ namespace to provide customizable sorting for \ListView\ controls, supporting text, image, and checkbox-based comparisons with ascending or descending order.
source/KlocTools/Events, source/KlocTools/Sorters · high confidence
Added localization resources for multiple languages
The application now supports displaying the 'Unknown' string in Arabic, Czech, German, Spanish, French, Hungarian, Italian, Japanese, and Dutch. This is achieved by adding corresponding .resx files and the CommonStrings.Designer.cs file to the KlocTools/Resources directory, enabling the UI to show localized text for these languages.
source/KlocTools/Resources · high confidence
Added rating system for applications
The application list now displays user and average ratings for each program. Users can view and submit ratings, which are stored locally and synchronized with the server. The rating column in the list view is rendered with star icons, and the system includes caching and background processing for rating data.
source/BulkCrapUninstaller/Functions/Ratings · high confidence
Added subsystems for font management, global hotkeys, random file picking, and window hovering
New classes have been introduced in the Klocman.Subsystems namespace to support core application features. FontGrabber provides access to installed system fonts. GlobalHotkeys and HotkeyEntry enable the registration and handling of global keyboard shortcuts. RandomFilePicker allows for navigating and selecting files and directories with optional filtering and history tracking. WindowHoverSearcher and WindowHoverEventArgs facilitate detecting the window currently under the mouse cursor, including its title, class name, and process ID.
source/KlocTools/Subsystems · high confidence
Added utility classes for collection observation, value limiting, and UI interaction
The KlocTools library now includes new utility components: an ObservedList generic collection that fires a ListChanged event when items are added or removed, a Limited struct that constrains value types to a specified range with optional exception throwing, and a YesNoAsk enum for user prompt interactions. These additions provide foundational building blocks for managing state changes, enforcing value constraints, and handling user decisions within the application.
source/KlocTools · high confidence
Introduce BCU-console CLI with list, export, and uninstall commands
A new console application (Program.cs) is added to the BCU-console project, providing a command-line interface with three main commands: 'list' to display installed applications, 'export' to save application data to an XML file, and 'uninstall' to remove applications using a specified list file. The interface supports flags for quiet, unattended, and verbose modes, as well as junk removal confidence levels.
source/BCU-console · high confidence
Introduce SimpleTreeMap control for hierarchical data visualization
A new SimpleTreeMap control has been added to the codebase, providing a visual representation of hierarchical data as a set of nested rectangles. The implementation includes the core layout algorithm (SliceMaker), data models (Element, Slice, SliceResult), and the UI component (TreeMap) which supports mouse interactions (click, hover, right-click) and displays tooltips. This enables users to visualize and interact with tree-structured data in a compact, space-efficient manner.
source/SimpleTreeMap · high confidence
Introduce SteamHelper utility for managing Steam applications
Added the SteamHelper console utility, which provides commands to list installed Steam applications, display detailed information about specific apps, and uninstall them. The tool also supports retrieving the Steam installation directory and handles custom library folders.
source/SteamHelper · high confidence
Introduce new IO utility classes for file, MSI, and system management
Added a suite of new utility classes in the Klocman.IO namespace to handle file metadata, command-line arguments, file size formatting, Windows feature detection, system restore point management, and MSI product/component enumeration. These additions provide a centralized, modern C\# interface for interacting with the file system, Windows Installer, and system restore APIs, replacing or supplementing previous ad-hoc implementations.
source/KlocTools/IO · high confidence
Introduce new utility classes for file, process, and reflection operations
Added a suite of new static utility classes in the Klocman.Tools namespace, including CompiledPropertyInfo for high-performance property accessors, CompressionTools for GZip and Brotli compression, DrawingTools for icon extraction and image manipulation, FilesystemTools for directory operations and executable architecture detection, GuidTools for parsing and validating GUIDs, MachineType and related enums, PathTools for path normalization and resolution, ProcessStartCommand and ProcessTools for managing and inspecting processes, ReflectionTools for reflection helpers, RegistryTools for registry key management, SerializationTools for XML serialization, and Sift4 for string distance calculation. These additions expand the available tooling for file system interactions, process management, and data serialization.
source/KlocTools/Tools · high confidence
Introduce shared HelperTools library with structured logging and Win32 error handling
A new shared HelperTools project has been added to the solution, containing a LogWriter class for structured, timestamped logging that automatically rotates large log files and hooks console output, as well as a comprehensive ResultWin32 enum mapping Windows error codes to .NET exceptions via extension methods. This refactors and consolidates previous helper utilities into a reusable component.
source/HelperTools · high confidence
Introduced PortableSettingsProvider for portable application settings
Added a new PortableSettingsProvider component that stores application settings in a local XML file alongside the executable, supporting both roaming and machine-specific settings. The provider includes a U3SettingsProvider variant for U3 environment variable support, with error handling for invalid config files and save failures to prevent crashes.
source/PortableSettingsProvider · high confidence
Introduced ScriptHelper executable for managing system tweaks
A new standalone executable, ScriptHelper, has been added to replace loose PowerShell scripts. This tool provides a secure, code-based interface for listing and uninstalling system tweaks (such as accessibility settings, mouse acceleration, and file explorer configurations) via command-line arguments, improving security and reducing complexity by eliminating external script dependencies.
source/ScriptHelper · high confidence
Introduced StoreAppHelper utility to query and uninstall Windows Store apps
Added a new StoreAppHelper executable that queries installed Windows Store apps and handles their uninstallation. The tool parses app manifests using XML with namespace support, extracts metadata (display name, logo, publisher), and returns structured output. It also identifies protected system apps and handles errors via HRESULT codes, improving reliability for managing store apps.
source/StoreAppHelper · high confidence
Introduced bulk uninstallation framework with configurable parallel execution
The application now supports uninstalling multiple programs simultaneously. This is enabled by new classes (BulkUninstallTask, BulkUninstallEntry, BulkUninstallConfiguration) that manage a queue of uninstallers, allowing users to select and remove several applications in a single operation. The system handles concurrent execution, status tracking, and error reporting for each item in the batch.
source/UninstallTools/Uninstaller · high confidence
Introduced new automation classes for handling NSIS uninstallers
Added new classes to the UninstallerAutomatizer project to manage the automation of NSIS uninstaller windows. The \AutomatedUninstallManager\ class provides static methods to launch and automate the NSIS uninstallation process, including handling window visibility and button clicks. The \UninstallHandler\ class manages the execution of uninstallation tasks and daemon processes, utilizing named pipes for communication. Supporting types include \UninstallHandlerUpdateArgs\ and \UninstallHandlerUpdateKind\ to convey status updates, while extension methods in \TestStackWhiteExtensions\ and \WindowExtensions\ provide helper functionality for application and window manipulation.
source/UninstallerAutomatizer/Automation · high confidence
Introduced new sub-controls for ObjectListView
Added new internal sub-controls to the ObjectListView component to improve rendering and interaction. This includes a transparent overlay form (GlassPanelForm) for flicker-free scrolling, a dedicated header control (HeaderControl) for column headers, a ToolStripControlHost wrapper for checkable list boxes in menus (ToolStripCheckedListBox), and a native window wrapper for tooltips (ToolTipControl).
source/ObjectListView/SubControls · high confidence
Introduced new usage tracking and statistics reporting system
Added a new tracking subsystem in the BulkCrapUninstaller application to collect and report usage statistics. The system now tracks application launch counts, interface interaction events (such as clicks and double-clicks) across UI components, and collects system metadata including installed .NET Framework versions. Collected data is persisted to a local XML file and can be sent to a remote server via a new DatabaseStatSender component.
source/BulkCrapUninstaller/Functions/Tracking · high confidence
New Advanced Filters interface for managing uninstall lists
The Settings panel now includes a new Advanced Filters view that allows users to manage uninstall lists. Users can open, save, and delete uninstall lists (with .bcul extension) and add selected applications as filters. The interface provides toolbar buttons for basic filtering, saving as default, and deleting default lists, with full localization support across multiple languages.
source/BulkCrapUninstaller/Controls/Settings · high confidence
New BeginUninstallTaskWizard wizard for uninstall workflows
A new multi-step wizard has been added to guide users through the process of uninstalling applications. This wizard includes steps to review related applications, confirm uninstallation, monitor running processes, adjust settings, and review a summary before execution. The implementation includes the main C\# code-behind file and resource files for multiple languages (Arabic, Czech, Spanish, French, Hungarian), providing localized text for all interface elements within this specific wizard.
source/BulkCrapUninstaller/Forms/Wizards · high confidence
New FilterEditor control with localization support
The FilterEditor user control has been introduced to the application, providing a dedicated UI component for managing filter conditions. The implementation includes the core C\# logic and a designer file, alongside resource files (\.resx\) for multiple languages including Arabic, German, Spanish, French, Hungarian, and Italian, enabling localized labels for filter text, comparison methods, and target properties.
source/UninstallTools/Controls · high confidence
New and improved registry-based junk detection scanners
The application now scans for additional types of registry-based junk, including AppCompat flags, audio policy settings, COM class leftovers, debug tracing configurations, event logs, firewall rules, heap leaks, installer folders, registered applications, general software keys, tracing keys, uninstaller keys, and user-assist entries. These new scanners provide more comprehensive cleanup of leftover registry entries associated with uninstalled software.
source/UninstallTools/Junk/Finders/Registry · high confidence
New directory selection and content alignment controls
Added new UI controls to the application: a \CommandLink\ button that supports note text and shield icons, a \ContentAlignmentBox\ for selecting alignment options via checkboxes, and a \DirectorySelectBox\ for browsing and validating directory paths with drag-and-drop support. These components provide enhanced user interface options for layout and file selection.
source/KlocTools/Controls · high confidence
New drag-and-drop and filtering infrastructure for ObjectListView
The ObjectListView component now includes a complete drag-and-drop framework, introducing the IDragSource and IDropSink interfaces along with concrete implementations like SimpleDragSource and SimpleDropSink, enabling users to easily add drag-and-drop functionality to their lists. Additionally, a comprehensive filtering system has been added, featuring a clustering strategy that groups items by column values (including date-based clustering) and a filter menu builder that generates interactive filter menus for columns, allowing users to filter list contents by selecting specific values.
source/ObjectListView/DragDrop, source/ObjectListView/Filtering · high confidence
New filter and list management system for uninstall items
The application introduces a new, structured system for managing uninstall lists and filtering logic. This includes a new \UninstallList\ class for serializing and deserializing filter configurations to and from XML files, along with a \Filter\ and \FilterCondition\ architecture that allows users to define complex inclusion/exclusion rules for application entries. The system supports various comparison methods (Equals, Contains, Regex, etc.) and enables granular control over which items appear in the uninstall list.
source/UninstallTools/Lists · high confidence
New junk detection for Windows shortcuts and startup entries
The UninstallTools module now includes new finders for identifying junk in the form of Windows shortcuts and startup entries. The ShortcutJunk finder scans for .lnk files in standard Windows directories (Programs, Desktop, etc.) and marks them as junk if they point to uninstalled applications, with specific handling for Steam games to avoid false positives. The StartupJunk finder identifies startup entries that still exist on disk. These changes improve the accuracy of junk detection by properly handling shortcut targets and startup entries, reducing false positives for Steam games and other applications.
source/UninstallTools/Junk/Finders/Misc · medium confidence
New utility classes for column management, auto-generation, and type-safe list views
The ObjectListView library adds several new utility components to the \source/ObjectListView/Utilities\ directory. The \ColumnSelectionForm\ provides a user interface for users to select which columns are visible and in what order they appear in the list view. The \Generator\ class enables automatic creation of columns based on the public properties of model objects, supporting attributes like \\[OLVColumn\]\ and \\[OLVIgnore\]\. The \OLVExporter\ class allows exporting list data to CSV, TSV, and HTML formats. Additionally, \TypedObjectListView\ offers a generic wrapper around \ObjectListView\ to provide type-safe access to model objects and columns, simplifying delegate assignment and iteration.
source/ObjectListView/Utilities · high confidence
Removals
Removed Windows Task Scheduler startup entry handling
The application no longer manages or displays Windows Task Scheduler entries in the startup list. The \TaskEntry\ and \TaskEntryFactory\ classes, which previously parsed task XML and exposed scheduler items as startup entries, have been deleted from the codebase.
UninstallTools/Startup/Task · high confidence
Removed legacy .NET 3.5 and VB.NET sample code from the repository
The NBug\_net35 directory and the PortableSettingsProvider sample project have been deleted. This removes the .NET 3.5 compatible version of the NBug library, including its exception handling and reporting components, as well as the Mantis bug tracker integration. Additionally, the VB.NET PortableSettingsProvider sample, including its settings and resource files, has been removed. Users relying on the older .NET 3.5 framework or the VB.NET settings provider sample will no longer have access to these components.
_NBug\net35, PortableSettingsProvider · high confidence
Removed legacy startup entry management classes
The legacy startup disable implementations (NewStartupDisable, OldStartupDisable) and the associated StartupEntry, StartupEntryFactory, and StartupEntryManager classes have been removed from the codebase. This change eliminates the previous mechanism for managing startup entries via backup stores and registry keys, simplifying the startup management logic.
UninstallTools/Startup/Normal · high confidence
Removed legacy uninstall list import/export dialogs
The \UninstallListOpenDialog\ and \UninstallListSaveDialog\ classes, along with their designer files and associated resource files, have been removed from the \UninstallTools/Dialogs\ directory. This eliminates the previous mechanism for manually opening and saving uninstall lists via dedicated dialog windows, likely as part of a broader refactoring of the list management workflow.
UninstallTools/Dialogs · high confidence
Removed legacy uninstaller management classes
The legacy classes for managing uninstaller entries and bulk uninstall tasks have been removed from the UninstallTools/Uninstaller directory. This includes the removal of ApplicationUninstallerEntry, ApplicationUninstallerFactory, ApplicationUninstallerManager, BulkUninstallConfiguration, BulkUninstallEntry, BulkUninstallTask, UninstallStatus, UninstallerIconGetter, and UninstallerType. This change eliminates the old architecture for handling application uninstallation and status tracking.
UninstallTools/Uninstaller · high confidence
Removed legacy update and list management components
The legacy \UpdateGrabber\ class, which handled automatic update checks and feed URIs, has been removed. Additionally, the \UninstallerListViewTools\ class, which managed the uninstaller list view, filtering, and background processing threads, has been deleted. These components have been replaced by newer systems for update handling and list management.
BulkCrapUninstaller/Functions · high confidence
Architecture
Reorganized ObjectListView source code into a new Implementation folder
The ObjectListView source files, including Attributes, Comparers, DataSourceAdapter, Delegates, DragSource, DropSink, Enums, Events, and GroupingParameters, have been moved from the project root to a new directory structure under source/ObjectListView/Implementation. This change improves code organization by grouping internal implementation details separately from the main control classes.
source/ObjectListView/Implementation · high confidence
Behavioural changes
10 commits (0 fixes) modifying source/BulkCrapUninstaller/Resources
A change to existing behaviour in source/BulkCrapUninstaller/Resources — 10 commits, 51 files.
source/BulkCrapUninstaller/Resources · medium confidence · unverified
Add SimpleTreeMap assembly metadata
The SimpleTreeMap project now includes an AssemblyInfo.cs file that defines standard assembly metadata, including the title, product name, copyright year (2017), and version numbers (1.0.0.0). This provides the necessary metadata for the SimpleTreeMap assembly.
source/SimpleTreeMap/Properties · high confidence
Add certificate and integrity columns to app list
The application list now displays certificate verification status and integrity information for each installed program. A new certificate cache improves startup speed and reduces redundant validation calls. Users can also choose a color-blind friendly mode for the list's color coding, and the list's filtering and selection behavior has been refined to handle edge cases like orphaned or filtered-out items.
source/BulkCrapUninstaller/Functions/ApplicationList · high confidence
Expanded and updated translations for Uninstaller Automatizer
The localization resources for the Uninstaller Automatizer have been updated with new and improved translations for multiple languages, including Arabic, Czech, German, Spanish, French, and Hungarian. These updates ensure that error messages, status notifications, and button labels are correctly displayed in the user's preferred language, improving the overall experience for non-English speakers.
source/UninstallerAutomatizer/Properties · high confidence
Improved application merging and scanning performance
The application factory has been refactored to improve performance and accuracy. A new \ApplicationEntryTools\ class handles the logic for detecting and merging duplicate or related application entries, utilizing a scoring system based on install location, uninstall strings, version, publisher, and name similarity. The scanning process now utilizes multithreading to process registry and drive scans concurrently, and the factory pipeline has been reorganized to better handle duplicates and merge results from various sources (MSI, registry, drives, app stores). Additionally, a caching mechanism (\ApplicationUninstallerFactoryCache\) has been introduced to store and retrieve application information, speeding up subsequent scans.
source/UninstallTools/Factory · high confidence
Improved cell editing and list rendering performance
The ObjectListView control now features a significantly faster list rendering engine, reducing visual lag during scrolling and updates. Additionally, cell editing behavior has been refined: the new \CellEditKeyEngine\ and \EditorRegistry\ provide more predictable navigation and editing interactions, while custom editors like \AutoCompleteCellEditor\, \EnumCellEditor\, and \IntUpDown\ are now publicly accessible for reuse or subclassing.
source/ObjectListView/Rendering · high confidence
Improved crash reporting and language selection
Crash reports are now sent via HTTP with Brotli compression instead of a database sender, and the application now validates available translations against supported cultures to prevent crashes from unsupported languages. Additionally, the log cleaner script and culture configuration have been reorganized for better stability.
source/BulkCrapUninstaller · medium confidence
Improved stability when scanning and managing Windows startup services
The application now handles errors more gracefully when scanning for and managing Windows startup services. Previously, issues such as WMI failures, COM exceptions, or ancient .NET versions could cause crashes or errors. The new code catches these exceptions, preventing crashes and ensuring the application remains stable even if service scanning fails on some systems.
source/UninstallTools/Startup/Service · high confidence
Improved system restore handling and window positioning
The application now prevents creating multiple system restore points if one is already in progress, and improves the logic for restoring the main window's position to avoid placing it off-screen. Additionally, the \ImportExport\ class has been extended with new methods to copy application names, registry keys, uninstall strings, GUIDs, and full information to the clipboard.
source/BulkCrapUninstaller/Functions/Tools · high confidence
Installer now supports portable installation and automatic .NET 8 dependency handling
The installer script has been restructured to offer users a choice between a standard installation and a portable installation. For the portable mode, the installer now automatically downloads and installs the .NET 8 runtime if needed, and excludes the Windows Start Menu group page. The script also ensures that the selected language's translation files are always installed, even if the 'Extra Languages' component is deselected, fixing a bug where some language files were missing.
installer · high confidence
ObjectListView assembly metadata and resources updated
The ObjectListView library's assembly information has been updated to version 2.10.0.0, with the title, description, and company fields changed to reflect the ObjectListView project. Additionally, the auto-generated resource file (Resources.Designer.cs) and the corresponding .resx file have been added, exposing strongly-typed accessors for localized bitmaps such as ClearFiltering, ColumnFilterIndicator, Filtering, SortAscending, and SortDescending.
source/ObjectListView/Properties · high confidence
PortableSettingsProvider updated to version 1.2.1
The PortableSettingsProvider library has been updated to version 1.2.1, as reflected in the AssemblyInfo.cs file. This change updates the assembly version number, which may be required for compatibility or to align with broader project versioning.
source/PortableSettingsProvider/Properties · medium confidence
Refactored and expanded drive junk scanning with new scanners
The drive junk scanning logic has been refactored into distinct, specialized scanners: CommonDriveJunkScanner for general directory scanning, InstallLocationScanner for install locations, PrefetchScanner for Windows prefetch files, SpecificUninstallerKindScanner for uninstaller artifacts, UninstallerLocationScanner for uninstaller locations, and WerScanner for Windows Error Reporting reports. This change improves detection accuracy by separating concerns, adding prefetch and WER report scanning, and refining confidence calculations to reduce false positives.
source/UninstallTools/Junk/Finders/Drive · high confidence
Refactored junk confidence scoring into a modular, extensible system
The junk detection logic has been restructured to improve accuracy and maintainability. A new \ConfidenceCollection\ class now aggregates individual \ConfidenceRecord\ instances to calculate an overall confidence level, replacing the previous flat structure. The system now includes specific penalties for scenarios where junk might belong to a different but similarly named application (e.g., Chrome vs. Chrome Remote Desktop), reducing false positives. Additionally, the codebase was reorganized into separate files for generators, records, and the collection logic, with the \ConfidenceLevel\ enum and \ConfidenceRecord\ class moved to a dedicated \Confidence\ namespace.
source/UninstallTools/Junk/Confidence · high confidence
Refactored junk creator base class to improve stability and structure
The JunkCreatorBase class was introduced to centralize common logic for junk detection, including methods to check if directories are still in use by other applications and to safely create junk nodes. This refactoring consolidates shared functionality, reducing code duplication across specific junk finders and improving the overall structure of the junk scanning system.
source/UninstallTools/Junk/Finders · medium confidence
Refactored junk detection architecture with new interfaces and managers
The junk detection system has been refactored to use a new IJunkCreator interface and a central JunkManager. Scanners now implement IJunkCreator, which requires a Setup method and provides a FindJunk method that takes an ApplicationUninstallerEntry target. The JunkManager orchestrates scanning across all registered creators, collects results, and applies cleanup logic including duplicate removal, filtering out paths pointing to the application's own location, and excluding special system/known folders. The ProgramFilesOrphans scanner was also updated to use the new interface and includes improved confidence scoring based on file counts, directory depth, and publisher/name matching.
source/UninstallTools/Junk · medium confidence
Refactored junk result containers and interfaces
The junk scanning and result handling logic has been refactored to use a new set of container classes and interfaces. A new \IJunkResult\ interface and \JunkResultBase\ abstract class provide a unified structure for different types of junk, including \FileSystemJunk\, \RegistryKeyJunk\, \RegistryValueJunk\, \RunProcessJunk\, and \StartupJunkNode\. This change standardizes how junk items are represented, backed up, deleted, and displayed within the application.
source/UninstallTools/Junk/Containers · medium confidence
Refactored startup entry management and linking logic
The startup scanning and management code has been reorganized into a new \StartupEntryBase\ abstract class and a \StartupManager\ that coordinates various startup entry types (tasks, browser helpers, services). The manager now explicitly links startup entries to applications by comparing file paths against install locations, improving the accuracy of associating unregistered or linked startups with their corresponding applications.
source/UninstallTools/Startup · medium confidence
Refactored uninstall info adders into a modular, priority-based pipeline
The internal architecture for gathering application metadata has been restructured into a modular pipeline of specialized 'InfoAdder' classes (such as AppExecutablesSearcher, FastSizeGenerator, and MsiInfoAdder) that are automatically discovered and executed in a defined priority order. This change improves the reliability of detecting application executables, icons, and sizes, while ensuring that critical information is gathered in the correct sequence to prevent data loss or incorrect overrides.
source/UninstallTools/Factory/InfoAdders · high confidence
Regenerated Windows Forms designer code and resources for the main window
The Windows Forms designer-generated code and resource files for the main window (MainWindow) have been regenerated. This update refreshes the underlying UI layout, control definitions, and localized string resources for the UninstallerAutomatizer's primary interface, ensuring the visual design and translation files are synchronized with the current application state.
source/UninstallerAutomatizer/Forms · medium confidence
Regenerated form and control designer code
The form and control designer code in the Klocman.Forms namespace has been regenerated. This includes new or updated files for CustomMessageBox, LoadingDialog, and OverlaySplashScreen, along with their associated .Designer.cs and .resx resource files. This change updates the internal UI components and their layout definitions.
source/KlocTools/Forms · high confidence
Removed ListLegend and PropertiesSidebar controls
The ListLegend control, which displayed a color-coded legend for the application's list view, and the PropertiesSidebar control, which housed various filtering and view options, have been removed from the application. This change likely reflects a UI restructuring where these components have been migrated to new locations or replaced by different interface elements.
BulkCrapUninstaller/Controls · high confidence
Removed browser helper startup entry detection
The application no longer detects or manages browser helper objects (BHOs) as startup entries. This removes the associated registry scanning logic and related entry classes, meaning users will no longer see or be able to manage startup items associated with browser helper add-ons.
UninstallTools/Startup · high confidence
Removed global configuration class for uninstaller settings
The UninstallToolsGlobalConfig class, which previously centralized configuration for directory blacklists, questionable directory names, and program file paths, has been removed from the codebase. This change eliminates the static global state used to define which directories should be ignored or scanned during the uninstaller creation process, likely as part of the broader refactoring of the junk node and uninstaller creation systems.
UninstallTools · high confidence
Removed legacy UninstallList and UninstallListItem classes
The legacy UninstallList and UninstallListItem classes, which handled XML-based filtering and string matching, have been removed from the codebase. This change eliminates the old single-condition filter model, paving the way for the new multi-condition filtering system introduced in this series of commits.
UninstallTools/Lists · high confidence
Removed legacy Windows Forms designer files for several UI components
The auto-generated designer files and associated resource files for the AboutBox, DebugWindow, FirstStartBox, and JunkRemoveWindow forms have been removed from the BulkCrapUninstaller/Forms directory. This change eliminates the legacy Windows Forms designer code, likely as part of a broader refactoring to modernize the application's user interface implementation.
BulkCrapUninstaller/Forms · high confidence
Removed legacy configuration and entry point files
The application's legacy configuration file (App.config), solution file (.sln), and several core C\# files (CultureConfigurator.cs, EntryPoint.cs, Program.cs) have been removed. This cleanup eliminates the old settings storage mechanism and the previous application startup logic, streamlining the codebase for the new uninstaller creation system.
BulkCrapUninstaller · high confidence
Removed legacy filter editor and list editor controls
The old \FilterEditor\ and \UninstallListEditor\ user controls, along with their designer files and associated resource files, have been removed from the \UninstallTools/Controls\ directory. This cleanup eliminates the previous single-condition filter implementation, making way for the new multi-condition filtering system that supports column-based filtering and result inversion.
UninstallTools/Controls · high confidence
Removed legacy junk detection classes
The legacy junk detection classes (DriveJunk, RegistryJunk, StartupJunk, and their associated node and manager classes) have been removed from the codebase. This change eliminates the old implementation of scanning for leftover files, registry keys, and startup entries, likely as part of a larger refactoring to a new junk detection architecture.
UninstallTools/Junk · medium confidence
Removed legacy resource files from the project
The \UninstallTools/Properties\ directory has been cleaned up by removing the legacy \AssemblyInfo.cs\ file and all associated \.resx\ and \.Designer.cs\ files for localization (\Localisation.\\) and UI resources (\Resources.\\). This removes the old embedded resource and assembly metadata structures, likely as part of a broader migration to a modernized resource management or project structure.
UninstallTools/Properties · high confidence
Removed legacy settings and designer files
The application's legacy settings file (Settings.settings) and associated auto-generated designer files (.Designer.cs) for multiple languages (en, de, fr, pl) have been removed. This change eliminates the old settings storage mechanism, likely as part of a broader migration to a new configuration system.
BulkCrapUninstaller/Properties · medium confidence
Reworked uninstallation flow and application property gathering
The application's core logic for gathering app properties and managing uninstallation tasks has been restructured. The \Properties.cs\ and \Uninstaller.cs\ files have been renamed to \AppPropertiesGatherer.cs\ and \AppUninstaller.cs\ respectively, reflecting a more specific scope for these components. This change accompanies a broader reorganization of the project's source structure, moving files into a dedicated \source\ directory and refactoring the uninstallation workflow to improve stability and clarity.
source/BulkCrapUninstaller/Functions · medium confidence
Uninstaller Automatizer now requires administrative privileges to run
The Uninstaller Automatizer application has been updated to require administrative privileges for execution. This change ensures the tool has the necessary permissions to perform uninstallation tasks, addressing previous issues where the automatizer might fail or crash due to insufficient permissions.
source/UninstallerAutomatizer · high confidence
Updated Bulk Crap Uninstaller documentation
The Bulk Crap Uninstaller documentation has been updated to include information about the BCU-console, the Treemap feature, and the /sm switch. The manual also covers the 'Junk' removal switch, custom rules, scripts, and tweaks, and provides a better explanation of .bcul files.
doc · high confidence
Updated Startup Manager dialog translations
The Startup Manager dialog received updated and new translations for multiple languages, including Arabic, Czech, German, Spanish, French, and Hungarian. These updates ensure that all user interface elements, such as filter options, button labels, and context menu items, are correctly localized for users of those languages.
source/UninstallTools/Dialogs · high confidence
Updated Windows version compatibility and build configuration
The application now declares support for Windows 10 via updated OS manifest entries, and the build system has been restructured with a shared Directory.Build.props file that sets the target framework to .NET 8.0, enforces deterministic builds, and configures output paths and platform targets (AnyCPU, x64, x86, ARM64) for all projects in the solution.
source · high confidence
Updated and added localized strings for the crash warning dialog
The localized resource files for the crash warning dialog (Full.resx) have been updated for multiple languages, including Spanish, French, Hungarian, Japanese, Dutch, Portuguese (Brazil), Swedish, Turkish, and Ukrainian. The diff shows new or updated .resx files in the WinForms UI folder, containing translated text for the application crash warning message, ensuring users see the correct language-specific instructions for sending bug reports.
_source/NBug\custom · high confidence
Updated and added translations for multiple languages
The application's user interface text has been updated for Arabic, Spanish, Hungarian, Italian, Japanese, Dutch, and Brazilian Portuguese. These changes ensure that error messages, loading states, and UI prompts are correctly localized, improving the experience for non-English speaking users.
source/BulkCrapUninstaller/Properties · high confidence
Updated and added translations for the application's user interface
The application's localisation files have been updated with new and revised translations for multiple languages, including Arabic, German, Spanish, French, Hungarian, Italian, and Japanese. These updates ensure that the user interface displays correctly in the user's preferred language, improving the overall usability and accessibility of the tool for non-English speakers.
source/UninstallTools/Properties · high confidence
Updated button translations for Arabic, Czech, German, Spanish, French, Hungarian, and Italian
The localized string resources for the Tools section have been updated to provide translations for button labels in Arabic (ar), Czech (cs), German (de), Spanish (es), French (fr), Hungarian (hu), and Italian (it). These changes ensure that the user interface displays the correct language-specific text for common actions such as Add, Cancel, Create, and Delete in the respective tool dialogs.
source/KlocTools/Forms/Tools · high confidence
Updated license and added legal documentation
The project's license was updated to the full text of the Apache License, Version 2.0, replacing the previous abbreviated header. Additionally, new files were added to the repository: a \NOTICE\ file containing attribution and project information, a \PrivacyPolicy.txt\ detailing the collection of anonymous usage statistics and application ratings, and a \GlobalAssemblyInfo.cs\ file that was removed (indicating a shift away from global assembly attributes). These changes provide clearer legal terms and transparency regarding user data and project attribution.
(repo-wide) · high confidence
Updated translations for Arabic, Czech, German, Spanish, French, and Hungarian
The application's user interface has been updated with new and improved translations for Arabic, Czech, German, Spanish, French, and Hungarian. These updates ensure that error messages, file information labels, and time-related strings are correctly localized for users of these languages.
source/KlocTools/Properties · high confidence
Updated translations for the Universal Uninstaller component
The localization resources for the Universal Uninstaller have been updated with new and corrected translations for multiple languages, including Arabic, Czech, German, Spanish, French, Hungarian, Italian, and Japanese. These updates ensure that error messages, such as those for invalid arguments and deletion progress, are accurately displayed to users in their preferred language.
source/UniversalUninstaller/Properties · high confidence
Fixes
1 commit (1 fix) fixing installer/assets
A fix in installer/assets — 1 commit (1 fix), 4 files.
installer/assets · medium confidence · unverified
Fix crashes and stability issues in ObjectListView controls
This update resolves multiple stability issues within the ObjectListView component, addressing rare crashes during application list redrawing, virtual list checkbox interactions, and filtering operations. Specific fixes include handling InvalidOperationException on systems with unusual DPI settings, preventing crashes when quitting after sorting or changing filters, and ensuring checked applications are correctly recognized when filtered out. The changes also include cleanup of warnings and unnecessary accessors to improve overall code health.
source/ObjectListView · medium confidence
Improved startup entry management with new disable mechanisms
The startup management system has been refactored to support two distinct disable mechanisms: a 'New' method for Windows 8+ (using StartupApproved registry keys) and an 'Old' method for earlier versions (using backup files and registry keys). This change ensures that disabling startup entries is handled correctly based on the operating system version, preventing crashes and errors that could occur when scanning or modifying startup entries with malformed or invalid registry values.
source/UninstallTools/Startup/Normal · high confidence
Test coverage
Added unit tests for application list constants and startup argument handling; Added unit tests for core application components.
Dependencies
Migrated project files to modern .NET SDK-style format
The project files for all components—including the main application, helper utilities (Oculus, Steam, StoreApp, WinUpdate), and shared libraries (KlocTools, UninstallTools, etc.)—have been converted from the legacy MSBuild format to the modern SDK-style .csproj format. This change simplifies the build configuration, removes manual reference and item group definitions, and aligns the project structure with current .NET development standards.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 52 → 52 (-0.0)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 55 → 55 (+0.0)
- Architecture 95 → 95 (+0.0)
- Maturity 60 → 60 (-0.3)
- Readiness 47 → 47 (+0.0)
- Security 49 → 49 (+0.1)
Resolved (5)
- Off-boarding risk: anonymized user #1
- Off-boarding risk: anonymized user #2
- Off-boarding risk: anonymized user #3
- The README mentions the release page but does not state what variants of BCU exist (e.g. v6 vs v5) or how to help with a new feature. (README.md)
- redundant comment (source/KlocTools/Extensions/ProcessExtensions.cs)
New (7)
- High: security finding (details withheld)
- High: security finding (details withheld)
- LLM evaluation failed
- Off-boarding risk: anonymized user #1
- Off-boarding risk: anonymized user #2
- Off-boarding risk: anonymized user #3
- knowledge concentrated in recent work — freshness signal contradicted by repo activity
Changes since last survey
- 4 commits — 4 feature/other, 0 fixes
By area
- source/BulkCrapUninstaller — 3 commits
- installer/BcuSetup.iss — 1 commit
Notable commits
- change: Add Ukrainian language support (#965)
- change: Arabic language translation file update (#957)
- change: Install the setup-selected language even when Extra Languages is deselected (#969)
- change: Update Simplified Chinese translations (#964)
Architecture
- Unchanged — 10 containers · 0 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
BCUninstaller/Bulk-Crap-Uninstaller was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit eda8eee5037283ab56a03a7032cab6e4212537a5 — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.