Make each tool act where it says it does, and nowhere else - #30
Merged
Conversation
The tools were right about what they do and wrong about where. Measured, tool by tool against surface by surface, three things were wrong: The curve lanes were a hole in the whole system. The handler that routes a press to its tool stepped aside for a curve lane, on the reasoning that opening one is about what you can see rather than what you are editing — and the curve editor asks only whether the pen is held and treats everything else as "add a point and drag it". So panning across a layer with its curves open wrote a point into the automation. So did zooming, so did the blade, so did the range tool. A tool that quietly edits the piece while doing its own job is worse than one that does nothing. The picture was outside the tools altogether. It fit the stage and that was the only size it had, so a tool called Hand could not move it — there was nowhere to move it to. It has a zoom now: click to go in around the point, alt to come out, drag with the hand to move it about, and a chip in the corner saying how far in you are and taking you back. The pan is clamped so the picture can never be pulled off its own frame, and Cut, Range and Pen say they are about the timeline rather than doing nothing. The layer column claimed a rename it was not going to do. It works under every tool, the way a track header does, and that is right — but it was showing a text caret over every name while the hand or the blade was held. Also: arming record took every letter, when only six are claimed twice. C, V, Z and P are not drum pads, so reaching for the blade with record on did nothing and said nothing about why. A clash is settled where there is one. Fourteen browser tests, each a tool crossed with a place. Every one was checked by putting its fault back and watching it fail; writing them found two more, both fixed here — the pan was clamped against the stage box rather than the video's, and the stage carries fourteen pixels of padding, so the picture could be dragged that far off an edge; and zooming back out never quite reached Fit, since 2.56 divided by 1.6 twice is 1.0000000000000002 rather than 1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ux1kydvUkLRoMbHp82ofDi
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
The tools were right about what they do and wrong about where. Measured tool by tool against surface by surface, three things were wrong.
The curve lanes were a hole in the whole tool system
The handler that routes a press to its tool stepped aside for a curve lane, on the reasoning that opening one is about what you can see rather than what you are editing. The curve editor then asks only whether the pen is held, and treats everything else as "add a point and drag it".
So on a layer with its curves open, a drag did this:
Panning across an open layer silently edited the piece. A tool that quietly edits while doing its own job is worse than one that does nothing.
The picture was outside the tools altogether
It fit the stage and that was the only size it had, so a tool called Hand could not move it — there was nowhere to move it to.
The picture now has a zoom: click to go in around the point you clicked, alt to come out, 100% to 1600%. The hand drags it about. A chip in the corner says how far in you are and takes you back to Fit; it is not there at all at Fit, where it would be saying nothing. The pan is clamped so the picture can never be pulled off its own frame, and it returns to Fit for a new clip or when the picture moves into its floating window — the transform rides on the video element, which is lent to that window rather than copied into it.
Cut, Range and Pen say they are about the timeline rather than doing nothing at all.
The layer column claimed a rename it was not going to do
It works under every tool, the way a track header does in an edit suite, and that stays. What it must not do is claim otherwise: it was showing a text caret over every layer name while the hand or the blade was held.
The keyboard
Arming record took every letter, when only six are claimed twice (T, H, J, K, L, S). C, V, Z and P are not drum pads, so arming meant giving up four tools to a conflict they were never in — reaching for the blade with record on did nothing and said nothing about why. A clash is settled where there is one.
Checking
Fourteen new browser tests in
test/browser/tool-scope.spec.ts, each a tool crossed with a place rather than a tool on its own. Every one was checked by putting its fault back into the code and watching it fail; all five injected faults were caught by exactly the tests that name them.Writing them found two more, both fixed here:
data-tooland the alt state moved from the timeline root to the shell, since the stage is not inside the timeline and cannot read an attribute that is. The existing cursor tests confirm nothing regressed.55 browser tests pass (41 existing + 14 new), 199 unit tests, build clean.
Also updated because they had stopped being true: the Hand and Zoom descriptions in the tool strip, and the help panel, which listed five tools with no Pen and described both as timeline-only.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ux1kydvUkLRoMbHp82ofDi
Generated by Claude Code