Commit Graph

979 Commits

Author SHA1 Message Date
Peter Steinberger
dda07c245f
fix: document element IDs as opaque (#202)
Some checks failed
macOS CI / PeekabooCore build & tests (push) Has been cancelled
Website (GitHub Pages) / build (push) Has been cancelled
macOS CI / Peekaboo CLI build & tests (push) Has been cancelled
macOS CI / Tachikoma build & tests (push) Has been cancelled
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Has been cancelled
macOS CI / SwiftLint (core + CLI) (push) Has been cancelled
Website (GitHub Pages) / deploy (push) Has been cancelled
2026-06-24 09:11:52 +01:00
Peter Steinberger
4085f18ddc
fix(cli): keep implicit see screenshots private (#200)
Some checks are pending
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
Website (GitHub Pages) / build (push) Waiting to run
Website (GitHub Pages) / deploy (push) Blocked by required conditions
2026-06-24 00:58:16 +01:00
Sebastien Tardif
db5192bb37
fix(capture): honor stop during watch transient backoff (#193)
* fix(capture): honor stop during watch transient backoff

* test(capture): tighten transient stop proof and add proof script

* test(capture): tighten transient stop regression

* chore: complete main merge

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-24 00:09:05 +01:00
Peter Steinberger
f22e46cc1a
chore(release): prepare 3.5.3 2026-06-13 22:30:12 -07:00
Peter Steinberger
4f2b0e9cb4
fix: harden background computer automation 2026-06-13 21:44:58 -07:00
Peter Steinberger
8cf0796692
Fix clicks on hidden menu extras (#188)
Some checks failed
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
Website (GitHub Pages) / build (push) Has been cancelled
Website (GitHub Pages) / deploy (push) Has been cancelled
* fix: reject hidden menu extras

* docs: note hidden menu extra safety
2026-06-13 02:59:25 -07:00
Peter Steinberger
1fa8eead7e
chore(release): prepare 3.5.2 2026-06-13 01:15:58 -07:00
Peter Steinberger
aabea1550e fix(type): remove default keystroke delay 2026-06-13 02:20:30 -04:00
Peter Steinberger
1c6273c017 fix(type): default to fast linear typing 2026-06-13 02:17:10 -04:00
Peter Steinberger
6a932d0004
chore(release): prepare 3.5.1 2026-06-12 20:51:04 -07:00
Peter Steinberger
ee3f90c404
fix(cli): enforce suspended observation deadlines 2026-06-12 15:23:45 -07:00
Peter Steinberger
e183cd15fb
chore(release): prepare 3.5.0 2026-06-12 00:45:49 -07:00
Peter Steinberger
d50472e5a3
fix(bridge): enforce exclusive socket ownership (#187)
Give Bridge listeners exclusive lease-backed socket ownership, bound transport and shutdown drains, isolate reusable daemon hosting, preserve healthy Peekaboo.app fallback, and safely migrate legacy daemons.

Fixes #184.
2026-06-12 00:17:34 -07:00
Vishal Jain
b873daf790
fix(capture): avoid false-success screen captures (#185)
Some checks are pending
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
Website (GitHub Pages) / build (push) Waiting to run
Website (GitHub Pages) / deploy (push) Blocked by required conditions
* fix(capture): avoid false-success screen captures

* fix(capture): fail closed when screen capture fallback is unsafe

* fix(capture): translate screencapture display regions

* fix(capture): harden legacy screen capture

* fix(cli): keep screen permission requests local

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-11 19:24:39 -07:00
Peter Steinberger
e4cd616e19
chore(release): prepare 3.4.2 2026-06-11 18:01:03 -07:00
Peter Steinberger
e44486ff16
feat: add Claude Fable 5 support (#186) 2026-06-11 17:59:43 -07:00
Peter Steinberger
689013808f
chore(release): prepare 3.4.1 2026-06-10 05:00:23 +01:00
Peter Steinberger
660e6f35c9
test: clear release gate warnings 2026-06-10 05:00:23 +01:00
Peter Steinberger
e75db3a7aa
fix(agent): support latest provider models
Some checks failed
macOS CI / PeekabooCore build & tests (push) Has been cancelled
Website (GitHub Pages) / build (push) Has been cancelled
macOS CI / Peekaboo CLI build & tests (push) Has been cancelled
macOS CI / Tachikoma build & tests (push) Has been cancelled
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Has been cancelled
macOS CI / SwiftLint (core + CLI) (push) Has been cancelled
Website (GitHub Pages) / deploy (push) Has been cancelled
Co-authored-by: Ulrich Diedrichsen <uli@moinsen.dev>
2026-06-09 01:23:32 +01:00
Peter Steinberger
613f0435a8
chore(release): prepare 3.4.0 2026-06-07 07:40:24 +01:00
Peter Steinberger
7e61018019
feat(cli): expose MCP wrappers and capture action 2026-06-07 07:35:00 +01:00
Peter Steinberger
3608d9c782
feat(mcp): expose capture tool 2026-06-07 05:46:39 +01:00
Coy Geek
01d10db9b0
fix(clipboard): validate alternate text payloads (#180)
* fix(clipboard): validate alternate text payloads

* docs: clarify clipboard size guard accounting

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-06-06 17:42:04 -07:00
Coy Geek
0e05e3acf5
fix(process): preserve generic interaction aliases (#179)
* fix(process): preserve generic interaction aliases

* fix(automation): preserve generic menu paths
2026-06-06 16:20:32 -07:00
Coy Geek
11baff0b59
fix(scroll): report unsupported targetless action scroll (#178) 2026-06-06 16:19:57 -07:00
Peter Steinberger
6feffe58b1
chore(release): prepare 3.3.0 2026-06-01 00:08:26 +01:00
Peter Steinberger
6609a43415 fix(cli): improve background text input 2026-05-31 18:16:53 -04:00
Peter Steinberger
619a033f89 fix(cli): harden background text input 2026-05-31 17:16:25 -04:00
Peter Steinberger
122c96da0b feat(cli): use background keyboard delivery by default 2026-05-31 16:24:09 -04:00
Peter Steinberger
abb4e87a50
fix(cli): default clicks to background delivery (#168) 2026-05-31 20:24:18 +01:00
Peter Steinberger
86f541184f
feat(agent): add MiniMax China provider support (#162)
Some checks failed
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
Website (GitHub Pages) / build (push) Has been cancelled
Website (GitHub Pages) / deploy (push) Has been cancelled
2026-05-25 11:05:05 +01:00
Peter Steinberger
3078d65b8d
chore(release): prepare 3.2.3 2026-05-24 04:41:14 +01:00
Peter Steinberger
e2e04e2eb6
fix: improve cli capture ergonomics (#159) 2026-05-24 03:04:41 +01:00
Peter Steinberger
43ed861725
chore(release): prepare 3.2.2 2026-05-22 14:28:56 +01:00
Peter Steinberger
1fd0dc6f51
fix: remove GameBridge release warning 2026-05-22 14:28:55 +01:00
Daniel Nylander
2edeee0b33
feat: add GameBridge detection for SDL game windows
Adds a narrow GameBridge manifest path for Firestaff SDL/GPU-rendered windows and hooks it into element detection before AX traversal. Includes freshness gating, window-bounds fallback, manifest-root injection for tests, static text grouping coverage, and changelog entry thanking @yeager.

Proof:
- pnpm run lint
- pnpm run test:safe
- swift test --package-path Apps/CLI --no-parallel --filter GameBridgeDetectionTests
- git diff --check
- live Firestaff fresh/stale manifest verification
- macOS CI run 26289370641: Core, CLI, Tachikoma, app builds, SwiftLint all green

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
2026-05-22 14:23:02 +01:00
Peter Steinberger
a9725f89e6
feat(agent): add OpenRouter provider support
Some checks failed
macOS CI / PeekabooCore build & tests (push) Has been cancelled
Website (GitHub Pages) / build (push) Has been cancelled
macOS CI / Peekaboo CLI build & tests (push) Has been cancelled
macOS CI / Tachikoma build & tests (push) Has been cancelled
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Has been cancelled
macOS CI / SwiftLint (core + CLI) (push) Has been cancelled
Website (GitHub Pages) / deploy (push) Has been cancelled
Add OpenRouter provider support to Tachikoma and Peekaboo agent selection and CLI configuration.

- support OPENROUTER_API_KEY env/credential auth and openrouter/<provider>/<model> IDs
- add config status validation/JSON output and docs/changelog
- retain contributor credit from #155

Co-authored-by: Delor Tshimanga <tshimangadelor1@gmail.com>
2026-05-20 04:03:56 +01:00
Crux0453
fe6548a5d8
fix(agent): treat OAuth access tokens as Bearer auth not API keys (#154)
* fix(agent): treat OAuth access tokens as Bearer auth not API keys

* test(agent): isolate OAuth credential env

* test(agent): restore OAuth test env

* fix(agent): preserve OpenAI OAuth for audio

* fix(agent): keep OAuth availability gates

* fix(agent): align OAuth credential store with config dir

* chore: update Tachikoma OAuth profile fix

* chore: update Tachikoma absolute profile fix

---------

Co-authored-by: Crux0453 <262608929+Crux0453@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-20 03:12:11 +01:00
Peter Steinberger
9cd7771b43
refactor(detection): satisfy release lint gate 2026-05-18 09:47:02 +01:00
Peter Steinberger
75e2884e01
chore(release): prepare 3.2.1 2026-05-18 09:44:54 +01:00
Peter Steinberger
eba271eaff
fix(cli): resolve targeted click coordinates (#153) 2026-05-18 09:37:02 +01:00
Andrew Widdowson
6ce071077a
feat(detection): expose AX traversal budget controls
Expose configurable AX traversal budgets across CLI, MCP, and environment defaults.
2026-05-18 07:52:03 +01:00
Peter Steinberger
d211a760fd feat(agent): wire per-turn context and action verification
Some checks are pending
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
Website (GitHub Pages) / build (push) Waiting to run
Website (GitHub Pages) / deploy (push) Blocked by required conditions
2026-05-17 13:38:03 +01:00
Peter Steinberger
9bd822faf1 fix(config): preserve custom provider credential references 2026-05-17 11:08:52 +01:00
scotthuang
8508be1c77 docs: prefer ${VAR} over {env:VAR} for custom provider apiKey 2026-05-17 11:08:52 +01:00
Peter Steinberger
a0bdd4b1f6 fix(agent): generalize fresh observation metadata 2026-05-17 10:08:26 +01:00
vyctorbrzezowski
36661365e7 fix(agent): align observation guidance with inspect_ui 2026-05-17 10:08:26 +01:00
Peter Steinberger
d232d495eb fix(capture): harden desktop-independent window sizing 2026-05-17 08:25:35 +01:00
lonexreb
0ad0dd0fb8 fix(capture): fall back to desktop-independent window filter on multi-display Macs
When window-mode capture cannot map a window to any enumerated display
(multi-display Mac Mini setups, dormant displays, virtual / DisplayLink
adapters, degenerate SCWindow.frame bounds), the previous code threw
'Window is not on any available display' for every engine.

Replace the bare 'displays.first(where: { $0.frame.intersects(window.frame) })'
gate with a new ScreenCapturePlanner.matchDisplay helper that:
- Prefers the display containing the window's center point.
- Falls back to the display with the largest intersection area.
- Returns .unmapped (with a sensible fallback display for scale / metadata)
  rather than failing when the window does not overlap any display.

Callers that get .unmapped now build SCContentFilter(desktopIndependentWindow:)
instead of throwing. The display-bound filter path is preserved for the common
case so iOS Simulator and other GPU-rendered windows keep their reliable path.

Adds ScreenCapturePlannerMatchDisplayTests (16 cases) covering single-display,
multi-display geometries with negative origins, straddling windows, degenerate
window frames, empty display enumeration, and the reporter's exact bounds.

Fixes #143.
2026-05-17 08:25:35 +01:00
Peter Steinberger
431661100a fix(agent): refresh inspect ui snapshot metadata
Some checks are pending
macOS CI / PeekabooCore build & tests (push) Waiting to run
macOS CI / Peekaboo CLI build & tests (push) Blocked by required conditions
macOS CI / Tachikoma build & tests (push) Blocked by required conditions
macOS CI / Build macOS apps (Peekaboo + Inspector) (push) Blocked by required conditions
macOS CI / SwiftLint (core + CLI) (push) Blocked by required conditions
2026-05-16 15:41:52 +01:00