Skip to content

MockTab 0.1.1

Choose a tag to compare

@Cyzor Cyzor released this 16 May 01:50
· 934 commits to main since this release

MockTab 0.1.1 improves driver performance and user interface behavior.

New

  • Devices pane: better removal, rename, and undo behavior. Right-click a tablet row for "Remove from List…" to wipe all per-device state, double-click a row to rename it (Esc cancels), and undo restores either action.
  • SF Symbols throughout the menus. Profile and app-override action menus now use system icons for a more native feel.

Improvements

  • HID hot path is leaner. The driver no longer allocates a Swift Task per HID report when MockTab itself is backgrounded, and a few @Published getters that were running on the 200 Hz path have been removed. Pen latency should be slightly lower under load.
  • View menu reflects the actual tab visibility state. "Show Tab Bar" / "Hide Tab Bar" now toggle their label to match the current window.
  • UI: German localization spelling corrections

Fixes

  • Factory Reset visibility. The menu item could be hidden in some states; it's now reliably available.
  • Broken GitHub URLs in the README. Corrected paths to in-repo notes and references.
  • Stale localization keys. Removed orphaned Localizable.xcstrings entries left behind by earlier UI cleanup.
  • iWork text selection is more reliable. But header/footer editing remains a known limitation with workarounds like right-clicking or mapping a barrel button to double clicking.

Internal

  • Extracted modifier-flag math out of InputInjector into a ModifierMath module with unit tests, and migrated call sites.
  • Added regression tests for the IntuosV2 Bluetooth and CintiqV1 HID decoders.
  • Replaced an unsafe Bool atomicity assumption in InputInjector.isActive with OSAllocatedUnfairLock.
  • Routed all IOHIDDeviceSetReport calls through a severity-tagged helper for consistent error handling and logging.
  • Replaced a force-unwrap in the HID thread with a guarded fatalError that reports the failing condition.
  • Wired Info.plist version fields to the MARKETING_VERSION and CURRENT_PROJECT_VERSION build settings so the plist can no longer drift.
  • Added tools/release-and-publish.sh — the one-button DMG + notarize + draft-release script that built this release.

Compatibility

  • Same hardware support as 0.1.0. macOS 13.0+. Universal binary.
  • Settings, calibration data, and per-app profiles carry over from 0.1.0 with no migration required.