Skip to content

WinCleaner v0.8.0

Choose a tag to compare

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

Added

  • A file or a folder can be kept out of a rule for good, picked from the
    paths that rule actually found.
    "Show the paths" gains two actions on every
    line — Exclude this file, Exclude its folder — and Settings gains an
    Exclusions section listing what was kept out, with the rule it belongs to,
    the date, and a way to drop it again. The back end never receives a path: the
    command takes an index into the last analysis of that rule, the same reason
    scan and clean take only rule ids, and the same reason there is no
    free-form glob editor. What gets stored is a pattern written with the rule
    variables — %TEMP%\a\b.log for a file, %TEMP%\a\** for a folder — so the
    file carries no account name and survives a profile that moves; a path under
    none of the four allowed variables is refused. The list lives in
    %APPDATA%\WinCleaner\exclusions.toml, written through a temporary file and
    a rename so an interrupted write cannot leave a half-file behind, and under
    the sandbox root instead while a sandbox is active, so the sandbox stays
    isolated. The patterns are merged into the rule's own exclude list before
    the scan and again before the clean, and go through the validation any
    rules.toml exclude goes through — a stored pattern that is not a valid glob
    is refused exactly like a bad rule. Because clean re-walks each rule rather
    than trusting the paths the window is holding, a file excluded after the last
    Analyze is already spared by the clean that follows. A store that exists but
    cannot be read or parsed fails the scan and the clean outright rather than
    proceeding as though nothing were excluded.

  • The ten native rules now have French labels. rules.toml gains optional
    label_fr, description_fr and category_fr fields (Rule/RuleSummary
    in Rust, src/lib/rule-i18n.ts::ruleLabel/ruleDescription/ruleCategory
    on the front end, falling back to the English field when the French one is
    absent). A native rule is grouped, searched and announced under its French
    name when the interface is French — search still matches the English name
    too — including the "Analyze 3 / 85 · …" progress line, which now looks the
    label up by rule id from the loaded summaries instead of the (deliberately
    unlocalised) event Rust emits. Winapp2 (community) rules stay English, as
    documented in Settings.

  • The last cleanup report can be copied to the clipboard. "Copy report"
    puts a readable summary on the clipboard — app version, date, deletion mode,
    a total line of what Clean actually freed, the skipped paths if any, and
    per rule how many files and bytes the last Analyze measured for it plus
    its skipped count — in the current interface language. CleanReport only
    ever returns aggregate totals, never a per-rule breakdown, so the per-rule
    figures are explicitly labelled as measured rather than freed: a rule with
    a skipped file frees less than it measured, and the report says so instead
    of implying otherwise. "Copy as JSON" puts the same data on the clipboard as
    a stable, language-neutral object (version, generated_at, mode, a
    note spelling out the same distinction, rules[] with files_measured/
    bytes_measured, totals with the real files_deleted/bytes_freed, and
    skipped[]). Both reuse the clipboard mechanism already behind "Copy link"
    in Settings (navigator.clipboard.writeText, a success or failure toast)
    and build off a pure, unit-tested src/lib/report.ts. No file is written.

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