diff --git a/docs/agents.md b/docs/agents.md index 4a56bb45..396d8aaf 100644 --- a/docs/agents.md +++ b/docs/agents.md @@ -133,6 +133,12 @@ build real projects through these interfaces; they are worked examples of everyt (a string param that is exactly `"$N"` or `"$N.key"` is replaced; `$2.path` is the trim's path). * **Expressions**: `set_property`/`get_property` replies carry `evaluated` (what renders) next to `value` (the keyframed value) and `expressionError` when the expression fails. +* **Keyframes like a person**: `keys.select {keys, toggle: true}` (Shift+click), `keys.selectEqual` + / `selectPrevious` / `selectFollowing`, `keys.move {delta, merge}` (steps sharing a merge key are + one drag: each applies to the keys as they were before it, so a key passed over survives) and + `keys.transform {…, merge, fromStart: true}` (values are the whole transform since the drag + started). Keys of locked layers can't be selected. Copy / paste: `keys.copy`, then `keys.paste` + at the current time (keys copied from several layers go to as many selected layers in order). * **Easing with Keyframe Velocity**: select keys by path, `keys.select {"keys":[{"layer":"Ring","path":"contents/trim/end","time":0}]}`, then `keys.velocity {"outSpeed":0,"outInfluence":33.33}`. * **Gradients**: `set_property {"path":"contents/gfill/colors","value":["#0080ff","#ffff00"]}` or diff --git a/docs/parity.md b/docs/parity.md index e0199a7b..3c1d5294 100644 --- a/docs/parity.md +++ b/docs/parity.md @@ -392,6 +392,32 @@ Browser in the web app (landed in M13.10: browser storage and File System Access wrong signatures and versions, fuel exhaustion, traps and bit-identical output; script `Socket` validates ports, and ScriptUI resource strings accept trailing array commas. +## Update: M5.9–M5.14 keyframes, M3.15 clipboard, M12.8 responsiveness + +- **The app froze every 10 s on Windows** (M12.8): the cache budgets' memory reading started + PowerShell on the UI thread and waited about a second for it. It runs on a background thread + now, every 30 s. +- **Ctrl+C / Ctrl+X / Ctrl+V** (M3.15) reach Edit ▸ Copy, Cut and Paste in the app (the window + layer sends them as clipboard events, which the shortcut dispatcher ignored), and copying puts + a line on the system clipboard so Ctrl+V always arrives. +- **Timeline keyframes** (M5.9–M5.12): a drag follows the pointer to the end (it let go after a + frame or two), moves every selected key as one undo step, never deletes keys it passes over, + moves keys of time-stretched layers with the pointer, and Shift snaps to the current time, + keys, layer ends and markers with a time / offset tooltip; Shift+click toggles selection, + Ctrl+click switches Linear ↔ Auto Bezier, Ctrl+Alt+click toggles Hold; keys of locked layers + can't be selected; Toggle Hold off restores Bezier; double-click edits a key's value; Select + Equal / Previous / Following Keyframes; roving keys draw as dots. +- **Graph Editor** (M5.11): a drag moves every selected key in time and value from where it was + grabbed, Shift keeps one axis; the transform box and Alt-drag scaling never merge keys on the + way and move them however slowly they are dragged; the same Shift / Ctrl / Ctrl+Alt clicks. +- **Paste** (M5.13): keys copied from several layers paste onto as many layers in order; Paste + Reversed Keyframes follows Paste's rules (stretch, target property, Hold-only properties). +- **J / K and Info** (M5.14): J / K also stop at the work area; the Info panel shows a selected + key's property, time and value. + +Not yet: J / K and Select All Keyframes use every property of the layers, not only the revealed +ones; Graph Editor keys are drawn as squares whatever their interpolation; Auto-Select Graph Type. + ## Update: M4.9–M4.11 nested comps and motion blur - **Composition Settings ▸ Advanced ▸ Preserve frame rate when nested or in render queue** and diff --git a/docs/preferences.md b/docs/preferences.md index 6e68ba94..60b38084 100644 --- a/docs/preferences.md +++ b/docs/preferences.md @@ -124,7 +124,7 @@ Commands (CLI, MCP, control channel): sample rate and read back instead of decoding again - `memory.ramReservedGb`: the cache budgets together leave this much physical memory free - `memory.reduceCacheWhenLow`: cache budgets halve while the system is low on memory (checked - every 10 s by the desktop app) + every 30 s by the desktop app, on a background thread) - `video.enableOutput`, `video.device`, `video.outputDuringPlayback`, `video.mirrorOnMonitor`, `video.disableWhenBackground`: Video Preview, a second window (or full screen on the display it is on) showing the composition frame, Mercury Transmit-style