Files
vectorcraft/crates/ui-egui/Cargo.toml
T
dotCooCoo c84ece827c i18n: parameter schema errors translate what the value must be
A parameter schema's error ("`zoom` must be a number > 0, not -1") was
translated around its requirement, which stayed in English in every
language: only "a number", "a string" and "true or false" had rows.

- Every complete catalog gets a row for each requirement a schema
  writes: a number with each kind of range and with a unit, an integer
  and its range, a list of names, an object id, a list of object ids,
  a color, a point, an object and a list. The bounds, unit and names
  stay as the English gives them.
- An enum error no longer matches the `{key}` must be one of {_1} row,
  which took `"a", "b", not "c"` as its list and left ", not ..." in
  English: a `{path}` must be one of {_1}, not {got} row translates it,
  in the complete catalogs and in Bulgarian, Bosnian, Danish,
  Indonesian and Dutch.
- A part of a message that starts with `{` or `[` is translated only
  when it is an exact message, so "[x, y] (two numbers)" translates and
  JSON values, shown cut short or whole, stay as they are.

Docs: docs/mcp.md (Parameter schemas), docs/target-app-parity.md.
2026-11-12 20:00:10 -08:00

80 lines
3.5 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
[features]
default = ["bundled-fonts", "interface-fonts"]
# The fonts vectorcraft-text bundles for documents, through the engine's `bundled-fonts`. Off, for
# an embedder that supplies every document font at run time (`vectorcraft_text::FontDb::add_font`);
# the interface's own faces are `interface-fonts`.
bundled-fonts = ["vectorcraft-engine/bundled-fonts"]
# The interface's own faces (theme.rs: Inter, Source Sans 3, JetBrains Mono, about 2 MB). Off, the
# panels and dialogs draw in egui's built-in fonts, which lack some symbols they show (→ ▾ ● ✓);
# `theme::install_fonts` binds their families either way.
interface-fonts = []
[dependencies]
craft-ui = { workspace = true }
craft-keymap = { workspace = true, features = ["egui"] }
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, features = ["bytemuck", "default_fonts", "monochrome_emoji_fonts"] }
# With egui's `bytemuck`: copies rendered rasters into egui images whole (`canvas::color_image`).
# `default_fonts`: egui 0.37 makes its bundled faces opt-in, and a dependency's dev-features do not
# reach our tests; `theme::install_fonts` starts from `FontDefinitions::default()`, which is empty
# without them (production would lay out tofu, and the no-interface-fonts tests would bind nothing).
bytemuck = { version = "1", features = ["extern_crate_alloc"] }
egui_extras = { workspace = true }
image = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
log = { workspace = true }
# Floating panels open in OS windows of their own on the desktop; on the web they stay in the page.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
craft-ui = { workspace = true, features = ["native-windows"] }
craft-update = { 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-apischema = { workspace = true }
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"