v0.5.2
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
- A Preferences/Settings-style window (e.g. System Settings' own main
window) could be force-Ignored instead of floating/centering, even
with an explicitfloating-rulesentry asking for it to float.
is_transient_empty_dialog(added to catch the input-source-switch HUD
glyph) matched anyWindowKind::Dialogwith an empty title, but a
Preferences/Settings-style window also reachesDialogvia
classify_window_kind's zoom-but-no-fullscreen heuristic — and its
AXTitleroutinely reads empty at the exact moment tili scans it,
before AX has populated it. That race got it misidentified as the
transient HUD glyph and force-Ignored, overriding the user's own
config.is_transient_empty_dialognow also requires the window to have
no zoom button, which the HUD glyph never has but a Settings-style
window always does. - System Settings' search-suggestions dropdown (shown while typing in its
search field) was floating and centering instead of being left alone.
Confirmed via diagnostic logging it's a borderless, chrome-less,
empty-titledWindowKind::Popup— the same ambiguous shape as an
ordinary tooltip/menu, which normally defaults toIgnore. The user's own
rule app-id="com.apple.systempreferences"floating-rulesentry (meant
for the app's real Preferences windows) has no way to exclude just this
one auxiliary window, and an explicit rule always wins over the
kind-based default. Now force-Ignored unconditionally, regardless of
floating-rulesconfig, the same way Finder's protected dialogs are.
Full changelog: CHANGELOG.md