G4: relink footage that moved

footage.relink {item, path} relinks one item and every other missing item that moved with it (one undo
step); Replace Footage on a missing item does the same, as in After Effects. File > Dependencies >
Relink Missing Footage in Folder... (footage.relinkFolder) finds missing files by name in a folder;
footage.missing lists them. The footage check after open finds files that moved along with the
project's folder, without marking the project modified. Paths compare by parts, so Windows and macOS
projects relink either way.

Checks: engine relink:: / footage_check:: (13 passed with replay::), host relink:: (1 passed),
clippy -D warnings (engine, host, ui-egui, script, cli, xtask). Not run: ui-egui i18n tests.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TEytG1Qum4TJrMTLKjgwDa

Upstream port: the folder search (footage.relinkFolder) is left out, since upstream's file.relinkFootage already scans a folder; the module is relink_moved.rs next to upstream's relink.rs.

(cherry picked from commit ea7923535fb81693ed95aa0fe768b850b347b2a9)

(cherry picked from commit d15e853a720304c1032e21974d84e1501c6edfc3)
(cherry picked from commit 0b8a328dda1fb727488e912a13f94a2ef4147d03)

(cherry picked from commit 9d85bfde72)
This commit is contained in:
Claude authored and Elias committed 2026-10-12 19:17:35 +01:00
1 parent 470ea7a3af
commit 2cb5d199ea
6 files changed
+459 -5

No files matched your search

+8
View File
@@ -98,6 +98,14 @@ vectors, positions and IDs are never the picture. EXtractoR reads every other la
- **File ▸ Replace Footage ▸ File…** (Ctrl+H) points the item at another file. Pick a numbered
file to replace it with that file's whole sequence (`file.replaceFootage {"path": …,
"sequence": false}` for one frame).
- **Relinking moved files.** `footage.relink {"item": id, "path": …}` points a missing item at
its file's new location, keeping its interpretation, and relinks every other missing item that
was in the same place relative to it (the whole folder moved, a drive was renamed, a project
made on Windows opened on macOS); File ▸ Replace Footage on a missing item does the same. One
undo step; `footage.missing` lists what is still missing.
- **A project moved with its footage** finds it again on open: the footage check that runs after
File ▸ Open tries each missing file at the same place under the project's new folder, without
marking the project modified.
- **File ▸ Reload Footage** (Ctrl+Alt+L) reads the files again. A sequence picks up frames
added to its folder (a render still in progress) and keeps its interpretation.