mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-25 10:17:02 -06:00
Preview in Browser wrote each preview into `VectorCraft Save for Web`, and before each preview it removed every file and folder there that was an hour old or older. Where the temporary folder is the shared /tmp, another user could make that folder first, writable by everyone, and the app wrote its previews inside it, in folders that user could read and replace. Where the system follows other users' links in /tmp, the folder could also be a link, and the app removed the old entries of the folder it named. A preview now uses that folder only when it is a folder and not a link, and on Linux, macOS and FreeBSD only when the current user owns it and no other user can write to it. On those systems the folder and each preview's folder are made with mode 0700. The cleanup removes only preview folders, on those systems only those the current user owns. When the shared folder can't be used, the preview goes to a new folder in the temporary folder. A later preview removes such folders once they are an hour old. Docs: docs/target-app-parity.md.
57 lines
2.0 KiB
TOML
57 lines
2.0 KiB
TOML
[package]
|
|
name = "vectorcraft-ui-egui"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "VectorCraft egui frontend (menus, panels, tools and canvas); swappable — nothing below depends on it"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
craft-ui = { workspace = true }
|
|
vectorcraft-geom = { workspace = true }
|
|
vectorcraft-color = { workspace = true }
|
|
vectorcraft-doc = { workspace = true }
|
|
vectorcraft-brush = { workspace = true }
|
|
vectorcraft-render = { workspace = true }
|
|
vectorcraft-text = { workspace = true }
|
|
vectorcraft-tools = { workspace = true }
|
|
vectorcraft-engine = { workspace = true }
|
|
vectorcraft-svg = { workspace = true }
|
|
vectorcraft-effects = { workspace = true }
|
|
vectorcraft-three-d = { workspace = true }
|
|
vectorcraft-plugins = { workspace = true }
|
|
vectorcraft-pdf = { workspace = true }
|
|
vectorcraft-cad = { workspace = true }
|
|
vectorcraft-eps = { workspace = true }
|
|
vectorcraft-format = { workspace = true }
|
|
egui = { workspace = true }
|
|
egui_extras = { workspace = true }
|
|
image = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
log = { workspace = true }
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
# `now_ms` (src/lib.rs) reads the page's `performance.now()` with this crate in the web build. It is
|
|
# MIT OR Apache-2.0 and already in the build through eframe.
|
|
web-time = "1"
|
|
|
|
# The current user's id (`geteuid`): Preview in Browser uses its temporary folder only when that
|
|
# user owns it (src/dialogs/save_for_web.rs). Already in Cargo.lock (tempfile), so this adds no
|
|
# new crate.
|
|
[target.'cfg(unix)'.dependencies]
|
|
rustix = { workspace = true, features = ["std", "process"] }
|
|
|
|
[dev-dependencies]
|
|
egui_kittest = { workspace = true, features = ["wgpu", "snapshot"] }
|
|
vectorcraft-testkit = { workspace = true }
|
|
# A variable font built in code (no font file is committed).
|
|
vectorcraft-text = { workspace = true, features = ["test-fonts"] }
|
|
wat = { workspace = true }
|
|
|
|
[build-dependencies]
|
|
serde_json = { workspace = true }
|
|
toml = "1"
|