mirror of
https://github.com/ZSeven-W/openpencil.git
synced 2026-06-01 03:14:29 +07:00
The casement crate was depended on through a sibling-repo path (`../../../winit`) that only existed on the maintainer's machine, so CI couldn't load the workspace manifest and every Rust Check job died with "failed to read winit/Cargo.toml". Vendoring it as a real submodule under `vendor/casement` (matching the `vendor/jian` pattern, picked up by CI's `submodules: recursive` checkout) closes that gap. The renamed GitHub repo `ZSeven-W/casement` (was `ZSeven-W/winit`) tracks the `op-file-open` branch — `feat(macos): drain_opened_file_urls` + the package rename landed there as commit 5877fa83. - `.gitmodules`: add vendor/casement. - Root Cargo.toml: exclude vendor/casement from the workspace glob (it's its own workspace). - op-host-native + op-host-desktop: path = "../../vendor/casement".
70 lines
2.8 KiB
TOML
70 lines
2.8 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
# Use a glob instead of an explicit list: incremental crate creation in Step 0
|
|
# does not require editing `members` each time (per implementer Phase 1 batch 2
|
|
# workspace-masking feedback: listing a non-existent crate makes `cargo build -p X`
|
|
# fail at the resolve stage). The glob picks up every manifest under crates/,
|
|
# naturally supporting incremental creation.
|
|
members = ["crates/*"]
|
|
exclude = [
|
|
"vendor/agent",
|
|
"vendor/anthropic-agent-sdk",
|
|
"vendor/casement",
|
|
"vendor/jian",
|
|
"vendor/skia-safe-op",
|
|
"node_modules",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.85"
|
|
license = "MIT"
|
|
authors = ["ZSeven-W <fini.yang@gmail.com>"]
|
|
repository = "https://github.com/ZSeven-W/openpencil"
|
|
|
|
[workspace.dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "1"
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
|
|
# WASM-boundary related (per kickoff §1.2 blacklist = must not appear here).
|
|
# Intentionally NOT exposing tokio / reqwest / agent / pen-agent-cli /
|
|
# pen-server / native-tls in workspace.dependencies — these are used only
|
|
# inside native-only crates via dev-deps or target-specific deps.
|
|
|
|
# Step 1b §3.2 P0.5B Run path (2026-05-09): wasm32-unknown-unknown skia
|
|
# build via `vendor/skia-safe-op` — fork of rust-skia 0.97.0 with a new
|
|
# build_support/platform/wasm_unknown.rs target that produces .o files
|
|
# free of emscripten runtime imports.
|
|
#
|
|
# IMPORTANT: `[patch.crates-io]` is workspace-global, NOT target-scoped.
|
|
# Every `skia-safe` / `skia-bindings` consumer in this workspace —
|
|
# including `op-host-native` (macOS / Linux / Windows desktop,
|
|
# `gl` feature) — now resolves through this fork on every target.
|
|
# Cargo does not natively support per-target patches, so this is the
|
|
# accepted blast radius.
|
|
#
|
|
# Compatibility surface vs upstream rust-skia 0.97.0:
|
|
# - every upstream platform module (macos / linux / windows /
|
|
# emscripten / android / ios / ohos / alpine) is byte-identical;
|
|
# only `wasm_unknown` is new
|
|
# - the dispatch table adds one new arm for
|
|
# `("wasm32", "unknown", "unknown", _)`; every existing target
|
|
# tuple still resolves to the same upstream module as before
|
|
# - the binary-cache feature URL + skia-binaries archive layout are
|
|
# untouched, so native desktop builds continue to download the
|
|
# prebuilt artifact instead of compiling Skia from source
|
|
#
|
|
# Trade-offs accepted:
|
|
# - upstream rust-skia patches will not flow until we re-vendor
|
|
# - `Cargo.lock` records `path` sources for skia-bindings/skia-safe
|
|
# instead of `registry+…`, surfacing the fork in audit tools
|
|
#
|
|
# When upstream rust-skia ships a wasm32-unknown-unknown platform
|
|
# module of its own, this whole [patch] block can go away.
|
|
[patch.crates-io]
|
|
skia-bindings = { path = "vendor/skia-safe-op/skia-bindings" }
|
|
skia-safe = { path = "vendor/skia-safe-op/skia-safe" }
|