Skip to content

Releases: frankieg33/fade

v1.0.2

14 May 02:12
c6eb14b

Choose a tag to compare

What's Changed

  • fix(ui): force full repaint when re-showing settings from tray by @frankieg33 in #3
  • fix(ci): harden release workflow against action supply-chain compromise by @frankieg33 in #2
  • chore(release): v1.0.2 by @frankieg33 in #4
  • Fix disabled rules, window geometry validation, and privacy logging by @frankieg33 in #5
  • fix(monitor): skip modal/owned windows and their parents by @frankieg33 in #6
  • fix(winapi): add Win32_UI_Input_KeyboardAndMouse feature for IsWindowEnabled by @frankieg33 in #7

Full Changelog: v1.0.1...v1.0.2

v1.0.1

06 May 19:11

Choose a tag to compare

Full Changelog: v1.0.0...v1.0.1

v1.0.0

25 Apr 19:33

Choose a tag to compare

The first stable release. Fade is a Windows tray app that automatically minimizes or closes inactive windows after configurable per-app or per-bucket timeouts.

Highlights

  • Bucket groups — pre-baked categories (Browsing, Communication, Media, Development, Gaming, Utilities) that manage many apps with one timeout. Per-app rules override bucket rules.
  • Brand-accurate icons — recognizes ~25 common apps including Chrome, Firefox, Slack, VSCode, Steam, Spotify, Discord, plus AI tools (Claude, OpenAI Codex, Cursor, Antigravity). Falls back to themed glyphs for everything else.
  • Activity tab — see what's currently being tracked with idle times, and a rolling 100-entry log of actions Fade has taken.
  • System tray — runs silently. Right-click for show/pause/quit. Closing the window hides to tray, doesn't quit.
  • Real-time foreground tracking — a Win32 SetWinEventHook keeps idle timers current without waiting for the next poll.
  • Search + reorder + custom icons — searchable glyph picker, drag-free reorder via kebab menu, inline rename for groups.
  • Auto-start with Windows is a one-click toggle.
  • Portable — config (fade.toml) lives next to the executable; no installer.

Reliability work that shipped late in the cycle

  • Idle-window staleness fix: the Slint software renderer was keeping a stale framebuffer after long idle, requiring a hover to repaint. A redraw-tick property + invisible sentinel now forces a clean repaint every 2 s.
  • Foreground-timestamp HashMap was insert-only (real memory leak). Now retained per poll to running processes only.
  • polling_interval_secs is clamped [1, 3600]; rule timeouts clamped [1, 10080] minutes — out-of-range hand-edits or legacy values get auto-corrected on load.
  • Corrupt config files are preserved as fade.toml.corrupt-<unix_ts> before falling back to defaults, so no settings get silently lost.
  • 35 GUI callbacks were silently discarding config save errors; they now log via log::error!.
  • process_start_time queried via GetProcessTimes with a first_seen fallback when the process is protected and the call returns access-denied.

Install

Download fade-v1.0.0-windows-x86_64.zip below. Unzip somewhere stable and run fade.exe. The settings window opens once on first launch — afterwards Fade lives in the tray.

Build from source

Cross-compiles from Linux/WSL via mingw-w64:

sudo apt install mingw-w64 pkg-config libfontconfig1-dev
rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnu

Tests run cross-platform: cargo test (52 tests, Win32 isolated behind a WindowApi trait + mock).

Credits

Brand icons bundled from simpleicons.org (CC0) and Tabler Icons (MIT). See assets/icons/LICENSES.md in the release zip for full attribution.

Inspired by Quitter by Marco Arment.

Full Changelog: https://github.com/frankieg33/fade/commits/v1.0.0