Files
OneCAD-Draft/Cargo.toml
T
Afonsop 55e3a6a9e2 merge origin/main: unify our web branch with 277 upstream commits
Conflicts resolved as unions of behavior wherever possible:

- #1350 (set_properties numeric CAS): kept our stricter
  json_values_match (guards u64>f64 precision loss); upstream's
  duplicate removed.
- #1351 (web open-from-bytes): our implementation wins (guarded
  queue, settle semantics, protocol 2) using upstream's validation
  helper so both sides' tests pass.
- #1358/#1359 (Windows printer routing/media): merged both engines —
  upstream's route planning, media tables, GDI raster path and driver
  options on top of our level-2 enumeration fallback, true-default
  resolution, quoted printto params, existence probe, and error
  descriptions.
- #1360 (plot-style leniency): decompress_ctb now carries both our
  CTBVER1/STBVER1 container tags and structured flag, and upstream's
  lenient reader with Windows-1252 handling.
- 3D snapping precedence: upstream's F4 3D osnap system takes
  precedence over our #1030 solid edge wires when the mesh cache has
  geometry edges; our wires remain the fallback for triangle-only
  caches and mesh entities (both test suites pass).
- Fixed upstream-side bugs surfaced by the merge: parametric arc
  grips impl/test contradiction, psetupin test path separators, and
  our pdf_raster regression where the new dpi argument was threaded
  but ignored (GDI 300-DPI would have cached at 150).
- ocs_save repinned to the upstream acadrust rev; docs/command-
  reference.md regenerated (the staleness test caught it).
2026-09-21 13:33:39 +01:00

189 lines
7.4 KiB
TOML

[package]
name = "OpenCADStudio"
version = "2026.38.0"
edition = "2021"
build = "build.rs"
default-run = "OpenCADStudio"
[workspace]
members = [
"crates/ocs_plugin_api",
"crates/ocs_save",
"crates/ocs_web_worker",
"crates/dwg-thumbnailer",
"crates/dwg-thumbnailer-win",
]
[target.'cfg(windows)'.build-dependencies]
winresource = "0.1"
[dependencies]
serde_json = "1"
serde = { version = "1", features = ["derive"] }
calamine = "0.36.1"
base64 = "0.22"
semver = "1"
url = "2"
iced = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39", features = ["image", "svg", "advanced", "canvas", "smol", "markdown"] }
iced_runtime = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" }
iced_core = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" }
iced_aw = { git = "https://github.com/HakanSeven12/iced_aw.git", branch = "agent/fix-iced-fonts", features = ["menu", "context_menu", "color_picker", "drop_down"] }
bytemuck = { version = "1.25", features = ["derive"] }
glam = { version = "0.33", features = ["bytemuck"] }
rfd = "0.17"
clap = { version = "4", features = ["derive", "string"] }
env_logger = "0.11"
log = "0.4"
acadrust = { git = "https://github.com/HakanSeven12/cadcodec.git", rev = "5b682ed", features = ["serde"] }
cadkernel = { git = "https://github.com/HakanSeven12/cadkernel.git", rev = "6f046af", features = ["acis", "offset"] }
cadkernel-constraints = { git = "https://github.com/HakanSeven12/cadkernel.git", rev = "6f046af" }
dwg-thumbnailer = { path = "crates/dwg-thumbnailer" }
# Shared SAVE serialization dispatch + web-worker wire format: one
# implementation for the inline (fallback/native) path and the worker path.
ocs_save = { path = "crates/ocs_save" }
flate2 = "1"
# Raster decode set: png/jpeg/bmp/tiff plus webp/gif (both pure-Rust in
# image 0.25, so the wasm target stays C-free). Every format named here must
# also appear in the IMAGE picker filter (io::pick_image_file) and the web
# drop filter (io::web_drop::is_image_name).
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "bmp", "tiff", "webp", "gif"] }
hayro = "0.7.1"
# PDF writer shared by desktop export and the web export/preview/print path.
printpdf = { version = "0.9.1", default-features = false, features = ["images"] }
# Rasterises assets/logo.svg into the window icon at startup, so the taskbar
# icon comes from the same file every other build target does. Already in the
# tree behind iced's svg feature; named here only to use it directly.
resvg = { version = "0.45", default-features = false }
i18n-embed = { version = "0.16", features = ["fluent-system"] }
i18n-embed-fl = "0.10"
rust-embed = "8"
inventory = "0.3"
rustc-hash = "2"
sha2 = "0.10"
fontdb = "0.23"
ttf-parser = "0.25"
cosmic-text = "0.15"
unicode-bidi = "0.3"
lyon_tessellation = "1.0.20"
pollster = "0.4"
[dev-dependencies]
fluent-syntax = "0.12"
iced_test = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" }
naga = { version = "27", features = ["wgsl-in"] }
[target.'cfg(target_os = "windows")'.dependencies]
libloading = "0.8"
# Win32_Graphics_Gdi + Win32_Security are required for PRINTER_INFO_2W (the
# level-2 printer enumeration fallback in src/io/print_to_printer.rs).
windows-sys = { version = "0.61", features = ["Win32_UI_Shell", "Win32_UI_WindowsAndMessaging", "Win32_UI_Input", "Win32_System_LibraryLoader", "Win32_System_Threading", "Win32_Security", "Win32_System_Com", "Win32_System_Registry", "Win32_Storage_FileSystem", "Win32_Foundation", "Win32_Graphics_Printing", "Win32_Graphics_Gdi", "Win32_Storage_Xps"] }
[target.'cfg(target_os = "linux")'.dependencies]
ashpd = { version = "0.13.13", default-features = false, features = ["async-io", "wayland"] }
# For `src/bin/ocs_launcher.rs` only (the .app's real CFBundleExecutable,
# see that file for why) — already in the tree transitively via winit, pinned
# here to the same versions Cargo already resolves for it.
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.5"
objc2-app-kit = { version = "0.2", features = ["NSApplication", "NSResponder", "NSRunningApplication"] }
objc2-foundation = { version = "0.2", features = ["NSArray", "NSURL", "NSString", "NSObject", "NSNotification", "NSThread", "NSEnumerator"] }
[patch.crates-io]
iced_core = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" }
iced_widget = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39" }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
getrandom = "0.3"
ocs_plugin_api = { path = "crates/ocs_plugin_api", features = ["host"] }
bincode = "1.3"
meshopt = "0.6.2"
i18n-embed = { version = "0.16", features = ["desktop-requester"] }
rayon = "1"
open = "5"
ureq = { version = "3", default-features = false, features = ["rustls", "platform-verifier", "win-system-proxy"] }
[target.'cfg(target_arch = "wasm32")'.dependencies]
ocs_plugin_api = { path = "crates/ocs_plugin_api" }
i18n-embed = { version = "0.16", features = ["web-sys-requester"] }
rust-embed = { version = "8", features = ["debug-embed"] }
console_error_panic_hook = "0.1"
getrandom = { version = "0.3", features = ["wasm_js"] }
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
bincode = "1.3"
web-sys = { version = "=0.3.85", features = [
"Window",
"Storage",
"StorageManager",
"Navigator",
"Document",
"Element",
"HtmlAnchorElement",
"Blob",
"File",
"FileSystemDirectoryHandle",
"FileSystemFileHandle",
# FileSystemFileHandle derefs to FileSystemHandle for the `name()`
# getter the in-place save (io::fs_access) reads off a picked handle.
"FileSystemHandle",
"FileSystemGetDirectoryOptions",
"FileSystemGetFileOptions",
"FileSystemWritableFileStream",
"WritableStream",
"Url",
"Response",
# The wasm remote-raster fetch (image_model::fetch_remote_web) builds a
# `Request` with an `AbortController` signal for its deadline; the fetch
# rejection is classified via `DomException` (AbortError = timeout) and
# the body size is pre-checked against the Content-Length `Headers`.
"Request",
"RequestInit",
"AbortController",
"AbortSignal",
"DomException",
"Headers",
"Worker",
"WorkerOptions",
"WorkerType",
"MessageEvent",
"ErrorEvent",
"Clipboard",
# The web image paste reads `navigator.clipboard.read()` items
# (sys::read_clipboard_image): their `types()`/`getType()` surface lives
# on ClipboardItem.
"ClipboardItem",
"KeyboardEvent",
"KeyboardEventInit",
"EventInit",
"EventTarget",
"BeforeUnloadEvent",
# COLORSCHEME SYSTEM resolves prefers-color-scheme through a media
# query listener read at boot and on every re-run.
"MediaQueryList",
"console",
"Node",
"HtmlElement",
"HtmlCanvasElement",
"CanvasRenderingContext2d",
"ImageData",
"DragEvent",
"DataTransfer",
"FileList",
"Event",
"ReadableStreamDefaultReader",
"ReadableStream",
# The ?file= boot deep link reads location.search and compares the link's
# origin against the page's (io::web_link).
"Location",
] }
iced = { git = "https://github.com/iced-rs/iced.git", rev = "23604ff22ab0aad9e00b9327cb7b8546ed84db39", features = ["webgl", "fira-sans"] }
[profile.release]
strip = true
[[bench]]
name = "performance_benchmarks"
harness = false