Skip to content

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 22 Jul 18:00

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 explicit floating-rules entry asking for it to float.
    is_transient_empty_dialog (added to catch the input-source-switch HUD
    glyph) matched any WindowKind::Dialog with an empty title, but a
    Preferences/Settings-style window also reaches Dialog via
    classify_window_kind's zoom-but-no-fullscreen heuristic — and its
    AXTitle routinely 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_dialog now 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-titled WindowKind::Popup — the same ambiguous shape as an
    ordinary tooltip/menu, which normally defaults to Ignore. The user's own
    rule app-id="com.apple.systempreferences" floating-rules entry (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-rules config, the same way Finder's protected dialogs are.

Full changelog: CHANGELOG.md