From 1a6b28698d14872a6fcda4c2c2fac930f9b170e4 Mon Sep 17 00:00:00 2001 From: Kayshen-X Date: Sun, 3 May 2026 22:10:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(openpencil-shell-core):=20skeleton=20crate?= =?UTF-8?q?=20(kickoff=20=C2=A71.2=20three-crate=20split)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/openpencil-shell-core/Cargo.toml | 23 +++++++++++++++++++++++ crates/openpencil-shell-core/src/lib.rs | 20 ++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 crates/openpencil-shell-core/Cargo.toml create mode 100644 crates/openpencil-shell-core/src/lib.rs diff --git a/crates/openpencil-shell-core/Cargo.toml b/crates/openpencil-shell-core/Cargo.toml new file mode 100644 index 000000000..38b1df2d2 --- /dev/null +++ b/crates/openpencil-shell-core/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "openpencil-shell-core" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +description = "OpenPencil shell — retained-mode widget tree, RenderBackend trait, parley + taffy (kickoff spec §1.2)" + +[lib] +name = "openpencil_shell_core" +path = "src/lib.rs" + +[dependencies] +serde = { workspace = true, optional = true } + +# Pinned per Task 0.4 wasm32 feature matrix verdict +# (notes/2026-05-02-parley-wasm-feature-matrix.md "## 结论" 段) +parley = { version = "0.2", default-features = false, features = ["std"] } +taffy = { version = "0.6", default-features = false, features = ["std", "taffy_tree", "flexbox", "grid", "block_layout", "content_size"] } + +[features] +default = [] +serde = ["dep:serde"] diff --git a/crates/openpencil-shell-core/src/lib.rs b/crates/openpencil-shell-core/src/lib.rs new file mode 100644 index 000000000..baeb1b45d --- /dev/null +++ b/crates/openpencil-shell-core/src/lib.rs @@ -0,0 +1,20 @@ +//! OpenPencil shell core — platform-agnostic widget tree + render-backend trait. +//! +//! Per kickoff spec §1.2 (FROZEN 2026-05-02): this crate must compile on +//! wasm32-unknown-unknown. winit / accesskit_winit / skia-safe live in +//! `openpencil-shell-native`; wasm-bindgen / web-sys / CanvasKit live in +//! `openpencil-shell-web`. + +pub fn placeholder() -> &'static str { + "openpencil-shell-core skeleton" +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn skeleton_returns_string() { + assert_eq!(placeholder(), "openpencil-shell-core skeleton"); + } +}