WinCleaner v0.6.0
Fixed
- The browser warning now tells the truth about background processes. Closing every
Chrome window is not enough when "Continue running background apps" is on; the
banner used to say the browser was open. It now names the browser, counts its
processes, distinguishes a visible window from background-only processes, and
is refreshed every time Analyze is clicked. Closes #5.
Added
- The Clean has a progress bar of its own. Cleaning used to be a disabled
button reading "Cleaning…" for as long as the work took — thirteen minutes on
a measured run.cleannow emitsclean-progressas each rule closes and
every 500 files inside a rule, and the hero draws the same determinate bar as
Analyze: "Cleaning 3 / 9 · Temporary files", with the freed bytes and the
file count ticking up in the big-number position. The live region follows the
rules, not the files, so a rule deleting 59,000 of them is not read out a
hundred times over.
Changed
-
Recycle Bin mode is far faster: files go to the bin 500 at a time. Each
trash::deleteis oneIFileOperation, and its fixed cost — COM plumbing,
the shell's own progress reporting, one undo record — is what dominates a bin
full of small files: a real run measured about 75 files/s, so 59,000 files
took thirteen minutes. Onetrash::delete_allper batch of 500 divides that
by the batch. Thedeletable_pathguard still runs per file, immediately
before the file joins its batch, and a batch the shell refuses is retried one
file at a time soskippedstill names exactly what is still on disk.
Permanent mode is unchanged: oneremove_fileper file. -
Keyboard and screen-reader pass over the whole interface. The sidebar is
a namedMainlandmark with a roving tabindex — the arrow keys,Homeand
Endmove between the three screens, and it costs one Tab press to get past
instead of three; the theme toggle states which theme is on, not only what
the next press does. On Cleanup, each category header names the rows it
folds, each "Show the paths" names its rule and opens a named region, and the
confirmation takes the focus when it appears, cancels onEscapeand hands
the focus back to the Clean button. The scan announces itself every ten rules
and on completion — not on every rule, which would be hundreds of
interruptions — and the cleanup report, the sandbox verdict and the sandbox
banner announce themselves too. The reclaim gauge states its total and its
three largest rules in words. The startup table is named and every row toggle
reports its outcome. Nothing moved on screen: no layout, no wording, no test
id changed. -
Two measured contrast failures fixed. The focus ring on the controls that
carry no border — sidebar entries, category headers, paths triggers, the
search field, the mode selector — was drawn at half opacity (1.66:1 against
the card in the light theme) and is now solid (4.87:1). The Clean and Confirm
buttons wrote--destructiveon a wash of itself: 4.11:1 light, 3.75:1 dark,
2.87:1 hovered, all under the 4.5:1 body text asks for. A new
--destructive-foregroundtoken takes the worst case to 4.71:1 with the
fills untouched. Everything else measured clean,--muted-foreground
included (5.11:1 to 6.42:1 on every surface, both themes), and
src/theme-contrast.test.tsrecomputes all of it from the stylesheet so the
next nudge to a colour fails in CI. -
prefers-reduced-motionis now honoured app-wide, the shadcn transitions
and the loading spinners included, by one rule in the base layer rather than
a class to remember on each element.
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