Table of Contents

Namespace EchoHub.Client.Services

Classes

ApiClient
AsyncRunner

Eliminates repeated Task.Run/try/catch/app.Invoke(ShowError) boilerplate. Runs async work on a background thread and routes exceptions to the UI.

AudioPlaybackService
BackupInfo
ChannelPasswordRequiredException

Thrown when joining a channel fails because a password is required or incorrect. The UI catches this to prompt the user and retry.

ClientEncryptionService

Client-side encryption service. Uses the same AES-256-GCM format as the server so messages are encrypted end-to-end between client and server.

ClipboardFiles

Reads file paths that live on the OS clipboard as a file list (e.g. after copying a file in Explorer/Finder/Nautilus), which terminals do not paste as text. Lets Ctrl+V attach a copied file directly instead of requiring the user to paste a raw path.

EchoHubConnection
FolderPickResult
JoinOutcome

Result of joining a channel: decrypted history plus, for end-to-end encrypted channels, the key envelope needed to unlock the room content key.

NativeFolderPicker

Opens the OS-native folder chooser (Windows Explorer, macOS Finder, Linux GTK/KDE) by shelling out, so the TUI doesn't need a GUI toolkit reference. Returns Unavailable when no native dialog can run, so callers can fall back to a configured path.

NotificationSoundService
OutgoingAttachment

One file to upload as part of a message. For end-to-end encrypted channels the stream is already ciphertext, DeclaredKind is set (image/audio/file), and EncryptedPreview holds the room-encrypted ASCII art for images. For normal channels only Stream and FileName are set.

PathSetup

Ensures the application's directory is on the system PATH so users can run 'echohub' from any terminal session.

RoomKeyStore

Holds room content keys for end-to-end encrypted channels: in-memory for the active session, persisted per-server in the client config (like saved sessions) so users don't retype the passphrase every launch. Keys never leave this machine.

UpdateBackupService

Manages pre-update backups and rollback restoration for the auto-updater. Backup location: ~/.echohub/update-backup/

UpdateChecker

Enums

PickerOutcome