Aliases: human-readable names mapped to fingerprints

Server:
- POST /v1/alias/register — claim an alias (one per fingerprint)
- GET /v1/alias/resolve/:name — alias → fingerprint
- GET /v1/alias/whois/:fingerprint — fingerprint → alias (reverse)
- GET /v1/alias/list — list all aliases
- Bidirectional mapping in sled (a:name→fp, fp:fp→name)
- One alias per person, re-registering replaces old alias

Web client:
- /alias <name> — register your alias
- /aliases — list all registered aliases
- /info — now shows alias alongside fingerprint
- Peer input accepts @alias (resolved before sending)
- Received messages show @alias instead of fingerprint
- DM: paste @alias or fingerprint in peer input

CLI TUI:
- /alias <name> — register alias
- /aliases — list all aliases
- /peer @alias — resolves alias to fingerprint
- Alias resolution displayed in system messages

Addressing model:
- @manwe (local) → server resolves → fingerprint
- @manwe.b1.example.com (federated) → DNS resolve (Phase 3)
- Raw fingerprint → always works, no resolution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-03-27 07:01:35 +04:00
parent b90155c3b7
commit 29c059cebf
5 changed files with 264 additions and 12 deletions

View File

@@ -1,3 +1,4 @@
mod aliases;
mod groups;
mod health;
mod keys;
@@ -14,6 +15,7 @@ pub fn router() -> Router<AppState> {
.merge(keys::routes())
.merge(messages::routes())
.merge(groups::routes())
.merge(aliases::routes())
}
/// Web UI router (served at root, outside /v1)