{
"api/client-articles/index.html": {
"href": "api/client-articles/index.html",
"title": "Client Articles | EchoHub Documentation",
"summary": "Client Articles Articles related to the EchoHub TUI client built with Terminal.Gui v2. Topics Terminal.Gui v2 patterns and conventions Theme system and customization (including transparent theme) Command system reference Configuration and session persistence Audio playback and file downloads Automatic update checking Notification sounds"
},
"api/client/EchoHub.Client.AppOrchestrator.html": {
"href": "api/client/EchoHub.Client.AppOrchestrator.html",
"title": "Class AppOrchestrator | EchoHub Documentation",
"summary": "Class AppOrchestrator Namespace EchoHub.Client Assembly EchoHub.Client.dll Central orchestrator for the EchoHub TUI client. Owns session state and wires UI events to service calls. public sealed class AppOrchestrator : IDisposable Inheritance object AppOrchestrator Implements IDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors AppOrchestrator(IApplication, ClientConfig) public AppOrchestrator(IApplication app, ClientConfig config) Parameters app IApplication config ClientConfig Properties MainWindow public MainWindow MainWindow { get; } Property Value MainWindow Methods Dispose() public void Dispose()"
},
"api/client/EchoHub.Client.AsyncRunner.html": {
"href": "api/client/EchoHub.Client.AsyncRunner.html",
"title": "Class AsyncRunner | EchoHub Documentation",
"summary": "Class AsyncRunner Namespace EchoHub.Client Assembly EchoHub.Client.dll Eliminates repeated Task.Run/try/catch/app.Invoke(ShowError) boilerplate. Runs async work on a background thread and routes exceptions to the UI. public static class AsyncRunner Inheritance object AsyncRunner Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods Run(IApplication, Func, Action, string, string?) public static void Run(IApplication app, Func work, Action showError, string errorPrefix, string? logContext = null) Parameters app IApplication work Func showError Action errorPrefix string logContext string"
},
"api/client/EchoHub.Client.Commands.CommandHandler.html": {
"href": "api/client/EchoHub.Client.Commands.CommandHandler.html",
"title": "Class CommandHandler | EchoHub Documentation",
"summary": "Class CommandHandler Namespace EchoHub.Client.Commands Assembly EchoHub.Client.dll public class CommandHandler Inheritance object CommandHandler Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors CommandHandler() public CommandHandler() Methods HandleAsync(string) public Task HandleAsync(string input) Parameters input string Returns Task IsCommand(string) public bool IsCommand(string input) Parameters input string Returns bool Events OnAssignRole public event Func? OnAssignRole Event Type Func OnBanUser public event Func? OnBanUser Event Type Func OnHelp public event Func? OnHelp Event Type Func OnJoinChannel public event Func? OnJoinChannel Event Type Func OnKickUser public event Func? OnKickUser Event Type Func OnLeaveChannel public event Func? OnLeaveChannel Event Type Func OnListUsers public event Func? OnListUsers Event Type Func OnMuteUser public event Func? OnMuteUser Event Type Func OnNukeChannel public event Func? OnNukeChannel Event Type Func OnOpenProfile public event Func? OnOpenProfile Event Type Func OnOpenServers public event Func? OnOpenServers Event Type Func OnQuit public event Func? OnQuit Event Type Func OnSendFile public event Func? OnSendFile Event Type Func OnSetAvatar public event Func? OnSetAvatar Event Type Func OnSetColor public event Func? OnSetColor Event Type Func OnSetNick public event Func? OnSetNick Event Type Func OnSetStatus public event Func? OnSetStatus Event Type Func OnSetTheme public event Func? OnSetTheme Event Type Func OnSetTopic public event Func? OnSetTopic Event Type Func OnTestSound public event Func? OnTestSound Event Type Func OnUnbanUser public event Func? OnUnbanUser Event Type Func OnUnmuteUser public event Func? OnUnmuteUser Event Type Func"
},
"api/client/EchoHub.Client.Commands.CommandResult.html": {
"href": "api/client/EchoHub.Client.Commands.CommandResult.html",
"title": "Class CommandResult | EchoHub Documentation",
"summary": "Class CommandResult Namespace EchoHub.Client.Commands Assembly EchoHub.Client.dll public record CommandResult : IEquatable Inheritance object CommandResult Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors CommandResult(CommandResult) protected CommandResult(CommandResult original) Parameters original CommandResult CommandResult(bool, string?, bool) public CommandResult(bool Handled, string? Message = null, bool IsError = false) Parameters Handled bool Message string IsError bool Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Handled public bool Handled { get; init; } Property Value bool IsError public bool IsError { get; init; } Property Value bool Message public string? Message { get; init; } Property Value string Methods Deconstruct(out bool, out string?, out bool) public void Deconstruct(out bool Handled, out string? Message, out bool IsError) Parameters Handled bool Message string IsError bool Equals(CommandResult?) public virtual bool Equals(CommandResult? other) Parameters other CommandResult Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(CommandResult?, CommandResult?) public static bool operator ==(CommandResult? left, CommandResult? right) Parameters left CommandResult right CommandResult Returns bool operator !=(CommandResult?, CommandResult?) public static bool operator !=(CommandResult? left, CommandResult? right) Parameters left CommandResult right CommandResult Returns bool"
},
"api/client/EchoHub.Client.Commands.html": {
"href": "api/client/EchoHub.Client.Commands.html",
"title": "Namespace EchoHub.Client.Commands | EchoHub Documentation",
"summary": "Namespace EchoHub.Client.Commands Classes CommandHandler CommandResult"
},
"api/client/EchoHub.Client.Config.AccountPreset.html": {
"href": "api/client/EchoHub.Client.Config.AccountPreset.html",
"title": "Class AccountPreset | EchoHub Documentation",
"summary": "Class AccountPreset Namespace EchoHub.Client.Config Assembly EchoHub.Client.dll public class AccountPreset Inheritance object AccountPreset Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors AccountPreset() public AccountPreset() Properties Bio public string? Bio { get; set; } Property Value string DisplayName public string? DisplayName { get; set; } Property Value string NicknameColor public string? NicknameColor { get; set; } Property Value string"
},
"api/client/EchoHub.Client.Config.ClientConfig.html": {
"href": "api/client/EchoHub.Client.Config.ClientConfig.html",
"title": "Class ClientConfig | EchoHub Documentation",
"summary": "Class ClientConfig Namespace EchoHub.Client.Config Assembly EchoHub.Client.dll public class ClientConfig Inheritance object ClientConfig Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ClientConfig() public ClientConfig() Properties ActiveTheme public string ActiveTheme { get; set; } Property Value string DefaultPreset public AccountPreset DefaultPreset { get; set; } Property Value AccountPreset Notifications public NotificationConfig Notifications { get; set; } Property Value NotificationConfig SavedServers public List SavedServers { get; set; } Property Value List"
},
"api/client/EchoHub.Client.Config.ConfigManager.html": {
"href": "api/client/EchoHub.Client.Config.ConfigManager.html",
"title": "Class ConfigManager | EchoHub Documentation",
"summary": "Class ConfigManager Namespace EchoHub.Client.Config Assembly EchoHub.Client.dll public static class ConfigManager Inheritance object ConfigManager Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods Load() public static ClientConfig Load() Returns ClientConfig RemoveServer(string) public static void RemoveServer(string url) Parameters url string Save(ClientConfig) public static void Save(ClientConfig config) Parameters config ClientConfig SaveServer(SavedServer) public static void SaveServer(SavedServer server) Parameters server SavedServer"
},
"api/client/EchoHub.Client.Config.NotificationConfig.html": {
"href": "api/client/EchoHub.Client.Config.NotificationConfig.html",
"title": "Class NotificationConfig | EchoHub Documentation",
"summary": "Class NotificationConfig Namespace EchoHub.Client.Config Assembly EchoHub.Client.dll public class NotificationConfig Inheritance object NotificationConfig Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors NotificationConfig() public NotificationConfig() Properties Enabled public bool Enabled { get; set; } Property Value bool SoundFile public string? SoundFile { get; set; } Property Value string Volume public byte Volume { get; set; } Property Value byte"
},
"api/client/EchoHub.Client.Config.SavedServer.html": {
"href": "api/client/EchoHub.Client.Config.SavedServer.html",
"title": "Class SavedServer | EchoHub Documentation",
"summary": "Class SavedServer Namespace EchoHub.Client.Config Assembly EchoHub.Client.dll public class SavedServer Inheritance object SavedServer Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors SavedServer() public SavedServer() Properties LastConnected public DateTimeOffset LastConnected { get; set; } Property Value DateTimeOffset Name public required string Name { get; set; } Property Value string RefreshToken public string? RefreshToken { get; set; } Property Value string RememberMe public bool RememberMe { get; set; } Property Value bool Url public required string Url { get; set; } Property Value string Username public string? Username { get; set; } Property Value string"
},
"api/client/EchoHub.Client.Config.html": {
"href": "api/client/EchoHub.Client.Config.html",
"title": "Namespace EchoHub.Client.Config | EchoHub Documentation",
"summary": "Namespace EchoHub.Client.Config Classes AccountPreset ClientConfig ConfigManager NotificationConfig SavedServer"
},
"api/client/EchoHub.Client.Services.ApiClient.html": {
"href": "api/client/EchoHub.Client.Services.ApiClient.html",
"title": "Class ApiClient | EchoHub Documentation",
"summary": "Class ApiClient Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll public sealed class ApiClient : IDisposable Inheritance object ApiClient Implements IDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ApiClient(string) public ApiClient(string baseUrl) Parameters baseUrl string Properties BaseUrl public string BaseUrl { get; } Property Value string RefreshToken public string? RefreshToken { get; } Property Value string Token public string? Token { get; } Property Value string Methods AssignRoleAsync(string, ServerRole) public Task AssignRoleAsync(string username, ServerRole role) Parameters username string role ServerRole Returns Task BanUserAsync(string, string?) public Task BanUserAsync(string username, string? reason = null) Parameters username string reason string Returns Task CreateChannelAsync(string, string?, bool) public Task CreateChannelAsync(string name, string? topic = null, bool isPublic = true) Parameters name string topic string isPublic bool Returns Task DeleteChannelAsync(string) public Task DeleteChannelAsync(string channelName) Parameters channelName string Returns Task DeleteMessageAsync(Guid) public Task DeleteMessageAsync(Guid messageId) Parameters messageId Guid Returns Task Dispose() public void Dispose() DownloadFileToTempAsync(string, string) public Task DownloadFileToTempAsync(string relativeUrl, string fileName) Parameters relativeUrl string fileName string Returns Task GetChannelsAsync() public Task> GetChannelsAsync() Returns Task> GetEncryptionKeyAsync() public Task GetEncryptionKeyAsync() Returns Task GetServerInfoAsync() public Task GetServerInfoAsync() Returns Task GetUserProfileAsync(string) public Task GetUserProfileAsync(string username) Parameters username string Returns Task GetValidTokenAsync() Returns a valid access token, refreshing if expired. Used by EchoHubConnection for SignalR token provider. public Task GetValidTokenAsync() Returns Task KickUserAsync(string, string?) public Task KickUserAsync(string username, string? reason = null) Parameters username string reason string Returns Task LoginAsync(string, string) public Task LoginAsync(string username, string password) Parameters username string password string Returns Task LoginWithRefreshTokenAsync(string) public Task LoginWithRefreshTokenAsync(string refreshToken) Parameters refreshToken string Returns Task LogoutAsync() public Task LogoutAsync() Returns Task MuteUserAsync(string, int?, string?) public Task MuteUserAsync(string username, int? durationMinutes = null, string? reason = null) Parameters username string durationMinutes int? reason string Returns Task NukeChannelAsync(string) public Task NukeChannelAsync(string channelName) Parameters channelName string Returns Task RefreshTokenAsync() public Task RefreshTokenAsync() Returns Task RegisterAsync(string, string, string?) public Task RegisterAsync(string username, string password, string? displayName = null) Parameters username string password string displayName string Returns Task SendUrlAsync(string, string, string?) public Task SendUrlAsync(string channelName, string url, string? size = null) Parameters channelName string url string size string Returns Task UnbanUserAsync(string) public Task UnbanUserAsync(string username) Parameters username string Returns Task UnmuteUserAsync(string) public Task UnmuteUserAsync(string username) Parameters username string Returns Task UpdateChannelTopicAsync(string, string?) public Task UpdateChannelTopicAsync(string channelName, string? topic) Parameters channelName string topic string Returns Task UpdateProfileAsync(UpdateProfileRequest) public Task UpdateProfileAsync(UpdateProfileRequest request) Parameters request UpdateProfileRequest Returns Task UploadAvatarAsync(Stream, string) public Task UploadAvatarAsync(Stream imageStream, string fileName) Parameters imageStream Stream fileName string Returns Task UploadFileAsync(string, Stream, string, string?) public Task UploadFileAsync(string channelName, Stream fileStream, string fileName, string? size = null) Parameters channelName string fileStream Stream fileName string size string Returns Task Events OnTokensRefreshed public event Action? OnTokensRefreshed Event Type Action"
},
"api/client/EchoHub.Client.Services.AudioPlaybackService.html": {
"href": "api/client/EchoHub.Client.Services.AudioPlaybackService.html",
"title": "Class AudioPlaybackService | EchoHub Documentation",
"summary": "Class AudioPlaybackService Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll public class AudioPlaybackService Inheritance object AudioPlaybackService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors AudioPlaybackService() public AudioPlaybackService() Properties IsPaused public bool IsPaused { get; } Property Value bool IsPlaying public bool IsPlaying { get; } Property Value bool Methods PauseAsync() public Task PauseAsync() Returns Task PlayAsync(string) public Task PlayAsync(string filePath) Parameters filePath string Returns Task ResumeAsync() public Task ResumeAsync() Returns Task SetVolumeAsync(byte) public Task SetVolumeAsync(byte volume) Parameters volume byte Returns Task StopAsync() public Task StopAsync() Returns Task Events PlaybackFinished public event EventHandler? PlaybackFinished Event Type EventHandler"
},
"api/client/EchoHub.Client.Services.ClientEncryptionService.html": {
"href": "api/client/EchoHub.Client.Services.ClientEncryptionService.html",
"title": "Class ClientEncryptionService | EchoHub Documentation",
"summary": "Class ClientEncryptionService Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll 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. public sealed class ClientEncryptionService : IMessageEncryptionService Inheritance object ClientEncryptionService Implements IMessageEncryptionService Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ClientEncryptionService() public ClientEncryptionService() Properties EncryptDatabaseEnabled Whether database content should be encrypted at rest (server setting). public bool EncryptDatabaseEnabled { get; } Property Value bool IsInitialized public bool IsInitialized { get; } Property Value bool Methods Decrypt(string) public string Decrypt(string content) Parameters content string Returns string DecryptNullable(string?) public string? DecryptNullable(string? value) Parameters value string Returns string Encrypt(string) public string Encrypt(string plaintext) Parameters plaintext string Returns string EncryptNullable(string?) public string? EncryptNullable(string? value) Parameters value string Returns string SetKey(string) Initialize with the server's encryption key (fetched after login). public void SetKey(string base64Key) Parameters base64Key string"
},
"api/client/EchoHub.Client.Services.EchoHubConnection.html": {
"href": "api/client/EchoHub.Client.Services.EchoHubConnection.html",
"title": "Class EchoHubConnection | EchoHub Documentation",
"summary": "Class EchoHubConnection Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll public sealed class EchoHubConnection : IAsyncDisposable Inheritance object EchoHubConnection Implements IAsyncDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors EchoHubConnection(string, ApiClient, ClientEncryptionService) public EchoHubConnection(string serverUrl, ApiClient apiClient, ClientEncryptionService encryption) Parameters serverUrl string apiClient ApiClient encryption ClientEncryptionService Properties IsConnected public bool IsConnected { get; } Property Value bool Methods ConnectAsync() public Task ConnectAsync() Returns Task DisconnectAsync() public Task DisconnectAsync() Returns Task DisposeAsync() public ValueTask DisposeAsync() Returns ValueTask GetHistoryAsync(string, int) public Task> GetHistoryAsync(string channelName, int count = 100) Parameters channelName string count int Returns Task> GetOnlineUsersAsync(string) public Task> GetOnlineUsersAsync(string channelName) Parameters channelName string Returns Task> JoinChannelAsync(string) public Task> JoinChannelAsync(string channelName) Parameters channelName string Returns Task> LeaveChannelAsync(string) public Task LeaveChannelAsync(string channelName) Parameters channelName string Returns Task SendMessageAsync(string, string) public Task SendMessageAsync(string channelName, string content) Parameters channelName string content string Returns Task UpdateStatusAsync(UserStatus, string?) public Task UpdateStatusAsync(UserStatus status, string? statusMessage = null) Parameters status UserStatus statusMessage string Returns Task Events OnChannelNuked public event Action? OnChannelNuked Event Type Action OnChannelUpdated public event Action? OnChannelUpdated Event Type Action OnConnectionStateChanged public event Action? OnConnectionStateChanged Event Type Action OnError public event Action? OnError Event Type Action OnForceDisconnect public event Action? OnForceDisconnect Event Type Action OnMessageDeleted public event Action? OnMessageDeleted Event Type Action OnMessageReceived public event Action? OnMessageReceived Event Type Action OnReconnected public event Action? OnReconnected Event Type Action OnUserBanned public event Action? OnUserBanned Event Type Action OnUserJoined public event Action? OnUserJoined Event Type Action OnUserKicked public event Action? OnUserKicked Event Type Action OnUserLeft public event Action? OnUserLeft Event Type Action OnUserStatusChanged public event Action? OnUserStatusChanged Event Type Action"
},
"api/client/EchoHub.Client.Services.NotificationSoundService.html": {
"href": "api/client/EchoHub.Client.Services.NotificationSoundService.html",
"title": "Class NotificationSoundService | EchoHub Documentation",
"summary": "Class NotificationSoundService Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll public class NotificationSoundService Inheritance object NotificationSoundService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors NotificationSoundService(NotificationConfig) public NotificationSoundService(NotificationConfig config) Parameters config NotificationConfig Methods PlayAsync() public Task PlayAsync() Returns Task PlayTestAsync() Plays the notification sound regardless of the Enabled setting (for /test-sound). public Task PlayTestAsync() Returns Task SetEnabled(bool) public void SetEnabled(bool enabled) Parameters enabled bool SetVolume(byte) public void SetVolume(byte volume) Parameters volume byte"
},
"api/client/EchoHub.Client.Services.UpdateChecker.html": {
"href": "api/client/EchoHub.Client.Services.UpdateChecker.html",
"title": "Class UpdateChecker | EchoHub Documentation",
"summary": "Class UpdateChecker Namespace EchoHub.Client.Services Assembly EchoHub.Client.dll public sealed class UpdateChecker : IDisposable Inheritance object UpdateChecker Implements IDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors UpdateChecker(IApplication) public UpdateChecker(IApplication app) Parameters app IApplication Properties CurrentVersion public static string CurrentVersion { get; } Property Value string Methods Dispose() public void Dispose() Start() public void Start()"
},
"api/client/EchoHub.Client.Services.html": {
"href": "api/client/EchoHub.Client.Services.html",
"title": "Namespace EchoHub.Client.Services | EchoHub Documentation",
"summary": "Namespace EchoHub.Client.Services Classes ApiClient AudioPlaybackService 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. EchoHubConnection NotificationSoundService UpdateChecker"
},
"api/client/EchoHub.Client.Themes.Theme.html": {
"href": "api/client/EchoHub.Client.Themes.Theme.html",
"title": "Class Theme | EchoHub Documentation",
"summary": "Class Theme Namespace EchoHub.Client.Themes Assembly EchoHub.Client.dll public class Theme Inheritance object Theme Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors Theme() public Theme() Properties Base public ThemeColors Base { get; set; } Property Value ThemeColors Dialog public ThemeColors Dialog { get; set; } Property Value ThemeColors Menu public ThemeColors Menu { get; set; } Property Value ThemeColors Name public required string Name { get; set; } Property Value string Status public ThemeColors Status { get; set; } Property Value ThemeColors"
},
"api/client/EchoHub.Client.Themes.ThemeColors.html": {
"href": "api/client/EchoHub.Client.Themes.ThemeColors.html",
"title": "Class ThemeColors | EchoHub Documentation",
"summary": "Class ThemeColors Namespace EchoHub.Client.Themes Assembly EchoHub.Client.dll public class ThemeColors Inheritance object ThemeColors Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ThemeColors() public ThemeColors() Properties Background public string Background { get; set; } Property Value string FocusBackground public string FocusBackground { get; set; } Property Value string FocusForeground public string FocusForeground { get; set; } Property Value string Foreground public string Foreground { get; set; } Property Value string"
},
"api/client/EchoHub.Client.Themes.ThemeManager.html": {
"href": "api/client/EchoHub.Client.Themes.ThemeManager.html",
"title": "Class ThemeManager | EchoHub Documentation",
"summary": "Class ThemeManager Namespace EchoHub.Client.Themes Assembly EchoHub.Client.dll public static class ThemeManager Inheritance object ThemeManager Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods ApplyTheme(Theme) public static void ApplyTheme(Theme theme) Parameters theme Theme GetAvailableThemes() public static List GetAvailableThemes() Returns List GetTheme(string) public static Theme GetTheme(string name) Parameters name string Returns Theme SaveTheme(Theme) public static void SaveTheme(Theme theme) Parameters theme Theme"
},
"api/client/EchoHub.Client.Themes.html": {
"href": "api/client/EchoHub.Client.Themes.html",
"title": "Namespace EchoHub.Client.Themes | EchoHub Documentation",
"summary": "Namespace EchoHub.Client.Themes Classes Theme ThemeColors ThemeManager"
},
"api/client/EchoHub.Client.UI.AudioPlayerDialog.html": {
"href": "api/client/EchoHub.Client.UI.AudioPlayerDialog.html",
"title": "Class AudioPlayerDialog | EchoHub Documentation",
"summary": "Class AudioPlayerDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll public sealed class AudioPlayerDialog Inheritance object AudioPlayerDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors AudioPlayerDialog() public AudioPlayerDialog() Methods Show(IApplication, AudioPlaybackService, string, string) public static void Show(IApplication app, AudioPlaybackService audioService, string filePath, string fileName) Parameters app IApplication audioService AudioPlaybackService filePath string fileName string"
},
"api/client/EchoHub.Client.UI.ChannelListSource.html": {
"href": "api/client/EchoHub.Client.UI.ChannelListSource.html",
"title": "Class ChannelListSource | EchoHub Documentation",
"summary": "Class ChannelListSource Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Custom list data source for colored channel list rendering. Active channel gets a > indicator, unread channels are bright with a count badge. public class ChannelListSource : IListDataSource, IDisposable Inheritance object ChannelListSource Implements IListDataSource IDisposable Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChannelListSource() public ChannelListSource() Properties Count Gets the number of items in the data source. public int Count { get; } Property Value int MaxItemLength Gets the width in columns of the widest item in the data source. public int MaxItemLength { get; } Property Value int Remarks ListView uses this value to set its horizontal content size for scrolling. SuspendCollectionChangedEvent Gets or sets whether the CollectionChanged event should be suppressed. public bool SuspendCollectionChangedEvent { get; set; } Property Value bool Remarks Set to true to prevent CollectionChanged from being raised during bulk operations. Set back to false to resume event notifications. Methods Dispose() public void Dispose() IsMarked(int) Determines whether the specified item is marked. public bool IsMarked(int item) Parameters item int The zero-based index of the item. Returns bool true if the item is marked; otherwise false. Remarks ListView calls this method to determine whether to render the item with a mark indicator when ShowMarks is true. Render(ListView, bool, int, int, int, int, int) Renders the specified item to the ListView. public void Render(ListView listView, bool selected, int item, int col, int row, int width, int viewportX = 0) Parameters listView ListView The ListView to render to. selected bool true if the item is currently selected; otherwise false. item int The zero-based index of the item to render. col int The column in listView Viewport where rendering starts. row int The row in listView Viewport where rendering starts. width int The width available for rendering. viewportX int The horizontal scroll offset. Remarks ListView calls this method for each visible item during rendering. The color scheme will be set based on selection state before this method is called. Implementations must fill the entire width to avoid rendering artifacts. SetMark(int, bool) Sets the marked state of the specified item. public void SetMark(int item, bool value) Parameters item int The zero-based index of the item. value bool true to mark the item; false to unmark it. Remarks ListView calls this method when the user toggles marking (e.g., via the SPACE key) if ShowMarks is true. ToList() Returns the underlying data source as an System.Collections.IList. public IList ToList() Returns IList The data source as an System.Collections.IList. Remarks ListView uses this method to access individual items for events like ValueChanged and to enable keyboard search via KeystrokeNavigator. Update(List, Dictionary, string) public void Update(List channels, Dictionary unread, string activeChannel) Parameters channels List unread Dictionary activeChannel string Events CollectionChanged Raised when items are added, removed, moved, or the entire collection is refreshed. public event NotifyCollectionChangedEventHandler? CollectionChanged Event Type NotifyCollectionChangedEventHandler Remarks ListView subscribes to this event to update its display and content size when the data changes. Implementations should raise this event whenever the underlying collection changes, unless SuspendCollectionChangedEvent is true."
},
"api/client/EchoHub.Client.UI.ChatColors.html": {
"href": "api/client/EchoHub.Client.UI.ChatColors.html",
"title": "Class ChatColors | EchoHub Documentation",
"summary": "Class ChatColors Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Shared color attributes for chat rendering (timestamps, system messages). public static class ChatColors Inheritance object ChatColors Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Fields AudioAttr public static readonly Attribute AudioAttr Field Value Attribute EmbedBorderAttr public static readonly Attribute EmbedBorderAttr Field Value Attribute EmbedDescAttr public static readonly Attribute EmbedDescAttr Field Value Attribute EmbedTitleAttr public static readonly Attribute EmbedTitleAttr Field Value Attribute EmbedUrlAttr public static readonly Attribute EmbedUrlAttr Field Value Attribute FileAttr public static readonly Attribute FileAttr Field Value Attribute MentionHighlightAttr public static readonly Attribute MentionHighlightAttr Field Value Attribute MentionTextAttr public static readonly Attribute MentionTextAttr Field Value Attribute SystemAttr public static readonly Attribute SystemAttr Field Value Attribute TimestampAttr public static readonly Attribute TimestampAttr Field Value Attribute Methods SplitMentions(string, Attribute?) Split text around @mentions, giving each @word the MentionTextAttr accent color. Non-mention text uses the provided default color. public static List SplitMentions(string text, Attribute? defaultColor = null) Parameters text string defaultColor Attribute? Returns List"
},
"api/client/EchoHub.Client.UI.ChatLine.html": {
"href": "api/client/EchoHub.Client.UI.ChatLine.html",
"title": "Class ChatLine | EchoHub Documentation",
"summary": "Class ChatLine Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll A single line in the chat, composed of colored segments. public class ChatLine Inheritance object ChatLine Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChatLine(List) public ChatLine(List segments) Parameters segments List ChatLine(string) public ChatLine(string plainText) Parameters plainText string Properties AttachmentFileName public string? AttachmentFileName { get; set; } Property Value string AttachmentUrl public string? AttachmentUrl { get; set; } Property Value string IsMention public bool IsMention { get; set; } Property Value bool MessageId public Guid? MessageId { get; set; } Property Value Guid? Segments public List Segments { get; } Property Value List TextLength public int TextLength { get; } Property Value int Type public MessageType? Type { get; set; } Property Value MessageType? Methods FromColoredText(string, Attribute?) Parse a string containing printable color tags into colored segments. Format: {F:RRGGBB} (foreground), {B:RRGGBB} (background), {X} (reset). public static ChatLine FromColoredText(string text, Attribute? defaultAttr = null) Parameters text string defaultAttr Attribute? Returns ChatLine HasColorTags(string) Returns true if a line contains printable color tags. public static bool HasColorTags(string text) Parameters text string Returns bool StripColorTags(string) Remove all color tags from text, returning only the visible characters. public static string StripColorTags(string text) Parameters text string Returns string ToString() public override string ToString() Returns string Wrap(int, int) Wrap this line into multiple lines that fit within the given width. Continuation lines are indented with the specified number of spaces. public List Wrap(int width, int continuationIndent = 0) Parameters width int continuationIndent int Returns List"
},
"api/client/EchoHub.Client.UI.ChatListSource.html": {
"href": "api/client/EchoHub.Client.UI.ChatListSource.html",
"title": "Class ChatListSource | EchoHub Documentation",
"summary": "Class ChatListSource Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Custom list data source for chat messages with per-segment coloring. public class ChatListSource : IListDataSource, IDisposable Inheritance object ChatListSource Implements IListDataSource IDisposable Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChatListSource() public ChatListSource() Properties Count Gets the number of items in the data source. public int Count { get; } Property Value int MaxItemLength Gets the width in columns of the widest item in the data source. public int MaxItemLength { get; } Property Value int Remarks ListView uses this value to set its horizontal content size for scrolling. SuspendCollectionChangedEvent Gets or sets whether the CollectionChanged event should be suppressed. public bool SuspendCollectionChangedEvent { get; set; } Property Value bool Remarks Set to true to prevent CollectionChanged from being raised during bulk operations. Set back to false to resume event notifications. Methods Add(ChatLine) public void Add(ChatLine line) Parameters line ChatLine AddRange(IEnumerable) public void AddRange(IEnumerable lines) Parameters lines IEnumerable Clear() public void Clear() Dispose() public void Dispose() GetLine(int) public ChatLine? GetLine(int index) Parameters index int Returns ChatLine InsertRange(int, IEnumerable) public void InsertRange(int index, IEnumerable lines) Parameters index int lines IEnumerable IsMarked(int) Determines whether the specified item is marked. public bool IsMarked(int item) Parameters item int The zero-based index of the item. Returns bool true if the item is marked; otherwise false. Remarks ListView calls this method to determine whether to render the item with a mark indicator when ShowMarks is true. Render(ListView, bool, int, int, int, int, int) Renders the specified item to the ListView. public void Render(ListView listView, bool selected, int item, int col, int row, int width, int viewportX = 0) Parameters listView ListView The ListView to render to. selected bool true if the item is currently selected; otherwise false. item int The zero-based index of the item to render. col int The column in listView Viewport where rendering starts. row int The row in listView Viewport where rendering starts. width int The width available for rendering. viewportX int The horizontal scroll offset. Remarks ListView calls this method for each visible item during rendering. The color scheme will be set based on selection state before this method is called. Implementations must fill the entire width to avoid rendering artifacts. SetMark(int, bool) Sets the marked state of the specified item. public void SetMark(int item, bool value) Parameters item int The zero-based index of the item. value bool true to mark the item; false to unmark it. Remarks ListView calls this method when the user toggles marking (e.g., via the SPACE key) if ShowMarks is true. ToList() Returns the underlying data source as an System.Collections.IList. public IList ToList() Returns IList The data source as an System.Collections.IList. Remarks ListView uses this method to access individual items for events like ValueChanged and to enable keyboard search via KeystrokeNavigator. Events CollectionChanged Raised when items are added, removed, moved, or the entire collection is refreshed. public event NotifyCollectionChangedEventHandler? CollectionChanged Event Type NotifyCollectionChangedEventHandler Remarks ListView subscribes to this event to update its display and content size when the data changes. Implementations should raise this event whenever the underlying collection changes, unless SuspendCollectionChangedEvent is true."
},
"api/client/EchoHub.Client.UI.ChatSegment.html": {
"href": "api/client/EchoHub.Client.UI.ChatSegment.html",
"title": "Class ChatSegment | EchoHub Documentation",
"summary": "Class ChatSegment Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll A colored text segment within a chat line. public record ChatSegment : IEquatable Inheritance object ChatSegment Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ChatSegment(ChatSegment) protected ChatSegment(ChatSegment original) Parameters original ChatSegment ChatSegment(string, Attribute?) A colored text segment within a chat line. public ChatSegment(string Text, Attribute? Color) Parameters Text string Color Attribute? Properties Color public Attribute? Color { get; init; } Property Value Attribute? EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Text public string Text { get; init; } Property Value string Methods Deconstruct(out string, out Attribute?) public void Deconstruct(out string Text, out Attribute? Color) Parameters Text string Color Attribute? Equals(ChatSegment?) public virtual bool Equals(ChatSegment? other) Parameters other ChatSegment Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ChatSegment?, ChatSegment?) public static bool operator ==(ChatSegment? left, ChatSegment? right) Parameters left ChatSegment right ChatSegment Returns bool operator !=(ChatSegment?, ChatSegment?) public static bool operator !=(ChatSegment? left, ChatSegment? right) Parameters left ChatSegment right ChatSegment Returns bool"
},
"api/client/EchoHub.Client.UI.ColorHelper.html": {
"href": "api/client/EchoHub.Client.UI.ColorHelper.html",
"title": "Class ColorHelper | EchoHub Documentation",
"summary": "Class ColorHelper Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Helper to parse hex colors to Terminal.Gui Attributes. public static class ColorHelper Inheritance object ColorHelper Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods ParseHexColor(string?) public static Attribute? ParseHexColor(string? hex) Parameters hex string Returns Attribute?"
},
"api/client/EchoHub.Client.UI.ConnectDialog.html": {
"href": "api/client/EchoHub.Client.UI.ConnectDialog.html",
"title": "Class ConnectDialog | EchoHub Documentation",
"summary": "Class ConnectDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll A Terminal.Gui dialog for entering server connection and authentication details. Includes a saved servers selector when saved servers are available. public sealed class ConnectDialog Inheritance object ConnectDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ConnectDialog() public ConnectDialog() Methods Show(IApplication, List?) Shows the connect dialog with an optional list of saved servers. Returns the result, or null if cancelled. public static ConnectDialogResult? Show(IApplication app, List? savedServers = null) Parameters app IApplication savedServers List Returns ConnectDialogResult"
},
"api/client/EchoHub.Client.UI.ConnectDialogResult.html": {
"href": "api/client/EchoHub.Client.UI.ConnectDialogResult.html",
"title": "Class ConnectDialogResult | EchoHub Documentation",
"summary": "Class ConnectDialogResult Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Result returned from the connect dialog. public record ConnectDialogResult : IEquatable Inheritance object ConnectDialogResult Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ConnectDialogResult(ConnectDialogResult) protected ConnectDialogResult(ConnectDialogResult original) Parameters original ConnectDialogResult ConnectDialogResult(string, string, string, bool, bool, string?) Result returned from the connect dialog. public ConnectDialogResult(string ServerUrl, string Username, string Password, bool IsRegister, bool RememberMe, string? SavedRefreshToken) Parameters ServerUrl string Username string Password string IsRegister bool RememberMe bool SavedRefreshToken string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type IsRegister public bool IsRegister { get; init; } Property Value bool Password public string Password { get; init; } Property Value string RememberMe public bool RememberMe { get; init; } Property Value bool SavedRefreshToken public string? SavedRefreshToken { get; init; } Property Value string ServerUrl public string ServerUrl { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out string, out string, out bool, out bool, out string?) public void Deconstruct(out string ServerUrl, out string Username, out string Password, out bool IsRegister, out bool RememberMe, out string? SavedRefreshToken) Parameters ServerUrl string Username string Password string IsRegister bool RememberMe bool SavedRefreshToken string Equals(ConnectDialogResult?) public virtual bool Equals(ConnectDialogResult? other) Parameters other ConnectDialogResult Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ConnectDialogResult?, ConnectDialogResult?) public static bool operator ==(ConnectDialogResult? left, ConnectDialogResult? right) Parameters left ConnectDialogResult right ConnectDialogResult Returns bool operator !=(ConnectDialogResult?, ConnectDialogResult?) public static bool operator !=(ConnectDialogResult? left, ConnectDialogResult? right) Parameters left ConnectDialogResult right ConnectDialogResult Returns bool"
},
"api/client/EchoHub.Client.UI.CreateChannelDialog.html": {
"href": "api/client/EchoHub.Client.UI.CreateChannelDialog.html",
"title": "Class CreateChannelDialog | EchoHub Documentation",
"summary": "Class CreateChannelDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll public sealed class CreateChannelDialog Inheritance object CreateChannelDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors CreateChannelDialog() public CreateChannelDialog() Methods Show(IApplication) public static CreateChannelResult? Show(IApplication app) Parameters app IApplication Returns CreateChannelResult"
},
"api/client/EchoHub.Client.UI.CreateChannelResult.html": {
"href": "api/client/EchoHub.Client.UI.CreateChannelResult.html",
"title": "Class CreateChannelResult | EchoHub Documentation",
"summary": "Class CreateChannelResult Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll public record CreateChannelResult : IEquatable Inheritance object CreateChannelResult Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors CreateChannelResult(CreateChannelResult) protected CreateChannelResult(CreateChannelResult original) Parameters original CreateChannelResult CreateChannelResult(string, string?, bool) public CreateChannelResult(string Name, string? Topic, bool IsPublic) Parameters Name string Topic string IsPublic bool Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type IsPublic public bool IsPublic { get; init; } Property Value bool Name public string Name { get; init; } Property Value string Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out string, out string?, out bool) public void Deconstruct(out string Name, out string? Topic, out bool IsPublic) Parameters Name string Topic string IsPublic bool Equals(CreateChannelResult?) public virtual bool Equals(CreateChannelResult? other) Parameters other CreateChannelResult Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(CreateChannelResult?, CreateChannelResult?) public static bool operator ==(CreateChannelResult? left, CreateChannelResult? right) Parameters left CreateChannelResult right CreateChannelResult Returns bool operator !=(CreateChannelResult?, CreateChannelResult?) public static bool operator !=(CreateChannelResult? left, CreateChannelResult? right) Parameters left CreateChannelResult right CreateChannelResult Returns bool"
},
"api/client/EchoHub.Client.UI.EmojiHelper.html": {
"href": "api/client/EchoHub.Client.UI.EmojiHelper.html",
"title": "Class EmojiHelper | EchoHub Documentation",
"summary": "Class EmojiHelper Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Converts emoji grapheme clusters to text shortcodes for safe TUI rendering. Terminal width calculations for emoji are unreliable across different terminals, so we replace them with fixed-width ASCII shortcodes for display only. public static class EmojiHelper Inheritance object EmojiHelper Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods ReplaceEmoji(string) Replace emoji graphemes in the text with :shortcode: equivalents. Non-emoji text passes through unchanged. public static string ReplaceEmoji(string text) Parameters text string Returns string"
},
"api/client/EchoHub.Client.UI.MainWindow.html": {
"href": "api/client/EchoHub.Client.UI.MainWindow.html",
"title": "Class MainWindow | EchoHub Documentation",
"summary": "Class MainWindow Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Main Terminal.Gui window for the EchoHub chat client. public sealed class MainWindow : Runnable, IDisposable, IRunnable Inheritance object View Runnable MainWindow Implements IDisposable IRunnable Inherited Members Runnable.SetApp(IApplication) Runnable.SetIsRunning(bool) Runnable.RequestStop() Runnable.RaiseIsRunningChanging(bool, bool) Runnable.RaiseIsRunningChangedEvent(bool) Runnable.SetIsModal(bool) Runnable.RaiseIsModalChangedEvent(bool) Runnable.Result Runnable.IsRunning Runnable.IsModal Runnable.StopRequested Runnable.IsRunningChanging Runnable.IsRunningChanged Runnable.IsModalChanged View.NewMouseEvent(Mouse) View.RaiseMouseEvent(Mouse) View.GetAdornmentsThickness() View.GetSupportedCommands() View.InvokeCommands(Command[], IInputBinding) View.InvokeCommand(Command, IInputBinding) View.InvokeCommand(Command, ICommandContext) View.InvokeCommand(Command) View.SetContentSize(Size?) View.GetContentSize() View.GetWidthRequiredForSubViews() View.GetHeightRequiredForSubViews() View.ContentToScreen(in Point) View.ScreenToContent(in Point) View.ViewportToScreen(in Rectangle) View.ViewportToScreen(in Point) View.ViewportToScreen() View.ScreenToViewport(in Point) View.GetViewportOffsetFromFrame() View.ScrollVertical(int) View.ScrollHorizontal(int) View.Dispose() View.ToString() View.ToDebugString() View.BeginInit() View.EndInit() View.OnEnabledChanged() View.VerifyViewsWereDisposed() View.SetCursorNeedsUpdate() View.GetCurrentAttribute() View.GetAttributeForRole(VisualRole) View.SetAttribute(Attribute) View.SetAttributeForRole(VisualRole) View.GetClip() View.SetClip(Region) View.SetClipToScreen() View.ExcludeFromClip(Rectangle) View.ExcludeFromClip(Region) View.AddViewportToClip() View.Draw(DrawContext) View.DrawAdornments() View.ClearViewport(DrawContext) View.DrawText(DrawContext) View.DrawSubViews(DrawContext) View.RenderLineCanvas(DrawContext) View.Move(int, int) View.AddRune(Rune) View.AddRune(char) View.AddRune(int, int, Rune) View.AddStr(string) View.AddStr(int, int, string) View.DrawHotString(string, Attribute, Attribute) View.DrawHotString(string, bool) View.FillRect(Rectangle, Color?) View.FillRect(Rectangle, Rune) View.GetScheme() View.SetScheme(Scheme) View.GetSubViews(bool, bool, bool) View.Add(View) View.Add(params View[]) View.Remove(View) View.RemoveAll() View.RemoveAll() View.IsInHierarchy(View, View, bool) View.MoveSubViewTowardsEnd(View) View.MoveSubViewToEnd(View) View.MoveSubViewTowardsStart(View) View.MoveSubViewToStart(View) View.AddKeyBindingsForHotKey(Key, Key, object) View.AssignHotKeysToSubViews() View.NewKeyDownEvent(Key) View.Contains(in Point) View.FrameToScreen() View.ScreenToFrame(in Point) View.Layout(Size) View.Layout() View.SetRelativeLayout(Size) View.SetNeedsLayout() View.GetContainerSize() View.GetViewsUnderLocation(in Point, ViewportSettingsFlags) View.AdvanceFocus(NavigationDirection, TabBehavior?) View.FocusDeepest(NavigationDirection, TabBehavior?) View.OnCanFocusChanged() View.ClearFocus() View.SetFocus() View.SetNeedsDraw() View.SetNeedsDraw(Rectangle) View.OnTextChanged() View.MouseBindings View.MouseHoldRepeat View.MousePositionTracking View.MouseState View.MouseHighlightStates View.Margin View.ShadowStyle View.Border View.BorderStyle View.Padding View.Arrangement View.ContentSizeTracksViewport View.ViewportSettings View.Viewport View.Data View.Id View.App View.IsInitialized View.Enabled View.Visible View.Title View.EnableDebugIDisposableAsserts View.WasDisposed View.DisposedCount View.Instances View.Cursor View.Diagnostics View.LineCanvas View.SuperViewRendersLineCanvas View.SchemeName View.HasScheme View.SubViews View.SuperView View.HotKey View.HotKeySpecifier View.AssignHotKeys View.UsedHotKeys View.KeyBindings View.HotKeyBindings View.Frame View.X View.Y View.Height View.Width View.NeedsLayout View.ValidatePosDim View.CanFocus View.Focused View.IsCurrentTop View.MostFocused View.HasFocus View.TabStop View.NeedsDraw View.HorizontalScrollBar View.VerticalScrollBar View.PreserveTrailingSpaces View.Text View.TextAlignment View.TextDirection View.TextFormatter View.VerticalTextAlignment View.MouseEnter View.MouseLeave View.MouseHoldRepeatChanging View.MouseHoldRepeatChanged View.MouseEvent View.MouseStateChanged View.BorderStyleChanged View.CommandNotBound View.Accepting View.Accepted View.Activating View.HandlingHotKey View.ContentSizeChanging View.ContentSizeChanged View.ViewportChanged View.Disposing View.Initialized View.EnabledChanged View.VisibleChanging View.VisibleChanged View.TitleChanging View.TitleChanged View.GettingAttributeForRole View.ClearingViewport View.ClearedViewport View.DrawingText View.DrewText View.DrawingContent View.DrawingSubViews View.DrawComplete View.SchemeNameChanging View.SchemeNameChanged View.GettingScheme View.SchemeChanging View.SchemeChanged View.SuperViewChanging View.SuperViewChanged View.SubViewAdded View.SubViewRemoved View.Removed View.HotKeyChanged View.KeyDown View.KeyDownNotHandled View.FrameChanged View.HeightChanging View.HeightChanged View.WidthChanging View.WidthChanged View.SubViewLayout View.SubViewsLaidOut View.AdvancingFocus View.CanFocusChanged View.FocusedChanged View.HasFocusChanging View.HasFocusChanged View.TextChanged object.GetType() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors MainWindow(IApplication) public MainWindow(IApplication app) Parameters app IApplication Properties CurrentChannel Get the current channel name. public string CurrentChannel { get; } Property Value string Methods AddMessage(MessageDto) Add a message to the specified channel's message list and refresh if it is the current channel. Tracks unread count for non-active channels. public void AddMessage(MessageDto message) Parameters message MessageDto AddStatusMessage(string, string, string) Add a status change message to a channel with colored styling. public void AddStatusMessage(string channelName, string username, string status) Parameters channelName string username string status string AddSystemMessage(string, string) Add a system/informational message to a channel with colored styling. public void AddSystemMessage(string channelName, string text) Parameters channelName string text string ApplyColorSchemes() Applies the currently registered color schemes to all views. Call after theme changes to refresh colors. public void ApplyColorSchemes() ClearAll() Clear all messages and channels (used on disconnect). public void ClearAll() ClearChannelMessages(string) Clear all messages from a specific channel. public void ClearChannelMessages(string channelName) Parameters channelName string EnsureChannelInList(string, bool?) Ensure a channel exists in the left panel list (used for private channels joined via /join). public void EnsureChannelInList(string channelName, bool? isPublic = null) Parameters channelName string isPublic bool? FocusInput() Focus the input field for typing. public void FocusInput() GetChannelNames() Get all channel names that have message buffers (for broadcasting status changes). public IReadOnlyList GetChannelNames() Returns IReadOnlyList LoadHistory(string, List) Load historical messages into a channel, replacing any existing messages. public void LoadHistory(string channelName, List messages) Parameters channelName string messages List RefreshMenuBar() Rebuilds and replaces the menu bar (e.g., after theme list changes). public void RefreshMenuBar() RemoveChannel(string) Remove a channel from the left panel list. public void RemoveChannel(string channelName) Parameters channelName string RemoveMessage(string, Guid) Remove all lines associated with a specific message ID. public void RemoveMessage(string channelName, Guid messageId) Parameters channelName string messageId Guid SetChannelTopic(string, string?) Update the topic for a specific channel. public void SetChannelTopic(string channelName, string? topic) Parameters channelName string topic string SetChannels(List) Set the list of available channels, storing topics, and refresh the channel list view. public void SetChannels(List channels) Parameters channels List SetCurrentUser(string) Set the current user name for display in the status bar. public void SetCurrentUser(string username) Parameters username string ShowError(string) Show an error message to the user. public void ShowError(string message) Parameters message string SwitchToChannel(string) Switch the chat view to the given channel, resetting its unread count and updating the topic bar. public void SwitchToChannel(string channelName) Parameters channelName string ToggleUsersPanel() Toggle the online users panel visibility (F2). public void ToggleUsersPanel() UpdateOnlineUsers(List) Update the online users list display. public void UpdateOnlineUsers(List users) Parameters users List UpdateStatusBar(string) Update the connection status displayed in the status bar. public void UpdateStatusBar(string status) Parameters status string Events OnAudioPlayRequested Fired when the user activates (Enter/click) an audio message. Parameters: attachmentUrl, fileName. public event Action? OnAudioPlayRequested Event Type Action OnChannelSelected Fired when the user selects a channel. Parameter is the channel name. public event Action? OnChannelSelected Event Type Action OnConnectRequested Fired when the user requests to connect via the menu. public event Action? OnConnectRequested Event Type Action OnCreateChannelRequested Fired when the user requests to create a new channel. public event Action? OnCreateChannelRequested Event Type Action OnDeleteChannelRequested Fired when the user requests to delete the current channel. public event Action? OnDeleteChannelRequested Event Type Action OnDisconnectRequested Fired when the user requests to disconnect via the menu. public event Action? OnDisconnectRequested Event Type Action OnFileDownloadRequested Fired when the user activates (Enter/click) a file message. Parameters: attachmentUrl, fileName. public event Action? OnFileDownloadRequested Event Type Action OnLogoutRequested Fired when the user requests to logout (disconnect + revoke session). public event Action? OnLogoutRequested Event Type Action OnMessageSubmitted Fired when the user presses Enter in the input field. Parameters: channel name, message content. public event Action? OnMessageSubmitted Event Type Action OnProfileRequested Fired when the user requests to open their profile panel. public event Action? OnProfileRequested Event Type Action OnSavedServersRequested Fired when the user requests to view saved servers. public event Action? OnSavedServersRequested Event Type Action OnStatusRequested Fired when the user requests to set their status. public event Action? OnStatusRequested Event Type Action OnThemeSelected Fired when the user selects a theme from the menu. Parameter is the theme name. public event Action? OnThemeSelected Event Type Action"
},
"api/client/EchoHub.Client.UI.ProfileAction.html": {
"href": "api/client/EchoHub.Client.UI.ProfileAction.html",
"title": "Enum ProfileAction | EchoHub Documentation",
"summary": "Enum ProfileAction Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Action selected by the user in their own profile dialog. public enum ProfileAction Fields Close = 0 EditProfile = 1 SetStatus = 2"
},
"api/client/EchoHub.Client.UI.ProfileEditDialog.html": {
"href": "api/client/EchoHub.Client.UI.ProfileEditDialog.html",
"title": "Class ProfileEditDialog | EchoHub Documentation",
"summary": "Class ProfileEditDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll A Terminal.Gui dialog for editing the user's profile (display name, bio, nickname color). public sealed class ProfileEditDialog Inheritance object ProfileEditDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ProfileEditDialog() public ProfileEditDialog() Methods Show(IApplication, string?, string?, string?, bool, byte) Shows the profile edit dialog and returns the result, or null if cancelled. public static ProfileEditResult? Show(IApplication app, string? currentDisplayName, string? currentBio, string? currentColor, bool notificationSoundEnabled = false, byte notificationVolume = 30) Parameters app IApplication currentDisplayName string currentBio string currentColor string notificationSoundEnabled bool notificationVolume byte Returns ProfileEditResult"
},
"api/client/EchoHub.Client.UI.ProfileEditResult.html": {
"href": "api/client/EchoHub.Client.UI.ProfileEditResult.html",
"title": "Class ProfileEditResult | EchoHub Documentation",
"summary": "Class ProfileEditResult Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Result returned from the profile edit dialog. public record ProfileEditResult : IEquatable Inheritance object ProfileEditResult Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ProfileEditResult(ProfileEditResult) protected ProfileEditResult(ProfileEditResult original) Parameters original ProfileEditResult ProfileEditResult(string?, string?, string?, string?, bool?, byte?) Result returned from the profile edit dialog. public ProfileEditResult(string? DisplayName, string? Bio, string? NicknameColor, string? AvatarPath, bool? NotificationSoundEnabled, byte? NotificationVolume) Parameters DisplayName string Bio string NicknameColor string AvatarPath string NotificationSoundEnabled bool? NotificationVolume byte? Properties AvatarPath public string? AvatarPath { get; init; } Property Value string Bio public string? Bio { get; init; } Property Value string DisplayName public string? DisplayName { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type NicknameColor public string? NicknameColor { get; init; } Property Value string NotificationSoundEnabled public bool? NotificationSoundEnabled { get; init; } Property Value bool? NotificationVolume public byte? NotificationVolume { get; init; } Property Value byte? Methods Deconstruct(out string?, out string?, out string?, out string?, out bool?, out byte?) public void Deconstruct(out string? DisplayName, out string? Bio, out string? NicknameColor, out string? AvatarPath, out bool? NotificationSoundEnabled, out byte? NotificationVolume) Parameters DisplayName string Bio string NicknameColor string AvatarPath string NotificationSoundEnabled bool? NotificationVolume byte? Equals(ProfileEditResult?) public virtual bool Equals(ProfileEditResult? other) Parameters other ProfileEditResult Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ProfileEditResult?, ProfileEditResult?) public static bool operator ==(ProfileEditResult? left, ProfileEditResult? right) Parameters left ProfileEditResult right ProfileEditResult Returns bool operator !=(ProfileEditResult?, ProfileEditResult?) public static bool operator !=(ProfileEditResult? left, ProfileEditResult? right) Parameters left ProfileEditResult right ProfileEditResult Returns bool"
},
"api/client/EchoHub.Client.UI.ProfileViewDialog.html": {
"href": "api/client/EchoHub.Client.UI.ProfileViewDialog.html",
"title": "Class ProfileViewDialog | EchoHub Documentation",
"summary": "Class ProfileViewDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Dialog for viewing a user's server profile. Shows Edit Profile / Set Status buttons when viewing own profile. public sealed class ProfileViewDialog Inheritance object ProfileViewDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ProfileViewDialog() public ProfileViewDialog() Methods Show(IApplication, UserProfileDto?) Show a read-only profile view for another user. public static void Show(IApplication app, UserProfileDto? profile) Parameters app IApplication profile UserProfileDto ShowOwn(IApplication, UserProfileDto?, UserStatus, string?) Show the profile view for the current user with action buttons. Returns the action the user selected. public static ProfileAction ShowOwn(IApplication app, UserProfileDto? profile, UserStatus currentStatus, string? currentStatusMessage) Parameters app IApplication profile UserProfileDto currentStatus UserStatus currentStatusMessage string Returns ProfileAction"
},
"api/client/EchoHub.Client.UI.StatusDialog.html": {
"href": "api/client/EchoHub.Client.UI.StatusDialog.html",
"title": "Class StatusDialog | EchoHub Documentation",
"summary": "Class StatusDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll A Terminal.Gui dialog for setting the user's status and status message. public sealed class StatusDialog Inheritance object StatusDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors StatusDialog() public StatusDialog() Methods Show(IApplication, UserStatus, string?) Shows the status dialog and returns the result, or null if cancelled. public static StatusDialogResult? Show(IApplication app, UserStatus currentStatus, string? currentMessage) Parameters app IApplication currentStatus UserStatus currentMessage string Returns StatusDialogResult"
},
"api/client/EchoHub.Client.UI.StatusDialogResult.html": {
"href": "api/client/EchoHub.Client.UI.StatusDialogResult.html",
"title": "Class StatusDialogResult | EchoHub Documentation",
"summary": "Class StatusDialogResult Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Result returned from the status dialog. public record StatusDialogResult : IEquatable Inheritance object StatusDialogResult Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors StatusDialogResult(StatusDialogResult) protected StatusDialogResult(StatusDialogResult original) Parameters original StatusDialogResult StatusDialogResult(UserStatus, string?) Result returned from the status dialog. public StatusDialogResult(UserStatus Status, string? StatusMessage) Parameters Status UserStatus StatusMessage string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Status public UserStatus Status { get; init; } Property Value UserStatus StatusMessage public string? StatusMessage { get; init; } Property Value string Methods Deconstruct(out UserStatus, out string?) public void Deconstruct(out UserStatus Status, out string? StatusMessage) Parameters Status UserStatus StatusMessage string Equals(StatusDialogResult?) public virtual bool Equals(StatusDialogResult? other) Parameters other StatusDialogResult Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(StatusDialogResult?, StatusDialogResult?) public static bool operator ==(StatusDialogResult? left, StatusDialogResult? right) Parameters left StatusDialogResult right StatusDialogResult Returns bool operator !=(StatusDialogResult?, StatusDialogResult?) public static bool operator !=(StatusDialogResult? left, StatusDialogResult? right) Parameters left StatusDialogResult right StatusDialogResult Returns bool"
},
"api/client/EchoHub.Client.UI.UpdateConfirmDialog.html": {
"href": "api/client/EchoHub.Client.UI.UpdateConfirmDialog.html",
"title": "Class UpdateConfirmDialog | EchoHub Documentation",
"summary": "Class UpdateConfirmDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll public sealed class UpdateConfirmDialog Inheritance object UpdateConfirmDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors UpdateConfirmDialog() public UpdateConfirmDialog() Methods Show(IApplication, string, string) public static bool Show(IApplication app, string currentVersion, string newVersion) Parameters app IApplication currentVersion string newVersion string Returns bool"
},
"api/client/EchoHub.Client.UI.UpdateProgressDialog.html": {
"href": "api/client/EchoHub.Client.UI.UpdateProgressDialog.html",
"title": "Class UpdateProgressDialog | EchoHub Documentation",
"summary": "Class UpdateProgressDialog Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll public sealed class UpdateProgressDialog Inheritance object UpdateProgressDialog Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors UpdateProgressDialog(IApplication, string) public UpdateProgressDialog(IApplication app, string newVersion) Parameters app IApplication newVersion string Methods Close() public void Close() Show() public void Show() UpdateProgress(float, string) public void UpdateProgress(float fraction, string statusText) Parameters fraction float statusText string"
},
"api/client/EchoHub.Client.UI.UserListSource.html": {
"href": "api/client/EchoHub.Client.UI.UserListSource.html",
"title": "Class UserListSource | EchoHub Documentation",
"summary": "Class UserListSource Namespace EchoHub.Client.UI Assembly EchoHub.Client.dll Custom list data source for the online users panel with per-user nickname colors. public class UserListSource : IListDataSource, IDisposable Inheritance object UserListSource Implements IListDataSource IDisposable Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors UserListSource() public UserListSource() Properties Count Gets the number of items in the data source. public int Count { get; } Property Value int MaxItemLength Gets the width in columns of the widest item in the data source. public int MaxItemLength { get; } Property Value int Remarks ListView uses this value to set its horizontal content size for scrolling. SuspendCollectionChangedEvent Gets or sets whether the CollectionChanged event should be suppressed. public bool SuspendCollectionChangedEvent { get; set; } Property Value bool Remarks Set to true to prevent CollectionChanged from being raised during bulk operations. Set back to false to resume event notifications. Methods Dispose() public void Dispose() IsMarked(int) Determines whether the specified item is marked. public bool IsMarked(int item) Parameters item int The zero-based index of the item. Returns bool true if the item is marked; otherwise false. Remarks ListView calls this method to determine whether to render the item with a mark indicator when ShowMarks is true. Render(ListView, bool, int, int, int, int, int) Renders the specified item to the ListView. public void Render(ListView listView, bool selected, int item, int col, int row, int width, int viewportX = 0) Parameters listView ListView The ListView to render to. selected bool true if the item is currently selected; otherwise false. item int The zero-based index of the item to render. col int The column in listView Viewport where rendering starts. row int The row in listView Viewport where rendering starts. width int The width available for rendering. viewportX int The horizontal scroll offset. Remarks ListView calls this method for each visible item during rendering. The color scheme will be set based on selection state before this method is called. Implementations must fill the entire width to avoid rendering artifacts. SetMark(int, bool) Sets the marked state of the specified item. public void SetMark(int item, bool value) Parameters item int The zero-based index of the item. value bool true to mark the item; false to unmark it. Remarks ListView calls this method when the user toggles marking (e.g., via the SPACE key) if ShowMarks is true. ToList() Returns the underlying data source as an System.Collections.IList. public IList ToList() Returns IList The data source as an System.Collections.IList. Remarks ListView uses this method to access individual items for events like ValueChanged and to enable keyboard search via KeystrokeNavigator. Update(List<(string Text, Attribute? NameColor)>) public void Update(List<(string Text, Attribute? NameColor)> users) Parameters users List<(string Text, Attribute? NameColor)> Events CollectionChanged Raised when items are added, removed, moved, or the entire collection is refreshed. public event NotifyCollectionChangedEventHandler? CollectionChanged Event Type NotifyCollectionChangedEventHandler Remarks ListView subscribes to this event to update its display and content size when the data changes. Implementations should raise this event whenever the underlying collection changes, unless SuspendCollectionChangedEvent is true."
},
"api/client/EchoHub.Client.UI.html": {
"href": "api/client/EchoHub.Client.UI.html",
"title": "Namespace EchoHub.Client.UI | EchoHub Documentation",
"summary": "Namespace EchoHub.Client.UI Classes AudioPlayerDialog ChannelListSource Custom list data source for colored channel list rendering. Active channel gets a > indicator, unread channels are bright with a count badge. ChatColors Shared color attributes for chat rendering (timestamps, system messages). ChatLine A single line in the chat, composed of colored segments. ChatListSource Custom list data source for chat messages with per-segment coloring. ChatSegment A colored text segment within a chat line. ColorHelper Helper to parse hex colors to Terminal.Gui Attributes. ConnectDialog A Terminal.Gui dialog for entering server connection and authentication details. Includes a saved servers selector when saved servers are available. ConnectDialogResult Result returned from the connect dialog. CreateChannelDialog CreateChannelResult EmojiHelper Converts emoji grapheme clusters to text shortcodes for safe TUI rendering. Terminal width calculations for emoji are unreliable across different terminals, so we replace them with fixed-width ASCII shortcodes for display only. MainWindow Main Terminal.Gui window for the EchoHub chat client. ProfileEditDialog A Terminal.Gui dialog for editing the user's profile (display name, bio, nickname color). ProfileEditResult Result returned from the profile edit dialog. ProfileViewDialog Dialog for viewing a user's server profile. Shows Edit Profile / Set Status buttons when viewing own profile. StatusDialog A Terminal.Gui dialog for setting the user's status and status message. StatusDialogResult Result returned from the status dialog. UpdateConfirmDialog UpdateProgressDialog UserListSource Custom list data source for the online users panel with per-user nickname colors. Enums ProfileAction Action selected by the user in their own profile dialog."
},
"api/client/EchoHub.Client.html": {
"href": "api/client/EchoHub.Client.html",
"title": "Namespace EchoHub.Client | EchoHub Documentation",
"summary": "Namespace EchoHub.Client Classes AppOrchestrator Central orchestrator for the EchoHub TUI client. Owns session state and wires UI events to service calls. AsyncRunner Eliminates repeated Task.Run/try/catch/app.Invoke(ShowError) boilerplate. Runs async work on a background thread and routes exceptions to the UI."
},
"api/core-articles/index.html": {
"href": "api/core-articles/index.html",
"title": "Core Articles | EchoHub Documentation",
"summary": "Core Articles Articles related to the EchoHub.Core shared library. Topics Data models and DTOs Contract interfaces (IChatService, IChannelService, IChatBroadcaster, IEchoHubClient) Validation constants and shared rules"
},
"api/core/EchoHub.Core.Constants.HubConstants.html": {
"href": "api/core/EchoHub.Core.Constants.HubConstants.html",
"title": "Class HubConstants | EchoHub Documentation",
"summary": "Class HubConstants Namespace EchoHub.Core.Constants Assembly EchoHub.Core.dll public static class HubConstants Inheritance object HubConstants Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Fields AsciiArtHeight public const int AsciiArtHeight = 40 Field Value int AsciiArtHeightHalfBlock public const int AsciiArtHeightHalfBlock = 80 Field Value int AsciiArtWidth public const int AsciiArtWidth = 80 Field Value int ChatHubPath public const string ChatHubPath = \"/hubs/chat\" Field Value string DefaultChannel public const string DefaultChannel = \"general\" Field Value string DefaultHistoryCount public const int DefaultHistoryCount = 100 Field Value int EmbedFetchTimeoutSeconds public const int EmbedFetchTimeoutSeconds = 5 Field Value int EmbedMaxDescriptionLength public const int EmbedMaxDescriptionLength = 500 Field Value int EmbedMaxHtmlBytes public const int EmbedMaxHtmlBytes = 65536 Field Value int EmbedMaxUrlsPerMessage public const int EmbedMaxUrlsPerMessage = 3 Field Value int MaxAudioFileSizeBytes public const int MaxAudioFileSizeBytes = 10485760 Field Value int MaxAvatarSizeBytes public const int MaxAvatarSizeBytes = 2097152 Field Value int MaxConsecutiveNewlines public const int MaxConsecutiveNewlines = 1 Field Value int MaxFileSizeBytes public const int MaxFileSizeBytes = 104857600 Field Value int MaxImageSizeBytes public const int MaxImageSizeBytes = 10485760 Field Value int MaxMessageLength public const int MaxMessageLength = 2000 Field Value int MaxMessageNewlines public const int MaxMessageNewlines = 30 Field Value int"
},
"api/core/EchoHub.Core.Constants.ValidationConstants.html": {
"href": "api/core/EchoHub.Core.Constants.ValidationConstants.html",
"title": "Class ValidationConstants | EchoHub Documentation",
"summary": "Class ValidationConstants Namespace EchoHub.Core.Constants Assembly EchoHub.Core.dll public static class ValidationConstants Inheritance object ValidationConstants Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Fields ChannelNamePattern public const string ChannelNamePattern = \"^[a-zA-Z0-9_-]{2,100}$\" Field Value string HexColorPattern public const string HexColorPattern = \"^#[0-9a-fA-F]{6}$\" Field Value string MaxBioLength public const int MaxBioLength = 500 Field Value int MaxChannelTopicLength public const int MaxChannelTopicLength = 500 Field Value int MaxDisplayNameLength public const int MaxDisplayNameLength = 100 Field Value int MaxHistoryCount public const int MaxHistoryCount = 100 Field Value int MaxPasswordLength public const int MaxPasswordLength = 128 Field Value int MaxStatusMessageLength public const int MaxStatusMessageLength = 100 Field Value int UsernamePattern public const string UsernamePattern = \"^[a-zA-Z0-9_-]{3,50}$\" Field Value string Methods ChannelNameRegex() [GeneratedRegex(\"^[a-zA-Z0-9_-]{2,100}$\")] public static Regex ChannelNameRegex() Returns Regex Remarks Pattern: ^[a-zA-Z0-9_-]{2,100}$ Explanation: ○ Match if at the beginning of the string. ○ Match a character in the set [\\-0-9A-Z_a-z] atomically at least 2 and at most 100 times. ○ Match if at the end of the string or if before an ending newline. HexColorRegex() [GeneratedRegex(\"^#[0-9a-fA-F]{6}$\")] public static Regex HexColorRegex() Returns Regex Remarks Pattern: ^#[0-9a-fA-F]{6}$ Explanation: ○ Match if at the beginning of the string. ○ Match '#'. ○ Match a hexadecimal digit exactly 6 times. ○ Match if at the end of the string or if before an ending newline. UsernameRegex() [GeneratedRegex(\"^[a-zA-Z0-9_-]{3,50}$\")] public static Regex UsernameRegex() Returns Regex Remarks Pattern: ^[a-zA-Z0-9_-]{3,50}$ Explanation: ○ Match if at the beginning of the string. ○ Match a character in the set [\\-0-9A-Z_a-z] atomically at least 3 and at most 50 times. ○ Match if at the end of the string or if before an ending newline."
},
"api/core/EchoHub.Core.Constants.html": {
"href": "api/core/EchoHub.Core.Constants.html",
"title": "Namespace EchoHub.Core.Constants | EchoHub Documentation",
"summary": "Namespace EchoHub.Core.Constants Classes HubConstants ValidationConstants"
},
"api/core/EchoHub.Core.Contracts.ChannelListItem.html": {
"href": "api/core/EchoHub.Core.Contracts.ChannelListItem.html",
"title": "Class ChannelListItem | EchoHub Documentation",
"summary": "Class ChannelListItem Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll public record ChannelListItem : IEquatable Inheritance object ChannelListItem Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ChannelListItem(ChannelListItem) protected ChannelListItem(ChannelListItem original) Parameters original ChannelListItem ChannelListItem(string, string?, int) public ChannelListItem(string Name, string? Topic, int OnlineCount) Parameters Name string Topic string OnlineCount int Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Name public string Name { get; init; } Property Value string OnlineCount public int OnlineCount { get; init; } Property Value int Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out string, out string?, out int) public void Deconstruct(out string Name, out string? Topic, out int OnlineCount) Parameters Name string Topic string OnlineCount int Equals(ChannelListItem?) public virtual bool Equals(ChannelListItem? other) Parameters other ChannelListItem Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ChannelListItem?, ChannelListItem?) public static bool operator ==(ChannelListItem? left, ChannelListItem? right) Parameters left ChannelListItem right ChannelListItem Returns bool operator !=(ChannelListItem?, ChannelListItem?) public static bool operator !=(ChannelListItem? left, ChannelListItem? right) Parameters left ChannelListItem right ChannelListItem Returns bool"
},
"api/core/EchoHub.Core.Contracts.IChannelService.html": {
"href": "api/core/EchoHub.Core.Contracts.IChannelService.html",
"title": "Interface IChannelService | EchoHub Documentation",
"summary": "Interface IChannelService Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll public interface IChannelService Methods CreateChannelAsync(Guid, string, string?, bool) Task CreateChannelAsync(Guid creatorUserId, string name, string? topic, bool isPublic) Parameters creatorUserId Guid name string topic string isPublic bool Returns Task DeleteChannelAsync(Guid, string) Task DeleteChannelAsync(Guid callerUserId, string channelName) Parameters callerUserId Guid channelName string Returns Task EnsureChannelMembershipAsync(Guid, string) Task<(bool Success, string? Error)> EnsureChannelMembershipAsync(Guid userId, string channelName) Parameters userId Guid channelName string Returns Task<(bool Success, string Error)> GetChannelByNameAsync(string) Task GetChannelByNameAsync(string channelName) Parameters channelName string Returns Task GetChannelListAsync() Task> GetChannelListAsync() Returns Task> GetChannelTopicAsync(string) Task<(string? Topic, bool Exists)> GetChannelTopicAsync(string channelName) Parameters channelName string Returns Task<(string Topic, bool Exists)> GetChannelsAsync(Guid, int, int) Task> GetChannelsAsync(Guid userId, int offset, int limit) Parameters userId Guid offset int limit int Returns Task> UpdateTopicAsync(Guid, string, string?) Task UpdateTopicAsync(Guid callerUserId, string channelName, string? topic) Parameters callerUserId Guid channelName string topic string Returns Task"
},
"api/core/EchoHub.Core.Contracts.IChatBroadcaster.html": {
"href": "api/core/EchoHub.Core.Contracts.IChatBroadcaster.html",
"title": "Interface IChatBroadcaster | EchoHub Documentation",
"summary": "Interface IChatBroadcaster Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll public interface IChatBroadcaster Methods ForceDisconnectUserAsync(List, string) Task ForceDisconnectUserAsync(List connectionIds, string reason) Parameters connectionIds List reason string Returns Task SendChannelNukedAsync(string) Task SendChannelNukedAsync(string channelName) Parameters channelName string Returns Task SendChannelUpdatedAsync(ChannelDto, string?) Task SendChannelUpdatedAsync(ChannelDto channel, string? channelName = null) Parameters channel ChannelDto channelName string Returns Task SendErrorAsync(string, string) Task SendErrorAsync(string connectionId, string message) Parameters connectionId string message string Returns Task SendMessageDeletedAsync(string, Guid) Task SendMessageDeletedAsync(string channelName, Guid messageId) Parameters channelName string messageId Guid Returns Task SendMessageToChannelAsync(string, MessageDto) Task SendMessageToChannelAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task SendUserBannedAsync(string, string?) Task SendUserBannedAsync(string username, string? reason) Parameters username string reason string Returns Task SendUserJoinedAsync(string, string, string?) Task SendUserJoinedAsync(string channelName, string username, string? excludeConnectionId = null) Parameters channelName string username string excludeConnectionId string Returns Task SendUserKickedAsync(string, string, string?) Task SendUserKickedAsync(string channelName, string username, string? reason) Parameters channelName string username string reason string Returns Task SendUserLeftAsync(string, string) Task SendUserLeftAsync(string channelName, string username) Parameters channelName string username string Returns Task SendUserStatusChangedAsync(List, UserPresenceDto) Task SendUserStatusChangedAsync(List channelNames, UserPresenceDto presence) Parameters channelNames List presence UserPresenceDto Returns Task"
},
"api/core/EchoHub.Core.Contracts.IChatService.html": {
"href": "api/core/EchoHub.Core.Contracts.IChatService.html",
"title": "Interface IChatService | EchoHub Documentation",
"summary": "Interface IChatService Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll public interface IChatService Methods AuthenticateUserAsync(string, string) Task<(Guid UserId, string Username)?> AuthenticateUserAsync(string username, string password) Parameters username string password string Returns Task<(Guid UserId, string Username)?> BroadcastChannelUpdatedAsync(ChannelDto, string?) Task BroadcastChannelUpdatedAsync(ChannelDto channel, string? channelName = null) Parameters channel ChannelDto channelName string Returns Task BroadcastMessageAsync(string, MessageDto) Task BroadcastMessageAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task GetChannelHistoryAsync(string, int) Task> GetChannelHistoryAsync(string channelName, int count) Parameters channelName string count int Returns Task> GetChannelsForUserAsync(string) Task> GetChannelsForUserAsync(string username) Parameters username string Returns Task> GetOnlineUsersAsync(string) Task> GetOnlineUsersAsync(string channelName) Parameters channelName string Returns Task> GetUserProfileAsync(string) Task GetUserProfileAsync(string username) Parameters username string Returns Task JoinChannelAsync(string, Guid, string, string) Task<(List History, string? Error)> JoinChannelAsync(string connectionId, Guid userId, string username, string channelName) Parameters connectionId string userId Guid username string channelName string Returns Task<(List History, string Error)> LeaveChannelAsync(string, string, string) Task LeaveChannelAsync(string connectionId, string username, string channelName) Parameters connectionId string username string channelName string Returns Task SendMessageAsync(Guid, string, string, string) Task SendMessageAsync(Guid userId, string username, string channelName, string content) Parameters userId Guid username string channelName string content string Returns Task UpdateStatusAsync(Guid, string, UserStatus, string?) Task UpdateStatusAsync(Guid userId, string username, UserStatus status, string? statusMessage) Parameters userId Guid username string status UserStatus statusMessage string Returns Task UserConnectedAsync(string, Guid, string) Task UserConnectedAsync(string connectionId, Guid userId, string username) Parameters connectionId string userId Guid username string Returns Task UserDisconnectedAsync(string) Task UserDisconnectedAsync(string connectionId) Parameters connectionId string Returns Task"
},
"api/core/EchoHub.Core.Contracts.IEchoHubClient.html": {
"href": "api/core/EchoHub.Core.Contracts.IEchoHubClient.html",
"title": "Interface IEchoHubClient | EchoHub Documentation",
"summary": "Interface IEchoHubClient Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll Methods the server can invoke on connected clients. public interface IEchoHubClient Methods ChannelNuked(string) Task ChannelNuked(string channelName) Parameters channelName string Returns Task ChannelUpdated(ChannelDto) Task ChannelUpdated(ChannelDto channel) Parameters channel ChannelDto Returns Task Error(string) Task Error(string message) Parameters message string Returns Task ForceDisconnect(string) Task ForceDisconnect(string reason) Parameters reason string Returns Task MessageDeleted(string, Guid) Task MessageDeleted(string channelName, Guid messageId) Parameters channelName string messageId Guid Returns Task ReceiveMessage(MessageDto) Task ReceiveMessage(MessageDto message) Parameters message MessageDto Returns Task UserBanned(string, string?) Task UserBanned(string username, string? reason) Parameters username string reason string Returns Task UserJoined(string, string) Task UserJoined(string channelName, string username) Parameters channelName string username string Returns Task UserKicked(string, string, string?) Task UserKicked(string channelName, string username, string? reason) Parameters channelName string username string reason string Returns Task UserLeft(string, string) Task UserLeft(string channelName, string username) Parameters channelName string username string Returns Task UserStatusChanged(UserPresenceDto) Task UserStatusChanged(UserPresenceDto presence) Parameters presence UserPresenceDto Returns Task"
},
"api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html": {
"href": "api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html",
"title": "Interface IMessageEncryptionService | EchoHub Documentation",
"summary": "Interface IMessageEncryptionService Namespace EchoHub.Core.Contracts Assembly EchoHub.Core.dll public interface IMessageEncryptionService Properties EncryptDatabaseEnabled Whether database content should be encrypted at rest (server setting). bool EncryptDatabaseEnabled { get; } Property Value bool Methods Decrypt(string) string Decrypt(string content) Parameters content string Returns string DecryptNullable(string?) string? DecryptNullable(string? value) Parameters value string Returns string Encrypt(string) string Encrypt(string plaintext) Parameters plaintext string Returns string EncryptNullable(string?) string? EncryptNullable(string? value) Parameters value string Returns string"
},
"api/core/EchoHub.Core.Contracts.html": {
"href": "api/core/EchoHub.Core.Contracts.html",
"title": "Namespace EchoHub.Core.Contracts | EchoHub Documentation",
"summary": "Namespace EchoHub.Core.Contracts Classes ChannelListItem Interfaces IChannelService IChatBroadcaster IChatService IEchoHubClient Methods the server can invoke on connected clients. IMessageEncryptionService"
},
"api/core/EchoHub.Core.DTOs.ApiResponse-1.html": {
"href": "api/core/EchoHub.Core.DTOs.ApiResponse-1.html",
"title": "Class ApiResponse | EchoHub Documentation",
"summary": "Class ApiResponse Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record ApiResponse : IEquatable> Type Parameters T Inheritance object ApiResponse Implements IEquatable> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ApiResponse(ApiResponse) protected ApiResponse(ApiResponse original) Parameters original ApiResponse ApiResponse(bool, string?, List?, T?) public ApiResponse(bool Success, string? Message = null, List? Errors = null, T? Data = default) Parameters Success bool Message string Errors List Data T Properties Data public T? Data { get; init; } Property Value T EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Errors public List? Errors { get; init; } Property Value List Message public string? Message { get; init; } Property Value string Success public bool Success { get; init; } Property Value bool Methods Deconstruct(out bool, out string?, out List?, out T?) public void Deconstruct(out bool Success, out string? Message, out List? Errors, out T? Data) Parameters Success bool Message string Errors List Data T Equals(ApiResponse?) public virtual bool Equals(ApiResponse? other) Parameters other ApiResponse Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ApiResponse?, ApiResponse?) public static bool operator ==(ApiResponse? left, ApiResponse? right) Parameters left ApiResponse right ApiResponse Returns bool operator !=(ApiResponse?, ApiResponse?) public static bool operator !=(ApiResponse? left, ApiResponse? right) Parameters left ApiResponse right ApiResponse Returns bool"
},
"api/core/EchoHub.Core.DTOs.ApiResponse.html": {
"href": "api/core/EchoHub.Core.DTOs.ApiResponse.html",
"title": "Class ApiResponse | EchoHub Documentation",
"summary": "Class ApiResponse Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record ApiResponse : IEquatable Inheritance object ApiResponse Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ApiResponse(ApiResponse) protected ApiResponse(ApiResponse original) Parameters original ApiResponse ApiResponse(bool, string?, List?) public ApiResponse(bool Success, string? Message = null, List? Errors = null) Parameters Success bool Message string Errors List Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Errors public List? Errors { get; init; } Property Value List Message public string? Message { get; init; } Property Value string Success public bool Success { get; init; } Property Value bool Methods Deconstruct(out bool, out string?, out List?) public void Deconstruct(out bool Success, out string? Message, out List? Errors) Parameters Success bool Message string Errors List Equals(ApiResponse?) public virtual bool Equals(ApiResponse? other) Parameters other ApiResponse Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(ApiResponse?, ApiResponse?) public static bool operator ==(ApiResponse? left, ApiResponse? right) Parameters left ApiResponse right ApiResponse Returns bool operator !=(ApiResponse?, ApiResponse?) public static bool operator !=(ApiResponse? left, ApiResponse? right) Parameters left ApiResponse right ApiResponse Returns bool"
},
"api/core/EchoHub.Core.DTOs.AssignRoleRequest.html": {
"href": "api/core/EchoHub.Core.DTOs.AssignRoleRequest.html",
"title": "Class AssignRoleRequest | EchoHub Documentation",
"summary": "Class AssignRoleRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record AssignRoleRequest : IEquatable Inheritance object AssignRoleRequest Implements IEquatable Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors AssignRoleRequest(AssignRoleRequest) protected AssignRoleRequest(AssignRoleRequest original) Parameters original AssignRoleRequest AssignRoleRequest(string, ServerRole) public AssignRoleRequest(string Username, ServerRole Role) Parameters Username string Role ServerRole Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Role public ServerRole Role { get; init; } Property Value ServerRole Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out ServerRole) public void Deconstruct(out string Username, out ServerRole Role) Parameters Username string Role ServerRole Equals(AssignRoleRequest?) public virtual bool Equals(AssignRoleRequest? other) Parameters other AssignRoleRequest Returns bool Equals(object?) public override bool Equals(object? obj) Parameters obj object Returns bool GetHashCode() public override int GetHashCode() Returns int PrintMembers(StringBuilder) protected virtual bool PrintMembers(StringBuilder builder) Parameters builder StringBuilder Returns bool ToString() public override string ToString() Returns string Operators operator ==(AssignRoleRequest?, AssignRoleRequest?) public static bool operator ==(AssignRoleRequest? left, AssignRoleRequest? right) Parameters left AssignRoleRequest right AssignRoleRequest Returns bool operator !=(AssignRoleRequest?, AssignRoleRequest?) public static bool operator !=(AssignRoleRequest? left, AssignRoleRequest? right) Parameters left AssignRoleRequest right AssignRoleRequest Returns bool"
},
"api/core/EchoHub.Core.DTOs.AvatarUploadResponse.html": {
"href": "api/core/EchoHub.Core.DTOs.AvatarUploadResponse.html",
"title": "Class AvatarUploadResponse | EchoHub Documentation",
"summary": "Class AvatarUploadResponse Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record AvatarUploadResponse : IEquatable