[workspace] members = [ "koharu", "koharu-llm", "koharu-ml", "koharu-runtime", "koharu-ai", "koharu-psd", "koharu-renderer", "koharu-app", "koharu-rpc", "koharu-core", "tests/integration-tests", "tests/integration-tests/client", ] default-members = ["koharu"] resolver = "3" [workspace.package] version = "0.58.0" edition = "2024" description = "Manga translation tools" license = "GPL-3.0-only" authors = [ "Mayo Takanashi ", "Wangchong Zhou ", ] readme = "README.md" homepage = "https://koharu.rs" repository = "https://github.com/mayocream/koharu" keywords = ["manga", "ocr", "translation", "deep_learning", "computer_vision"] publish = false [workspace.dependencies] koharu-app = { path = "koharu-app", default-features = false } koharu-core = { path = "koharu-core", default-features = false } koharu-llm = { path = "koharu-llm" } koharu-runtime = { path = "koharu-runtime", default-features = false } koharu-ai = { path = "koharu-ai", default-features = false } koharu-ml = { path = "koharu-ml", default-features = false } koharu-psd = { path = "koharu-psd", default-features = false } koharu-renderer = { path = "koharu-renderer", default-features = false } koharu-rpc = { path = "koharu-rpc", default-features = false } candle-transformers = "=0.9.2" candle-core = "=0.9.2" candle-nn = "=0.9.2" candle-flash-attn = "=0.9.2" hf-hub = "0.5" image = "0.25" anyhow = "1.0" async-trait = "0.1" imageproc = "0.26" clap = { version = "4.5", features = ["derive"] } serde = { version = "1", features = ["derive"] } serde_bytes = "0.11" serde_json = "1.0" tokio = { version = "1.51", features = ["full"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "registry"] } console = "0.16" open = "5.3" rfd = "0.17" postcard = { version = "1.0", features = ["use-std"] } thiserror = "2.0" tauri = { version = "2.11", features = ["devtools"] } tauri-build = "2.6" tauri-plugin-dialog = "2.4" tauri-plugin-fs = "2.5" tauri-plugin-opener = "2.5" tauri-plugin-updater = "2.10" blake3 = "1.8" rayon = "1.12" # disables `esaxx_fast` feature which is conflicting with `ort` tokenizers = { version = "0.23", default-features = false, features = ["onig"] } strum = { version = "0.28", features = ["derive"] } zip = { version = "8.6", default-features = false, features = ["deflate"] } dirs = "6.0" futures = "0.3" eventsource-stream = "0.2.3" reqwest = { version = "0.13", features = ["stream", "json", "form", "blocking", "multipart"] } secrecy = { version = "0.10", features = ["serde"] } reqwest-middleware = "0.5" reqwest-retry = "0.9" toml = "1.1" inventory = "0.3" url = { version = "2.5", features = ["serde"] } arc-swap = "1.7" camino = { version = "1.1", features = ["serde1"] } indexmap = { version = "2.13", features = ["serde"] } flate2 = { version = "1.0", default-features = false, features = [ "zlib-ng-compat", ] } csv = "1.3" tempfile = "3.24" once_cell = "1.21" libloading = "0.8.9" num_cpus = "1.17" rustfft = "6.4" cudarc = { version = "0.19.4", features = [ "cuda-version-from-build-system", "cufft", "std", "cublas", "cublaslt", "curand", "cudnn", "driver", "dynamic-loading", "nvrtc", "f16", "f8", ] } objc2 = "0.6" objc2-metal = "0.3" objc2-metal-performance-shaders = "0.3" objc2-metal-performance-shaders-graph = "0.3" objc2-foundation = "0.3" indicatif = "0.18" minijinja = "2.19" minijinja-contrib = { version = "2.19", features = ["pycompat"] } windows = { version = "0.62", features = [ "Win32", "Win32_System", "Win32_System_Console", "Win32_UI_WindowsAndMessaging", ] } windows-sys = "0.61" winreg = "0.56" skrifa = "0.42" harfrust = "0.6" hypher = "0.1.7" icu_properties = "2.2" icu_segmenter = "2.2" jieba-rs = "0.9.0" fontdb = "0.23" fontdue = "0.9" tiny-skia = "0.12" axum = { version = "0.8", features = ["multipart", "ws"] } async-stream = "0.3" rmp-serde = "1" rmpv = { version = "1", features = ["with-serde"] } rmcp = { version = "1.6", features = [ "server", "transport-streamable-http-server", ] } schemars = { version = "1.2", features = ["chrono04", "indexmap2", "uuid1"] } utoipa = { version = "5", features = ["axum_extras", "chrono", "indexmap", "uuid"] } utoipa-axum = "0.2" uuid = { version = "1.18", features = ["v4", "v7", "serde"] } chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] } atomicwrites = "0.4" fs4 = "1" parking_lot = "0.12" dashmap = "6" tokio-stream = { version = "0.1", features = ["sync"] } walkdir = "2.5" proptest = "1.6" insta = "1.41" base64 = "0.22" tower-http = { version = "0.6", features = ["cors"] } unicode-bidi = "0.3" criterion = { version = "0.8", features = ["html_reports"] } git-version = "0.3" keyring = "3.6" lru = "0.18" petgraph = "0.8" petname = "3" tauri-plugin-process = "2.3" natord = "1.0.9" sentry = { version = "0.48", features = ["tracing"] } [patch.crates-io] candle-transformers = { git = "https://github.com/mayocream/candle", branch = "flash-attn" } candle-core = { git = "https://github.com/mayocream/candle", branch = "flash-attn" } candle-nn = { git = "https://github.com/mayocream/candle", branch = "flash-attn" } candle-flash-attn = { git = "https://github.com/mayocream/candle", branch = "flash-attn" } ug = { git = "https://github.com/mayocream/ug", branch = "cuda-dynamic-loading" } ug-cuda = { git = "https://github.com/mayocream/ug", branch = "cuda-dynamic-loading" } [profile.dev.package.image] opt-level = 3 [profile.dev.package.imageproc] opt-level = 3 [profile.release-with-debug] inherits = "release" debug-assertions = true