Repository navigation
v1.0.4
Added
Built-in trackpad suppression: Apple Internal Keyboard / Trackpad interfaces (which lack vendor/product IDs) are now enumerated and can be blocked like any external device
TCC denial detection: menu bar shows warning with device names when Input Monitoring permission is missing or stale, with button to open System Settings
About window showing app icon, version, build number, copyright, and GitHub link
Build script: --reset-tcc flag and menu option to reset Input Monitoring permission via tccutil
Automatic retry for failed device seizures (up to 3 attempts with escalating delay) for multi-interface touchscreens
Fixed
Blocked devices not suppressed on launch: IOKit reports success for seizure during initial enumeration but does not enforce it; seizure is now deferred until IOKit settles, with explicit run loop scheduling
Touchscreen input leaking through when blocked: HID matching only covered 3 specific digitizer usages, missing interfaces like Pen, MultiplePointDigitizer, and DeviceConfiguration; now matches the entire Digitizer usage page
Ghost touches caused by multiple Untouchable instances competing for exclusive HID seizure: new instance now terminates any existing instances on launch
Seizures silently lost after system sleep/wake: now re-seizes all blocked devices on wake notification
Blocked devices not re-seized on launch until user opens the menu (AppSettings was nil during initial enumeration)
Apple Internal Keyboard / Trackpad interfaces skipped when they lack the BuiltIn IOKit property; now also detects built-in devices by name prefix
Release script: version sync, signing identity, DMG codesigning, notarization status checking, and entitlements verification
Changed
HIDDeviceManager receives AppSettings at init for immediate seizure of persisted blocked devices
Built-in trackpad displays as "Built-in Trackpad" instead of "Apple Internal Keyboard / Trackpad"
HID log levels upgraded to notice (persisted) with public privacy for device IDs
Balanced Unmanaged.passRetained reference with explicit release in deinit
Removed
Dead DeviceRowView.swift (replaced by inline toggles in MenuBarView since v1.0.0)
Redundant LSBackgroundOnly key from Info.plist