mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-15 03:37:03 -04:00
New files from Combine, Extract, Split and Create, signed, timestamped and LTV-embedded files and the OCR batch output reopen with their pages before anyone writes them, as saves already did. The desktop app, the automation tools (with or without --root) and the CLI's edit, combine, extract and split write through pdfcraft_platform::staging::write_atomically, so a failed write or --out naming the input never leaves a half-written file. Special files such as /dev/stdout are still written as given. Claude-Session: https://claude.ai/code/session_01RUNQSPVXx3dDBabRZHAnjz Co-authored-by: Claude Fable 5.1 <[email protected]> Co-authored-by: Brandon Thomas <[email protected]>
29 lines
1005 B
TOML
29 lines
1005 B
TOML
[package]
|
|
name = "pdfcraft-platform"
|
|
description = "Operating-system services shared by the PdfCraft desktop app and automation tools"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
# `write_atomically`: a volume that refuses F_FULLFSYNC gets a plain fsync.
|
|
rustix = { version = "1", features = ["fs"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
# Already in the dependency graph through the accessibility integration. The portal watcher
|
|
# uses the async API so dropping it can cancel an idle subscription without polling.
|
|
zbus = { version = "=5.19.0", default-features = false, features = ["async-io"] }
|
|
async-channel = "2"
|
|
futures-lite = "2"
|
|
|
|
[dev-dependencies]
|
|
# Exercise the actual portal wire decoder and cancellable worker on every native test host.
|
|
zbus = { version = "=5.19.0", default-features = false, features = ["async-io"] }
|
|
async-channel = "2"
|
|
futures-lite = "2"
|