# Oak Video Editor - Non-Linear Video Editor # Copyright (C) 2026 Oak Team # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Root manifest: the Cargo workspace only — every package lives under # crates/ (the GUI app in oak-app, the CLI in oak-cli, the render worker # in oak-worker, the module rlibs in oak-*) or examples/ (standalone # integration crates, each with its own Cargo.toml). # # gpui (the oak-gpui fork at gpui/) is excluded: it is a separate git # repository with its own workspace (resolver 3, edition 2024, # workspace.package/workspace.dependencies). Without the exclusion its # crates would be auto-included here via oak-app's path dependencies and # would inherit from THIS workspace's [workspace.package] (which lacks the # keys gpui expects). Excluded, each gpui crate resolves against gpui's own # workspace root, exactly as before the monorepo workspace existed. [workspace] members = ["crates/*", "examples/*"] exclude = ["gpui", "crates/oakengine.bk"] # NOTE: oak-storage is a workspace member but NOT a default member (it # stays out of the default-members test matrix to keep `cargo test` at # the root fast; the app links it as a normal path dependency, so it # builds with the app). Build/test it explicitly with `cargo test -p oak-storage`. # NOTE: `crates/oakengine` (the frozen C-ABI facade cdylib) is retired: # every consumer (app/cli/worker/plugins) links the module rlibs # directly, so nothing in the workspace referenced it. The sources are # kept at crates/oakengine.bk (excluded from the workspace) as a # reference snapshot; git history is the authoritative backup. default-members = ["crates/oak-app", "crates/oak-cli", "crates/oak-worker"] resolver = "2" [workspace.package] # Single source of truth for the release version: the app package # inherits it, and with it cargo-packager and the CD packaging scripts. version = "0.5.0" [profile.release] # FFI discipline: every module crate exports an `extern "C"` ABI whose # entry points must never unwind/abort across the boundary; panics are # caught by catch_unwind and mapped to error codes instead. `unwind` is # also rustc's default, but this makes the project-wide policy explicit # (it used to live in each member's Cargo.toml, which a workspace root # ignores). panic = "unwind" [profile.dev.package."*"] opt-level = 1 [profile.dev] opt-level = 1