Cargo.toml 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. [package]
  2. name = "qmai"
  3. version = "3.2.1"
  4. description = "QMAI - AI writing system for long-form novels"
  5. authors = ["Mochocyang"]
  6. edition = "2021"
  7. default-run = "qmai"
  8. # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
  9. [[bin]]
  10. name = "qmai"
  11. path = "src/main.rs"
  12. [build-dependencies]
  13. tauri-build = { version = "2", features = [] }
  14. [dependencies]
  15. tauri = { version = "2", features = ["protocol-asset"] }
  16. tauri-plugin-opener = "2"
  17. serde = { version = "1", features = ["derive"] }
  18. serde_json = "1"
  19. chrono = { version = "0.4", features = ["clock"] }
  20. tauri-plugin-dialog = "2.7.2"
  21. tauri-plugin-updater = "2"
  22. tauri-plugin-store = "2.4.4"
  23. tauri-plugin-http = { version = "2", features = ["unsafe-headers"] }
  24. zip = "2"
  25. calamine = "0.34.0"
  26. docx-rs = "0.4.22"
  27. cfb = "0.7.3"
  28. encoding_rs = "0.8.35"
  29. lancedb = "0.27.2"
  30. # tokio provided by tauri runtime for async commands
  31. arrow-array = "57"
  32. arrow-schema = "57"
  33. futures = "0.3"
  34. # Claude Code CLI subprocess transport: spawn `claude` as a child process,
  35. # stream stdout line-by-line back to the frontend. tokio::process gives us
  36. # async io and clean cancellation; `which` locates the binary on PATH.
  37. tokio = { version = "1", features = ["process", "io-util", "sync", "macros", "rt"] }
  38. which = "7"
  39. uuid = { version = "1", features = ["v4"] }
  40. toml = "0.8"
  41. # Multimodal image extraction (Office docs):
  42. # `image` decodes embedded PPTX/DOCX raster bytes so we can apply
  43. # the size filter before writing them to disk.
  44. # `base64` serializes binary image data for Tauri IPC, which is
  45. # JSON-only — Vec<u8> roundtrips ~1.33× larger than raw bytes but
  46. # that's acceptable for our ~MB-scale per-image payloads.
  47. # `sha2` is for the dedup cache (Phase 3) — same image hash =
  48. # same caption, no redundant VLM calls. Pulled in here so the
  49. # extraction layer can also expose the hash if a caller wants it.
  50. image = { version = "0.25", default-features = false, features = ["png"] }
  51. base64 = "0.22"
  52. sha2 = "0.10"
  53. md-5 = "0.10"
  54. notify = "8"
  55. walkdir = "2"
  56. tauri-plugin-single-instance = "2"
  57. keepawake = "0.6"
  58. [dev-dependencies]
  59. tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
  60. [profile.release]
  61. codegen-units = 1
  62. lto = true
  63. opt-level = "z"
  64. # Unwind (not abort) so third-party parser panics can be caught at the
  65. # Tauri command boundary via panic_guard and turned into errors. Slightly
  66. # larger binary, but prevents single-file corruption from killing the app.
  67. panic = "unwind"
  68. strip = true