WinCleaner v0.8.0
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
scanandcleantake 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.logfor 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 ownexcludelist before
the scan and again before the clean, and go through the validation any
rules.tomlexclude goes through — a stored pattern that is not a valid glob
is refused exactly like a bad rule. Becausecleanre-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.tomlgains optional
label_fr,description_frandcategory_frfields (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.CleanReportonly
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
notespelling out the same distinction,rules[]withfiles_measured/
bytes_measured,totalswith the realfiles_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-testedsrc/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