Skip to content

DockLock v0.2.0

Choose a tag to compare

@atomsbaza atomsbaza released this 18 Apr 05:08
· 100 commits to main since this release
5000fe6

Auto-lock your Mac on Bluetooth proximity + panic-hide sensitive apps with one hotkey.


What's New

πŸ“Έ Intruder Capture

  • Automatically photographs anyone who fails a Panic Mode unlock attempt (wrong Touch ID or password)
  • Photo saved locally to ~/Pictures/DockLock Captures/ β€” never uploaded anywhere
  • macOS notification fires immediately so you know even when you're away from the desk
  • Thumbnail visible in History log β€” tap to view full-size
  • Toggle on/off in Settings β†’ Panic Mode β†’ "Capture photo on failed unlock"

🚨 Panic Mode β€” Safelist Model (redesign)

  • New safelist approach: blur covers everything; only your trusted apps stay visible and interactive above the blur
  • Previously hid specific apps (blocklist) β€” now blurs everything and keeps only safelisted apps visible
  • Default safelist: Terminal, Xcode, VS Code, Safari, Chrome, Slack, Notion
  • Add/remove apps via the + button or keyboard Delete key
  • Blur overlay uses NSVisualEffectView with CGContext bitmap masks punching transparent holes for safelisted windows β€” updated every 250ms so safelisted apps stay fully interactive
  • Full-screen apps on non-safelisted apps are automatically exited and hidden
  • Auth dialog appears above the blur β€” Touch ID + password fallback both work correctly
  • Overlay stays visible during authentication so nothing leaks while the dialog is open

πŸ“‹ Lock History

  • Full audit log of every lock event: Proximity Lock triggers, Panic Mode activations, and failed unlock attempts
  • Intruder Capture events show thumbnail with tap-to-enlarge
  • Clear history at any time (also deletes captured photos from disk)

πŸ“Š Menubar Live Stats

  • Live Bluetooth RSSI and lock countdown shown next to the menu bar icon
  • Toggle on/off in Settings β†’ General

πŸ” Security hardening

  • panicRequiresTouchID and intruderCaptureEnabled are local-only β€” cannot be changed remotely via iCloud
  • Intruder Capture events (failed unlock timestamps) are excluded from iCloud sync and stay on-device only
  • Fixed: duplicate Panic Mode observers when proximity lock triggered while already active
  • Fixed: AXValue force casts replaced with safe CFGetTypeID checks β€” no more crash paths that could leave the screen permanently blurred
  • Fixed: stopRunning() dispatched to background queue (mirrors startRunning())

☁️ iCloud Sync (infrastructure β€” activates in v0.2.1)

  • CloudSyncStore implemented β€” routes NSUbiquitousKeyValueStore external-change notifications to Settings, App Safelist, and Lock History
  • Non-security settings (panicShortcutEnabled, proximityLockDelay, proximityRSSIThreshold, showMenuBarStats) sync across Macs automatically once the entitlement is enabled
  • Activation requires the iCloud Key-value storage entitlement β€” available once the paid Apple Developer account is set up for notarization

Bug Fixes

  • Fixed: wrong password during Panic Mode release now correctly triggers Intruder Capture (previously only biometric failure triggered it)
  • Fixed: overlay would flash briefly when switching between apps during Panic Mode
  • Fixed: full-screen apps could sit above the blur overlay and remain visible
  • Fixed: clear() in Lock History now removes events from iCloud KV store (previously stale events could re-sync back after clearing)
  • Fixed: concurrent capturePhoto calls no longer overwrite the completion handler

Installation

  1. Download DockLock-v0.2.0.dmg below
  2. Open the .dmg and drag DockLock.app to Applications
  3. Launch from Applications β€” right-click β†’ Open on first launch (see note below)
  4. Grant Accessibility and Camera permissions when prompted

⚠️ Gatekeeper warning: macOS will show a security warning on first launch since the app is not yet notarized. Right-click β†’ Open β†’ Open anyway, or run:

xattr -cr /Applications/DockLock.app

Notarization is planned for v0.2.1 once the Apple Developer account is active.

Requirements: macOS 15 Sequoia or later Β· Apple Silicon or Intel


Build from Source

git clone https://github.com/atomsbaza/DockLock.git
cd DockLock
open DockLock.xcodeproj

Requires Xcode 16+ and Swift 6.0+.


What's Next (v0.2.1)

  • Notarized release β€” no Gatekeeper warning, Homebrew Cask (brew install --cask docklock)
  • iCloud Sync activated β€” Settings, App Safelist, and Lock History sync across all your Macs

Feedback

Found a bug? Open an issue
Have a feature request? Request here
Security issue? Email atomsbaza2@gmail.com