Skip to content

WinCleaner v0.7.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 10:31

Added

  • Added a native rule for per-user Windows Error Reporting reports.
    windows.wer-reports clears %LOCALAPPDATA%\Microsoft\Windows\WER\ReportQueue
    and ReportArchive — the crash reports Windows queues and archives for this
    user, regenerated on the next crash and not user data. The machine-wide
    %ProgramData%\Microsoft\Windows\WER\* store is out of scope: no allowed
    variable resolves there. risk = medium, default_checked = false, same
    category and voice as windows.crash-dumps.

  • The interface speaks English and French. Every string the application
    writes itself now goes through a small typed dictionary (src/i18n/en.ts,
    src/i18n/fr.ts, keys typed from the English one, so a missing translation
    fails tsc): labels, buttons, toasts, the confirmation, the progress lines,
    the sandbox banner and every accessibility string. Settings gains a Language
    selector — System, English, Français — that follows navigator.language
    until it is touched, applies without a reload, is remembered in
    localStorage beside the theme and the update-check consent, and sets
    document.documentElement.lang. Sizes and counters are formatted for the
    locale (1.5 KB / 1,5 Ko). What stays English whatever the setting: the
    rule labels and descriptions, which come from rules.toml and from Winapp2,
    the "What's new" body extracted from CHANGELOG.md, the release notes
    GitHub returns, and this changelog.

Changed

  • Analyze scans its rules concurrently instead of one after another.
    commands::scan_rules_with used to walk the 84 rules of a full catalogue in
    a straight loop, so the wall time was their sum — dominated by a couple of
    slow ones (the Winapp2 catch-all, and the Recycle Bin's own OS call). It now
    runs them on a small worker pool (std::thread::scope, sized to
    available_parallelism capped at 8), each rule scanned by the exact same
    scan::scan_rule/scan_rule_with_api function as before. scan_bench
    (cargo run --release --example scan_bench in src-tauri), on this machine:
    26s cold / 17s warm before, 11.2s cold / 7.3s warm after — the warm run now
    lands almost exactly on the slowest single rule (7.3s total against a 7.3s
    Recycle Bin query) instead of their sum. The scan-progress event still
    fires once per rule with a running byte total, but the order it arrives in
    now follows completion rather than catalogue order; the result list handed
    back to the front end is unaffected, since it is reassembled by index after
    every rule finishes.

  • Measured the Recycle Bin batching gain: about 2.6x. The new opt-in
    benchmark (cargo run --release --example trash_bench in src-tauri)
    creates its own fixture files and times both strategies on this machine: one
    trash::delete per file ran at 77-80 files/s, matching the ~75 files/s seen
    on the real 77,000-file run that motivated the batching change; batches of
    500 through trash::delete_all ran at about 205 files/s, a 2.5x-2.7x
    speed-up depending on fixture size (2,000 and 5,000 files tested).

Installers are unsigned until SignPath signing is configured in the repository secrets — see docs/code-signing.md.
Full changelog: https://github.com/CaseReed/wincleaner/blob/main/CHANGELOG.md