Skip to content

Claude/amazing faraday d3odj2 - #3369

Closed
ArtyzAudio wants to merge 7 commits into
vinta:masterfrom
ArtyzAudio:claude/amazing-faraday-d3odj2
Closed

ArtyzAudio wants to merge 7 commits into
vinta:masterfrom
ArtyzAudio:claude/amazing-faraday-d3odj2

Conversation

@ArtyzAudio

Copy link
Copy Markdown

Project

project-name

Checklist

  • I read CONTRIBUTING.md - awesome-python is a shortlist, not a catalog
  • One project per PR
  • PR title format: Add project-name
  • Entry format: - [pypi-name](https://github.com/owner/repo) - Description ending with period.
  • Display name is the PyPI package name
  • Placed in an existing use case (new sections and subcategories are maintainer-only)
  • Meets all Quality Requirements: active, stable, documented, at least 1 month old

Which Tier

Pick one:

  • Obvious choice - a tool an experienced Python developer would name when asked "what do I use for this?"
  • Challenger - not yet the obvious choice, but a credible successor to one. Give adoption-trajectory evidence, not popularity alone.

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.

claude added 7 commits October 9, 2026 16:17
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
@ArtyzAudio ArtyzAudio closed this by deleting the head repository Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants