Repository navigation
MockTab 0.1.1
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
@Publishedgetters 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.xcstringsentries 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
InputInjectorinto aModifierMathmodule with unit tests, and migrated call sites. - Added regression tests for the IntuosV2 Bluetooth and CintiqV1 HID decoders.
- Replaced an unsafe
Boolatomicity assumption inInputInjector.isActivewithOSAllocatedUnfairLock. - Routed all
IOHIDDeviceSetReportcalls through a severity-tagged helper for consistent error handling and logging. - Replaced a force-unwrap in the HID thread with a guarded
fatalErrorthat reports the failing condition. - Wired
Info.plistversion fields to theMARKETING_VERSIONandCURRENT_PROJECT_VERSIONbuild 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.