mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-22 19:08:48 +00:00
A copy or cut of one equation on its own now also puts its MathML in the platform's MathML clipboard formats, beside the HTML (with MathML, #816) and the linear text: "MathML" and "MathML Presentation" (UTF-16LE) on Windows, public.mathml.presentation and public.mathml on macOS. These are the names W3C MathML 3 section 6.2.4 registers, and Microsoft's "MathML Support in Microsoft 365" doc says Office checks them first when it pastes math. No public clipboard format carries OMML. A copy with text around the equation doesn't offer them, so Word keeps the text. Not yet verified in Word: the parity docs say MathML clipboard formats, not an editable paste. Claude-Session: https://claude.ai/code/session_01P8veLveuUsJJm6UEcQPEuW Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]> Co-authored-by: Brandon Thomas <[email protected]>
85 lines
4.6 KiB
TOML
85 lines
4.6 KiB
TOML
[package]
|
||
name = "wordcraft"
|
||
version.workspace = true
|
||
edition.workspace = true
|
||
license.workspace = true
|
||
publish = false
|
||
default-run = "wordcraft"
|
||
description = "WordCraft desktop app"
|
||
|
||
[lints]
|
||
workspace = true
|
||
|
||
[dependencies]
|
||
wordcraft-doc = { workspace = true }
|
||
wordcraft-engine = { workspace = true }
|
||
wordcraft-proof = { workspace = true }
|
||
# Fonts the user added (#582) load from the settings folder at start-up.
|
||
wordcraft-fonts = { workspace = true }
|
||
wordcraft-ui-egui = { workspace = true }
|
||
# The control key file's location (shared with the MCP bridge).
|
||
wordcraft-control-key = { workspace = true }
|
||
eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "wayland", "x11", "links"] }
|
||
egui = { workspace = true }
|
||
serde_json = { workspace = true }
|
||
log = { workspace = true }
|
||
|
||
[build-dependencies]
|
||
# Icon + VERSIONINFO for wordcraft.exe; build.rs only uses it when the target is Windows.
|
||
winresource = "0.1"
|
||
|
||
[target.'cfg(target_os = "macos")'.dependencies]
|
||
# Finder double-click, Open With, Dock drops and `open -a WordCraft letter.docx` arrive as a
|
||
# kAEOpenDocuments Apple event, which winit 0.30 doesn't handle (#27). This audited crate (also used
|
||
# by PdfCraft and PhotoCraft) registers the handler (Objective-C interop needs unsafe, which our
|
||
# workspace forbids) behind a safe API. Pinned exactly: review the diff before bumping.
|
||
fmv-macos-events = "=0.1.0"
|
||
# The system's Reduce motion setting (System Settings › Accessibility › Display), read through
|
||
# NSWorkspace: a safe call in these bindings. Already in the build through eframe, rfd and arboard,
|
||
# at this version; this adds the `NSAccessibility` bindings and, to fit the title bar around the
|
||
# traffic lights, the window, button and view ones.
|
||
objc2-app-kit = { version = "0.3", default-features = false, features = ["std", "NSWorkspace", "NSAccessibility", "NSApplication", "NSWindow", "NSButton", "NSControl", "NSView", "NSResponder", "NSPasteboard"] }
|
||
objc2 = "0.6"
|
||
# A copied equation's MathML goes on the pasteboard as `public.mathml.presentation` beside
|
||
# arboard's HTML and text (#1297), through NSPasteboard's safe `setString:forType:`. Already in
|
||
# the build through arboard, at this version; this adds only the NSString bindings.
|
||
objc2-foundation = { version = "0.3", default-features = false, features = ["std", "NSString"] }
|
||
# Closing the window must quit through NSApplication rather than by dropping the NSWindow
|
||
# inside the AppKit run loop (see `schedule_macos_terminate`).
|
||
dispatch2 = "0.3"
|
||
|
||
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
|
||
winit = { version = "0.30", default-features = false, features = ["x11"] }
|
||
# The desktop's animation setting on Linux and the BSDs, read from the XDG settings portal over
|
||
# D-Bus. Already in the build through AccessKit, at this version; this adds only its blocking API.
|
||
zbus = { version = "5", default-features = false, features = ["async-io", "blocking-api"] }
|
||
# Wayland's clipboard through the data-control protocol (#687, #833): the RTF and other picture
|
||
# types that arboard doesn't read, and the formats offered. Already in the build through arboard's
|
||
# `wayland-data-control` feature, at this version.
|
||
wl-clipboard-rs = "0.9"
|
||
|
||
[target.'cfg(target_os = "windows")'.dependencies]
|
||
# The upstream default-apps button opens Windows Settings; printing uses craft-print instead.
|
||
open = "5"
|
||
# The system's Animation effects setting (Settings › Accessibility › Visual effects), read through
|
||
# the Windows Runtime's UISettings: a safe API, where the Win32 call needs unsafe, which our
|
||
# workspace forbids. Already in the build through wgpu and AccessKit, at this version; this adds
|
||
# only the `UI_ViewManagement` bindings, and `System_UserProfile` for the home region new
|
||
# documents take their paper and units from (#838).
|
||
windows = { version = "0.62", features = ["UI_ViewManagement", "System_UserProfile"] }
|
||
# The clipboard's "Rich Text Format" and the names of its formats (#687, #833), which arboard
|
||
# doesn't read. Already in the build through arboard, at this version.
|
||
clipboard-win = { version = "5.4", features = ["std"] }
|
||
|
||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||
craft-print = { git = "https://github.com/storytold/craft-libs", rev = "d27646a5f7c8b4fc85d9dd3213b8c88b58e0088d" }
|
||
rfd = { workspace = true }
|
||
# Waits for an `rfd::AsyncFileDialog` on a background thread (the dialogs don't block the UI, #94);
|
||
# rfd itself already depends on it.
|
||
pollster = "0.4"
|
||
# Pictures and copied files on the system clipboard (#45); egui's paste only carries text. Already
|
||
# in the build through egui-winit, with the same features.
|
||
arboard = { workspace = true, features = ["image-data"] }
|
||
# The control server's random key.
|
||
getrandom = "0.3"
|