Release notes
Changelog
Why this starts at 1.1.6, not 1.0.0. Windows shipped feature parity with the Mac build's
1.1.6 milestone, so it takes that version number as its starting point instead of pretending the parity
work never happened. From here, Windows and Mac number their own releases independently: the Mac build has
already moved on to 1.2.0. The two builds share an engine design and a license key, not a version number.
Mac changelog →
1.1.6
Beta
August 18, 2026
First Windows release. Full feature parity with the Mac build's 1.1.6 milestone, rebuilt on Windows APIs, plus a handful of things the Mac has no equivalent for, and one thing this build does better.
The engine
- Office, ZIP & MSIX: docx, xlsx, pptx, zip, epub and Windows' own msix/appx packages bucketed into Media, Fonts, XML/content, Embedded objects and archive overhead by on-disk size, with the single biggest member named. Working fix: re-encode oversized PNG/JPEG media into a smaller copy. The file stays valid.
- PDF: image downsampling powered by
pypdf+ Pillow. Only raster image XObjects are re-encoded, while text, vectors, fonts and structure are copied through byte-identical, an even stronger never-rasterize guarantee than a re-render would give. Images carrying transparency are left alone, and duplicate identical streams are de-duplicated as a bonus. - Images: byte-exact split of pixel data vs an embedded preview vs the ICC color profile vs metadata, from the raw JPEG markers / PNG chunks. Working fix: re-encode at a strength you choose and strip the preview and metadata.
- Video & audio: pure-Python container parsers, with exact per-track byte accounting
from the MP4/MOV sample tables, an MP3 ID3-tag split that spots embedded artwork, and a WAV RIFF walk.
Drop an optional
bin\ffprobe.exenext to the app to extend coverage to AVI/WMV/MKV. Diagnosis only: the actual re-encode hands off to Squishr. - Windows programs (.exe/.dll) get a real breakdown, the PE-section X-ray: code vs
resources vs data vs the Authenticode signature vs any appended installer payload. Drop a
setup.exeand see exactly why it's 300 MB. No macOS equivalent. - MSIX/APPX app packages are analyzed like Office documents (they're ZIPs too), with a friendly label.
- NTFS alternate data streams: Heftr surfaces hidden stream bytes, like the
Zone.Identifierdownload marker, that File Explorer's size column never shows. - Folder mode carries over the interactive treemap, ranked list, drill-in and biggest-files
table, and adds two Windows-only safety nets: junction and symlink loops are never followed (so a
loop can't hang a scan or double-count it), and paths past the old 260-character limit are scanned via
the
\\?\prefix. - Sizes are formatted base-1024 to match File Explorer (the Mac build matches Finder's base-10).
Design & consistency
- Heftr now shares its palette, neutrals, text tiers, radii, spacing, type scale and motion with the
rest of the twoplus11 fleet, generated from the same
twoplus11-appkitdesign system as the macOS build, byte-identical rather than a lookalike. A test re-runs the generator and fails if the vendored copy drifts. - The accent is derived, not chosen: the filled-button color is walked until it provably clears 4.5:1 behind white text, rather than picked by eye.
- Segoe UI Variable throughout, replacing an inherited macOS font stack that silently fell back to the browser's generic sans on every string.
- The footer is now the canonical fleet action group (License → Updates → Help → Review → Tip → Shortcuts → twoplus11), matching every other Windows port, with the update-check badge and spinner living in one place instead of two.
- A new keyboard-shortcuts panel, reachable from the footer, names every binding
Heftr implements; a test cross-checks each entry against the real
keydownhandler so the panel can't advertise a key that doesn't exist.
Windows fit & finish
- Per-user install into
%LOCALAPPDATA%\Programs\Heftr: no UAC prompt, no admin rights. - Native WebView2 window with a DWM Mica backdrop, Windows 11 corner rounding, and a title bar that follows the app's light/dark setting.
- Taskbar and title-bar icon correctness verified from inside the running process, not assumed.
- Self-updates in place, the job Sparkle does on the Mac. Heftr downloads the new installer, verifies its signature and that its version matches what was advertised, installs over itself and reopens. Any failed check deletes the download and sends you to the download page instead. The Mac build still asks you to re-download by hand.
Language & accessibility
- 13 languages: English, Spanish, French, German, Italian, Portuguese (BR), Dutch, Polish, Russian, Turkish, Japanese, Simplified Chinese, Korean. The picker follows the Windows UI-language list (not just the formats locale) by default and can be pinned from the header. Because Heftr's headline copy (every breakdown label, note and verdict) is produced by the engine rather than the page, translation reaches all the way into it: switching language re-runs the current X-ray so what you're looking at changes with it.
- WCAG 2.1 AA: full keyboard path with a visible focus ring, correct roles and
accessible names, live-region announcements for anything async, and measured 4.5:1 text / 3:1 UI
contrast in both light and dark. Windows High Contrast (forced-colors) is honoured,
prefers-reduced-motioncancels transforms as well as durations, and the layout folds rather than scrolling sideways at 150% Windows text scaling. - Checked by 304 automated tests (engine, bridge, i18n, accessibility, theme) plus an axe-core sweep across 19 UI states in both color schemes.
Fixed in this build
- Files more than 260 characters deep could be found but not used. The folder scanner
already took the
\\?\long-path guard, but nothing downstream of it did, so a scan could list a deep file and then every way of acting on it failed. The guard now covers every read, write and existence check on a user-supplied path. - A smaller copy could overwrite one of your files. The sibling-naming logic picks a
free
(smaller)name by asking whether each candidate already exists, and past the old 260-character path limit that question could wrongly come back "no" for a file that was really there. Heftr's promise is that it only ever writes a new file next to the original; this closed the one path where that could fail. - The breakdown bar's reveal animation started from the center instead of the left edge, because its transform origin was declared only in the opening keyframe. Every reveal used to slide in from the middle and leave a visible gap for half a second.
- Several colors were below the accessible minimum and have been corrected: de-emphasized captions, white text on filled buttons, the update badge, control outlines, and labels painted directly onto the breakdown colors.
- Breakdown-bar segments and non-drillable treemap blocks no longer sit in the tab order as inert "buttons." They're decoration; the ranked list underneath is the real keyboard path, and drillable rows now respond to Space as well as Enter.
- Several controls carried an accessible name that replaced their visible text instead of extending it, so a voice-control user saying the words on the button would have failed to hit it. The longer explanation moved to the tooltip, where it belongs.
- Folder-scan progress is now announced to screen readers as it updates, instead of once at the start of a multi-minute walk.
- The analysis view now sits inside a proper
<main>landmark under a single<h1>, and the drag overlay is hidden from assistive tech instead of announcing itself from outside every landmark.
Known in this beta
- PDF file cards show no thumbnail: Windows has no built-in PDF renderer to ask. Image thumbnails work normally.
- This build is not code-signed yet, so SmartScreen will very likely warn on first run with an "Unknown publisher" line. See the install notes.
- No screen-reader pass with Narrator or NVDA has been done by a human yet. The accessibility work is tested structurally and audited with axe-core, but assistive technology hasn't driven the app end to end. If you use one, that feedback is the most valuable thing you could send.