Skip to content

v1.4.0

Choose a tag to compare

@scottlerch scottlerch released this 10 Jul 22:03

A performance-focused release: smaller installs, a responsive async load, a ~3× faster parser, and — the headline — every editing operation stays responsive on very large hosts files (~400K entries) in both editions.

Classic 1.3.2 → 1.4.0, modern 1.0.2 → 1.1.0.

Performance

  • Smaller installs — classic ~124 MB → ~53 MB; modern ~47 MB → ~29 MB.
  • Responsive load (#27) — the file is parsed off-thread behind a loading indicator, so a large hosts file no longer freezes the UI on startup (also on reload / archive-load).
  • ~3× faster parsing — a new allocation-light span parser replaces the regex at runtime (400K entries: 727 ms → 224 ms, ~6× fewer allocations). The regex is kept as a differential-test oracle.
  • Responsive editing at ~400K rows — Cut, Paste, Delete, Duplicate, Insert, Move, Enable/Disable-all, Select-All, Undo/Redo, and sorting no longer hang for minutes. Operations that previously froze the UI for 1–2 minutes now complete in milliseconds.

Classic (WinForms)

  • Fixed: clicking a column header (or editing with a sort active, or the archive list's startup sort) threw BadImageFormatException on .NET 10 — sorting now works (#67).
  • Fixed data loss: "Select-All → deselect one row → Delete" removed the excluded row (#68).
  • Column-header sort now preserves your row selection and current row.

Modern (WinUI 3)

  • New status bar showing line count and host-entry count, matching the classic edition (#71).
  • No more column flicker while a large file loads or on add/remove (#70).
  • Your row selection is preserved across Check/Uncheck and Duplicate.
  • Fixed rows bleeding past the bottom edge on very large lists (#72).

Both editions

  • Trailing-dot FQDN hostnames (e.g. Tailscale MagicDNS host.tailnet.ts.net.) now parse as entries instead of comments (#65 / #66).
  • Paste fixes: a lingering row clipboard no longer hijacks classic cell paste; the modern edition no longer inserts at the top of the file when nothing is selected (#69).
  • Assorted correctness hardening: unsaved-changes prompts after history-capped undo, stale checkbox visuals after undo, and cross-thread ping notifications.

Classic (portable, signed): download a zip below, unzip, and run — self-contained (no runtime to install), runs as a standard user, elevates on demand (one UAC prompt) only when saving. Modern installs and auto-updates from the Microsoft Store.