Releases: atomsbaza/VigilScreen
Release list
v0.3.4 — Multi-display panic overlay overhaul + no-flash safelisted switching
What's new in v0.3.4
Bug Fixes
- Multi-display overlay — external monitors now blur correctly on macOS Sequoia; root cause was wrong display height used for CG→AppKit y-flip
- Blur-to-hole flash eliminated — safelisted apps are always visible through holes during Panic Mode; switching to them is instantaneous with no full-blur frame
- Mask hole coordinates — corrected for setups where the primary and focused displays have different heights
- Chromium/Electron hole sizing — window bounds now sourced exclusively from
CGWindowList; AX was returning inner content views, producing undersized holes - CGEvent tap reliability — tap now survives system-initiated disables (timeout / user input); no-flash guarantee no longer silently degrades mid-session
- Run loop source leak —
CFRunLoopSourceis correctly removed on panic release; eliminates accumulation across repeated panic cycles - New display during panic — a monitor connected while Panic Mode is active gets safelisted-app holes immediately
Performance
- GPU blur pipeline pre-warmed at launch
- Per-app
CALayermask rebuilt on-demand viaCGWindowListonly (~1–3 ms) - 250 ms loop skips no-op ticks via rect-signature comparison
- Preemptive mask rebuild on click only fires for safelisted-app windows
Installation
Download VigilScreen-0.3.4.dmg below, open it, and drag Vigil Screen.app to Applications.
Or via Homebrew:
brew upgrade --cask vigil-screenv0.3.3 — Vigil Screen
New Features
- Panic Mode now mutes system audio on trigger and restores the prior mute state on release (toggleable in Settings → Panic Mode)
- Panic Mode now clears the clipboard on trigger — prevents bystanders from pasting recently-copied passwords (not restored, toggleable in Settings → Panic Mode)
v0.3.2 — Vigil Screen
Bug Fixes
- Fixed a crash on launch caused by duplicate UUIDs when merging local and iCloud lock history events
v0.3.1 — Vigil Screen
What's New
✅ iCloud Sync — now actually working
Settings, App Safelist, and Lock History sync automatically across all your Macs signed into the same iCloud account. The feature was claimed in v0.2.0 but the entitlement was missing — it silently no-oped on every launch. Now fixed.
Settings → General shows a live iCloud Sync status with connection indicator and last-synced time.
🍎 Apple Watch unlock
Apple Watch side-button double-press now unlocks Panic Mode alongside Touch ID and password. No new code needed — LAPolicy.deviceOwnerAuthentication already supported it. The toggle in Settings → Panic Mode has been renamed to "Require authentication to release" to reflect all three methods.
Enable in: System Settings → Touch ID & Password → Use your Apple Watch to unlock apps and your Mac
🔧 Internal
- Renamed
DockLock.entitlements→VigilScreen.entitlements(last file with the old name) - Added Claude Code project config (
.claude/settings.json,/releasecommand)
Install
brew upgrade --cask vigil-screenOr download the .dmg below.
Known Issues
- Secondary monitor connected after Panic Mode is already active won't have a blur overlay — re-trigger Panic Mode (
⌘⇧Ltwice) as a workaround. Fix planned for v0.3.2.
v0.3.0 — Vigil Screen
Vigil Screen v0.3.0 Release Notes
Highlights
- App renamed from DockLock to Vigil Screen
- New feature: Shoulder Surfing Detection — automatically triggers Panic Mode when someone looks over your shoulder
- Three Panic Mode bug fixes: fullscreen apps, Chromium browsers, Stage Manager
- Redesigned Panic Mode button with shortcut hint
New Features
Shoulder Surfing Detection
Vigil Screen now watches for uninvited viewers using your Mac's front camera — fully on-device, no uploads.
- Continuous face detection via Vision + AVFoundation
- Configurable sensitivity and minimum detection duration before triggering Panic Mode
- Auto-release: Panic Mode lifts automatically (no Touch ID required) once the threat clears for a set delay (3–30 s)
- Lock History records shoulder surfing events with a purple badge
- Toggle on/off in Settings → Shoulder Surfing
App Renamed to Vigil Screen
DockLock is now Vigil Screen — a cleaner name that better reflects what the app does.
Bug Fixes
Panic Mode — Fullscreen Apps Now Stay Visible
Safelisted apps running in fullscreen mode (their own macOS Space) were incorrectly blurred even when on the safelist. Fixed by detecting the AXFullScreen attribute and punching a full-screen hole in the overlay mask.
Panic Mode — Chromium Browsers Now Respected by Safelist
Chrome, Edge, Brave, Arc, and other Chromium-based browsers were always blurred even when added to the safelist. These apps have limited Accessibility API support so their windows weren't being detected. Fixed by adding a CGWindowListCopyWindowInfo fallback that works for all apps regardless of AX support.
Panic Mode — Stage Manager Stages Now Covered
When Stage Manager was active, app thumbnails on the left side were not covered by the blur overlay — they render above the overlay window level. Fixed by hiding Stage Manager during panic and restoring it on release.
Accessibility Permission Alert on Every Launch
The ⌘⇧L shortcut would silently fail after the first launch if Accessibility permission was off. Now a clear alert appears on every launch without permission, with a direct "Open Settings" button.
Improvements
Panic Mode Button Redesign
- Icon changed to
exclamationmark.shield.fillfor clearer intent ⌘⇧Lshortcut hint now visible directly on the button- Filled red background (pre-macOS 26) / red Liquid Glass tint (macOS 26+)
Installation
After granting Accessibility permission for the first time, quit and reopen Vigil Screen for the ⌘⇧L shortcut to activate.
- Download
Vigil Screen.dmgfrom GitHub Releases - Open the DMG and drag Vigil Screen to Applications
- Launch — right-click → Open on first run if macOS shows a security warning
- Grant Accessibility permission when prompted, then quit and reopen
Known Issues
| Issue | Status |
|---|---|
| Blur overlay not covering secondary monitors connected after Panic Mode is already active | Open — planned fix in v0.3.1 |
DockLock v0.2.1
Auto-lock your Mac on Bluetooth proximity + panic-hide sensitive apps with one hotkey.
What's New
🔧 Panic Mode — No More Overlay Flash on App Switch
- Switching from a non-safelisted app to a safelisted app no longer causes a blur flash
- Previously: the overlay briefly showed a wrong-sized hole (blur strip along the window edge) before correcting itself — caused by the app relaying out its window chrome (tab bar, traffic lights) during activation, making the cached AX rect momentarily narrower than the final rect
- Now: overlay alpha clears to 0 instantly on every app switch (suppressing macOS's implicit CA fade), then rebuilds the mask from the settled rect 70 ms later and fades back in smoothly over 180 ms
- Rapid back-to-back app switches cancel any pending reapply so no stale state accumulates
Bug Fixes
- Fixed: blur flash when switching from a non-safelisted to a safelisted app during Panic Mode
- Fixed: mask rebuild on activation could query AX mid-relayout, producing a hole too narrow for the app's actual window — now rebuilds only after the window has settled
Installation
- Download
DockLock-v0.2.1.dmgbelow - Open the
.dmgand drag DockLock.app to Applications - Launch from Applications — right-click → Open on first launch (see note below)
- 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.appNotarization is planned for a future release 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.xcodeprojRequires Xcode 16+ and Swift 6.0+.
What's Next
- 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
DockLock v0.2.0
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
NSVisualEffectViewwith 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
panicRequiresTouchIDandintruderCaptureEnabledare 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 (mirrorsstartRunning())
☁️ iCloud Sync (infrastructure — activates in v0.2.1)
CloudSyncStoreimplemented — routesNSUbiquitousKeyValueStoreexternal-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
capturePhotocalls no longer overwrite the completion handler
Installation
- Download
DockLock-v0.2.0.dmgbelow - Open the
.dmgand drag DockLock.app to Applications - Launch from Applications — right-click → Open on first launch (see note below)
- 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.appNotarization 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.xcodeprojRequires 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
DockLock v0.1.0
Auto-lock your Mac on Bluetooth proximity + panic-hide sensitive apps with one hotkey.
What's New
This is the first public release of DockLock.
🔒 Proximity Lock
- Auto-locks your Mac when your iPhone or Apple Watch goes out of Bluetooth range
- Automatically triggers Panic Mode before locking — apps stay hidden even if the screen is woken without authenticating
- Smart hysteresis prevents false triggers
- Customizable lock delay and RSSI signal threshold
🚨 Panic Mode
- One hotkey (
⌘+Shift+L) instantly hides Terminal, Xcode, VS Code, browsers, Slack, and more - Works on full-screen apps
- Touch ID required to release
- Fully customizable app blocklist
🎉 First-Run Onboarding
- Guided setup checklist on first launch — Accessibility, Bluetooth pairing, and blocklist status
- Up and running in under a minute
✨ Liquid Glass (macOS 26)
- Native macOS 26 Liquid Glass UI with graceful fallback on macOS 15–25
🔐 Privacy-first
- Fully local — no cloud, no analytics, no telemetry
- Pure Apple frameworks (CoreBluetooth, LocalAuthentication) — zero external dependencies
PrivacyInfo.xcprivacyincluded for notarization compliance
Installation
- Download
DockLock-v0.1.0.dmgbelow - Open the
.dmgand drag DockLock.app to Applications - Launch from Applications — right-click → Open on first launch (see note below)
- Grant Accessibility permission when prompted
⚠️ Gatekeeper warning: macOS will show a security warning on first launch since the app is not notarized yet. Right-click → Open → Open anyway, or run:xattr -cr /Applications/DockLock.appThis is standard for open-source apps distributed outside the App Store. Notarization is planned for v0.2.0.
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.xcodeprojRequires Xcode 16+ and Swift 6.0+.
What's Next (v0.2.0)
- Notarized release (no Gatekeeper warning)
- Menubar live stats (Bluetooth RSSI)
- Lock history log
- Homebrew Cask (
brew install --cask docklock)
Feedback
Found a bug? Open an issue
Have a feature request? Request here
Security issue? Email atomsbaza2@gmail.com