Skip to content

feat: picture-in-picture agent monitor — floating overlay for agent observation [#29]#44

Open
richard-devbot wants to merge 3 commits intoCursorTouch:mainfrom
richard-devbot:richardson/phase2-pip-monitor
Open

feat: picture-in-picture agent monitor — floating overlay for agent observation [#29]#44
richard-devbot wants to merge 3 commits intoCursorTouch:mainfrom
richard-devbot:richardson/phase2-pip-monitor

Conversation

@richard-devbot
Copy link
Copy Markdown

Summary

Sub-component 4 of #29 (agent workspace isolation).

Adds PiPMonitor — a floating 320×240 always-on-top overlay that captures the agent's active window at 2fps and displays it as a thumbnail, so the user can watch the agent work without switching macOS Spaces or virtual desktops.

  • PySide6 (Qt6) backend — cross-platform, optional dependency
  • 500ms capture interval via QScreen.grabWindow()
  • Always-on-top, frameless, semi-transparent, anchored top-right
  • Optional dep group: pip install operator-use[pip-monitor]

Related: #29

Richardson Gunde and others added 3 commits April 13, 2026 18:24
… spaces [CursorTouch#29]

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…[ci]

- BrowserPlugin.SYSTEM_PROMPT: add <perception>, <tool_use>, <execution_principles> sections
- BrowserPlugin.register_hooks: actually register _state_hook on BEFORE_LLM_CALL when enabled
- BrowserPlugin.unregister_hooks: unregister _state_hook from BEFORE_LLM_CALL
- BrowserPlugin.unregister_tools: call unset_extension for "browser" and "_browser"
- BrowserPlugin.enable/disable: wire hook register/unregister through lifecycle
- ComputerPlugin.SYSTEM_PROMPT: add <perception>, <tool_use>, <execution_principles> sections
- ComputerPlugin.register_hooks: register _state_hook + _wait_for_ui_hook when enabled
- ComputerPlugin.unregister_hooks: unregister both hooks
- ComputerPlugin.enable/disable: wire hook register/unregister through lifecycle
- control_center: pass kwargs._graceful_restart_fn through to _do_restart(graceful_fn=...)
- ToolRegistry.get: also check _extensions so registry.get("browser") finds the browser instance
- ruff format: reformat entire codebase to resolve style violations

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant