<?xml version='1.0' encoding='utf-8'?>
<rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0">
  <channel>
    <title>TouchGuard</title>
    <link>https://blog.hornmicro.com/TouchGuard/appcast.xml</link>
    <description>TouchGuard updates</description>
    <language>en</language>
    <item>
      <title>Version 2.0.0</title>
      <pubDate>Tue, 06 Oct 2026 16:51:04 GMT</pubDate>
      <sparkle:version>39</sparkle:version>
      <sparkle:shortVersionString>2.0.0</sparkle:shortVersionString>
      <sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
      <description>&lt;p&gt;A rewrite in Swift, with a menu bar app.&lt;/p&gt;
&lt;h3&gt;Added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Menu bar app with an on/off toggle, delay presets and a custom delay slider (50–1000 ms), a blocked-click counter, Launch at Login and a global shortcut (⌃⌥⌘T).&lt;/li&gt;
&lt;li&gt;First-launch onboarding that explains the permission and closes by itself once it's granted.&lt;/li&gt;
&lt;li&gt;Automatic updates with Sparkle in the download version.&lt;/li&gt;
&lt;li&gt;Developer ID signed and notarised DMG, and a sandboxed Mac App Store version.&lt;/li&gt;
&lt;li&gt;Shows when another app's secure input (a password field, a password manager or a terminal's Secure Keyboard Entry) stops TouchGuard from seeing typing, with a link to the fix.&lt;/li&gt;
&lt;li&gt;Diagnostic logging (&lt;code&gt;log stream --predicate 'subsystem == "com.hornmicro.TouchGuard"'&lt;/code&gt;). It records event types only, never which keys.&lt;/li&gt;
&lt;li&gt;Privacy manifest. TouchGuard collects no data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Needs Accessibility permission instead of &lt;code&gt;sudo&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The event tap is turned back on at once when macOS disables it, and a watchdog checks it every 2 seconds. Blocking no longer stops silently. If the permission is removed while it's running, the tap is removed instead of stalling input.&lt;/li&gt;
&lt;li&gt;A drag that started before you typed always gets its mouse-up, so it can't get stuck.&lt;/li&gt;
&lt;li&gt;The command-line tool keeps the 1.x options (&lt;code&gt;-time&lt;/code&gt;, &lt;code&gt;-nodebug&lt;/code&gt;, &lt;code&gt;-TapEnableMsg&lt;/code&gt;, &lt;code&gt;-TapDisableMsg&lt;/code&gt;, &lt;code&gt;-version&lt;/code&gt;) and is included in the app at &lt;code&gt;Contents/Helpers/touchguard&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Requires macOS 14 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Removed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The C implementation. It's kept in history under the tag &lt;code&gt;legacy-final&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://github.com/sjhorn/TouchGuard/releases/download/v2.0.0/TouchGuard-2.0.0.dmg" type="application/octet-stream" sparkle:edSignature="37PED5Whmzu6Jf+2iCmAREDzZZK7ayAL9JMISgUkGt/GDXszTQ5+1g2/+Z5q7rFaIzpX57ZcIWxCz4NaTVDGCA==" length="1420505" />
    </item>
  </channel>
</rss>