docs: README refactor
This commit is contained in:
parent
3ffaf34ca4
commit
996e879509
1 changed files with 13 additions and 13 deletions
26
README.md
26
README.md
|
|
@ -1,11 +1,11 @@
|
||||||
# kirakira
|
# キラキラ kirakira
|
||||||
|
|
||||||
[](https://ai-declaration.md)
|
[](https://ai-declaration.md)
|
||||||
[](https://opensource.org/licenses/MIT)   [](https://github.com/sarthakkimtani/flash-mail)
|
[](https://opensource.org/licenses/MIT)   [](https://github.com/sarthakkimtani/flash-mail)
|
||||||
|
|
||||||
A mobile client for [Smol Mail](https://smol.place), a minimalist end-to-end encrypted mail protocol: one Ed25519 identity, five operations, sealed and signed messages over a Noise_NX transport. Sibling of the reference CLI client (`https://smol.place`) and the browser client (`https://code.randogoth.com/randogoth/gsmol`).
|
A mobile and desktop client for [smolmail](https://smol.place), a minimalist end-to-end encrypted mail protocol: one Ed25519 identity, five operations, sealed and signed messages over a Noise_NX transport.
|
||||||
|
|
||||||
kirakira began as [FlashMail](https://github.com/sarthakkimtani/flash-mail), a Flutter UI template for a disposable-email app built on mail.tm. Its networking layer was replaced end to end with a from-scratch Smol Mail implementation (`lib/smol/`: crypto, Noise handshake, framing, client flows), and the UI was redesigned around a Material 3 theme — dark navy and mint green by default, with a matching light theme — built from a single `ColorScheme` and `AppColors` extension rather than hardcoded colors per screen.
|
kirakira began as [FlashMail](https://github.com/sarthakkimtani/flash-mail), a Flutter UI template for a disposable-email app built on mail.tm. Its protocol core is now [fumi-core](https://code.randogoth.com/randogoth/fumi), the Rust library the reference CLI is built on: `native/` wraps it into a C ABI and ships it in the APK as `libsmol_mail_native.so` (SQLite bundled), `lib/native/` speaks that ABI over dart:ffi, and `lib/smol/` is the thin facade the UI reads. The UI is Material 3 — dark navy and mint green by default, with a matching light theme — built from a single `ColorScheme` and `AppColors` extension rather than hardcoded colors per screen.
|
||||||
|
|
||||||
## What it does
|
## What it does
|
||||||
|
|
||||||
|
|
@ -14,30 +14,30 @@ kirakira began as [FlashMail](https://github.com/sarthakkimtani/flash-mail), a F
|
||||||
- Trust-on-first-use for server and contact keys, with rotation support and on-screen warnings for anything unverified.
|
- Trust-on-first-use for server and contact keys, with rotation support and on-screen warnings for anything unverified.
|
||||||
- Export/import inbox, sent mail, contacts and server pins as one shareable backup file — never the seed.
|
- Export/import inbox, sent mail, contacts and server pins as one shareable backup file — never the seed.
|
||||||
|
|
||||||
|
Mail, contacts and pinned server keys live in fumi-core's SQLite store, bundled into the native library; the seed, read marks and settings stay app-side in Hive.
|
||||||
|
|
||||||
## Layout
|
## Layout
|
||||||
|
|
||||||
```
|
```
|
||||||
lib/smol/ the protocol: crypto, Noise handshake, framing, client flows
|
lib/native/ dart:ffi binding: handles, error codes, isolate plumbing
|
||||||
|
lib/smol/ thin facades over the binding: address, store, client
|
||||||
lib/presentation/ screens, widgets and theme (Riverpod + auto_route)
|
lib/presentation/ screens, widgets and theme (Riverpod + auto_route)
|
||||||
lib/data/ Riverpod providers
|
lib/data/ Riverpod providers
|
||||||
test/ protocol vectors, store tests, a live e2e round-trip
|
native/ Rust wrapper crate: the C ABI over fumi-core, pinned by rev
|
||||||
|
integration_test/ Patrol device tests against a live server
|
||||||
|
test/ store, recall, binding, interop and e2e tests
|
||||||
```
|
```
|
||||||
|
|
||||||
## Run and verify
|
## Run and verify
|
||||||
|
|
||||||
```
|
```
|
||||||
|
devbox run build-native-android # the .so the APK loads — once per Rust change
|
||||||
devbox run analyze
|
devbox run analyze
|
||||||
devbox run test
|
devbox run test
|
||||||
flutter run
|
flutter run --flavor prod
|
||||||
```
|
```
|
||||||
|
|
||||||
`test/e2e_test.dart` runs a live round-trip against `https://smol.place/smolmaild.py` on `127.0.0.1:1961` and skips itself when nothing's listening there.
|
`test/e2e_test.dart` runs a live round-trip against the local bunshin on `127.0.0.1:1961` and skips itself when nothing's listening there. On-device flows are covered by the Patrol suite — `devbox run test-integration` builds the `integration` flavor (installed beside the real app, its data cleared between tests) and drives onboarding, registration, fetch cancellation, rotation and the unchanged-key refresh against the same server.
|
||||||
|
|
||||||
## Notes and limits
|
|
||||||
|
|
||||||
- No server push in v1 — fetch is manual.
|
|
||||||
- The seed lives in app storage; a compromised device is a compromised identity.
|
|
||||||
- Rotation isn't revocation — a stolen key can still rotate onward. Settings surfaces rotations for out-of-band verification rather than applying them silently.
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue