Recommended install: brew install itsdezen/tap/tili —
Homebrew downloads via curl, which doesn't set macOS's
quarantine flag, so Gatekeeper never enters the picture.
The tarballs below are codesigned with tili's self-signed
certificate (hardened runtime) — see
CONTRIBUTING.md.
That's for a stable signing identity across releases (so
your Accessibility grant survives an upgrade), not for
passing Gatekeeper — a self-signed cert isn't notarized. If
you download tili.app directly from this page instead of
using Homebrew, Gatekeeper will still prompt on first launch:
right-click → Open, or xattr -d com.apple.quarantine tili.app.
Fixed
- Wake-grace used one fixed 90s timer for every wake, instead of tracking
how long reconnection was actually still happening — two symptoms, same
root cause. On a fast machine, everything after wake waited out the full
90s even once every app had long since reconnected. On a machine slower to
reconnect, an app that took longer than 90s to reconnect still got its
window wronglyfinalize_expired_removals'd as closed, then rediscovered
moments later and treated as brand-new — re-triggering a matching
workspace-rulesentry and silently jumping the active workspace (e.g.
entertainment → work).note_system_wakenow starts a capped debounce
instead of a flat timer: the grace window extends by 3s (proposed,
WAKE_GRACE_DEBOUNCE) each time a window visibly vanishes or reconnects
duringapply_windows_changed, capped at 180s from the wake instant
(proposed,WAKE_GRACE_MAX) — mirroring the existing
FULL_RESYNC_DEBOUNCE/FULL_RESYNC_MAX_INTERVALshape in
tili-ax/src/watch.rs.place_new_window's andreveal_frontmost's
auto-switch guards are unchanged in behavior, just now keyed off the same
debounced deadline. Both new values are proposals pending real-hardware
validation, the same way 90s itself was only confirmed correct after
several rounds of real sleep/wake testing.
Full changelog: CHANGELOG.md