| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- [package]
- name = "qmai"
- version = "3.2.7"
- description = "QMAI - AI writing system for long-form novels"
- authors = ["Mochocyang"]
- edition = "2021"
- default-run = "qmai"
- # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
- [[bin]]
- name = "qmai"
- path = "src/main.rs"
- [build-dependencies]
- tauri-build = { version = "2", features = [] }
- [dependencies]
- tauri = { version = "2", features = ["protocol-asset"] }
- tauri-plugin-opener = "2"
- serde = { version = "1", features = ["derive"] }
- serde_json = "1"
- chrono = { version = "0.4", features = ["clock"] }
- tauri-plugin-dialog = "2.7.2"
- tauri-plugin-updater = "2"
- tauri-plugin-store = "2.4.4"
- tauri-plugin-http = { version = "2", features = ["unsafe-headers"] }
- zip = "2"
- calamine = "0.34.0"
- docx-rs = "0.4.22"
- cfb = "0.7.3"
- encoding_rs = "0.8.35"
- # Local vector store only. lancedb 0.27.2 already has empty default features;
- # keep them off so aws/gcs/azure/remote/openai never sneak in. DataFusion is a
- # hard dependency of this crate and cannot be feature-gated away.
- lancedb = { version = "0.27.2", default-features = false }
- # tokio provided by tauri runtime for async commands
- arrow-array = "57"
- arrow-schema = "57"
- futures = "0.3"
- # Claude Code CLI subprocess transport: spawn `claude` as a child process,
- # stream stdout line-by-line back to the frontend. tokio::process gives us
- # async io and clean cancellation; `which` locates the binary on PATH.
- tokio = { version = "1", features = ["process", "io-util", "sync", "macros", "rt"] }
- which = "7"
- uuid = { version = "1", features = ["v4"] }
- toml = "0.8"
- # Multimodal image extraction (Office docs):
- # `image` decodes embedded PPTX/DOCX raster bytes so we can apply
- # the size filter before writing them to disk.
- # `base64` serializes binary image data for Tauri IPC, which is
- # JSON-only — Vec<u8> roundtrips ~1.33× larger than raw bytes but
- # that's acceptable for our ~MB-scale per-image payloads.
- # `sha2` is for the dedup cache (Phase 3) — same image hash =
- # same caption, no redundant VLM calls. Pulled in here so the
- # extraction layer can also expose the hash if a caller wants it.
- image = { version = "0.25", default-features = false, features = ["png"] }
- base64 = "0.22"
- sha2 = "0.10"
- md-5 = "0.10"
- notify = "8"
- walkdir = "2"
- tauri-plugin-single-instance = "2"
- keepawake = "0.6"
- [target.'cfg(target_os = "macos")'.dependencies]
- objc2 = "0.6.4"
- objc2-foundation = { version = "0.3.2", default-features = false, features = ["std", "NSString", "NSProcessInfo"] }
- [dev-dependencies]
- tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
- [profile.release]
- codegen-units = 1
- lto = true
- opt-level = "z"
- # Unwind (not abort) so third-party parser panics can be caught at the
- # Tauri command boundary via panic_guard and turned into errors. Slightly
- # larger binary, but prevents single-file corruption from killing the app.
- panic = "unwind"
- strip = true
|