Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: developer239/robot-cpp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: developer239/robot-cpp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/window-capture
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 2 commits
  • 23 files changed
  • 1 contributor

Commits on Jul 26, 2026

  1. feat: add window enumeration, queries, and ScreenCaptureKit streaming

    New Windows facade on Session (window list, current frame, topmost
    window in z-order, owning-app activation) and push-based per-window
    capture streams delivering zero-copy VideoFrame values with the
    density/content-rect metadata needed to map frame pixels back to
    desktop coordinates (toWindowPoint is the single implementation of
    that formula; robot/mac/VideoFrame.h is the typed buffer bridge).
    
    Streams guarantee serialized, ordered callbacks and a drain on stop():
    when stop() returns no callback is executing or will start. macOS only
    (ScreenCaptureKit); other platform builds report Unsupported through
    the new canEnumerateWindows/canStreamWindows capabilities.
    developer239 committed Jul 26, 2026
    Configuration menu
    Copy the full SHA
    cd08cd8 View commit details
    Browse the repository at this point in the history

Commits on Jul 27, 2026

  1. fix: harden window streaming per adversarial review

    - handle streamDidBecomeInactive so a closed captured window reports a
      stream death instead of leaving isRunning() true forever
    - decide death reports synchronously on the delegate thread: a death
      that precedes a concurrent stop() can no longer be suppressed by the
      async hop racing the stop flag (delivery stays serialized and inside
      the stop() drain)
    - guard startStream behind macOS 14 (pointPixelScale/contentRect) and
      report Unsupported below it instead of crashing at first use
    - validate WindowStreamOptions.maxFps at the facade (finite, 1-1000)
      before the int32 timescale conversion
    - derive frame age from SCStreamFrameInfoDisplayTime (mach absolute
      ticks, same clock as mach_absolute_time) with the PTS-vs-host-clock
      math as fallback
    - make CoreVideo a PUBLIC link dependency: the installed robot/mac
      bridge hands consumers a CVPixelBufferRef they lock via CoreVideo
    - widen the build-directory ignore to build*/
    developer239 committed Jul 27, 2026
    Configuration menu
    Copy the full SHA
    b65fd7e View commit details
    Browse the repository at this point in the history
Loading