Android becomes a native Kotlin client over this same code (Scribe note 2730), so
the local store and sync engine stop being modules of the desktop app and become
`thoughtsync-core`, a crate with no UI framework in it at all.
This is a move, not a rewrite, and the measurement is why: every file in local/
and sync/ already carried ZERO Tauri references — 4,980 of 6,372 lines. The
coupling was 473 lines of command shim, which stays behind in the desktop crate
as src/commands/. Kept as git renames so history follows the files.
The desktop imports them under their old names (`use thoughtsync_core::{local,
sync}`) so every call site reads exactly as before. What moved is where they
live, not what they are.
Two things a workspace changes that are easy to miss, both caught before pushing:
[profile.release] now lives at the workspace ROOT. Cargo silently ignores
profiles declared by a non-root member — leaving it in the desktop crate would
have dropped lto/strip/opt-level from every release build with only a warning.
And a workspace shares ONE target dir, so the bundles moved from
desktop/src-tauri/target to target/. Thirteen references across publish-release,
debundle-graphics, verify.sh, package-prebuilt and the workflow now point there.
Pinning target-dir back would have been the smaller diff, but the Android lane
also produces Rust artifacts and they do not belong under desktop/.
Also retires the Tauri Android lane in the same push rather than leaving a path
that is being replaced: gen/android, android.yml and docs/android-dev.md are
gone, the mobile_entry_point attribute with them, and the lib drops to rlib —
staticlib/cdylib existed for Tauri mobile, and the .so Android loads will be
built from the core crate instead. Rule 22, no parallel path.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
15 lines
709 B
Rust
15 lines
709 B
Rust
//! ThoughtSync's client core: the on-device SQLite store and the sync engine.
|
|
//!
|
|
//! Deliberately free of any UI framework. The desktop wraps it in Tauri commands;
|
|
//! the Android client binds it through uniffi. Neither owns it, and a change to
|
|
//! either must not require touching this crate — that separation is the whole point
|
|
//! (see Scribe note 2730). It was already true before the split: every file here
|
|
//! carried zero Tauri references, which is what made the extraction a move rather
|
|
//! than a rewrite.
|
|
//!
|
|
//! - `local` — the source of truth. Works with no server and no account.
|
|
//! - `sync` — entirely opt-in. Nothing in it runs until a server is linked.
|
|
|
|
pub mod local;
|
|
pub mod sync;
|