- oakengine_sequence_move_clip implemented for real (oaktimeline
TrackMoveBlockCommand; fixes the graph-ownership/gap-anchor/ripple
trim bugs the stub was hiding); same-track via the frozen C ABI,
cross-track supported by the module command
- oaknode clip blocks now declare a tex_in texture input and set
effect_input to it, so timeline clips can host effect chains; facade
test covers effect insert/remove on a real clip
- oakffmpeg-link: FFMPEG_DIR is now mandatory with a clear panic (a
Homebrew upgrade left the system ffmpeg .pc pointing at a deleted
dav1d Cellar path, breaking links); reads a git-ignored workspace
.env for IDEs that cannot inject env vars (RustRover); links the C++
stdlib for C++ codec libs (svt-av1)
- oakengine re-exports oaknode so tests share one crate instance;
it_node uses the direct instance's value type where it calls the
module FFI (the --workspace dev-dependency feature split builds
oaknode twice)
facade (oakengine/oaknode, API only extended):
- oaknode_node_get_effect_input / oaknode_node_get_flags module exports
- oakengine_clip_as_node, oakengine_node_effect_count/at/insert/remove/
move/set_enabled, oakengine_node_identity/is_enabled/get_type_id,
oakengine_node_factory_id_at — chain edits wrap disconnect/reconnect
into single undo groups; insert/move/remove validated against the
factory and the host's effect input
- it_node covers enumeration/insert/remove/move/toggle/undo-redo and
the NULL/illegal-input matrix
app:
- RealEngine binds the selected clip's effect chain to the inspector's
effect stack (cards, enable, reorder, remove, expansion state), all
edits undoable through the facade
- AppEngine gains set_selected_clips / addable_effects / add_effect
(default no-ops keep the mock untouched); the timeline selection
drives the stack target; the inspector gets a small add-effect menu
- known module gap (documented): ClipBlockBehavior sets no effect_input
yet, so timeline clips cannot host effects until oaknode grows tex_in