Repository navigation
feat: list recent agent activity in the app's menu - #98
Merged
Merged
Conversation
This was referenced Oct 17, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
From #27 (its menu was to show the last action and its caller), which also answers #24's visibility concern. The menu-bar app now shows Recent Activity.
Menu
Operation ×count · App — Window title, with an outcome icon (completed ✓, unknown ?, refused ✗).agent (pid) · time · outcome.DESKTOP_TOOLS_AGENTfrom the client's environment. Without it, the agent is the name of the client's parent process (for examplenodefor the MCP server), and the pid is that parent's pid, which lasts for the agent's session.What's recorded
desktopObservation) and clipboard reads, because those reveal screen or clipboard contents.How
peekaboo-operation-record.patch(last in the stack):operationObserveron the embedded runtime configuration.route(plan:)reports aPeekabooBridgeOperationRecordafter each authorized request finishes.requestTargetWindow.operationMayHaveCompleted, else refusedactivity.swiftholds the ring buffer and resolves names (agent, app via NSRunningApplication, window title via CGWindowList) while the client still waits for its reply. The new C ABIdesktop_tools_activity()returns JSON, and it's documented in docs/embed.md.Tests
PeekabooBridgeOperationRecordTestshas 3 tests, covering:PeekabooBridgeTargetWindowObserverTestsstill passes after the refactor.npm testpasses 52 of 52,npm run checkpasses, and the native build and signed dev app build both pass.Live, with the screen locked: the dev app served desktop_apps, desktop_windows, and inspect (refused while locked). It also handled a stale-snapshot click (refused), a clipboard read and a media key (refused while locked), and the host stayed up with the observer running.
Pending (screen locked): open the menu and check the entries, the folding and the All Activity submenu. Added to #42.