Repository navigation
4.9.8 - 2026-11-05
Highlights: Select files in Open panels with dialog file and stop typing filenames into Search; keep exact-window clicks and window focus working when another running app shares the target's name; find exact windows that an app exposes only through its focused or main window; make window focus fall back to Accessibility when macOS declines activation; and start MCP and Agent runtimes when another process owns the capture lane without a Bridge.
- Select files in Open panels with
dialog file, using--path <file>or--path <dir> --name <file>: the full path goes through Go to Folder and the selection is verified before confirming, and a missing file is refused before any input. Open panels have no filename field, so this could not work before. Thanks @realchrisbarnes for the report! #1158. - Refuse filename entry into Search, Filter, Tags, or Comments controls in file dialogs, with an actionable error when no safe filename field is available. Thanks @goutamadwant! #1159, refs #1158.
- Keep exact-window clicks and
window focusworking when another running app shares the target's name, instead of refusing with an unknown focused window or "Multiple apps match". Focused-window lookups now use the exact process and report only the window Accessibility says is focused, so a click refuses instead of trusting a ranked guess, and its refusal keeps the lookup error. Thanks @Amogusto! #1161. - Make
window focusfall back to an Accessibility activation request when macOS declines the native one, as it can for apps launched from a shell, instead of timing out. Exact focus is still verified afterward. Refs #1161. - Find exact windows that an app exposes only through its focused or main window, such as Figma when
AXWindowscomes back empty, while retaining exact window-ID and owner checks. Thanks @YarikMix! #1154. - Start MCP and Agent runtimes when another live Peekaboo process owns the ScreenCaptureKit lane without a reachable Bridge socket, instead of exiting 1 before the JSON-RPC handshake. Capture-capable tools keep the
CAPTURE_FAILEDrefusal for the session while noncapture tools remain usable. Thanks @chenyuhao0628! #1146, fixes #1145. - Clarify exact-window target-changed errors with unavailable identity versus changed components and whether validation failed before the operation, after capture, or after the operation. #1151.
- Wait 250ms instead of 150ms before restoring the previous clipboard after a temporary paste, and document that restoration is time-based: an app that reads the clipboard later than the restore delay can paste the previous contents, so raise
--restore-delay(MCPrestore_delay_ms) for slow receivers. #1140, refs #1111. - Keep duration labels inside the unit they claim: 59.95s now reads
1m 0sinstead of60.0s, 0.9995s reads1.0sinstead of1000ms, and non-finite or out-of-range durations read "an unknown duration" instead of trapping. Thanks @rudycelekli! #1149. - Say that no windows are available when a window index is requested from an app without windows, instead of
Available windows: 0--1. Thanks @rudycelekli! #1150. - Docs site: render Markdown images and task-list checkboxes, restore the missing smart-select metadata table cells, keep URL schemes inside highlighted code strings, point source links at the repository, and show read-when hints without YAML quotes. Thanks @rudycelekli! #1141, #1142, #1143, #1144, #1147, #1148.
- Update Swift Log to 1.16.2 for in-place metadata writes and Swift Configuration to 1.4.0, preserving the Swift 6.2 and macOS baselines.
- Run main CodeQL analysis on the existing weekly schedule instead of every push, preserving PR scans and independent manual runs.
Verification
Run: https://github.com/openclaw/Peekaboo/actions/runs/42116177681
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.8",
"commit": "70dbc4183f390a5a72d5dc01d8a77eb672217070",
"teamId": "FWJYW4S8P8",
"authority": "Developer ID Application: OpenClaw Foundation (FWJYW4S8P8)",
"toolchain": {
"build": {
"xcode": "Xcode 27.1\nBuild version 27A9275",
"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.1\nBuild version 27A9275",
"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": "63553cc2-2595-4808-9d43-a43213367f96",
"app": "bc5beea1-f97a-4e50-acfc-e4b640d5342a",
"cli": "fc0b529c-74e7-4380-895d-431be3ecea30"
},
"buildNumber": "4090899",
"edSignature": "owrPIc/oz76hVIMc4PNEwuyUcA7sKgzThcVILcuRtSi5ZJvf6/GfLNH5E9gx7ixpjXWpVp6rE0hgW41wOhaXAQ==",
"digests": {
"peekaboo-macos-universal.tar.gz": "88823bb39e16c744c43ffd94c18c3773cd2f7c05bc7843e6e1e2e5da58b9ce76",
"Peekaboo-4.9.8.dmg": "fcbba5643b425fc7cc337a2a94665480c4d3887f003c9813deb89e17dc34928c",
"Peekaboo-4.9.8.app.zip": "1b824ec0fea11836a2394ab550bee4e9517b7dabda8ef93700ebeb4263a4a528",
"peekaboo-macos-x86_64.tar.gz": "7792ac5f4cefbd4473c2766d4905ceb486df8da4aa270399cda214b0f4bed877",
"peekaboo-macos-arm64.tar.gz": "5b82b246cd7b257b68d15e136a8234848a8e70a5999cdf5526993fb860685bfe"
},
"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:
aa807c1f426ce2e6a12bf8edbce1e3666736102c07b201343c9269960d1c2827 ASSET-INVENTORY.json
1b824ec0fea11836a2394ab550bee4e9517b7dabda8ef93700ebeb4263a4a528 Peekaboo-4.9.8.app.zip
fcbba5643b425fc7cc337a2a94665480c4d3887f003c9813deb89e17dc34928c Peekaboo-4.9.8.dmg
6cc71bf3639a7ee98d9017351a7a6fbea1b79d99bcea511ff3df6863b3dd06dc RELEASE-NOTES.md
3debbce3203329687e4d6dd55d11453a04ac2f39cd06e55d0b44ec4c8f389521 SIGNING-MANIFEST.json
6a07729b7ad3004a7730d7ec1aac95d5a9c697efa0fa450e107c7b1a3207e2be appcast-entry.json
16a04c20b8f6314acf71013897b76fff2695e664fe3de1889e7fd7701bd8c1b5 appcast.xml
5b82b246cd7b257b68d15e136a8234848a8e70a5999cdf5526993fb860685bfe peekaboo-macos-arm64.tar.gz
88823bb39e16c744c43ffd94c18c3773cd2f7c05bc7843e6e1e2e5da58b9ce76 peekaboo-macos-universal.tar.gz
7792ac5f4cefbd4473c2766d4905ceb486df8da4aa270399cda214b0f4bed877 peekaboo-macos-x86_64.tar.gz
eec8b37b809d6155266846df6a6832d8cc6fdc526fb3bf73abc05818fe4974e8 steipete-peekaboo-4.9.8.tgz
npm
- Package: @steipete/peekaboo@4.9.8 (
latest) - Tarball: https://registry.npmjs.org/@steipete/peekaboo/-/peekaboo-4.9.8.tgz
- Integrity:
sha512-ib15H3sBir/sivj8GJsb+lkEA7fF43wH7Se0SRv16lzrn8TngbobbeR6DQHZZw+5Z23On6XETGnspM1JFfAIkQ==; the registry tarball is byte-identical to thesteipete-peekaboo-4.9.8.tgzasset listed inchecksums.txt. - Homebrew:
openclaw/homebrew-tapformula updated to v4.9.8, with arm64 and x86_64 checksums matching the release assets. - CI and publication: release run, dry run, push CI.