Cargo.toml 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. [package]
  2. name = "llm-wiki"
  3. version = "2.2.28"
  4. description = "LLM Wiki - A personal knowledge base for LLM concepts"
  5. authors = []
  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. [lib]
  10. name = "llm_wiki_lib"
  11. crate-type = ["staticlib", "cdylib", "rlib"]
  12. [[bin]]
  13. name = "qmai"
  14. path = "src/main.rs"
  15. [build-dependencies]
  16. tauri-build = { version = "2", features = [] }
  17. [dependencies]
  18. tauri = { version = "2", features = ["protocol-asset"] }
  19. tauri-plugin-opener = "2"
  20. serde = { version = "1", features = ["derive"] }
  21. serde_json = "1"
  22. chrono = { version = "0.4", features = ["clock"] }
  23. tauri-plugin-dialog = "2.7.1"
  24. tauri-plugin-updater = "2"
  25. pdfium-render = "0.9"
  26. tauri-plugin-store = "2.4.2"
  27. tauri-plugin-http = { version = "2", features = ["unsafe-headers"] }
  28. zip = "2"
  29. calamine = "0.34.0"
  30. docx-rs = "0.4.20"
  31. cfb = "0.7.3"
  32. encoding_rs = "0.8.35"
  33. lancedb = "0.27.2"
  34. # tokio provided by tauri runtime for async commands
  35. arrow-array = "57"
  36. arrow-schema = "57"
  37. futures = "0.3"
  38. # Claude Code CLI subprocess transport: spawn `claude` as a child process,
  39. # stream stdout line-by-line back to the frontend. tokio::process gives us
  40. # async io and clean cancellation; `which` locates the binary on PATH.
  41. tokio = { version = "1", features = ["process", "io-util", "sync", "macros", "rt"] }
  42. which = "7"
  43. uuid = { version = "1", features = ["v4"] }
  44. toml = "0.8"
  45. # Multimodal image extraction (Phase 1):
  46. # `image` re-encodes pdfium's raw bitmap output to PNG so the IPC
  47. # payload is self-contained (the frontend doesn't need to know
  48. # about pdfium's internal RGBA layout).
  49. # `base64` serializes binary image data for Tauri IPC, which is
  50. # JSON-only — Vec<u8> roundtrips ~1.33× larger than raw bytes but
  51. # that's acceptable for our ~MB-scale per-image payloads.
  52. # `sha2` is for the dedup cache (Phase 3) — same image hash =
  53. # same caption, no redundant VLM calls. Pulled in here so the
  54. # extraction layer can also expose the hash if a caller wants it.
  55. image = { version = "0.25", default-features = false, features = ["png"] }
  56. base64 = "0.22"
  57. sha2 = "0.10"
  58. md-5 = "0.10"
  59. notify = "8"
  60. walkdir = "2"
  61. tauri-plugin-single-instance = "2"
  62. [dev-dependencies]
  63. tokio = { version = "1", features = ["macros", "rt", "rt-multi-thread"] }
  64. [profile.release]
  65. codegen-units = 1
  66. lto = true
  67. opt-level = "s"
  68. # Unwind (not abort) so third-party parser panics can be caught at the
  69. # Tauri command boundary via panic_guard and turned into errors. Slightly
  70. # larger binary, but prevents single-file corruption from killing the app.
  71. panic = "unwind"
  72. strip = true