mirror of
https://github.com/storytold/cadcraft.git
synced 2026-10-28 04:46:50 -06:00
* Pin craft-libs at craft-libs#312's head (4dc543c) for the dock-column move * Side panels dock in left and right dock columns Tool Sets sits in a left dock column and Layers above Properties in a right one, at the widths of the old side frames. Palettes dock only into those columns: a window edge without a dock makes one, and neither the drawing nor the top and bottom edges take a drop. A palette opened with no recorded place goes into its dock group (External References below Properties). Iconic columns show CADCraft's own code-drawn icons. * Workspace file: dock layout version; split-frame layouts reset to the default The workspace file saves dockingVersion next to the panel layout. A layout saved without it, or with an older one, is dropped with its hidden panels on load; the other workspace settings are kept. * Floating panels open in their own OS windows on the desktop - craft-ui's native-windows feature is on for the desktop app (not the web build) and for the UI crate's tests. - While the Save changes prompt, Drawing Recovery or another egui modal is up, the panels' OS windows take no input. - Keys, text and clipboard events typed in a panel's OS window go into the main window's next input, so shortcuts, the command line and the canvas get them. - Files dropped on a panel's OS window open like files dropped on the main window. * Floating windows stay below the macOS title row A drag in that row moves the whole app window, so a floating panel drawn over it could not be moved or used. The dock area keeps floating windows, flyouts and drag ghosts below it. * Opening a floating panel from a menu or command brings its window to the front * Workspace saves are spaced at least 500 ms apart, so dragging a floating window doesn't write the file every frame * Pin craft-libs at #312's head b6d35e28 * Pin craft-libs at #313's head cdc67131 (result-rectangle drop preview) * The title row is craft-window's title bar Its empty part moves the window and follows the macOS double-click setting, and does nothing in full screen. On macOS the window's movable flag follows the pointer, so AppKit's title-band drag leaves the window still under the row's controls and under floating panels. Floating panels may therefore go over the title row again. craft-window is pinned at craft-libs#316's head, which is not stacked on the craft-ui pin. * Pin craft-libs at 189b4ffe (#313 and #316 merged) * macOS menu choices and their shortcuts run at once A menu choice is no window event, so the app ran it only at its next frame for another reason: File ▸ Close (Cmd+W) on an edited drawing showed "Save changes?" and dimmed the floating palettes a second or two late. The menu's event handler now wakes the app. * Pin craft-libs at pin-round3 d24e4bcc * Cargo.lock and the native-window test helper after the egui 0.37 merge * Pin craft-libs at #334 (4638095): the title bar's empty area takes no keyboard focus * Pin craft-libs at main 271594c0 * A modifier the main window changes while panel keys are forwarded is the one put back
114 lines
5.7 KiB
TOML
114 lines
5.7 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
# default-members
|
|
|
|
[workspace.package]
|
|
version = "0.13.0"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
repository = "https://github.com/storytold/cadcraft"
|
|
|
|
[workspace.dependencies]
|
|
# internal
|
|
cadcraft-geom = { path = "crates/geom" }
|
|
cadcraft-dxf = { path = "crates/dxf" }
|
|
cadcraft-dwg = { path = "crates/dwg" }
|
|
cadcraft-color = { path = "crates/color" }
|
|
cadcraft-doc = { path = "crates/doc" }
|
|
cadcraft-constraints = { path = "crates/constraints" }
|
|
cadcraft-fonts = { path = "crates/fonts" }
|
|
cadcraft-render = { path = "crates/render" }
|
|
cadcraft-io = { path = "crates/io" }
|
|
cadcraft-engine = { path = "crates/engine" }
|
|
cadcraft-ui-egui = { path = "crates/ui-egui" }
|
|
cadcraft-mcp = { path = "crates/mcp" }
|
|
# Which paths stored in a drawing (xrefs, data links) may be opened.
|
|
craft-docpath = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab" }
|
|
# PDF writing (krilla) for plots, and reading them back in tests. The root patches below pin
|
|
# craft-pdf's patched backends to the same revision (Cargo ignores dependency-local patches).
|
|
craft-pdf = { version = "=0.1.0", git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab", default-features = false }
|
|
|
|
# foundation
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
log = "0.4"
|
|
# All date/time conversion goes through chrono (no hand-rolled calendar code beyond the 400-year range extension; AGENTS.md).
|
|
chrono = { version = "0.4.45", default-features = false, features = ["std"] }
|
|
rayon = "1"
|
|
|
|
# rendering / formats
|
|
tiny-skia = { version = "0.12", default-features = false, features = ["std", "simd", "png-format"] }
|
|
lyon_tessellation = "1.0.22"
|
|
skrifa = "0.48"
|
|
# Text shaping (OpenType GSUB/GPOS, HarfBuzz port on read-fonts; egui's epaint is still on 0.12,
|
|
# so the graph has both) and the Unicode Bidirectional Algorithm for right-to-left drawing text.
|
|
harfrust = "0.14"
|
|
unicode-bidi = "0.3.18"
|
|
image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
|
|
encoding_rs = "0.8.35"
|
|
# XML for the SVG reader (streaming parser, no entity expansion beyond the five predefined ones)
|
|
quick-xml = "0.42"
|
|
|
|
# ui
|
|
craft-ui = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab", features = ["serde"] }
|
|
craft-window = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab", features = ["egui"] }
|
|
egui = { version = "0.37", default-features = false, features = ["default_fonts", "monochrome_emoji_fonts"] }
|
|
egui_kittest = "0.37"
|
|
eframe = { version = "0.37", default-features = false }
|
|
egui-wgpu = "0.37"
|
|
# Monotonic time on native and web (performance.now on wasm).
|
|
web-time = "1.1"
|
|
craft-update = { git = "https://github.com/storytold/craft-libs", version = "=0.1.0", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab", features = ["egui"] }
|
|
rfd = "0.17"
|
|
arboard = { version = "3.6", default-features = false }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
too_many_arguments = "allow"
|
|
type_complexity = "allow"
|
|
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
debug = false
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
debug = "line-tables-only"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 16
|
|
debug = 0
|
|
|
|
# PDF backends for craft-pdf: pinned to the same reviewed craft-libs revision as craft-pdf itself
|
|
# (Cargo ignores dependency-local patches).
|
|
[patch.crates-io]
|
|
krilla = { version = "=0.8.2", git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab" }
|
|
hayro-syntax = { git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab" }
|
|
hayro-jbig2 = { git = "https://github.com/storytold/craft-libs", rev = "9f89fe8f6d72ab4db4cc06f186381a6a254463ab" }
|
|
|
|
# Keep the complete egui family and native event bridge on reviewed fork commits.
|
|
ecolor = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
emath = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint_default_fonts = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-winit = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-wgpu = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_glow = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_extras = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_kittest = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_system_font_provider = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
eframe = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_demo_lib = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_inspection = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
winit = { git = "https://github.com/storytold/winit.git", rev = "a517b3846ee8457d84ee4975110bfda6797c44dc" }
|