Skip to content

v4.9.6

Choose a tag to compare

@github-actions github-actions released this 20 Oct 22:04
· 29 commits to main since this release
v4.9.6
e08807d

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 close as closed when the app keeps the closed NSWindow alive, 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 close as 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.visionModel in config.json (as provider/modelId) and used by see/analyze when no model is given, while "Same as agent model" removes it. Thanks @SebTardif! #1110.
  • Save the Mac app's Ollama base URL to config.json so the CLI uses it, and clear it when reset to http://localhost:11434 instead 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.json cannot 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_FOUND or browser_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 the steipete-peekaboo-4.9.6.tgz asset listed in checksums.txt.
  • Homebrew: openclaw/homebrew-tap formula updated to v4.9.6, with arm64 and x86_64 checksums matching the release assets.