- oakcore-rs: Rational/TimeRange/TimeRangeList/PixelFormat/SampleFormat
mirroring oakcore C++ semantics (91.6% coverage)
- oakundo: UndoCommand/UndoStack with vtable commands (99.6%)
- oakcommon: config/XML/VideoParams/logging etc. (89.8%, 516 tests);
XML via quick-xml, logging via the log facade
- oaktimeline: markers/workarea/edit commands (95.4%)
- oakaudio: processor/manager/sync/waveform/levelmeter (88.4%)
- unified -MMCCCC error codes across all C ABI headers (registry in
include/common/error.h; pass-through rule)
- olive::Variant moved node -> common (cross-module value type)
- oakcommon_videoparams_set_is_3d added to the C ABI
- M11 (oakplugin Rust rewrite) plan + notes.md freeze line for the
inter-module C ABI wiring
- strip QAbstractItemModel/QAction/signals-slots from UndoStack (UI
concerns belong to the app layer), index_changed becomes a
std::function callback
- decouple UndoCommand from Project via an optional modified-flag
callback pair
- add pure C ABI in include/undo + src/undo/c_api (oakundo_ prefix,
vtable-based command wrapper, OAKUNDO_E_* error codes)
- fix three engine-side defects: jump(0) infinite loop,
MultiUndoCommand child leak, push_pre_executed not undoable
- add gtest suites (22 cases) and a standalone build driver