a simple rust terminal ui (tui) for setting up alternative plc rotation keys driven by: secure enclave hardware (not synced) or software-based keys (synced to icloud)
plc
secure-enclave
touchid
icloud
atproto
1use crate::enclave::EnclaveKey;
2use crate::plc::{PlcOperation, PlcState};
3use ratatui::crossterm::event::KeyEvent;
4
5/// Messages sent from async tasks back to the main event loop.
6#[derive(Debug)]
7pub enum AppMessage {
8 // Terminal input
9 KeyEvent(KeyEvent),
10
11 // Key management
12 KeysLoaded(Result<Vec<EnclaveKey>, String>),
13 KeyGenerated(Result<EnclaveKey, String>),
14 KeyDeleted(Result<String, String>), // label
15
16 // PLC directory
17 PlcStateLoaded(Result<PlcState, String>),
18 AuditLogLoaded(Result<Vec<serde_json::Value>, String>),
19 OperationSubmitted(Result<String, String>), // CID
20
21 // Signing
22 OperationSigned(Result<PlcOperation, String>),
23
24 // PDS / atproto
25 LoginResult(Result<crate::atproto::PdsSession, String>),
26 SessionRefreshed(Result<crate::atproto::PdsSession, String>),
27 PostCreated(Result<String, String>), // URI
28 PlcTokenRequested(Result<(), String>),
29 PdsPlcOperationSigned(Result<serde_json::Value, String>),
30}