Repository navigation
v4.9.6
4.9.6 - 2026-10-20
Highlights: Find, inspect and capture apps that re-exec themselves on launch, such as Xcode's Device Hub, whose PID AppKit reports as -1; report window close as closed when an app keeps the closed window alive or quits; use the Mac app's saved Vision model for image analysis; and keep the Mac chat's Stop button, follow-ups, transcript, menu bar and recent sessions reliable.
- See, inspect, list and capture apps that re-exec themselves on launch, such as Xcode's Device Hub, whose PID AppKit reports as -1, by recovering one verified live process with matching executable and application metadata. Thanks @lukemyself-hub! #1121, fixes #1119.
- Report
window closeas closed when the app keeps the closedNSWindowalive, such as Calculator's About panel: an off-screen WindowServer row no longer counts as the window remaining once Accessibility no longer exposes it. Thanks @jandubois! #1116, fixes #1106. - Report
window closeas closed when the owning process exits during close verification (for example the last window of an app that quits) instead of failing with a changed-identity error; a reused PID still counts as a replacement. #1109, refs #1106. - Use the Mac app's saved Vision model for screenshots and image analysis: a custom choice is written to
agent.visionModelinconfig.json(asprovider/modelId) and used bysee/analyzewhen no model is given, while "Same as agent model" removes it. Thanks @SebTardif! #1110. - Save the Mac app's Ollama base URL to
config.jsonso the CLI uses it, and clear it when reset tohttp://localhost:11434instead of restoring the old URL on the next launch. Thanks @SebTardif! #1104. - Keep the Mac chat's Stop button attached to the running task when you send follow-ups: follow-ups now queue behind the active task and run in order, Stop cancels the in-flight provider request and discards queued follow-ups, and a queued prompt stays with the session it was sent from. Thanks @SebTardif! #1095.
- Stop recording Mac chat prompts twice from the menu bar or queued follow-ups, stop appending a combined copy of the reply after multi-step runs, and title a new chat from its first prompt again. #1117.
- Open the chat you clicked under Recent Sessions in the Mac menu bar instead of the one already selected; that window can continue or retry its chat without first switching the menu bar's selection. Thanks @SebTardif! #1108.
- Keep the Mac menu bar's chat in sync with the conversation: new messages, streamed replies, generated titles and summaries now show up there, and deleting that chat no longer leaves it selected. Thanks @SebTardif! #1107.
- Keep the Mac app's chat history when
sessions.jsoncannot be decoded: move the unreadable file aside instead of overwriting it, save atomically, and show a notice while saves are blocked. Thanks @SebTardif! #1102. - Keep underscores inside words, such as
WINDOW_NOT_FOUNDorbrowser_wait_for, literal on the documentation site instead of rendering them as emphasis. Thanks @rudycelekli! #1112. - Move macOS CI and qualification jobs to Xcode 27 runners (except CodeQL Swift tracing), retain macOS 15 deployment and runtime-symbol checks, and smoke-test Intel artifacts under Rosetta.
Verification
Run: https://github.com/openclaw/Peekaboo/actions/runs/39500615980
Verified on xcode-27: arm64, x86_64 under Rosetta, and an independent arm64 runtime audit.
Toolchain and notarization submissions:
{
"schemaVersion": 1,
"repository": "openclaw/Peekaboo",
"tag": "v4.9.6",
"commit": "e08807d08c956471012b595a4d2bddb4dc8031ea",
"teamId": "FWJYW4S8P8",
"authority": "Developer ID Application: OpenClaw Foundation (FWJYW4S8P8)",
"toolchain": {
"build": {
"xcode": "Xcode 27.0\nBuild version 27A266a",
"swift": "Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)\nTarget: arm64-apple-macosx27.0.0",
"sdk": "27.0"
},
"sign": {
"xcode": "Xcode 27.0\nBuild version 27A266a",
"swift": "Apple Swift version 6.4 (swiftlang-6.4.0.34.1 clang-2100.3.34.1)\nTarget: arm64-apple-macosx27.0.0",
"sdk": "27.0"
}
},
"submissions": {
"dmg": "f175c24a-7494-474e-8af9-f4321de4f877",
"app": "490b0c0a-6118-4902-8149-c361755adda0",
"cli": "410e1d1b-906d-4bd8-8b26-b49d6acd1407"
},
"buildNumber": "4090699",
"edSignature": "gx8RpogTwwgXaXOyT9A6Qs8hwwEE7g0aRduHjQQkwIW9wJtpaHtmQhwHSQNAUDZRcJHjHTm/OD30uEufoL2MBQ==",
"digests": {
"Peekaboo-4.9.6.app.zip": "eab12d6ffa348de3b74e4f69ea420a63611ceab198a4aea81e1c166e7089eaed",
"peekaboo-macos-universal.tar.gz": "01bdd139b7b010630378bbf0e31f54f38fde4501a5805b2bf66b64521b7ceca2",
"Peekaboo-4.9.6.dmg": "26670b3cf3ecc064b0234e571d840d0405872f6d988802298ef91f0746fa3675",
"peekaboo-macos-x86_64.tar.gz": "57d67e844d381a796740f087c3f78ea070acfc6bfe6b53de81cb9ea02b980b05",
"peekaboo-macos-arm64.tar.gz": "5c7de67ba1505d95843e83c154856c9fb93b1d1c4ce626d66a8be0c6e265dc83"
},
"downloaderEntitlements": {
"bundle": "Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/Downloader.xpc",
"entitlements": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
}
}Checksums:
6bbdd3fa22260b9663ee2bf1c0eed26cbb5a520c53845bc4cddf3be32d0ec229 ASSET-INVENTORY.json
eab12d6ffa348de3b74e4f69ea420a63611ceab198a4aea81e1c166e7089eaed Peekaboo-4.9.6.app.zip
26670b3cf3ecc064b0234e571d840d0405872f6d988802298ef91f0746fa3675 Peekaboo-4.9.6.dmg
41c8ae1821dc354740c647e916ed5f1da6028119b280c0ecb1e4699618c0a7ac RELEASE-NOTES.md
336032ae9059982b7dbeaf1d6ca828728ffd775cd53f7ac9ff9c382def07e63a SIGNING-MANIFEST.json
350bf9f98607b28bf28578accdae691179769607a37592706cadc0b8d680688c appcast-entry.json
3be8b1d0e082f897be55ff81b181b280185f46f12e6b555b83d6a338c9d1eb6c appcast.xml
5c7de67ba1505d95843e83c154856c9fb93b1d1c4ce626d66a8be0c6e265dc83 peekaboo-macos-arm64.tar.gz
01bdd139b7b010630378bbf0e31f54f38fde4501a5805b2bf66b64521b7ceca2 peekaboo-macos-universal.tar.gz
57d67e844d381a796740f087c3f78ea070acfc6bfe6b53de81cb9ea02b980b05 peekaboo-macos-x86_64.tar.gz
80c17ac24406022beda0b4552aed1ec340cf7c48dc5d39ab35672c04107a68b1 steipete-peekaboo-4.9.6.tgz
npm
- Package: @steipete/peekaboo@4.9.6 (
latest) - Tarball: https://registry.npmjs.org/@steipete/peekaboo/-/peekaboo-4.9.6.tgz
- Integrity:
sha512-gdABsoIraXBkGjt6IAvOuS8tEDtr2s97MBZ/UN0BfnBJQ9DLUddfwLz9sQk18On8HEcOWOaPwRiFQ2ulRhMvMQ==; the registry tarball is byte-identical to thesteipete-peekaboo-4.9.6.tgzasset listed inchecksums.txt. - Homebrew:
openclaw/homebrew-tapformula updated to v4.9.6, with arm64 and x86_64 checksums matching the release assets.