Repository navigation
native2: one agent cursor and outline per agent, colored by tool - #234
Merged
Merged
Conversation
Each agent gets its own cursor with a name tag and its own window outline: Claude is orange, Codex blue, and any other agent a palette color fixed by its key. The cursor uses the motion tuned in the cursor lab (#228): it peels off the user's pointer, travels on an arc, and merges back after idling. Outlines that share one window nest, with their labels side by side. Why: native2/Sources/DesktopHost/Inspect.swift | run() must carry Hooks.call into its detached thread, or the pointer hook can't tell which client (agent) the input is for Why: native2/Sources/DesktopTools/Cursor.swift | a first input's wind-up, peel and travel share Tuning.firstWait (0.54 s) so the wait stays under Hooks.pointerLimit (600 ms) Co-Authored-By: Claude <noreply@anthropic.com>
iamnbutler
force-pushed
the
multi-cursor
branch
from
November 2, 2026 16:27
c8f4645 to
ef15f24
Compare
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.
Each agent gets its own cursor (with a name tag) and its own window outline, colored by tool:
DESKTOP_TOOLS_AGENTor on the caller's identifier, name or path.The cursor uses the motion Nate tuned in the cursor lab (#228):
Outlines are per agent: several agents in one window get nested outlines, with labels spread side by side.
To identify the agent behind each input,
Hooks.pointernow receives the requesting client's pid.run()carries theHooks.calltask-local into its detached delivery thread.Verified
swift testin native2: 62 tests pass, including the newAgentIdentityTests.Not verified live: a concurrent three-agent run against the dev app was blocked. A Desktop Tools approval prompt (for
/usr/bin/timeout, raised by another agent's check) was open in the installed app. The installed app and dev build guard each other, so all input was refused with SELF_TARGET_REFUSED. The overlays are excluded from captures in any case, so the animation needs a person watching.🤖 Generated with Claude Code