mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-24 10:27:44 -06:00
* #687, #833: paste keeps other programs' formatting; Wayland clipboard pictures - Paste (Ctrl+V, Home > Paste) reads the system clipboard's HTML, else RTF, and keeps its formatting; our own copy still wins while the clipboard holds it. Windows CF_HTML headers are understood; oversized or empty payloads fall back to the text. - Merge Formatting inserts the content in the destination's font and paragraph, keeping bold, italic, underline and strikethrough (it did nothing before). - Paste Special lists what the system clipboard holds (HTML, RTF, picture, text); Mod+Alt+V opens it even with only a picture there. - Services gain clipboard_html, clipboard_rtf and clipboard_formats hooks; the host reads RTF on Windows (clipboard-win) and Wayland (wl-clipboard-rs). - Linux: arboard's wayland-data-control feature, so pictures copied in a browser or Spectacle reach a native Wayland window (KWin only syncs to Xwayland while an X11 window has focus); other picture types are read from Wayland directly. A paste that finds nothing usable names the formats on the clipboard, or why its picture couldn't be read, instead of "empty". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Review fixes for #847: translate the Paste Special picture strings; Windows/macOS unused import - `Picture` and `Pastes the clipboard's picture.` translated in all 15 interface catalogs. - clipboard.rs: `MAX_FILE_BYTES` is used only by the Linux/Wayland module, so it is named there; the top-level import was unused (a warning, and a clippy -D warnings error) on Windows and macOS. - Merged main (ROADMAP.md, docs/gaps.md, docs/file-format-parity.md, main.rs services: keeps both the clipboard hooks and the default-app hook from #295). Cargo.lock adds only the wl-clipboard-rs set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n: Hungarian and French strings for this change Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Dmitrii Khlapov <19991457+dkhlapov@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
98 lines
3.0 KiB
TOML
98 lines
3.0 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
default-members = ["crates/*", "apps/wordcraft", "apps/wordcraft-cli", "xtask"]
|
|
|
|
[workspace.package]
|
|
version = "0.6.0"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.90"
|
|
repository = "https://github.com/storytold/wordcraft"
|
|
|
|
[workspace.dependencies]
|
|
# internal
|
|
wordcraft-geom = { path = "crates/geom" }
|
|
wordcraft-doc = { path = "crates/doc" }
|
|
wordcraft-fonts = { path = "crates/fonts" }
|
|
wordcraft-layout = { path = "crates/layout" }
|
|
wordcraft-docx = { path = "crates/docx" }
|
|
wordcraft-docbin = { path = "crates/docbin" }
|
|
wordcraft-formats = { path = "crates/formats" }
|
|
wordcraft-render = { path = "crates/render" }
|
|
wordcraft-pdf = { path = "crates/pdf" }
|
|
wordcraft-proof = { path = "crates/proof" }
|
|
wordcraft-engine = { path = "crates/engine" }
|
|
wordcraft-mcp = { path = "crates/mcp" }
|
|
wordcraft-zotero = { path = "crates/zotero" }
|
|
wordcraft-control-key = { path = "crates/control-key" }
|
|
wordcraft-ui-egui = { path = "crates/ui-egui" }
|
|
wordcraft-metafile = { path = "crates/metafile" }
|
|
|
|
# foundation
|
|
kurbo = { version = "0.13", features = ["serde"] }
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
log = "0.4"
|
|
proptest = "1"
|
|
rayon = "1"
|
|
unicode-bidi = "0.3"
|
|
unicode-segmentation = "1"
|
|
unicode-linebreak = "0.1"
|
|
unicode-script = "0.5"
|
|
regex = { version = "1", default-features = false, features = ["std", "unicode", "perf"] }
|
|
regex-automata = { version = "0.4", default-features = false, features = ["std", "syntax", "meta", "nfa-pikevm", "unicode"] }
|
|
|
|
# text / rendering / formats
|
|
skrifa = "0.47"
|
|
harfrust = "0.13"
|
|
# WOFF / WOFF2 web fonts added by the user (#582): pure Rust (MIT); its brotli and zlib decoders
|
|
# (brotli-decompressor, flate2) are already in the tree.
|
|
wuff = "0.2.9"
|
|
vello_cpu = "0.2"
|
|
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp", "gif", "bmp", "tiff"] }
|
|
krilla = { version = "0.8", features = ["pdf"] }
|
|
quick-xml = "0.41"
|
|
zip = { version = "3", default-features = false, features = ["deflate"] }
|
|
# zlib streams (compressed metafile pictures in `.doc` drawings); already in the lock as a dependency of other crates.
|
|
miniz_oxide = "0.8"
|
|
cfb = "0.15"
|
|
# Password-protected (agile-encrypted) Word documents: pure-Rust RustCrypto primitives.
|
|
aes = "0.9"
|
|
sha1 = "0.11"
|
|
sha2 = "0.11"
|
|
hmac = "0.13"
|
|
base64 = "0.22"
|
|
getrandom = "0.3"
|
|
zeroize = "1"
|
|
|
|
# ui
|
|
egui = "0.36"
|
|
egui_extras = { version = "0.36", default-features = false }
|
|
eframe = { version = "0.36", default-features = false }
|
|
egui_kittest = "0.36"
|
|
rfd = "0.17"
|
|
arboard = { version = "3.6", default-features = false, features = ["wayland-data-control"] }
|
|
|
|
[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
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 16
|
|
debug = 0
|