libchat/Cargo.toml
Ivan FB 1123c7fa70
chore: vendor logos-delivery bindings and wire the workspace
libchat's hand-written FFI to liblogosdelivery is replaced by the upstream
`waku-bindings` crate. It is unpublished and its build script compiles the
native library from Nim sources in its own submodule, so it is consumed from
a checkout under vendor/ as its README prescribes, pinned as a submodule.

The macOS link frameworks and the chronicles log-level define ride in this
crate's .cargo/config.toml: a path dependency's config is not inherited, and
the native node's logging is compile-time only (its runtime logLevel is a
no-op), so without the define the library floods stdout and no TUI on top is
readable. The vendor directory is excluded from the workspace so its Nim
build is not dragged into `--workspace` builds, fmt or clippy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ai43sF2rymPFMG9iki9fwL
2026-07-18 17:29:51 +02:00

68 lines
2.2 KiB
TOML

[workspace]
resolver = "3"
members = [
"bin/channel-chat",
"bin/chat-cli",
"core/account",
"core/conversations",
"core/crypto",
"core/double-ratchets",
"core/integration_tests_core",
"core/shared-traits",
"core/sqlite",
"core/storage",
"crates/logos-chat",
"crates/generic-chat",
"extensions/components",
"extensions/embedded-logos-delivery",
]
# A path dependency living inside the workspace directory is otherwise pulled in
# as a member automatically, which would put the vendored bindings — and the
# whole Nim build behind them — into `--workspace` builds, `cargo fmt --all` and
# clippy. Excluding the directory keeps it a plain path dependency: only the
# crates that actually depend on it build it.
exclude = ["vendor/logos-delivery-rust-bindings"]
default-members = [
"core/account",
"core/conversations",
"core/crypto",
"core/double-ratchets",
"core/integration_tests_core",
"core/shared-traits",
"core/sqlite",
"core/storage",
"crates/generic-chat",
]
[workspace.dependencies]
# Internal Workspace dependency declarations (sorted)
logos-account = { path = "core/account" }
chat-sqlite = { path = "core/sqlite" }
components = { path = "extensions/components" }
crypto = { path = "core/crypto" }
embedded-logos-delivery = { path = "extensions/embedded-logos-delivery" }
libchat = { path = "core/conversations" }
logos-chat = { path = "crates/logos-chat" }
logos-generic-chat = { path = "crates/generic-chat" }
shared-traits = { path = "core/shared-traits" }
storage = { path = "core/storage" }
# The upstream logos-delivery bindings. Unpublished, and its build.rs builds the
# native library out of its own `vendor/` submodule, so it is consumed from the
# checkout under vendor/ rather than from a registry — as its README prescribes.
waku-bindings = { path = "vendor/logos-delivery-rust-bindings/waku-bindings" }
# External Workspace dependency declarations (sorted)
base64 = "0.22"
blake2 = "0.10"
crossbeam-channel = "0.5"
# Panicking across FFI boundaries is UB; chat-cli registers Rust callbacks
# that liblogosdelivery invokes, so abort instead of unwinding.
[profile.release]
panic = "abort"