Repository navigation
Claude/amazing faraday d3odj2 - #3369
Closed
ArtyzAudio wants to merge 7 commits into
Closed
ArtyzAudio wants to merge 7 commits into
ArtyzAudio wants to merge 7 commits into
Conversation
DaVinci Resolve-style Dynamic Zoom as a Premiere Pro UXP panel: set a green START box and a red END box, pick an ease (Linear, Ease In, Ease Out, Ease In and Out), and the selected clips push in, pull out or pan between them over their full length. The panel writes Motion Position/Scale keyframes. Eased moves and zooms are sampled into keyframes so the move matches the boxes exactly. It also adds Swap, Reset, presets, numeric fields, a live preview, a playhead frame grab for the viewer, and an optional constant-speed zoom. Re-applying replaces the previous zoom, and Remove restores the original framing. Includes Node tests for the math, the frame grab, and the keyframe writer, which runs against a fake Premiere host. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
dist/DynamicZoom.ccx is the plugin folder zipped with manifest.json at the root, the same layout UXP Developer Tool produces. Double-clicking it installs the panel through the Creative Cloud app. `npm run package` rebuilds it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
The .ccx package can only be installed through the Creative Cloud app. Premiere 2026.0 still loads CEP extensions, and those install by copying a folder. The CEP build reuses the UXP panel markup, styles and shared modules, and adds an ExtendScript host (cep/host/dynamicZoom.jsx) that reads the selected clips and writes the keyframes. - Move the panel wiring into plugin/src/panel.js. The UXP index.js and cep/main.js are now thin host adapters. - Make zoomMath.js and rectEditor.js load both with require (UXP, Node) and with plain <script> tags (CEP). - scripts/build.js builds dist/DynamicZoom.ccx and dist/DynamicZoom-CEP.zip. - install-mac.sh installs the CEP build into ~/Library/Application Support/Adobe/CEP/extensions and enables PlayerDebugMode. - Tests run the real .jsx in a Node vm on a fake ExtendScript DOM. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
Premiere's CEP browser on macOS does not deliver pointer events to the page (Adobe-CEP/CEP-Resources#401, adobe/react-spectrum#854), while mouse events do arrive. The editor listened only for pointer events, so drags never started and mousedown selected the box label text instead. - Handle both pointer and mouse events; whichever press arrives first starts the drag. Moves, ups and cancels are read from the document, and twin moves within 1px are skipped. - End a drag whose release happened outside the panel: a move that reports no button after earlier moves reported it held, or a window blur. - Never start text selection or native image drags in the viewer: cancel mousedown, selectstart and dragstart, set the img to draggable=false, and add user-select:none. Overlays (image, labels, thirds, the preview box) no longer take presses. - Inset the corner handles so they stay visible at the frame edge. - Hint in the status line when a full-frame box cannot move because "Keep boxes inside the frame" is on. In a Chromium matrix that simulates CEP's event behaviour, the original code passed 57/90 drag scenarios and this version passes 89/90. The remaining case (no button state from the host and a lost mouseup) can't be detected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
Offline installer (dist/DynamicZoom-Installer.zip, built by `npm run package`): the CEP extension plus double-click install and uninstall scripts for macOS (.command) and Windows (.bat), and a plain-language READ ME FIRST.txt. No internet or Creative Cloud app is needed, so the zip can be kept on a drive and used on other machines. The build writes .bat/.txt with CRLF line endings and keeps the .command files executable inside the zip. Drag fixes found by adversarial testing: - Blur a focused number field before a drag, so a typed but uncommitted value is applied instead of thrown away. - Releasing another mouse button during a left drag no longer ends it. - Judge lost releases per event family, so a host that reports `buttons` for only one family cannot end drags early. - Show the full-frame hint only on an actual move attempt, and restore the previous status line afterwards. - Small boxes move the handles out to the corners (tiny boxes: fully outside), so the middle can still be grabbed. Version 1.1.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
Remember which event families (pointer/mouse) have been seen to report the held button while moving, and trust them from the start of later drags. A fast flick out of the panel whose release is lost before any move now ends the drag on the next hover, instead of leaving the box stuck to the mouse until the next click. Hosts that never report buttons are unaffected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
AGENTS.md records the project's architecture and file map, the build/test/release steps, and the facts that took effort to establish: the macOS CEP pointer-events bug and its fix, normalized Position, the source-media keyframe time base, ExtendScript ES3 limits, and the frame export quirks. It also says what was verified and how (fake hosts, Chromium simulation of CEP), and what is still untested (Windows, Premiere older than 2026, the UXP build in real Premiere). CLAUDE.md imports AGENTS.md so Claude Code loads it automatically. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A7sWb4fNVhnaNJvTGYouLM
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.
Project
project-name
Checklist
Add project-name- [pypi-name](https://github.com/owner/repo) - Description ending with period.Which Tier
Pick one:
Explain:
Displacement
If the use case is at its cap, name the entry your project replaces and argue that yours does that entry's job better. One in, one out.