feat: gsmol-compatible backup export and import behind the store feature

This commit is contained in:
randogoth 2026-09-29 00:23:04 +03:00
parent 96d2412370
commit 4a780ed648
6 changed files with 528 additions and 17 deletions

View file

@ -46,6 +46,10 @@ fumi send <address> [--subject S] [--body TEXT | --file F | -] [--header K:V] [-
fumi fetch [--keep] [--reset] retrieve, verify, store, acknowledge
fumi delete <id>... remove from the server explicitly
fumi list [--sent] [--requests]
# backups
fumi export [FILE] write a gsmol backup: sealed mail, contacts, pins — never the master
fumi import-backup <FILE> restore one; merges, never overwrites a trust binding
fumi read <id> [--sent]
# RNS carrier (built with --features rns / nix build .#rns); addresses select
@ -116,6 +120,7 @@ An importer should set `user_version` to 2 (a v1 store is migrated on open inste
| `core/src/rns/` | the Reticulum carrier behind the `rns` feature: FFI over `core/shim/`, path discovery, one link per session |
| `core/src/client.rs` | the six operations, AUTH, chain walking, token sync, fetch pipeline with cancellation; store-taking items behind the `store` feature |
| `core/src/store.rs` | SQLite behind the `store` feature: state, contacts, accepted, tokens, seen ids, inbox, sent; `Send + Sync`, WAL, versioned schema |
| `core/src/export.rs` | the gsmol backup format behind the `store` feature: sealed payload of mail, contacts and pins, interchangeable with gsmol exports |
| `core/src/error.rs` | the `Error` enum embedders match on, the status-code mapping |
| `core/vectors.json` | the committed reference vectors, the tests' source of truth |
| `cli/src/main.rs` | the command line: keyfile and `--db` conventions, hints, output |