Repository navigation
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.
feat: frame-to-select, tree navigation, Escape, and inline icon actions #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
feat: frame-to-select, tree navigation, Escape, and inline icon actions #1
Changes from 1 commit
fe0dca442de39700fa0de413d56dc40a4d25e99ca6c221644997577a7ffbba353dca4fc273dde33d9822d94920d2ea10f509ac0452a0c40e5da04a473d010266425a2ecc17069f963e445b31bb862a1a04554f49d7cc0eb752e9b526c3d4cfd9a00a61151ea34d5964c6d1c39516aa11fc7c701e158ca9bb92fe33cb5eee8d3091b3267df7be624b4File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Frame mode was only half a mode: underneath, it still behaved like point mode. Two distinct wrongs, both visible in one dogfooding screenshot of a whole dashboard card lit up with its name tag while the user was in frame mode and had drawn nothing. 1. During the gesture it hover-highlighted. `hover(atAXPoint:)` gated only on `mode == .annotating`, so every pointer motion in frame mode ran an AX hit-test and advertised a point-selection that mode can never make. Now gated on `tool == .point` in the SESSION (the view keeps its narrower during-the-drag guard as defence in depth), which also removes one cross-process AX query per motion event. `setTool` additionally clears `hovered`, so a highlight resolved in point mode no longer survives the switch; the rest of its "touch nothing else" contract -- open composer, selection, pending notes -- is unchanged. 2. After the gesture the drawn frame was thrown away visually: every anchor derived from `selected.frame`, so the highlight snapped from the swept rectangle to the resolved element and the composer and pin followed it. `selectionAnchorFrame` now exposes the drawn rect (absolute AX coordinates, like `Element.frame`) while it is still the truth of the selection, and the highlight, `composerPlacement` and the pin anchor all prefer it. The committed frame renders SOLID (the in-progress band stays dashed) with no name tag; the resolved element is named in the composer header instead ("Frame -> Dashboard.Today"), so a note is never captured against a target the user could not see, and no second rectangle appears. Pressing Parent/Child is the user explicitly asking WHICH element, so the anchor drops to that element and the drawn frame stays on screen dimmed beneath it -- it is still what the note records. The anchoring flag is cleared at the top of both `select` paths, in the `selected` didSet nil clear, and in `bindCurrentRung` (the single funnel both navigation directions pass through), because a frame -> navigate -> click sequence that missed any one of them would anchor the next note to a stale rectangle. The region-fallback branch deliberately gets no flag: its synthetic element's frame IS the drawn rect. The note payload is untouched -- `regionRect` plus `selector`/`component` round-trip exactly as before, no new fields. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>Uh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing
Uh oh!
There was an error while loading. Please reload this page.