Skip to content

Releases

Baby Lock 1.2.2

Choose a tag to compare

@github-actions github-actions released this 29 Oct 08:29

Baby Lock 1.2.2

Universal arm64 + x86_64, macOS 13+.

安全更新:更新包签名

  • Ed25519 签名 — 从 1.2.2 起,每个 Release 的 BabyLock-macOS.zip 都会附带 .sig 签名和 .sha256。App 内置公钥,安装前先验证签名;签名缺失或不匹配时不会安装。
  • 只信任 GitHub HTTPS — 下载地址会校验 https 和 GitHub 域名,重定向后的最终地址也会校验。
  • bundle 校验加强 — 除 bundle ID、版本号外,还会检查最低系统版本、解压目录边界和符号链接;复制到 /Applications 后会再次验证签名和版本,失败自动恢复旧版本。
  • 首次升级说明 — 1.2.1 自带的更新器还没有签名校验,所以 1.2.1 → 1.2.2 这一跳仍由旧版更新器完成。从 1.2.2 开始,之后的每次更新都必须通过 Ed25519 校验。想从第一次就使用签名校验,可以手动下载 1.2.2 并用下面的 SHA256/.sig 核对。

SHA256:

22eb9bb76ba6ece1fbf5abf46fdb05372e50a8af47c81e587d3fc655c273ab3a

签名公钥(Ed25519,base64):

6yX33wBdVhlOYROiJ8V+uonayrn2d3BN5Dm0EZhb714=

锁定修复

  • 电源键短按 — 锁定期间不再放行电源键短按,避免“按一下电源键 → 睡眠 → 唤醒后已解锁”。
  • 睡眠/合盖 — 系统睡眠或合盖后,唤醒时会自动重新进入锁定。
  • 显示器变化 — 插拔显示器/扩展坞不再解除锁定;黑屏覆盖会按新的屏幕布局重建。
  • 锁定期间的菜单 — 只显示“已锁定”和解除手势提示;Settings、Check for Updates、Quit 不再可点,避免关闭“屏蔽触控板”时孩子直接退出 App。
  • 设置窗口 — 开始锁定时会自动关闭已经打开的设置窗口。
  • 更新弹窗 — 锁定期间不再弹更新错误框;错误提示不会出现在黑屏后面。
  • 解锁计时器 — 解锁进度计时器改为 common run-loop mode,菜单或 modal 打开时也能完成解锁。

稳定性修复

  • 60 Hz 菜单重建 — 解锁进度不再每 1/60 秒重建整个菜单;菜单只在锁定/解锁状态真正变化时重建,并在菜单打开期间延迟重建。
  • 更新器管道死锁 — 不再先 waitUntilExit() 再读管道;输出写入临时文件并加超时,避免 ditto/codesign 输出过多时永久卡死。
  • 主线程阻塞 — 更新解压和校验移到后台任务,不再冻结界面。
  • 复制后校验/回滚 — 新 App 复制后再次验证签名和版本;失败会恢复旧版本。
  • 权限修复 — 重启脚本写入或启动失败时不再直接退出 App;tccutil 非零退出会记录。
  • PID 等待 — 安装/重启脚本的 PID 等待增加 60 秒超时,避免 PID 复用导致永久等待。
  • 单实例 — 增加 LSMultipleInstancesProhibited 和运行时检查,避免两个实例同时创建输入拦截。

限制

  • 重启、强制关机或强退后不会恢复锁定;锁定状态只保存在内存中。
  • 长按电源键 5–10 秒仍可强制关机,这是硬件逃生口。
  • 解锁手势显示在 HUD 上;会阅读的孩子可以学会,因此它不是防大孩子的强安全锁。
  • 外接键盘没有右 Command 时,解锁手势不可用;只能等待自动解锁或长按电源键强制关机。
  • 同一用户下的其他程序、Voice Control、屏幕共享、MDM 远程管理等不受保护。

安装

下载 BabyLock-macOS.zip,用 Release 里的 BabyLock-macOS.zip.sha256 和 BabyLock-macOS.zip.sig 核对,然后解压并把 Baby Lock.app 放到 /Applications。版本为 ad-hoc 签名;如果首次打开被 Gatekeeper 拦截:

xattr -dr com.apple.quarantine "/Applications/Baby Lock.app"

English

  • Ed25519-signed updates — every release now ships BabyLock-macOS.zip.sig and .sha256; the app pins the public key and refuses an update with a missing or invalid signature.
  • GitHub-only HTTPS — archive and signature URLs, including redirects, must be HTTPS on GitHub-controlled hosts.
  • Stronger bundle checks — minimum macOS version, extraction boundary, symlink rejection, and a post-copy signature/version verification with rollback.
  • First hop — the 1.2.1 updater does not verify signatures, so the 1.2.1 → 1.2.2 upgrade still uses the old path. From 1.2.2 onward, every update is signature-verified. Verify the SHA256/signature manually if you want the signed path from the start.
  • Power key — the short press is blocked while locked; holding the hardware power button for 5–10 seconds still forces a shutdown.
  • Sleep/display — the lock re-engages after sleep or lid close, and display changes rebuild the blackout instead of unlocking.
  • Locked menu — Settings, Check for Updates, and Quit are unavailable until the lock is released; an open Settings window closes when the lock starts.
  • Update alerts — no modal alerts over the lock overlay; the unlock progress timer now runs in common run-loop modes.
  • Stability — no 60 Hz menu rebuild, no wait-before-read pipe deadlock, installer work moved off the main thread, post-copy verification with rollback, relaunch failure handling, PID-wait timeouts, and a single-instance guard.
  • Limitations — reboot/force-quit does not restore the lock; the hardware power-button long press remains the escape hatch; the unlock gesture is visible on the HUD and is not a strong lock against older children; keyboards without a right Command key cannot use the gesture.

Baby Lock 1.2.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 06:43

Baby Lock 1.2.1

Universal arm64 + x86_64, macOS 13+.

修复

  • 权限重置 — 重置权限后不再同时弹出系统授权提示并自动打开系统设置窗口;现在只保留系统授权提示,由用户确认后进入设置。
  • 检查更新菜单项 — 修复菜单栏“检查更新”偶尔消失的问题;现在每次打开菜单都会重建该行,不需要重启恢复。
  • 启动检查更新 — 启动后的检查改为后台静默执行。没有更新时菜单保持“检查更新”,不会显示“正在检查更新…”;只有发现新版本时才直接显示“有更新 vX.Y.Z — 点击安装”。

English

  • Permission reset — no longer opens System Settings on top of the macOS permission prompt. The system prompt remains; the user chooses when to open settings.
  • Check for Updates row — the row is rebuilt on every menu open, so it no longer disappears until relaunch.
  • Silent launch check — the startup check no longer shows a checking state. The menu stays on “Check for Updates” when there is no update; only an available release changes the item.

安装

下载 BabyLock-macOS.zip,解压后把 Baby Lock.app 放到 /Applications。版本为 ad-hoc 签名;如果首次打开被 Gatekeeper 拦截:

xattr -dr com.apple.quarantine "/Applications/Baby Lock.app"

已安装 1.2.0 的用户可以直接用菜单栏的 检查更新 升级到 1.2.1。

Baby Lock 1.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 06:20

Baby Lock 1.2.0

Universal arm64 + x86_64, macOS 13+.

新功能

  • 多个豁免按键 — 锁定期间可同时保留多个独立按键。可添加 🌐 Fn、↩、⌃、C、V 等;组合键(如 ⌃C、⌃V)只需把每个键分别加入。
  • 一键绑定 Fn 键 — 输入法抢先拦截 Fn 时,点“绑定 Fn 键”即可加入豁免,无需进入录制流程。
  • 自动检查与安装更新 — 启动时检查 GitHub Release;菜单栏“检查更新”会原地显示“正在检查 / 未检测到更新 / 有更新”,无更新 3 秒后恢复。确认后自动下载、校验、替换并重启。

修复与改进

  • 权限重置 — 新增“重置权限并重试”,修复系统设置看起来已授权、但 ad-hoc 新构建实际未被信任的问题;更新后自动引导重新授权。
  • 权限页窗口尺寸 — 关闭 NSHostingController 的固有尺寸约束,并按实际内容测量权限页高度,消除大块空白。
  • 更新菜单 — 点击“检查更新”后菜单保持打开,可原地看到进度和结果。
  • 锁定 HUD — 浮动提示窗的阴影不再出现硬边。

English

  • Multiple exempt keys — keep several keys usable while locked; add each key of a shortcut separately (e.g. ⌃, C, V).
  • One-click Bind Fn key for input methods that intercept Fn.
  • In-menu update checks with checking / no-update / update-available states, followed by automatic download, verification, install, and restart.
  • Reset permissions and retry for stale TCC grants after ad-hoc builds and updates.
  • Content-sized permissions window and a clean HUD shadow.

安装

下载 BabyLock-macOS.zip,解压后把 Baby Lock.app 放到 /Applications。版本为 ad-hoc 签名;如果首次打开被 Gatekeeper 拦截:

xattr -dr com.apple.quarantine "/Applications/Baby Lock.app"

已安装 1.1.0 的用户可以直接用菜单栏的 检查更新 升级到 1.2.0。

Baby Lock 1.1.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:13

First Baby Lock release, based on CleanLock 1.0.2.

  • Default mode keeps your desktop visible and shows a compact floating unlock hint.
  • Optional full-screen blackout (off by default) for all displays or the main display only.
  • Optional trackpad and mouse blocking (on by default).
  • Five languages: English, 简体中文, 繁體中文, Français, Русский.
  • New app icon and menu bar icon.

Unlock: hold the left and right Command keys for 3 seconds.

This build is ad-hoc signed, not notarized by Apple. If macOS says the app is damaged, run:

xattr -dr com.apple.quarantine "/Applications/Baby Lock.app"