Releases: caezium/burrow
Release list
Burrow 0.14.0
Burrow 0.14.0
The Touch ID helper now offers itself, and the reviewed clean says what it
removed instead of finishing silently.
Added
- Burrow offers the privileged helper. The helper that lets admin
operations authenticate with Touch ID shipped in 0.13.0 behind a single
button in Settings ▸ Advanced, and nothing pointed anyone at it —
upgraders learned about it from the release notes, fresh installs not at all.
It is now offered the way Full Disk Access is: one banner over the window,
informing rather than blocking. At most one notice shows at a time, and
dismissing the helper notice is permanent, because the helper is a
convenience rather than something Burrow needs to work.
Fixed
- The reviewed clean reports what it removed. It deleted exactly what was
ticked and then looked like it had done nothing. That path doesn't run the
engine's cleaner — it deletes each reviewed path withfind, which succeeds
silently, so the result screen had no output to show: no items, no freed
total, no done banner. It now reports the paths it was authorized to remove,
grouped by category with their sizes summed, which is a statement of fact
rather than optimism — the run only succeeds after confirming every planned
path is gone.
Nothing changed about what the reviewed clean deletes, or about the checks it
passes before deleting: this release makes it visible, not different.
Burrow 0.13.0
Burrow 0.13.0
Headings that rendered as empty boxes now render as text, and Burrow's MCP
server speaks the 2026-07-28 spec — without dropping any older client.
This release is mostly repair. The visible half fixes three things that were
easy to hit; the larger half is security and reliability work on the paths that
delete files and run as root, which you should never notice.
Added
- The scan tells you when it's done. A cache scan can run for minutes and
used to end by just sitting there with a number. It now posts a completion
notification saying what it found, honouring Settings ▸ Notify when long
operations finish. - Two more agent tools.
burrow_anomaliesandburrow_agent_auditjoin the
MCP surface.
Changed
- MCP now speaks the 2026-07-28 revision, including its task and
cancellation semantics. Older clients are unaffected: 2025-11-25 through
2024-11-05 are still served, and a client that skipsinitializeentirely
still works.
Fixed
- Headings rendered as empty boxes. Geist and Geist Mono shipped as single
variable fonts with only Regular registered, so every bold and semibold
heading asked macOS to derive a weight at render time — and sometimes it
produced no glyphs at all. Burrow now ships real static faces for every weight
it uses. - One bad exit no longer disables the menu bar until macOS updates.
- The window can be made smaller again — its minimum height is derived from
the sidebar rather than hardcoded. - "Stop after current" now responds. The stop was always queued, but nothing
on screen said so until the in-flight update finished. - The clean review no longer promises what closing an app can't deliver. An
entry the scan refused was counted in "Close X to clean another N" even though
no app was holding it — with no app named at all when it was the only locked
entry. - A cancelled app update no longer blocks later update checks for the rest of
the session. - Root operations can't interleave their output. stdout and stderr shared one
line buffer, which could splice half a line from one stream onto the other. - Update archives are size-capped before they're kept or expanded.
- Diagnostics reject more credential shapes before anything is uploaded.
Burrow 0.12.0
Burrow 0.12.0
Burrow's admin operations can now authenticate with Touch ID.
Until now every elevated action went through macOS's classic authorization
dialog, which is password-only by construction — it never offers Touch ID, and
it can't be cancelled safely. This release adds an optional signed helper that
replaces that path.
Added
- Touch ID for admin operations. Install the helper in Settings ▸
Advanced ▸ Privileged helper and Clean, Optimize, the admin scan previews,
Flush DNS, Renew DHCP, and the Login Items list all authenticate through the
system's normal prompt — which offers Touch ID where the hardware has it, and
falls back to your password everywhere else. - The Login Items list is now complete. Reading it needs root, so
previously macOS raised its own unexplained "sfltool wants to make changes"
prompt and still returned only a partial list. Through the helper it's one
prompt you recognise, and the full list.
What the helper can and cannot do
It is strictly opt-in, takes its own one-time macOS approval, and grants no
standing access — you authenticate for each operation you start.
It accepts seven fixed operations and builds every command line itself. There
is no field in its API for a path, a shell string, or an executable, so it
cannot be asked to run anything else. It runs the engine sealed inside the
signed app plus four Apple tools by absolute path, each as a separate process
with no shell involved. Only Burrow can talk to it: callers are pinned to the
app's bundle identifier and signing team by the system.
One honest caveat: the credential from your authentication stays valid for ten
seconds, because it has to survive the hop from the app to the helper. A second
operation begun inside that window won't prompt again. Full detail in
SECURITY.md.
Not installing it changes nothing — every operation keeps working exactly as it
does today, through the existing password prompt. You can remove the helper at
any time from Settings, or from System Settings ▸ General ▸ Login Items &
Extensions.
Changed
- Flush DNS no longer runs a root shell. It previously elevated
/bin/sh -c "dscacheutil -flushcache; killall -HUP mDNSResponder", handing a
command string to a shell running as root. It's now two separate processes
with fixed arguments. - Removed the "Touch ID for sudo" setting. It configured
pam_tidfor
terminalsudoand never affected Burrow's own admin prompts, which is what
people expected it to do. Those prompts are what the privileged helper now
covers. Nothing already configured on your Mac is changed by removing it; to
undo it yourself, runmo touchid disable.
Fixed
- A failed elevated run could report "Done — caches cleared" when nothing had
actually run. Failures now say so.
Burrow 0.11.2
Burrow 0.11.2
A system-metrics, updater, and launch-reliability patch. This release corrects
CPU sampling, stops expected Sparkle conditions from looking like product
defects, gives AppKit a settled launch turn before creating the menu-bar item,
and makes sampled app hangs reliably reach the issue tracker.
Affected macOS 27 beta users: please install 0.11.2 and report the result
in #319. The exact Beta 4
compatibility guard remains in place, and the issue stays open until a
notarized build is verified on a Mac that reproduced the freeze.
Fixed
- CPU usage now reflects a representative sampling interval. The bundled
engine keeps a tick baseline across refreshes, samples before the other
collectors fan out, and derives total usage from summed tick deltas. This
removes the roughly doubled readings and coarse per-core fractions reported in
#335. A cold one-shot status
command can take about 600 ms longer; ongoing GUI sampling reuses its existing
refresh interval and adds no wait. (#340) - Updater failures now mean what they say. Running from a disk image or a
translocated location, ordinary network failures, and user cancellation remain
measurable in PostHog without opening Sentry issues. Sparkle keeps ownership of
its native move-to-Applications and scheduled-retry UI. Configuration,
signature, installation, and unknown failures still create exactly one
scrubbed Sentry diagnostic per cycle. (#339) - The normal menu-bar path no longer races the first AppKit launch turn.
Burrow waits one second before creating its status item, then retains the
existing 30-second stability window. The safeguard for macOS 27 Beta 4 build
26A5388gremains exact-build-only; a later macOS build returns to the normal
guarded path automatically. (#339)
Improved
- App-hang evidence can no longer disappear at the Sentry bridge. Sampled
hangs are collected into bounded weekly GitHub digests instead of being
silently skipped. Cursor pagination reaches older unseen groups, full digests
roll into numbered parts, and deferred groups remain eligible for the next
run. (#339) - Launch and updater health now have explicit lifecycle outcomes. Fixed-name
scheduled, stabilizing, and stable milestones include bounded app release,
macOS build, launch phase, and status-item state, so future failures can be
separated without collecting free text or user data.
Privacy
- Telemetry remains optional, unlinked, and non-tracking. One Settings
switch disables both PostHog analytics and Sentry diagnostics. Updater
diagnostics contain fixed categories and bounded error domains/codes—never
descriptions, URLs, response bodies, network names, paths, screen content, or
files. The privacy manifest remains unchanged and accurate.
Security
- Publishing still fails closed, including the external Homebrew tap. Before
any release build begins, CI requires every signing, notarization, Sparkle,
and tap credential, then proves the tap token with a reversible Git
write. The tap credential is isolated from the engine checkout so a successful
notarized release cannot fail at the final cask push because the wrong token
was left in Git configuration.
Burrow 0.11.1
Burrow 0.11.1
A guarded-startup and diagnostics patch for the system-wide input freeze
reported on macOS 27 Beta 4. This release reduces the risky launch surface on
the affected build and records enough redacted state to isolate any remaining
failure without collecting screen contents or user files.
Affected macOS 27 beta users: please install 0.11.1 and report the result
in #319. The issue remains open
until the notarized release is verified on a Mac that reproduced the freeze.
Fixed
- The affected macOS 27 beta gets a safer launch path. On Beta 4 build
26A5388g, Burrow starts with a Dock icon instead of creating its menu-bar
status item. The fallback is deliberately limited to that exact build and is
retried after either Burrow or macOS changes. Manual update checks remain
available even when automatic Sparkle startup is paused. - Interrupted launches recover one component at a time. A durable launch
journal gives the status item and Sparkle separate 30-second stability
windows. If launch is interrupted, the next run suppresses only the component
whose window was active, shows a recovery alert, and offers a one-click
redacted diagnostic report. (#321)
Improved
- Sentry can now explain hangs that never become crashes. Release-health
sessions, hang tracking, low-memory context, fixed-name sampled performance
spans, and coarse launch/updater state cover the failure modes that a normal
crash report misses. Outbound data is scrubbed fail closed, with no
screenshots, view hierarchies, user paths, URLs, request bodies, or automatic
UI, file, database, and network tracing. - PostHog analytics no longer bring an AppKit-facing SDK into startup. Burrow
still sends the same opt-out semantic product, screen, and operation events to
PostHog, but a small background HTTPS transport replacesposthog-ios. It has
a bounded serialized retry queue and no session replay, autocapture, remote
feature flags, AppKit timer, or main-thread disk I/O. Existing 0.11.0 anonymous
identities are migrated once so release-to-release funnels remain accurate. - The first signed Sparkle successor passed a real update. An installed
Developer ID-signed 0.11.0 copy found, downloaded, installed, and relaunched
0.11.1 through Sparkle's native UI without Terminal or Homebrew. The updated
app then passed strict signing, stapler, and Gatekeeper checks, completing
#281.
Privacy
- Telemetry remains optional, unlinked, and non-tracking. One Settings
switch disables both PostHog analytics and Sentry diagnostics. The privacy
manifest continues to declare Product Interaction, Other Usage, Crash,
Performance, and Other Diagnostic data; this release adds no signing-specific
telemetry and records no screen content.
Security
- The release chain remains fail closed. The tag cannot publish unless the
app is Developer ID signed, notarized, stapled, accepted by Gatekeeper, and
both the update archive and appcast pass Sparkle signature verification.
Burrow 0.11.0
Burrow 0.11.0
Burrow's first Developer ID signed and Apple-notarized release. Gatekeeper can
verify the app before first launch, and official tags now fail closed instead
of publishing an unsigned or un-notarized build.
Upgrading from 0.10.5 or earlier changes Burrow from an ad-hoc identity to a
stable Developer ID identity. macOS may ask you to grant Full Disk Access one
final time; subsequent signed updates keep the same identity.
Improved
- Official downloads are trusted by Gatekeeper. The app and every bundled
executable carry a Developer ID signature, hardened runtime, secure
timestamp, and a stapled Apple notarization ticket. Direct-download users no
longer need to strip quarantine or use the right-click Open workaround. - Full Disk Access has a stable identity. Developer ID gives macOS one
consistent code identity across releases, so privacy grants can survive
normal updates after the one-time transition from an older ad-hoc build. - Privacy disclosures match the app. The bundled privacy manifest declares
Product Interaction, Other Usage, Crash, Performance, and Other Diagnostic
data as unlinked and non-tracking. Analytics and crash reporting remain
opt-out, and signing adds no telemetry. - Updates stay inside the trusted release chain. Burrow now uses Sparkle's
native UI. Automatic checks remain on by default, but downloads and installs
always wait for approval. BothBurrow-0.11.0.zipandappcast.xmlcarry
Ed25519 signatures that are verified before publication and again on-device.
This release proves that foundation; the first live 0.11-to-successor update
remains tracked in #281. - The bundled engine no longer rewrites the app. It updates only with a
signed Burrow release, preserving the Developer ID resource seal. Source
builds using an external engine still expose its manual updater.
Security
- A tag cannot publish a partially trusted build. The release stops before
publication unless signing, notarization, ticket stapling, strict code-sign
verification, Gatekeeper assessment, the Sparkle keypair match, and both
update signatures all succeed. A new release remains a draft until both
assets upload; a mismatched rerun fails signature validation closed. - Homebrew preserves Apple's security checks. Only after the notarized
artifact passes every gate does the workflow remove Burrow's legacy
quarantine bypass and unsigned warning from the live cask; it also marks the
caskauto_updates truebecause Sparkle owns future in-app updates.
(#312)
Burrow 0.10.5
Thanks for 1k stars btw! Bigger updates coming soon!
Burrow 0.10.5
Burrow's MCP tools, tuned against real agent transcripts. We audited how AI
agents actually used the tools in the wild — what they called, where they
stalled, and when they gave up and fell back to raw du/df — and fixed what
tripped them up (#302).
Improved
- One
burrow_analyzecall now maps disk hotspots. The engine reports one
directory level per run, which forced agents into a call per directory (a
real session made 15 in a row).analyzegainsdepth(descend into the
largest subdirectories),limit, andmin_size, emits compact JSON instead
of 35–60 KB pretty-printed blobs, and always reports what it pruned
(entries_omitted/omitted_bytes,partial: truewhen the descent hits
its time budget). (#303) - The slow tools now say they're slow.
analyze,clean,purge, and
installerdescriptions warn that big scans take minutes, so agents scope to
a specific folder instead of hanging past their client's patience and falling
back to shell commands. The agent docs and theburrow-system-toolsskill
now lead with the low-disk emergency playbook — the pattern that actually
fires in practice. (#303)
Fixed
- Killed runs no longer fail silently. A
burrow_cleanthat hit its time
limit rendered as{"exit_code": 9, "output": ""}— nothing an agent could
act on. Timed-out actions (and analyze) now returntimed_out: trueplus a
hint. (#303) burrow_cleanup_historyexplains itself. When engine history is
unavailable, the error now points atburrow_infoto check whether Burrow is
recording at all. (#303)
Burrow 0.10.2
Thanks for 1k stars btw! Bigger updates coming soon!
Burrow 0.10.2
A fix release. Three crashes are gone — the menu-bar popover, the streaming
task report, and a nil-font HUD metric — and the in-app updater no longer
silently reopens the same build when Homebrew won't upgrade in place.
Fixes
- No more menu-bar popover or streaming-report crashes. Two
EXC_BAD_ACCESS
faults inside SwiftUI's view graph — one in the menu-bar popover header
button, one in the live task report/ticker as a job streamed — are fixed by
keeping those view subtrees structurally stable across snapshot and scroll
updates instead of restructuring them mid-update.
(#299) - The menu-bar metric no longer crashes on a nil font.
NSFont.monospacedSystemFontis declared non-null but can transiently return
nil under memory pressure; that null reached CoreText and crashed at draw
time (Sentry BURROW-8Y). The metric widgets now fall back to the plain system
font — cosmetic at worst, never a crash.
(#290) - In-app update actually updates. When the cask "cannot be upgraded as-is,"
Homebrew prints a warning but exits 0 — so the one-click updater reported
success and reopened the same build. It now detects the refusal by message
and runs thebrew reinstall --forceHomebrew recommends.
(#287)
Burrow 0.10.1
Burrow 0.10.1
Three new panes, and Duplicates finally works on a clean Mac. This release
carries everything since 0.10.0 — the Leftovers, Similar Photos, and Network
panes, plus a batch of menu-bar HUD and sidecar fixes.
New panes
- Leftovers. Surface the files an app leaves behind after you delete it —
caches, preferences, application support, launch agents — and clear the
orphans. (#273) - Similar Photos. Cluster visually-similar images — near-duplicate
screenshots, burst shots, re-exports — by perceptual hash. Read-only: review
the sets, reveal anything in Finder.
(#273) - Network. Per-app bandwidth, so you can see what's talking to the internet.
(#273)
Fixes
- Duplicates works out of the box. The
fclonessidecar it relies on is now
bundled inside the app, so there's no more "fclones not found" on a clean Mac.
(#278) - Similar Photos is honest about HEIC. A folder of iPhone photos — HEIC,
which the scanner can't decode yet — now says "N HEIC couldn't be read"
instead of a bare, misleading empty result.
(#283) - Menu-bar HUD polish. The popover no longer drifts sideways and clips its
content, and the tool strip wraps into a grid instead of overflowing.
(#275,
#277) - No more ~2-second hang when opening the window or switching panes — tool
panes now mount lazily. (#274) - Homebrew-installed helpers resolve. A Finder-launched app now finds tools
on/opt/homebrew/binon its PATH, matching what you see in a terminal.
(#279)
Burrow 0.10.0
The conductor release. Burrow now ships its own command layer — the bundled
burrow CLI conducts the bundled engine with one stable JSON contract — plus a
brand-new Duplicates pane, and fixes for the sudo dialog, uninstall UX, and
Tune-Up display bugs you reported.
New: Duplicates
- Find what you've stashed twice. A new sidebar pane scans any folder for
byte-identical copies. Review them checklist-style — every group preselects
all but one copy, and always keeps at least one — then Move to Trash
(recoverable) or Reclaim via APFS clones, which frees the space without
deleting a single file. (#260,
#264,
#266)
The conductor
- Burrow bundles
burrow. A universal (Apple Silicon + Intel) conductor
CLI ships inside the app and drives the bundled engine — disk analysis,
status, history, clean, and optimize all route through it. Burrow now works
fully out of the box with no Homebrew engine install, agents and the GUI
share one command surface, and every path falls back to the direct engine so
nothing regresses. (#251,
#261,
#265) - Windows groundwork rides along: the Windows app bundles
burrow.exeand
parses the same envelope contract.
(#252)
Fixes
- The admin password dialog appears again. Uninstalling a root-owned app
(Zoom et al.) from the GUI failed with "Admin access denied" because the
engine permission-tested/dev/ttyinstead of opening it — GUI runs now get
the proper macOS password prompt.
(#253) - Failed uninstalls are actionable. The Software pane keeps your list and
selection and shows the engine's actual error, instead of silently rescanning
and pinging only the HUD.
(#254) - Tune-Up sizes render clean — no more raw
[0;31mcolor codes around the
reclaimable amount. (#257) - Analyze can't freeze on cache-heavy folders — per-child scans are
timeout-bounded and show partial results instead of stalling; the menu-bar
popover no longer rubber-bands into empty space.
(#256)
For agents
- 7 new read-only MCP tools through the bundled conductor — duplicates,
orphaned files, per-app network usage, cleaning-rule previews, trash
sentinel, app-slim check, similar photos — 21 read-only tools total.
(#258)
Windows preview
- Downloadable at last: this release ships
BurrowWin-0.10.0-win-x64.zip—
the unpackaged Windows app with theburrow.execonductor and the engine
bundled (unzip and runBurrowWin.exe; Windows 10/11, .NET 8 runtime). - The conductor, on Windows too: agent-triggered clean/optimize route
throughburrow.exewith the same envelope contract the macOS app speaks.
(#252) burrow.exegrew real Windows powers this cycle: Recycle-Bin safe
delete (never hard-deletes), guarded Bulk Crap Uninstaller uninstalls,
czkawka-backed duplicate + similar-photo discovery, provider-aware
OneDrive/Cloud Files eviction, and per-app network attribution via the
native IP Helper API.
Also
- Per-metric menu-bar text sizing with stable widths, and flipped net in/out
ordering. (#245) - The HUD popover re-pins itself when the menu bar auto-hides after opening.
(#223) - Self-update runs
brew updatebefore upgrading, so it actually sees new
versions. (#243)
Burrow 0.9.2
A stability and battery release — several fixes to Cleanup, Analyze, and the
menu bar, plus a round of performance work that makes Burrow noticeably lighter
when it's sitting idle in the background.
Fixes
- Purge works again. Cleanup → Project build artifacts was refusing every
removal ("Couldn't confirm the selection safely") because the engine renders
its list with items pre-selected — Burrow now toggles the difference so your
selection actually applies. (#231) - Analyze no longer floods the machine with engine processes. Superseded
scans are cancelled and concurrency is capped, so opening or refreshing the
Analyze tab won't peg your CPU with a pile ofanalyze-goprocesses.
(#232) - Camera/mic in-use indicator is honest. It no longer false-lights from
virtual audio/video devices (loopback, Camo, Teams, …) — e.g. playing audio
through a virtual device — and clears reliably when capture ends.
(#234) - Menu-bar popover stays put instead of flying to a screen edge, and sizes
to its own display on multi-monitor setups.
(#223) - Fewer spurious "App Hang" reports.
Performance & battery
- The metrics engine stops hammering the sensors when nothing is on screen.
It used to read the SMC temperature/fan and GPU counters ~once a second for the
whole time the app was running; those reads are now cached, and idle stream
frames are skipped when no window is open — a real battery win.
(#235, #237) - Bounded Analyze memory (walk/icon caches now evict).
(#236) - System probes (Doctor, disk SMART, Time Machine) are timeout-guarded so a
stuck system tool can't hang the pane; Doctor results are cached across reopens.
(#239) - Network-usage views share one sample instead of each running a 1-second scan.
(#238) - Smaller idle-timer and date-formatter cleanups.
(#240)
Under the hood
- Dead-code prune; the Homebrew cask no longer depends on a system
mole
(the engine has been bundled since 0.9.0).
Burrow 0.9.1
A quick fix for Intel Macs. In 0.9.0 the newly-bundled engine binaries were
built Apple-Silicon-only, so on Intel (x86_64) Macs Burrow could hang at
initialization (#221). The engine
(status-go / analyze-go) is now a universal binary (arm64 + x86_64) and
runs natively on both architectures. No other changes from 0.9.0.
Burrow 0.9.0
Burrow's biggest release. It now bundles its own engine — no separate mo
install — and adds an Activity-Monitor-class process inspector with a CPU
watchdog, a Get Online connectivity companion, a security-aware Doctor,
and smarter Clean, Software, Analyze, and Optimize across the board. Still
local-first, still free.
Engine
- Burrow bundles its own engine now. The app ships an MIT-licensed
burrow-engine(a fork of Molemoat its last MIT release) inside
Burrow.appand runs it directly — so a fresh install needs no separate
brew install mole. Burrow prefers the bundled engine, then an installed
burrow-engine, then a legacy systemmofor existing setups. (#218)
Process inspector (Status)
- Per-process inspector — click any process for a structured panel: identity
(path, code signature, Mach-O architecture), live CPU/memory, runtime, and the
process's open network connections. - Process tree — the parent/child hierarchy around any process.
- CPU watchdog — set per-process CPU thresholds and get notified when
something runs hot, with an ed...
Burrow 0.10.0
Burrow 0.10.0
The conductor release. Burrow now ships its own command layer — the bundled
burrow CLI conducts the bundled engine with one stable JSON contract — plus a
brand-new Duplicates pane, and fixes for the sudo dialog, uninstall UX, and
Tune-Up display bugs you reported.
New: Duplicates
- Find what you've stashed twice. A new sidebar pane scans any folder for
byte-identical copies. Review them checklist-style — every group preselects
all but one copy, and always keeps at least one — then Move to Trash
(recoverable) or Reclaim via APFS clones, which frees the space without
deleting a single file. (#260,
#264,
#266)
The conductor
- Burrow bundles
burrow. A universal (Apple Silicon + Intel) conductor
CLI ships inside the app and drives the bundled engine — disk analysis,
status, history, clean, and optimize all route through it. Burrow now works
fully out of the box with no Homebrew engine install, agents and the GUI
share one command surface, and every path falls back to the direct engine so
nothing regresses. (#251,
#261,
#265) - Windows groundwork rides along: the Windows app bundles
burrow.exeand
parses the same envelope contract.
(#252)
Fixes
- The admin password dialog appears again. Uninstalling a root-owned app
(Zoom et al.) from the GUI failed with "Admin access denied" because the
engine permission-tested/dev/ttyinstead of opening it — GUI runs now get
the proper macOS password prompt.
(#253) - Failed uninstalls are actionable. The Software pane keeps your list and
selection and shows the engine's actual error, instead of silently rescanning
and pinging only the HUD.
(#254) - Tune-Up sizes render clean — no more raw
[0;31mcolor codes around the
reclaimable amount. (#257) - Analyze can't freeze on cache-heavy folders — per-child scans are
timeout-bounded and show partial results instead of stalling; the menu-bar
popover no longer rubber-bands into empty space.
(#256)
For agents
- 7 new read-only MCP tools through the bundled conductor — duplicates,
orphaned files, per-app network usage, cleaning-rule previews, trash
sentinel, app-slim check, similar photos — 21 read-only tools total.
(#258)
Windows preview
- Downloadable at last: this release ships
BurrowWin-0.10.0-win-x64.zip—
the unpackaged Windows app with theburrow.execonductor and the engine
bundled (unzip and runBurrowWin.exe; Windows 10/11, .NET 8 runtime). - The conductor, on Windows too: agent-triggered clean/optimize route
throughburrow.exewith the same envelope contract the macOS app speaks.
(#252) burrow.exegrew real Windows powers this cycle: Recycle-Bin safe
delete (never hard-deletes), guarded Bulk Crap Uninstaller uninstalls,
czkawka-backed duplicate + similar-photo discovery, provider-aware
OneDrive/Cloud Files eviction, and per-app network attribution via the
native IP Helper API.