No description
  • Go 97.2%
  • Shell 2.8%
Find a file
Max Fiedler 6f81e273aa Add ClusterNeat, a Win98-style disk defragmenter simulator
Go + Ebitengine desktop app that defragments an imaginary, randomly
generated late-90s drive: Select Drive dialog, simple and details views
with an animated cluster map, Legend and completion dialogs, in a
borderless retro window that moves, resizes and maximizes natively.
Release builds via scripts/build.sh (Windows resources, macOS .app).

Pre-commit gate: /qa 16x PASS, /security-audit 15x SECURE; review
warnings fixed. Deferred with sign-off (follow-ups):
- macOS CFBundleIdentifier is the placeholder local.clusterneat
- no automated tests for OS-driven mouse/drag/resize/maximize handling
- "Drive C" is hard-coded by design (the only imaginary drive)
- tools/mkicons keeps parallel kinds/sizes slices (style only)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 23:06:41 +02:00
assets Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
internal Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
packaging/macos Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
scripts Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
tools/mkicons Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
.gitignore Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
CHANGELOG.md Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
CLAUDE.md Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
go.mod Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
go.sum Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
main.go Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00
README.md Add ClusterNeat, a Win98-style disk defragmenter simulator 2026-10-20 23:06:41 +02:00

ClusterNeat

A disk defragmenter for a disk that doesn't exist.

ClusterNeat brings back the late-90s experience of watching tiny coloured boxes shuffle around a cluster map, in the style of the Windows 98 Disk Defragmenter. The drive is imaginary and randomly generated on every run, and nothing is read from or written to your real disks. It's a nostalgia piece, a screensaver, and a way to look busy.

Status: first playable version.

What you'll see

  1. Select Drive. A small dialog asks which drive to defragment. The dropdown has exactly one entry, Drive C — Physical drive. Under it are copyright lines from entirely real companies such as Microsquish Corporation, Semi-Antic Corporation and the Inertia Application Launch Decelerator. OK starts, Exit quits, and Settings… is shown greyed out.
  2. Simple view. The Defragmenting Drive C window has an animated icon, a progress bar that moves at a random pace, and N% Complete. Stop aborts and returns to Select Drive. Pause lets a write in progress finish, then freezes everything, and turns into Resume.
  3. Details view. Show Details enlarges the window to show the cluster map, a status line, the progress bar and the Stop / Pause / Legend / Hide Details buttons. The status goes through three phases:
    • Checking drive for errors…: the map is still empty.
    • Reading drive information…: the map fills up with the disk's clusters.
    • Defragmenting file system…: the actual show (see below).
  4. Legend. Explains the box colours, and the run carries on behind it while it's open.
  5. Done. Defragmentation of drive C is complete. Do you want to quit ClusterNeat? Yes quits. No returns to Select Drive, where OK starts over with a fresh random disk.

Each of these is a borderless window with a retro title bar. Drag the title bar to move it, _ minimizes and × quits. The details window can also be resized by its edges and maximized with □ or a double-click on the title bar, and the cluster map reflows to fill it. Legend and the completion dialog open inside the main window.

Every button works with the mouse or its underlined letter. Enter presses the outlined default button and Esc cancels. The mouse wheel, the scroll arrows (hold them to keep scrolling), a click on the track and dragging the thumb all move the cluster map, which goes back to following the activity after a few seconds.

The cluster map

Each box represents one disk cluster.

Box Meaning
Bright cyan Unoptimized data that belongs at the beginning (the bulk of the disk)
Grey-teal Unoptimized data that belongs in the middle
Dark grey Unoptimized data that belongs at the end
Blue Optimized (defragmented) data
White Free space
White, red corner Data that will not be moved
White, red hatch Bad (damaged) area of the disk
Green Data currently being read
Red Data currently being written

How the imaginary disk looks

Every run generates a new layout that looks like a well-used drive from around 1998:

  • Mostly bright cyan, with smaller amounts of middle and end data.
  • Always a few larger blocks of data that won't be moved (system files, the swap file).
  • Free space scattered as small gaps and a few bigger holes.
  • Bad clusters are rare and few, and most runs have none.

How the defragmentation plays out

  • Data is read (green) and then written (red). Sometimes that's a single cluster at a time, sometimes a whole chunk shown as several boxes at once.
  • Finished clusters turn blue. The blue region grows from the start of the drive.
  • Unmovable data and bad areas stay where they are, and the process works around them.
  • The pace is slow and uneven on purpose, like a 90s IDE drive, so a full run takes a good while.

Building

Needs Go (see go.mod for the version). ClusterNeat is built on Ebitengine and compiles to a single binary.

On Linux, install Ebitengine's system dependencies first (Debian/Ubuntu):

sudo apt install libc6-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev \
  libxrandr-dev libxxf86vm-dev libasound2-dev pkg-config

Then:

go run .                                   # run from source
go build -o dist/clusterneat .             # native binary

Release builds for all three platforms come from one script, best run on Linux (the Linux binary needs cgo; Windows and macOS are cross-built):

VERSION=1.0.0 scripts/build.sh
Output What it is
dist/clusterneat Linux binary
dist/ClusterNeat.exe Windows, with name, version and icon embedded
dist/macos/ClusterNeat.app macOS app bundle for Apple Silicon, with its icon

The macOS app is not signed or notarized, so Gatekeeper asks for confirmation the first time it opens (right-click → Open).

Disclaimer

ClusterNeat is a parody and is not affiliated with or endorsed by Microsoft, Symantec or Intel. It's inspired by the look of a 1998 utility but contains none of its code, artwork or fonts. Windows is a trademark of Microsoft Corporation.

The UI font is Pixel Operator by Jayvee Enaguas, released under CC0 1.0.