{
  "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 Command system reference Configuration management"
  },
  "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<Task>, Action<string>, string, string?) public static void Run(IApplication app, Func<Task> work, Action<string> showError, string errorPrefix, string? logContext = null) Parameters app IApplication work Func<Task> showError Action<string> 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<CommandResult> HandleAsync(string input) Parameters input string Returns Task<CommandResult> IsCommand(string) public bool IsCommand(string input) Parameters input string Returns bool Events OnHelp public event Func<Task>? OnHelp Event Type Func<Task> OnJoinChannel public event Func<string, Task>? OnJoinChannel Event Type Func<string, Task> OnLeaveChannel public event Func<Task>? OnLeaveChannel Event Type Func<Task> OnListUsers public event Func<Task>? OnListUsers Event Type Func<Task> OnOpenProfile public event Func<string?, Task>? OnOpenProfile Event Type Func<string, Task> OnOpenServers public event Func<Task>? OnOpenServers Event Type Func<Task> OnQuit public event Func<Task>? OnQuit Event Type Func<Task> OnSendFile public event Func<string, Task>? OnSendFile Event Type Func<string, Task> OnSetAvatar public event Func<string, Task>? OnSetAvatar Event Type Func<string, Task> OnSetColor public event Func<string, Task>? OnSetColor Event Type Func<string, Task> OnSetNick public event Func<string, Task>? OnSetNick Event Type Func<string, Task> OnSetStatus public event Func<UserStatus, string?, Task>? OnSetStatus Event Type Func<UserStatus, string, Task> OnSetTheme public event Func<string, Task>? OnSetTheme Event Type Func<string, Task> OnSetTopic public event Func<string, Task>? OnSetTopic Event Type Func<string, Task>"
  },
  "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<CommandResult> Inheritance object CommandResult Implements IEquatable<CommandResult> 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 SavedServers public List<SavedServer> SavedServers { get; set; } Property Value List<SavedServer>"
  },
  "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.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 Token public string? Token { get; set; } Property Value string 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 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 CreateChannelAsync(string, string?) public Task<ChannelDto?> CreateChannelAsync(string name, string? topic = null) Parameters name string topic string Returns Task<ChannelDto> DeleteChannelAsync(string) public Task DeleteChannelAsync(string channelName) Parameters channelName string Returns Task Dispose() public void Dispose() GetChannelsAsync() public Task<List<ChannelDto>> GetChannelsAsync() Returns Task<List<ChannelDto>> GetServerInfoAsync() public Task<ServerStatusDto?> GetServerInfoAsync() Returns Task<ServerStatusDto> GetUserProfileAsync(string) public Task<UserProfileDto?> GetUserProfileAsync(string username) Parameters username string Returns Task<UserProfileDto> GetValidTokenAsync() Returns a valid access token, refreshing if expired. Used by EchoHubConnection for SignalR token provider. public Task<string?> GetValidTokenAsync() Returns Task<string> LoginAsync(string, string) public Task<LoginResponse> LoginAsync(string username, string password) Parameters username string password string Returns Task<LoginResponse> LogoutAsync() public Task LogoutAsync() Returns Task RefreshTokenAsync() public Task RefreshTokenAsync() Returns Task RegisterAsync(string, string, string?) public Task<LoginResponse> RegisterAsync(string username, string password, string? displayName = null) Parameters username string password string displayName string Returns Task<LoginResponse> SendUrlAsync(string, string) public Task<MessageDto?> SendUrlAsync(string channelName, string url) Parameters channelName string url string Returns Task<MessageDto> UpdateChannelTopicAsync(string, string?) public Task<ChannelDto?> UpdateChannelTopicAsync(string channelName, string? topic) Parameters channelName string topic string Returns Task<ChannelDto> UpdateProfileAsync(UpdateProfileRequest) public Task<UserProfileDto?> UpdateProfileAsync(UpdateProfileRequest request) Parameters request UpdateProfileRequest Returns Task<UserProfileDto> UploadAvatarAsync(Stream, string) public Task<string?> UploadAvatarAsync(Stream imageStream, string fileName) Parameters imageStream Stream fileName string Returns Task<string> UploadFileAsync(string, Stream, string) public Task<MessageDto?> UploadFileAsync(string channelName, Stream fileStream, string fileName) Parameters channelName string fileStream Stream fileName string Returns Task<MessageDto>"
  },
  "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) public EchoHubConnection(string serverUrl, ApiClient apiClient) Parameters serverUrl string apiClient ApiClient 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<List<MessageDto>> GetHistoryAsync(string channelName, int count = 50) Parameters channelName string count int Returns Task<List<MessageDto>> GetOnlineUsersAsync(string) public Task<List<UserPresenceDto>> GetOnlineUsersAsync(string channelName) Parameters channelName string Returns Task<List<UserPresenceDto>> JoinChannelAsync(string) public Task<List<MessageDto>> JoinChannelAsync(string channelName) Parameters channelName string Returns Task<List<MessageDto>> 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 OnChannelUpdated public event Action<ChannelDto>? OnChannelUpdated Event Type Action<ChannelDto> OnConnectionStateChanged public event Action<string>? OnConnectionStateChanged Event Type Action<string> OnError public event Action<string>? OnError Event Type Action<string> OnMessageReceived public event Action<MessageDto>? OnMessageReceived Event Type Action<MessageDto> OnReconnected public event Action? OnReconnected Event Type Action OnUserJoined public event Action<string, string>? OnUserJoined Event Type Action<string, string> OnUserLeft public event Action<string, string>? OnUserLeft Event Type Action<string, string> OnUserStatusChanged public event Action<UserPresenceDto>? OnUserStatusChanged Event Type Action<UserPresenceDto>"
  },
  "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 EchoHubConnection"
  },
  "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<Theme> GetAvailableThemes() Returns List<Theme> 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.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 SystemAttr public static readonly Attribute SystemAttr Field Value Attribute TimestampAttr public static readonly Attribute TimestampAttr Field Value Attribute"
  },
  "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<ChatSegment>) public ChatLine(List<ChatSegment> segments) Parameters segments List<ChatSegment> ChatLine(string) public ChatLine(string plainText) Parameters plainText string Properties Segments public List<ChatSegment> Segments { get; } Property Value List<ChatSegment> TextLength public int TextLength { get; } Property Value int Methods FromAnsi(string, Attribute?) Parse a string containing ANSI 24-bit color escape codes into colored segments. Format: \\x1b[38;2;R;G;Bm (foreground color), \\x1b[0m (reset) public static ChatLine FromAnsi(string ansiText, Attribute? defaultAttr = null) Parameters ansiText string defaultAttr Attribute? Returns ChatLine 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<ChatLine> Wrap(int width, int continuationIndent = 0) Parameters width int continuationIndent int Returns List<ChatLine>"
  },
  "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-character 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 public int Count { get; } Property Value int MaxItemLength public int MaxItemLength { get; } Property Value int SuspendCollectionChangedEvent public bool SuspendCollectionChangedEvent { get; set; } Property Value bool Methods Add(ChatLine) public void Add(ChatLine line) Parameters line ChatLine AddRange(IEnumerable<ChatLine>) public void AddRange(IEnumerable<ChatLine> lines) Parameters lines IEnumerable<ChatLine> Clear() public void Clear() Dispose() public void Dispose() InsertRange(int, IEnumerable<ChatLine>) public void InsertRange(int index, IEnumerable<ChatLine> lines) Parameters index int lines IEnumerable<ChatLine> IsMarked(int) public bool IsMarked(int item) Parameters item int Returns bool Render(ListView, bool, int, int, int, int, int) public void Render(ListView listView, bool selected, int item, int col, int row, int width, int viewportX = 0) Parameters listView ListView selected bool item int col int row int width int viewportX int SetMark(int, bool) public void SetMark(int item, bool value) Parameters item int value bool ToList() public IList ToList() Returns IList Events CollectionChanged public event NotifyCollectionChangedEventHandler? CollectionChanged Event Type NotifyCollectionChangedEventHandler"
  },
  "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<ChatSegment> Inheritance object ChatSegment Implements IEquatable<ChatSegment> 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<SavedServer>?) 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<SavedServer>? savedServers = null) Parameters app IApplication savedServers List<SavedServer> 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<ConnectDialogResult> Inheritance object ConnectDialogResult Implements IEquatable<ConnectDialogResult> 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) Result returned from the connect dialog. public ConnectDialogResult(string ServerUrl, string Username, string Password, bool IsRegister) Parameters ServerUrl string Username string Password string IsRegister bool 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 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) public void Deconstruct(out string ServerUrl, out string Username, out string Password, out bool IsRegister) Parameters ServerUrl string Username string Password string IsRegister bool 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<CreateChannelResult> Inheritance object CreateChannelResult Implements IEquatable<CreateChannelResult> 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?) public CreateChannelResult(string Name, string? Topic) Parameters Name string Topic string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Name public string Name { get; init; } Property Value string Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out string, out string?) public void Deconstruct(out string Name, out string? Topic) Parameters Name string Topic string 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.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.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<TView>() 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.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() 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<string> GetChannelNames() Returns IReadOnlyList<string> LoadHistory(string, List<MessageDto>) Load historical messages into a channel, replacing any existing messages. public void LoadHistory(string channelName, List<MessageDto> messages) Parameters channelName string messages List<MessageDto> RefreshMenuBar() Rebuilds and replaces the menu bar (e.g., after theme list changes). public void RefreshMenuBar() SetChannelTopic(string, string?) Update the topic for a specific channel. public void SetChannelTopic(string channelName, string? topic) Parameters channelName string topic string SetChannels(List<ChannelDto>) Set the list of available channels, storing topics, and refresh the channel list view. public void SetChannels(List<ChannelDto> channels) Parameters channels List<ChannelDto> 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 UpdateStatusBar(string) Update the connection status displayed in the status bar. public void UpdateStatusBar(string status) Parameters status string Events OnChannelSelected Fired when the user selects a channel. Parameter is the channel name. public event Action<string>? OnChannelSelected Event Type Action<string> 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 OnDisconnectRequested Fired when the user requests to disconnect via the menu. public event Action? OnDisconnectRequested Event Type Action OnMessageSubmitted Fired when the user presses Enter in the input field. Parameters: channel name, message content. public event Action<string, string>? OnMessageSubmitted Event Type Action<string, string> 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<string>? OnThemeSelected Event Type Action<string>"
  },
  "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?) 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) Parameters app IApplication currentDisplayName string currentBio string currentColor string 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<ProfileEditResult> Inheritance object ProfileEditResult Implements IEquatable<ProfileEditResult> 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?) Result returned from the profile edit dialog. public ProfileEditResult(string? DisplayName, string? Bio, string? NicknameColor) Parameters DisplayName string Bio string NicknameColor string Properties 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 Methods Deconstruct(out string?, out string?, out string?) public void Deconstruct(out string? DisplayName, out string? Bio, out string? NicknameColor) Parameters DisplayName string Bio string NicknameColor string 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<StatusDialogResult> Inheritance object StatusDialogResult Implements IEquatable<StatusDialogResult> 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.html": {
    "href": "api/client/EchoHub.Client.UI.html",
    "title": "Namespace EchoHub.Client.UI | EchoHub Documentation",
    "summary": "Namespace EchoHub.Client.UI Classes 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-character 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 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. 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, 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 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 = 50 Field Value int MaxAvatarSizeBytes public const int MaxAvatarSizeBytes = 2097152 Field Value int MaxFileSizeBytes public const int MaxFileSizeBytes = 10485760 Field Value int MaxMessageLength public const int MaxMessageLength = 2000 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<ChannelListItem> Inheritance object ChannelListItem Implements IEquatable<ChannelListItem> 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.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 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 SendMessageToChannelAsync(string, MessageDto) Task SendMessageToChannelAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task SendUserJoinedAsync(string, string, string?) Task SendUserJoinedAsync(string channelName, string username, string? excludeConnectionId = null) Parameters channelName string username string excludeConnectionId string Returns Task SendUserLeftAsync(string, string) Task SendUserLeftAsync(string channelName, string username) Parameters channelName string username string Returns Task SendUserStatusChangedAsync(List<string>, UserPresenceDto) Task SendUserStatusChangedAsync(List<string> channelNames, UserPresenceDto presence) Parameters channelNames List<string> 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<List<MessageDto>> GetChannelHistoryAsync(string channelName, int count) Parameters channelName string count int Returns Task<List<MessageDto>> GetChannelListAsync() Task<List<ChannelListItem>> GetChannelListAsync() Returns Task<List<ChannelListItem>> GetChannelTopicAsync(string) Task<(string? Topic, bool Exists)> GetChannelTopicAsync(string channelName) Parameters channelName string Returns Task<(string Topic, bool Exists)> GetChannelsForUserAsync(string) Task<List<string>> GetChannelsForUserAsync(string username) Parameters username string Returns Task<List<string>> GetOnlineUsersAsync(string) Task<List<UserPresenceDto>> GetOnlineUsersAsync(string channelName) Parameters channelName string Returns Task<List<UserPresenceDto>> GetUserProfileAsync(string) Task<UserProfileDto?> GetUserProfileAsync(string username) Parameters username string Returns Task<UserProfileDto> JoinChannelAsync(string, Guid, string, string) Task<(List<MessageDto> History, string? Error)> JoinChannelAsync(string connectionId, Guid userId, string username, string channelName) Parameters connectionId string userId Guid username string channelName string Returns Task<(List<MessageDto> 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<string?> SendMessageAsync(Guid userId, string username, string channelName, string content) Parameters userId Guid username string channelName string content string Returns Task<string> UpdateStatusAsync(Guid, string, UserStatus, string?) Task<string?> UpdateStatusAsync(Guid userId, string username, UserStatus status, string? statusMessage) Parameters userId Guid username string status UserStatus statusMessage string Returns Task<string> UserConnectedAsync(string, Guid, string) Task UserConnectedAsync(string connectionId, Guid userId, string username) Parameters connectionId string userId Guid username string Returns Task UserDisconnectedAsync(string) Task<string?> UserDisconnectedAsync(string connectionId) Parameters connectionId string Returns Task<string>"
  },
  "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 ChannelUpdated(ChannelDto) Task ChannelUpdated(ChannelDto channel) Parameters channel ChannelDto Returns Task Error(string) Task Error(string message) Parameters message string Returns Task ReceiveMessage(MessageDto) Task ReceiveMessage(MessageDto message) Parameters message MessageDto Returns Task UserJoined(string, string) Task UserJoined(string channelName, string username) Parameters channelName string username 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.html": {
    "href": "api/core/EchoHub.Core.Contracts.html",
    "title": "Namespace EchoHub.Core.Contracts | EchoHub Documentation",
    "summary": "Namespace EchoHub.Core.Contracts Classes ChannelListItem Interfaces IChatBroadcaster IChatService IEchoHubClient Methods the server can invoke on connected clients."
  },
  "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<AvatarUploadResponse> Inheritance object AvatarUploadResponse Implements IEquatable<AvatarUploadResponse> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors AvatarUploadResponse(AvatarUploadResponse) protected AvatarUploadResponse(AvatarUploadResponse original) Parameters original AvatarUploadResponse AvatarUploadResponse(string) public AvatarUploadResponse(string AvatarAscii) Parameters AvatarAscii string Properties AvatarAscii public string AvatarAscii { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Methods Deconstruct(out string) public void Deconstruct(out string AvatarAscii) Parameters AvatarAscii string Equals(AvatarUploadResponse?) public virtual bool Equals(AvatarUploadResponse? other) Parameters other AvatarUploadResponse 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 ==(AvatarUploadResponse?, AvatarUploadResponse?) public static bool operator ==(AvatarUploadResponse? left, AvatarUploadResponse? right) Parameters left AvatarUploadResponse right AvatarUploadResponse Returns bool operator !=(AvatarUploadResponse?, AvatarUploadResponse?) public static bool operator !=(AvatarUploadResponse? left, AvatarUploadResponse? right) Parameters left AvatarUploadResponse right AvatarUploadResponse Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.ChannelDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.ChannelDto.html",
    "title": "Class ChannelDto | EchoHub Documentation",
    "summary": "Class ChannelDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record ChannelDto : IEquatable<ChannelDto> Inheritance object ChannelDto Implements IEquatable<ChannelDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ChannelDto(ChannelDto) protected ChannelDto(ChannelDto original) Parameters original ChannelDto ChannelDto(Guid, string, string?, int, DateTimeOffset) public ChannelDto(Guid Id, string Name, string? Topic, int MessageCount, DateTimeOffset CreatedAt) Parameters Id Guid Name string Topic string MessageCount int CreatedAt DateTimeOffset Properties CreatedAt public DateTimeOffset CreatedAt { get; init; } Property Value DateTimeOffset EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Id public Guid Id { get; init; } Property Value Guid MessageCount public int MessageCount { get; init; } Property Value int Name public string Name { get; init; } Property Value string Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out Guid, out string, out string?, out int, out DateTimeOffset) public void Deconstruct(out Guid Id, out string Name, out string? Topic, out int MessageCount, out DateTimeOffset CreatedAt) Parameters Id Guid Name string Topic string MessageCount int CreatedAt DateTimeOffset Equals(ChannelDto?) public virtual bool Equals(ChannelDto? other) Parameters other ChannelDto 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 ==(ChannelDto?, ChannelDto?) public static bool operator ==(ChannelDto? left, ChannelDto? right) Parameters left ChannelDto right ChannelDto Returns bool operator !=(ChannelDto?, ChannelDto?) public static bool operator !=(ChannelDto? left, ChannelDto? right) Parameters left ChannelDto right ChannelDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.CreateChannelRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.CreateChannelRequest.html",
    "title": "Class CreateChannelRequest | EchoHub Documentation",
    "summary": "Class CreateChannelRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record CreateChannelRequest : IEquatable<CreateChannelRequest> Inheritance object CreateChannelRequest Implements IEquatable<CreateChannelRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors CreateChannelRequest(CreateChannelRequest) protected CreateChannelRequest(CreateChannelRequest original) Parameters original CreateChannelRequest CreateChannelRequest(string, string?) public CreateChannelRequest(string Name, string? Topic = null) Parameters Name string Topic string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Name public string Name { get; init; } Property Value string Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out string, out string?) public void Deconstruct(out string Name, out string? Topic) Parameters Name string Topic string Equals(CreateChannelRequest?) public virtual bool Equals(CreateChannelRequest? other) Parameters other CreateChannelRequest 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 ==(CreateChannelRequest?, CreateChannelRequest?) public static bool operator ==(CreateChannelRequest? left, CreateChannelRequest? right) Parameters left CreateChannelRequest right CreateChannelRequest Returns bool operator !=(CreateChannelRequest?, CreateChannelRequest?) public static bool operator !=(CreateChannelRequest? left, CreateChannelRequest? right) Parameters left CreateChannelRequest right CreateChannelRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.ErrorResponse.html": {
    "href": "api/core/EchoHub.Core.DTOs.ErrorResponse.html",
    "title": "Class ErrorResponse | EchoHub Documentation",
    "summary": "Class ErrorResponse Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record ErrorResponse : IEquatable<ErrorResponse> Inheritance object ErrorResponse Implements IEquatable<ErrorResponse> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ErrorResponse(ErrorResponse) protected ErrorResponse(ErrorResponse original) Parameters original ErrorResponse ErrorResponse(string, string?) public ErrorResponse(string Error, string? Detail = null) Parameters Error string Detail string Properties Detail public string? Detail { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Error public string Error { get; init; } Property Value string Methods Deconstruct(out string, out string?) public void Deconstruct(out string Error, out string? Detail) Parameters Error string Detail string Equals(ErrorResponse?) public virtual bool Equals(ErrorResponse? other) Parameters other ErrorResponse 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 ==(ErrorResponse?, ErrorResponse?) public static bool operator ==(ErrorResponse? left, ErrorResponse? right) Parameters left ErrorResponse right ErrorResponse Returns bool operator !=(ErrorResponse?, ErrorResponse?) public static bool operator !=(ErrorResponse? left, ErrorResponse? right) Parameters left ErrorResponse right ErrorResponse Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.LoginRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.LoginRequest.html",
    "title": "Class LoginRequest | EchoHub Documentation",
    "summary": "Class LoginRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record LoginRequest : IEquatable<LoginRequest> Inheritance object LoginRequest Implements IEquatable<LoginRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors LoginRequest(LoginRequest) protected LoginRequest(LoginRequest original) Parameters original LoginRequest LoginRequest(string, string) public LoginRequest(string Username, string Password) Parameters Username string Password string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Password public string Password { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out string) public void Deconstruct(out string Username, out string Password) Parameters Username string Password string Equals(LoginRequest?) public virtual bool Equals(LoginRequest? other) Parameters other LoginRequest 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 ==(LoginRequest?, LoginRequest?) public static bool operator ==(LoginRequest? left, LoginRequest? right) Parameters left LoginRequest right LoginRequest Returns bool operator !=(LoginRequest?, LoginRequest?) public static bool operator !=(LoginRequest? left, LoginRequest? right) Parameters left LoginRequest right LoginRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.LoginResponse.html": {
    "href": "api/core/EchoHub.Core.DTOs.LoginResponse.html",
    "title": "Class LoginResponse | EchoHub Documentation",
    "summary": "Class LoginResponse Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record LoginResponse : IEquatable<LoginResponse> Inheritance object LoginResponse Implements IEquatable<LoginResponse> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors LoginResponse(LoginResponse) protected LoginResponse(LoginResponse original) Parameters original LoginResponse LoginResponse(string, string, DateTimeOffset, string, string?, string?) public LoginResponse(string Token, string RefreshToken, DateTimeOffset ExpiresAt, string Username, string? DisplayName, string? NicknameColor) Parameters Token string RefreshToken string ExpiresAt DateTimeOffset Username string DisplayName string NicknameColor string Properties DisplayName public string? DisplayName { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type ExpiresAt public DateTimeOffset ExpiresAt { get; init; } Property Value DateTimeOffset NicknameColor public string? NicknameColor { get; init; } Property Value string RefreshToken public string RefreshToken { get; init; } Property Value string Token public string Token { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out string, out DateTimeOffset, out string, out string?, out string?) public void Deconstruct(out string Token, out string RefreshToken, out DateTimeOffset ExpiresAt, out string Username, out string? DisplayName, out string? NicknameColor) Parameters Token string RefreshToken string ExpiresAt DateTimeOffset Username string DisplayName string NicknameColor string Equals(LoginResponse?) public virtual bool Equals(LoginResponse? other) Parameters other LoginResponse 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 ==(LoginResponse?, LoginResponse?) public static bool operator ==(LoginResponse? left, LoginResponse? right) Parameters left LoginResponse right LoginResponse Returns bool operator !=(LoginResponse?, LoginResponse?) public static bool operator !=(LoginResponse? left, LoginResponse? right) Parameters left LoginResponse right LoginResponse Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.MessageDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.MessageDto.html",
    "title": "Class MessageDto | EchoHub Documentation",
    "summary": "Class MessageDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record MessageDto : IEquatable<MessageDto> Inheritance object MessageDto Implements IEquatable<MessageDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors MessageDto(MessageDto) protected MessageDto(MessageDto original) Parameters original MessageDto MessageDto(Guid, string, string, string?, string, MessageType, string?, string?, DateTimeOffset) public MessageDto(Guid Id, string Content, string SenderUsername, string? SenderNicknameColor, string ChannelName, MessageType Type, string? AttachmentUrl, string? AttachmentFileName, DateTimeOffset SentAt) Parameters Id Guid Content string SenderUsername string SenderNicknameColor string ChannelName string Type MessageType AttachmentUrl string AttachmentFileName string SentAt DateTimeOffset Properties AttachmentFileName public string? AttachmentFileName { get; init; } Property Value string AttachmentUrl public string? AttachmentUrl { get; init; } Property Value string ChannelName public string ChannelName { get; init; } Property Value string Content public string Content { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Id public Guid Id { get; init; } Property Value Guid SenderNicknameColor public string? SenderNicknameColor { get; init; } Property Value string SenderUsername public string SenderUsername { get; init; } Property Value string SentAt public DateTimeOffset SentAt { get; init; } Property Value DateTimeOffset Type public MessageType Type { get; init; } Property Value MessageType Methods Deconstruct(out Guid, out string, out string, out string?, out string, out MessageType, out string?, out string?, out DateTimeOffset) public void Deconstruct(out Guid Id, out string Content, out string SenderUsername, out string? SenderNicknameColor, out string ChannelName, out MessageType Type, out string? AttachmentUrl, out string? AttachmentFileName, out DateTimeOffset SentAt) Parameters Id Guid Content string SenderUsername string SenderNicknameColor string ChannelName string Type MessageType AttachmentUrl string AttachmentFileName string SentAt DateTimeOffset Equals(MessageDto?) public virtual bool Equals(MessageDto? other) Parameters other MessageDto 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 ==(MessageDto?, MessageDto?) public static bool operator ==(MessageDto? left, MessageDto? right) Parameters left MessageDto right MessageDto Returns bool operator !=(MessageDto?, MessageDto?) public static bool operator !=(MessageDto? left, MessageDto? right) Parameters left MessageDto right MessageDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.PaginatedResponse-1.html": {
    "href": "api/core/EchoHub.Core.DTOs.PaginatedResponse-1.html",
    "title": "Class PaginatedResponse<T> | EchoHub Documentation",
    "summary": "Class PaginatedResponse<T> Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record PaginatedResponse<T> : IEquatable<PaginatedResponse<T>> Type Parameters T Inheritance object PaginatedResponse<T> Implements IEquatable<PaginatedResponse<T>> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors PaginatedResponse(PaginatedResponse<T>) protected PaginatedResponse(PaginatedResponse<T> original) Parameters original PaginatedResponse<T> PaginatedResponse(List<T>, int, int, int) public PaginatedResponse(List<T> Items, int Total, int Offset, int Limit) Parameters Items List<T> Total int Offset int Limit int Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Items public List<T> Items { get; init; } Property Value List<T> Limit public int Limit { get; init; } Property Value int Offset public int Offset { get; init; } Property Value int Total public int Total { get; init; } Property Value int Methods Deconstruct(out List<T>, out int, out int, out int) public void Deconstruct(out List<T> Items, out int Total, out int Offset, out int Limit) Parameters Items List<T> Total int Offset int Limit int Equals(PaginatedResponse<T>?) public virtual bool Equals(PaginatedResponse<T>? other) Parameters other PaginatedResponse<T> 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 ==(PaginatedResponse<T>?, PaginatedResponse<T>?) public static bool operator ==(PaginatedResponse<T>? left, PaginatedResponse<T>? right) Parameters left PaginatedResponse<T> right PaginatedResponse<T> Returns bool operator !=(PaginatedResponse<T>?, PaginatedResponse<T>?) public static bool operator !=(PaginatedResponse<T>? left, PaginatedResponse<T>? right) Parameters left PaginatedResponse<T> right PaginatedResponse<T> Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.RefreshRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.RefreshRequest.html",
    "title": "Class RefreshRequest | EchoHub Documentation",
    "summary": "Class RefreshRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record RefreshRequest : IEquatable<RefreshRequest> Inheritance object RefreshRequest Implements IEquatable<RefreshRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors RefreshRequest(RefreshRequest) protected RefreshRequest(RefreshRequest original) Parameters original RefreshRequest RefreshRequest(string) public RefreshRequest(string RefreshToken) Parameters RefreshToken string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type RefreshToken public string RefreshToken { get; init; } Property Value string Methods Deconstruct(out string) public void Deconstruct(out string RefreshToken) Parameters RefreshToken string Equals(RefreshRequest?) public virtual bool Equals(RefreshRequest? other) Parameters other RefreshRequest 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 ==(RefreshRequest?, RefreshRequest?) public static bool operator ==(RefreshRequest? left, RefreshRequest? right) Parameters left RefreshRequest right RefreshRequest Returns bool operator !=(RefreshRequest?, RefreshRequest?) public static bool operator !=(RefreshRequest? left, RefreshRequest? right) Parameters left RefreshRequest right RefreshRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.RegisterRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.RegisterRequest.html",
    "title": "Class RegisterRequest | EchoHub Documentation",
    "summary": "Class RegisterRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record RegisterRequest : IEquatable<RegisterRequest> Inheritance object RegisterRequest Implements IEquatable<RegisterRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors RegisterRequest(RegisterRequest) protected RegisterRequest(RegisterRequest original) Parameters original RegisterRequest RegisterRequest(string, string, string?) public RegisterRequest(string Username, string Password, string? DisplayName = null) Parameters Username string Password string DisplayName string Properties DisplayName public string? DisplayName { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Password public string Password { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out string, out string?) public void Deconstruct(out string Username, out string Password, out string? DisplayName) Parameters Username string Password string DisplayName string Equals(RegisterRequest?) public virtual bool Equals(RegisterRequest? other) Parameters other RegisterRequest 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 ==(RegisterRequest?, RegisterRequest?) public static bool operator ==(RegisterRequest? left, RegisterRequest? right) Parameters left RegisterRequest right RegisterRequest Returns bool operator !=(RegisterRequest?, RegisterRequest?) public static bool operator !=(RegisterRequest? left, RegisterRequest? right) Parameters left RegisterRequest right RegisterRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.SendMessageRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.SendMessageRequest.html",
    "title": "Class SendMessageRequest | EchoHub Documentation",
    "summary": "Class SendMessageRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record SendMessageRequest : IEquatable<SendMessageRequest> Inheritance object SendMessageRequest Implements IEquatable<SendMessageRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors SendMessageRequest(SendMessageRequest) protected SendMessageRequest(SendMessageRequest original) Parameters original SendMessageRequest SendMessageRequest(string, string) public SendMessageRequest(string ChannelName, string Content) Parameters ChannelName string Content string Properties ChannelName public string ChannelName { get; init; } Property Value string Content public string Content { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Methods Deconstruct(out string, out string) public void Deconstruct(out string ChannelName, out string Content) Parameters ChannelName string Content string Equals(SendMessageRequest?) public virtual bool Equals(SendMessageRequest? other) Parameters other SendMessageRequest 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 ==(SendMessageRequest?, SendMessageRequest?) public static bool operator ==(SendMessageRequest? left, SendMessageRequest? right) Parameters left SendMessageRequest right SendMessageRequest Returns bool operator !=(SendMessageRequest?, SendMessageRequest?) public static bool operator !=(SendMessageRequest? left, SendMessageRequest? right) Parameters left SendMessageRequest right SendMessageRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.SendUrlRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.SendUrlRequest.html",
    "title": "Class SendUrlRequest | EchoHub Documentation",
    "summary": "Class SendUrlRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record SendUrlRequest : IEquatable<SendUrlRequest> Inheritance object SendUrlRequest Implements IEquatable<SendUrlRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors SendUrlRequest(SendUrlRequest) protected SendUrlRequest(SendUrlRequest original) Parameters original SendUrlRequest SendUrlRequest(string) public SendUrlRequest(string Url) Parameters Url string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Url public string Url { get; init; } Property Value string Methods Deconstruct(out string) public void Deconstruct(out string Url) Parameters Url string Equals(SendUrlRequest?) public virtual bool Equals(SendUrlRequest? other) Parameters other SendUrlRequest 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 ==(SendUrlRequest?, SendUrlRequest?) public static bool operator ==(SendUrlRequest? left, SendUrlRequest? right) Parameters left SendUrlRequest right SendUrlRequest Returns bool operator !=(SendUrlRequest?, SendUrlRequest?) public static bool operator !=(SendUrlRequest? left, SendUrlRequest? right) Parameters left SendUrlRequest right SendUrlRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.ServerStatusDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.ServerStatusDto.html",
    "title": "Class ServerStatusDto | EchoHub Documentation",
    "summary": "Class ServerStatusDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record ServerStatusDto : IEquatable<ServerStatusDto> Inheritance object ServerStatusDto Implements IEquatable<ServerStatusDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors ServerStatusDto(ServerStatusDto) protected ServerStatusDto(ServerStatusDto original) Parameters original ServerStatusDto ServerStatusDto(string, string?, int, int) public ServerStatusDto(string Name, string? Description, int OnlineUsers, int TotalChannels) Parameters Name string Description string OnlineUsers int TotalChannels int Properties Description public string? Description { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Name public string Name { get; init; } Property Value string OnlineUsers public int OnlineUsers { get; init; } Property Value int TotalChannels public int TotalChannels { get; init; } Property Value int Methods Deconstruct(out string, out string?, out int, out int) public void Deconstruct(out string Name, out string? Description, out int OnlineUsers, out int TotalChannels) Parameters Name string Description string OnlineUsers int TotalChannels int Equals(ServerStatusDto?) public virtual bool Equals(ServerStatusDto? other) Parameters other ServerStatusDto 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 ==(ServerStatusDto?, ServerStatusDto?) public static bool operator ==(ServerStatusDto? left, ServerStatusDto? right) Parameters left ServerStatusDto right ServerStatusDto Returns bool operator !=(ServerStatusDto?, ServerStatusDto?) public static bool operator !=(ServerStatusDto? left, ServerStatusDto? right) Parameters left ServerStatusDto right ServerStatusDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UpdateProfileRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.UpdateProfileRequest.html",
    "title": "Class UpdateProfileRequest | EchoHub Documentation",
    "summary": "Class UpdateProfileRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UpdateProfileRequest : IEquatable<UpdateProfileRequest> Inheritance object UpdateProfileRequest Implements IEquatable<UpdateProfileRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UpdateProfileRequest(UpdateProfileRequest) protected UpdateProfileRequest(UpdateProfileRequest original) Parameters original UpdateProfileRequest UpdateProfileRequest(string?, string?, string?) public UpdateProfileRequest(string? DisplayName = null, string? Bio = null, string? NicknameColor = null) Parameters DisplayName string Bio string NicknameColor string Properties 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 Methods Deconstruct(out string?, out string?, out string?) public void Deconstruct(out string? DisplayName, out string? Bio, out string? NicknameColor) Parameters DisplayName string Bio string NicknameColor string Equals(UpdateProfileRequest?) public virtual bool Equals(UpdateProfileRequest? other) Parameters other UpdateProfileRequest 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 ==(UpdateProfileRequest?, UpdateProfileRequest?) public static bool operator ==(UpdateProfileRequest? left, UpdateProfileRequest? right) Parameters left UpdateProfileRequest right UpdateProfileRequest Returns bool operator !=(UpdateProfileRequest?, UpdateProfileRequest?) public static bool operator !=(UpdateProfileRequest? left, UpdateProfileRequest? right) Parameters left UpdateProfileRequest right UpdateProfileRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UpdateStatusRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.UpdateStatusRequest.html",
    "title": "Class UpdateStatusRequest | EchoHub Documentation",
    "summary": "Class UpdateStatusRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UpdateStatusRequest : IEquatable<UpdateStatusRequest> Inheritance object UpdateStatusRequest Implements IEquatable<UpdateStatusRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UpdateStatusRequest(UpdateStatusRequest) protected UpdateStatusRequest(UpdateStatusRequest original) Parameters original UpdateStatusRequest UpdateStatusRequest(UserStatus, string?) public UpdateStatusRequest(UserStatus Status, string? StatusMessage = null) 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(UpdateStatusRequest?) public virtual bool Equals(UpdateStatusRequest? other) Parameters other UpdateStatusRequest 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 ==(UpdateStatusRequest?, UpdateStatusRequest?) public static bool operator ==(UpdateStatusRequest? left, UpdateStatusRequest? right) Parameters left UpdateStatusRequest right UpdateStatusRequest Returns bool operator !=(UpdateStatusRequest?, UpdateStatusRequest?) public static bool operator !=(UpdateStatusRequest? left, UpdateStatusRequest? right) Parameters left UpdateStatusRequest right UpdateStatusRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UpdateTopicRequest.html": {
    "href": "api/core/EchoHub.Core.DTOs.UpdateTopicRequest.html",
    "title": "Class UpdateTopicRequest | EchoHub Documentation",
    "summary": "Class UpdateTopicRequest Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UpdateTopicRequest : IEquatable<UpdateTopicRequest> Inheritance object UpdateTopicRequest Implements IEquatable<UpdateTopicRequest> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UpdateTopicRequest(UpdateTopicRequest) protected UpdateTopicRequest(UpdateTopicRequest original) Parameters original UpdateTopicRequest UpdateTopicRequest(string?) public UpdateTopicRequest(string? Topic) Parameters Topic string Properties EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Topic public string? Topic { get; init; } Property Value string Methods Deconstruct(out string?) public void Deconstruct(out string? Topic) Parameters Topic string Equals(UpdateTopicRequest?) public virtual bool Equals(UpdateTopicRequest? other) Parameters other UpdateTopicRequest 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 ==(UpdateTopicRequest?, UpdateTopicRequest?) public static bool operator ==(UpdateTopicRequest? left, UpdateTopicRequest? right) Parameters left UpdateTopicRequest right UpdateTopicRequest Returns bool operator !=(UpdateTopicRequest?, UpdateTopicRequest?) public static bool operator !=(UpdateTopicRequest? left, UpdateTopicRequest? right) Parameters left UpdateTopicRequest right UpdateTopicRequest Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UserDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.UserDto.html",
    "title": "Class UserDto | EchoHub Documentation",
    "summary": "Class UserDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UserDto : IEquatable<UserDto> Inheritance object UserDto Implements IEquatable<UserDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UserDto(UserDto) protected UserDto(UserDto original) Parameters original UserDto UserDto(Guid, string, string?, string?, UserStatus, DateTimeOffset) public UserDto(Guid Id, string Username, string? DisplayName, string? NicknameColor, UserStatus Status, DateTimeOffset LastSeenAt) Parameters Id Guid Username string DisplayName string NicknameColor string Status UserStatus LastSeenAt DateTimeOffset Properties DisplayName public string? DisplayName { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Id public Guid Id { get; init; } Property Value Guid LastSeenAt public DateTimeOffset LastSeenAt { get; init; } Property Value DateTimeOffset NicknameColor public string? NicknameColor { get; init; } Property Value string Status public UserStatus Status { get; init; } Property Value UserStatus Username public string Username { get; init; } Property Value string Methods Deconstruct(out Guid, out string, out string?, out string?, out UserStatus, out DateTimeOffset) public void Deconstruct(out Guid Id, out string Username, out string? DisplayName, out string? NicknameColor, out UserStatus Status, out DateTimeOffset LastSeenAt) Parameters Id Guid Username string DisplayName string NicknameColor string Status UserStatus LastSeenAt DateTimeOffset Equals(UserDto?) public virtual bool Equals(UserDto? other) Parameters other UserDto 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 ==(UserDto?, UserDto?) public static bool operator ==(UserDto? left, UserDto? right) Parameters left UserDto right UserDto Returns bool operator !=(UserDto?, UserDto?) public static bool operator !=(UserDto? left, UserDto? right) Parameters left UserDto right UserDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UserPresenceDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.UserPresenceDto.html",
    "title": "Class UserPresenceDto | EchoHub Documentation",
    "summary": "Class UserPresenceDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UserPresenceDto : IEquatable<UserPresenceDto> Inheritance object UserPresenceDto Implements IEquatable<UserPresenceDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UserPresenceDto(UserPresenceDto) protected UserPresenceDto(UserPresenceDto original) Parameters original UserPresenceDto UserPresenceDto(string, string?, string?, UserStatus, string?) public UserPresenceDto(string Username, string? DisplayName, string? NicknameColor, UserStatus Status, string? StatusMessage) Parameters Username string DisplayName string NicknameColor string Status UserStatus StatusMessage string Properties 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 Status public UserStatus Status { get; init; } Property Value UserStatus StatusMessage public string? StatusMessage { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out string, out string?, out string?, out UserStatus, out string?) public void Deconstruct(out string Username, out string? DisplayName, out string? NicknameColor, out UserStatus Status, out string? StatusMessage) Parameters Username string DisplayName string NicknameColor string Status UserStatus StatusMessage string Equals(UserPresenceDto?) public virtual bool Equals(UserPresenceDto? other) Parameters other UserPresenceDto 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 ==(UserPresenceDto?, UserPresenceDto?) public static bool operator ==(UserPresenceDto? left, UserPresenceDto? right) Parameters left UserPresenceDto right UserPresenceDto Returns bool operator !=(UserPresenceDto?, UserPresenceDto?) public static bool operator !=(UserPresenceDto? left, UserPresenceDto? right) Parameters left UserPresenceDto right UserPresenceDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.UserProfileDto.html": {
    "href": "api/core/EchoHub.Core.DTOs.UserProfileDto.html",
    "title": "Class UserProfileDto | EchoHub Documentation",
    "summary": "Class UserProfileDto Namespace EchoHub.Core.DTOs Assembly EchoHub.Core.dll public record UserProfileDto : IEquatable<UserProfileDto> Inheritance object UserProfileDto Implements IEquatable<UserProfileDto> Inherited Members object.GetType() object.MemberwiseClone() object.Equals(object, object) object.ReferenceEquals(object, object) Constructors UserProfileDto(UserProfileDto) protected UserProfileDto(UserProfileDto original) Parameters original UserProfileDto UserProfileDto(Guid, string, string?, string?, string?, string?, UserStatus, string?, DateTimeOffset, DateTimeOffset) public UserProfileDto(Guid Id, string Username, string? DisplayName, string? Bio, string? NicknameColor, string? AvatarAscii, UserStatus Status, string? StatusMessage, DateTimeOffset CreatedAt, DateTimeOffset LastSeenAt) Parameters Id Guid Username string DisplayName string Bio string NicknameColor string AvatarAscii string Status UserStatus StatusMessage string CreatedAt DateTimeOffset LastSeenAt DateTimeOffset Properties AvatarAscii public string? AvatarAscii { get; init; } Property Value string Bio public string? Bio { get; init; } Property Value string CreatedAt public DateTimeOffset CreatedAt { get; init; } Property Value DateTimeOffset DisplayName public string? DisplayName { get; init; } Property Value string EqualityContract protected virtual Type EqualityContract { get; } Property Value Type Id public Guid Id { get; init; } Property Value Guid LastSeenAt public DateTimeOffset LastSeenAt { get; init; } Property Value DateTimeOffset NicknameColor public string? NicknameColor { get; init; } Property Value string Status public UserStatus Status { get; init; } Property Value UserStatus StatusMessage public string? StatusMessage { get; init; } Property Value string Username public string Username { get; init; } Property Value string Methods Deconstruct(out Guid, out string, out string?, out string?, out string?, out string?, out UserStatus, out string?, out DateTimeOffset, out DateTimeOffset) public void Deconstruct(out Guid Id, out string Username, out string? DisplayName, out string? Bio, out string? NicknameColor, out string? AvatarAscii, out UserStatus Status, out string? StatusMessage, out DateTimeOffset CreatedAt, out DateTimeOffset LastSeenAt) Parameters Id Guid Username string DisplayName string Bio string NicknameColor string AvatarAscii string Status UserStatus StatusMessage string CreatedAt DateTimeOffset LastSeenAt DateTimeOffset Equals(UserProfileDto?) public virtual bool Equals(UserProfileDto? other) Parameters other UserProfileDto 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 ==(UserProfileDto?, UserProfileDto?) public static bool operator ==(UserProfileDto? left, UserProfileDto? right) Parameters left UserProfileDto right UserProfileDto Returns bool operator !=(UserProfileDto?, UserProfileDto?) public static bool operator !=(UserProfileDto? left, UserProfileDto? right) Parameters left UserProfileDto right UserProfileDto Returns bool"
  },
  "api/core/EchoHub.Core.DTOs.html": {
    "href": "api/core/EchoHub.Core.DTOs.html",
    "title": "Namespace EchoHub.Core.DTOs | EchoHub Documentation",
    "summary": "Namespace EchoHub.Core.DTOs Classes AvatarUploadResponse ChannelDto CreateChannelRequest ErrorResponse LoginRequest LoginResponse MessageDto PaginatedResponse<T> RefreshRequest RegisterRequest SendMessageRequest SendUrlRequest ServerStatusDto UpdateProfileRequest UpdateStatusRequest UpdateTopicRequest UserDto UserPresenceDto UserProfileDto"
  },
  "api/core/EchoHub.Core.Models.Channel.html": {
    "href": "api/core/EchoHub.Core.Models.Channel.html",
    "title": "Class Channel | EchoHub Documentation",
    "summary": "Class Channel Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public class Channel Inheritance object Channel Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors Channel() public Channel() Properties CreatedAt public DateTimeOffset CreatedAt { get; set; } Property Value DateTimeOffset CreatedByUserId public Guid CreatedByUserId { get; set; } Property Value Guid Id public Guid Id { get; set; } Property Value Guid Messages public List<Message> Messages { get; set; } Property Value List<Message> Name public required string Name { get; set; } Property Value string Topic public string? Topic { get; set; } Property Value string"
  },
  "api/core/EchoHub.Core.Models.Message.html": {
    "href": "api/core/EchoHub.Core.Models.Message.html",
    "title": "Class Message | EchoHub Documentation",
    "summary": "Class Message Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public class Message Inheritance object Message Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors Message() public Message() Properties AttachmentFileName public string? AttachmentFileName { get; set; } Property Value string AttachmentUrl public string? AttachmentUrl { get; set; } Property Value string Channel public Channel? Channel { get; set; } Property Value Channel ChannelId public Guid ChannelId { get; set; } Property Value Guid Content public required string Content { get; set; } Property Value string Id public Guid Id { get; set; } Property Value Guid SenderUserId public Guid SenderUserId { get; set; } Property Value Guid SenderUsername public required string SenderUsername { get; set; } Property Value string SentAt public DateTimeOffset SentAt { get; set; } Property Value DateTimeOffset Type public MessageType Type { get; set; } Property Value MessageType"
  },
  "api/core/EchoHub.Core.Models.MessageType.html": {
    "href": "api/core/EchoHub.Core.Models.MessageType.html",
    "title": "Enum MessageType | EchoHub Documentation",
    "summary": "Enum MessageType Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public enum MessageType Fields File = 2 Image = 1 Text = 0"
  },
  "api/core/EchoHub.Core.Models.RefreshToken.html": {
    "href": "api/core/EchoHub.Core.Models.RefreshToken.html",
    "title": "Class RefreshToken | EchoHub Documentation",
    "summary": "Class RefreshToken Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public class RefreshToken Inheritance object RefreshToken Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors RefreshToken() public RefreshToken() Properties CreatedAt public DateTimeOffset CreatedAt { get; set; } Property Value DateTimeOffset ExpiresAt public DateTimeOffset ExpiresAt { get; set; } Property Value DateTimeOffset Id public Guid Id { get; set; } Property Value Guid IsActive public bool IsActive { get; } Property Value bool IsExpired public bool IsExpired { get; } Property Value bool IsRevoked public bool IsRevoked { get; } Property Value bool RevokedAt public DateTimeOffset? RevokedAt { get; set; } Property Value DateTimeOffset? TokenHash public required string TokenHash { get; set; } Property Value string User public User? User { get; set; } Property Value User UserId public Guid UserId { get; set; } Property Value Guid"
  },
  "api/core/EchoHub.Core.Models.User.html": {
    "href": "api/core/EchoHub.Core.Models.User.html",
    "title": "Class User | EchoHub Documentation",
    "summary": "Class User Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public class User Inheritance object User Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors User() public User() Properties AvatarAscii public string? AvatarAscii { get; set; } Property Value string Bio public string? Bio { get; set; } Property Value string CreatedAt public DateTimeOffset CreatedAt { get; set; } Property Value DateTimeOffset DisplayName public string? DisplayName { get; set; } Property Value string Id public Guid Id { get; set; } Property Value Guid LastSeenAt public DateTimeOffset LastSeenAt { get; set; } Property Value DateTimeOffset NicknameColor public string? NicknameColor { get; set; } Property Value string PasswordHash public required string PasswordHash { get; set; } Property Value string Status public UserStatus Status { get; set; } Property Value UserStatus StatusMessage public string? StatusMessage { get; set; } Property Value string Username public required string Username { get; set; } Property Value string"
  },
  "api/core/EchoHub.Core.Models.UserStatus.html": {
    "href": "api/core/EchoHub.Core.Models.UserStatus.html",
    "title": "Enum UserStatus | EchoHub Documentation",
    "summary": "Enum UserStatus Namespace EchoHub.Core.Models Assembly EchoHub.Core.dll public enum UserStatus Fields Away = 1 DoNotDisturb = 2 Invisible = 3 Online = 0"
  },
  "api/core/EchoHub.Core.Models.html": {
    "href": "api/core/EchoHub.Core.Models.html",
    "title": "Namespace EchoHub.Core.Models | EchoHub Documentation",
    "summary": "Namespace EchoHub.Core.Models Classes Channel Message RefreshToken User Enums MessageType UserStatus"
  },
  "api/index.html": {
    "href": "api/index.html",
    "title": "API Reference | EchoHub Documentation",
    "summary": "API Reference Browse the generated API documentation for each EchoHub project. Projects Client Terminal.Gui v2 TUI application -- UI components, services, themes, and configuration. Core Shared library -- DTOs, models, constants, and contracts (IChatService, IChatBroadcaster, IEchoHubClient). Server ASP.NET Core server -- controllers, hubs, ChatService, SignalRBroadcaster, authentication, and data access. Server.Irc IRC protocol gateway -- TCP listener, command handler, IrcBroadcaster, and message formatter."
  },
  "api/server-articles/index.html": {
    "href": "api/server-articles/index.html",
    "title": "Server Articles | EchoHub Documentation",
    "summary": "Server Articles Articles related to the EchoHub server built with ASP.NET Core. Topics Authentication and JWT tokens SignalR hub and real-time messaging IRC gateway and protocol bridging ChatService and broadcaster pattern File upload and validation Rate limiting configuration Database schema and migrations"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html",
    "title": "Class IrcBroadcaster | EchoHub Documentation",
    "summary": "Class IrcBroadcaster Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public class IrcBroadcaster : IChatBroadcaster Inheritance object IrcBroadcaster Implements IChatBroadcaster Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcBroadcaster(IrcGatewayService) public IrcBroadcaster(IrcGatewayService gateway) Parameters gateway IrcGatewayService Methods SendChannelUpdatedAsync(ChannelDto, string?) public Task SendChannelUpdatedAsync(ChannelDto channel, string? channelName = null) Parameters channel ChannelDto channelName string Returns Task SendErrorAsync(string, string) public Task SendErrorAsync(string connectionId, string message) Parameters connectionId string message string Returns Task SendMessageToChannelAsync(string, MessageDto) public Task SendMessageToChannelAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task SendUserJoinedAsync(string, string, string?) public Task SendUserJoinedAsync(string channelName, string username, string? excludeConnectionId = null) Parameters channelName string username string excludeConnectionId string Returns Task SendUserLeftAsync(string, string) public Task SendUserLeftAsync(string channelName, string username) Parameters channelName string username string Returns Task SendUserStatusChangedAsync(List<string>, UserPresenceDto) public Task SendUserStatusChangedAsync(List<string> channelNames, UserPresenceDto presence) Parameters channelNames List<string> presence UserPresenceDto Returns Task"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcClientConnection.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcClientConnection.html",
    "title": "Class IrcClientConnection | EchoHub Documentation",
    "summary": "Class IrcClientConnection Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll Manages a single IRC client TCP connection. public sealed class IrcClientConnection : IAsyncDisposable Inheritance object IrcClientConnection Implements IAsyncDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcClientConnection(TcpClient, Stream) public IrcClientConnection(TcpClient tcpClient, Stream stream) Parameters tcpClient TcpClient stream Stream Properties AwayMessage public string? AwayMessage { get; set; } Property Value string CapNegotiating public bool CapNegotiating { get; set; } Property Value bool ConnectionId public string ConnectionId { get; } Property Value string Hostmask public string Hostmask { get; } Property Value string IsAuthenticated public bool IsAuthenticated { get; set; } Property Value bool IsRegistered public bool IsRegistered { get; set; } Property Value bool IsSasl public bool IsSasl { get; set; } Property Value bool JoinedChannels public HashSet<string> JoinedChannels { get; } Property Value HashSet<string> Nickname public string? Nickname { get; set; } Property Value string Password public string? Password { get; set; } Property Value string RealName public string? RealName { get; set; } Property Value string UserId public Guid? UserId { get; set; } Property Value Guid? Username public string? Username { get; set; } Property Value string Methods DisposeAsync() public ValueTask DisposeAsync() Returns ValueTask ReadLineAsync(CancellationToken) public Task<string?> ReadLineAsync(CancellationToken ct) Parameters ct CancellationToken Returns Task<string> SendAsync(string) public Task SendAsync(string line) Parameters line string Returns Task SendNumericAsync(string, string, string) public Task SendNumericAsync(string serverName, string numeric, string text) Parameters serverName string numeric string text string Returns Task SendNumericAsync(string, string, string, string) public Task SendNumericAsync(string serverName, string numeric, string target, string text) Parameters serverName string numeric string target string text string Returns Task"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcCommandHandler.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcCommandHandler.html",
    "title": "Class IrcCommandHandler | EchoHub Documentation",
    "summary": "Class IrcCommandHandler Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public sealed class IrcCommandHandler Inheritance object IrcCommandHandler Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcCommandHandler(IrcClientConnection, IrcOptions, IChatService, ILogger) public IrcCommandHandler(IrcClientConnection conn, IrcOptions options, IChatService chatService, ILogger logger) Parameters conn IrcClientConnection options IrcOptions chatService IChatService logger ILogger Methods RunAsync(CancellationToken) public Task RunAsync(CancellationToken ct) Parameters ct CancellationToken Returns Task"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcGatewayService.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcGatewayService.html",
    "title": "Class IrcGatewayService | EchoHub Documentation",
    "summary": "Class IrcGatewayService Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public sealed class IrcGatewayService : BackgroundService, IDisposable Inheritance object BackgroundService IrcGatewayService Implements IDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcGatewayService(IOptions<IrcOptions>, IChatService, ILogger<IrcGatewayService>) public IrcGatewayService(IOptions<IrcOptions> options, IChatService chatService, ILogger<IrcGatewayService> logger) Parameters options IOptions<IrcOptions> chatService IChatService logger ILogger<IrcGatewayService> Properties Connections public IReadOnlyDictionary<string, IrcClientConnection> Connections { get; } Property Value IReadOnlyDictionary<string, IrcClientConnection> Options public IrcOptions Options { get; } Property Value IrcOptions Methods ExecuteAsync(CancellationToken) protected override Task ExecuteAsync(CancellationToken stoppingToken) Parameters stoppingToken CancellationToken Returns Task GetConnectionsInChannel(string) public IEnumerable<IrcClientConnection> GetConnectionsInChannel(string channelName) Parameters channelName string Returns IEnumerable<IrcClientConnection> StopAsync(CancellationToken) public override Task StopAsync(CancellationToken cancellationToken) Parameters cancellationToken CancellationToken Returns Task"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcMessage.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcMessage.html",
    "title": "Class IrcMessage | EchoHub Documentation",
    "summary": "Class IrcMessage Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll Parsed representation of an IRC protocol line. Format: [:prefix] COMMAND [params...] [:trailing] public sealed class IrcMessage Inheritance object IrcMessage Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcMessage() public IrcMessage() Properties Command public string Command { get; init; } Property Value string Parameters public List<string> Parameters { get; init; } Property Value List<string> Prefix public string? Prefix { get; init; } Property Value string Trailing public string? Trailing { get; } Property Value string Methods Parse(string) Parse a raw IRC line: [:prefix SPACE] command [SPACE params] CRLF public static IrcMessage Parse(string line) Parameters line string Returns IrcMessage"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcMessageFormatter.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcMessageFormatter.html",
    "title": "Class IrcMessageFormatter | EchoHub Documentation",
    "summary": "Class IrcMessageFormatter Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public static class IrcMessageFormatter Inheritance object IrcMessageFormatter Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods FormatMessage(MessageDto) Format a MessageDto as one or more IRC PRIVMSG lines. public static List<string> FormatMessage(MessageDto message) Parameters message MessageDto Returns List<string> SplitMessage(string, int) Split a message into chunks of approximately maxBytes (UTF-8), at word boundaries. public static List<string> SplitMessage(string content, int maxBytes) Parameters content string maxBytes int Returns List<string>"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcNumericReply.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcNumericReply.html",
    "title": "Class IrcNumericReply | EchoHub Documentation",
    "summary": "Class IrcNumericReply Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public static class IrcNumericReply Inheritance object IrcNumericReply Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Fields ERR_ALREADYREGISTERED public const string ERR_ALREADYREGISTERED = \"462\" Field Value string ERR_CANNOTSENDTOCHAN public const string ERR_CANNOTSENDTOCHAN = \"404\" Field Value string ERR_CHANOPRIVSNEEDED public const string ERR_CHANOPRIVSNEEDED = \"482\" Field Value string ERR_ERRONEUSNICKNAME public const string ERR_ERRONEUSNICKNAME = \"432\" Field Value string ERR_NEEDMOREPARAMS public const string ERR_NEEDMOREPARAMS = \"461\" Field Value string ERR_NICKNAMEINUSE public const string ERR_NICKNAMEINUSE = \"433\" Field Value string ERR_NOMOTD public const string ERR_NOMOTD = \"422\" Field Value string ERR_NONICKNAMEGIVEN public const string ERR_NONICKNAMEGIVEN = \"431\" Field Value string ERR_NOSUCHCHANNEL public const string ERR_NOSUCHCHANNEL = \"403\" Field Value string ERR_NOSUCHNICK public const string ERR_NOSUCHNICK = \"401\" Field Value string ERR_NOTONCHANNEL public const string ERR_NOTONCHANNEL = \"442\" Field Value string ERR_NOTREGISTERED public const string ERR_NOTREGISTERED = \"451\" Field Value string ERR_PASSWDMISMATCH public const string ERR_PASSWDMISMATCH = \"464\" Field Value string ERR_SASLFAIL public const string ERR_SASLFAIL = \"904\" Field Value string ERR_UNKNOWNCOMMAND public const string ERR_UNKNOWNCOMMAND = \"421\" Field Value string RPL_AWAY public const string RPL_AWAY = \"301\" Field Value string RPL_CHANNELMODEIS public const string RPL_CHANNELMODEIS = \"324\" Field Value string RPL_CREATED public const string RPL_CREATED = \"003\" Field Value string RPL_ENDOFMOTD public const string RPL_ENDOFMOTD = \"376\" Field Value string RPL_ENDOFNAMES public const string RPL_ENDOFNAMES = \"366\" Field Value string RPL_ENDOFWHO public const string RPL_ENDOFWHO = \"315\" Field Value string RPL_ENDOFWHOIS public const string RPL_ENDOFWHOIS = \"318\" Field Value string RPL_ISUPPORT public const string RPL_ISUPPORT = \"005\" Field Value string RPL_LIST public const string RPL_LIST = \"322\" Field Value string RPL_LISTEND public const string RPL_LISTEND = \"323\" Field Value string RPL_LOGGEDIN public const string RPL_LOGGEDIN = \"900\" Field Value string RPL_MOTD public const string RPL_MOTD = \"372\" Field Value string RPL_MOTDSTART public const string RPL_MOTDSTART = \"375\" Field Value string RPL_MYINFO public const string RPL_MYINFO = \"004\" Field Value string RPL_NAMREPLY public const string RPL_NAMREPLY = \"353\" Field Value string RPL_NOTOPIC public const string RPL_NOTOPIC = \"331\" Field Value string RPL_NOWAWAY public const string RPL_NOWAWAY = \"306\" Field Value string RPL_SASLSUCCESS public const string RPL_SASLSUCCESS = \"903\" Field Value string RPL_TOPIC public const string RPL_TOPIC = \"332\" Field Value string RPL_UMODEIS public const string RPL_UMODEIS = \"221\" Field Value string RPL_UNAWAY public const string RPL_UNAWAY = \"305\" Field Value string RPL_WELCOME public const string RPL_WELCOME = \"001\" Field Value string RPL_WHOISCHANNELS public const string RPL_WHOISCHANNELS = \"319\" Field Value string RPL_WHOISIDLE public const string RPL_WHOISIDLE = \"317\" Field Value string RPL_WHOISSERVER public const string RPL_WHOISSERVER = \"312\" Field Value string RPL_WHOISUSER public const string RPL_WHOISUSER = \"311\" Field Value string RPL_WHOREPLY public const string RPL_WHOREPLY = \"352\" Field Value string RPL_YOURHOST public const string RPL_YOURHOST = \"002\" Field Value string"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcOptions.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcOptions.html",
    "title": "Class IrcOptions | EchoHub Documentation",
    "summary": "Class IrcOptions Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public sealed class IrcOptions Inheritance object IrcOptions Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors IrcOptions() public IrcOptions() Fields SectionName public const string SectionName = \"Irc\" Field Value string Properties Enabled public bool Enabled { get; set; } Property Value bool Motd public string? Motd { get; set; } Property Value string Port public int Port { get; set; } Property Value int ServerName public string ServerName { get; set; } Property Value string TlsCertPassword public string? TlsCertPassword { get; set; } Property Value string TlsCertPath public string? TlsCertPath { get; set; } Property Value string TlsEnabled public bool TlsEnabled { get; set; } Property Value bool TlsPort public int TlsPort { get; set; } Property Value int"
  },
  "api/server-irc/EchoHub.Server.Irc.IrcServiceExtensions.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.IrcServiceExtensions.html",
    "title": "Class IrcServiceExtensions | EchoHub Documentation",
    "summary": "Class IrcServiceExtensions Namespace EchoHub.Server.Irc Assembly EchoHub.Server.Irc.dll public static class IrcServiceExtensions Inheritance object IrcServiceExtensions Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods AddIrcGateway(WebApplicationBuilder) public static WebApplicationBuilder AddIrcGateway(this WebApplicationBuilder builder) Parameters builder WebApplicationBuilder Returns WebApplicationBuilder"
  },
  "api/server-irc/EchoHub.Server.Irc.html": {
    "href": "api/server-irc/EchoHub.Server.Irc.html",
    "title": "Namespace EchoHub.Server.Irc | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Irc Classes IrcBroadcaster IrcClientConnection Manages a single IRC client TCP connection. IrcCommandHandler IrcGatewayService IrcMessage Parsed representation of an IRC protocol line. Format: [:prefix] COMMAND [params...] [:trailing] IrcMessageFormatter IrcNumericReply IrcOptions IrcServiceExtensions"
  },
  "api/server/EchoHub.Server.Auth.JwtTokenService.html": {
    "href": "api/server/EchoHub.Server.Auth.JwtTokenService.html",
    "title": "Class JwtTokenService | EchoHub Documentation",
    "summary": "Class JwtTokenService Namespace EchoHub.Server.Auth Assembly EchoHub.Server.dll public class JwtTokenService Inheritance object JwtTokenService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors JwtTokenService(IConfiguration) public JwtTokenService(IConfiguration configuration) Parameters configuration IConfiguration Fields RefreshTokenLifetime public static readonly TimeSpan RefreshTokenLifetime Field Value TimeSpan Methods GenerateAccessToken(User) public (string Token, DateTimeOffset ExpiresAt) GenerateAccessToken(User user) Parameters user User Returns (string Token, DateTimeOffset ExpiresAt) GenerateRefreshToken() public static string GenerateRefreshToken() Returns string HashToken(string) public static string HashToken(string token) Parameters token string Returns string"
  },
  "api/server/EchoHub.Server.Auth.html": {
    "href": "api/server/EchoHub.Server.Auth.html",
    "title": "Namespace EchoHub.Server.Auth | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Auth Classes JwtTokenService"
  },
  "api/server/EchoHub.Server.Controllers.AuthController.html": {
    "href": "api/server/EchoHub.Server.Controllers.AuthController.html",
    "title": "Class AuthController | EchoHub Documentation",
    "summary": "Class AuthController Namespace EchoHub.Server.Controllers Assembly EchoHub.Server.dll [ApiController] [Route(\"api/auth\")] [EnableRateLimiting(\"auth\")] public class AuthController : ControllerBase Inheritance object ControllerBase AuthController Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors AuthController(EchoHubDbContext, JwtTokenService) public AuthController(EchoHubDbContext db, JwtTokenService jwt) Parameters db EchoHubDbContext jwt JwtTokenService Methods Login(LoginRequest) [HttpPost(\"login\")] public Task<IActionResult> Login(LoginRequest request) Parameters request LoginRequest Returns Task<IActionResult> Logout(RefreshRequest) [HttpPost(\"logout\")] public Task<IActionResult> Logout(RefreshRequest request) Parameters request RefreshRequest Returns Task<IActionResult> Refresh(RefreshRequest) [HttpPost(\"refresh\")] public Task<IActionResult> Refresh(RefreshRequest request) Parameters request RefreshRequest Returns Task<IActionResult> Register(RegisterRequest) [HttpPost(\"register\")] public Task<IActionResult> Register(RegisterRequest request) Parameters request RegisterRequest Returns Task<IActionResult>"
  },
  "api/server/EchoHub.Server.Controllers.ChannelsController.html": {
    "href": "api/server/EchoHub.Server.Controllers.ChannelsController.html",
    "title": "Class ChannelsController | EchoHub Documentation",
    "summary": "Class ChannelsController Namespace EchoHub.Server.Controllers Assembly EchoHub.Server.dll [ApiController] [Route(\"api/channels\")] [Authorize] [EnableRateLimiting(\"general\")] public class ChannelsController : ControllerBase Inheritance object ControllerBase ChannelsController Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChannelsController(EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService) public ChannelsController(EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService) Parameters db EchoHubDbContext fileStorage FileStorageService asciiService ImageToAsciiService httpClientFactory IHttpClientFactory chatService IChatService Methods CreateChannel(CreateChannelRequest) [HttpPost] public Task<IActionResult> CreateChannel(CreateChannelRequest request) Parameters request CreateChannelRequest Returns Task<IActionResult> DeleteChannel(string) [HttpDelete(\"{channel}\")] public Task<IActionResult> DeleteChannel(string channel) Parameters channel string Returns Task<IActionResult> GetChannels(int, int) [HttpGet] public Task<IActionResult> GetChannels(int offset = 0, int limit = 50) Parameters offset int limit int Returns Task<IActionResult> SendUrl(string, SendUrlRequest) [HttpPost(\"{channel}/send-url\")] [EnableRateLimiting(\"upload\")] public Task<IActionResult> SendUrl(string channel, SendUrlRequest request) Parameters channel string request SendUrlRequest Returns Task<IActionResult> UpdateTopic(string, UpdateTopicRequest) [HttpPut(\"{channel}/topic\")] public Task<IActionResult> UpdateTopic(string channel, UpdateTopicRequest request) Parameters channel string request UpdateTopicRequest Returns Task<IActionResult> Upload(string) [HttpPost(\"{channel}/upload\")] [EnableRateLimiting(\"upload\")] public Task<IActionResult> Upload(string channel) Parameters channel string Returns Task<IActionResult>"
  },
  "api/server/EchoHub.Server.Controllers.FilesController.html": {
    "href": "api/server/EchoHub.Server.Controllers.FilesController.html",
    "title": "Class FilesController | EchoHub Documentation",
    "summary": "Class FilesController Namespace EchoHub.Server.Controllers Assembly EchoHub.Server.dll [ApiController] [Route(\"api/files\")] [Authorize] [EnableRateLimiting(\"general\")] public class FilesController : ControllerBase Inheritance object ControllerBase FilesController Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors FilesController(FileStorageService) public FilesController(FileStorageService fileStorage) Parameters fileStorage FileStorageService Methods GetFile(string) [HttpGet(\"{fileId}\")] public IActionResult GetFile(string fileId) Parameters fileId string Returns IActionResult"
  },
  "api/server/EchoHub.Server.Controllers.ServerController.html": {
    "href": "api/server/EchoHub.Server.Controllers.ServerController.html",
    "title": "Class ServerController | EchoHub Documentation",
    "summary": "Class ServerController Namespace EchoHub.Server.Controllers Assembly EchoHub.Server.dll [ApiController] [Route(\"api/server\")] public class ServerController : ControllerBase Inheritance object ControllerBase ServerController Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ServerController(EchoHubDbContext, IConfiguration) public ServerController(EchoHubDbContext db, IConfiguration config) Parameters db EchoHubDbContext config IConfiguration Methods GetInfo() [HttpGet(\"info\")] public Task<IActionResult> GetInfo() Returns Task<IActionResult>"
  },
  "api/server/EchoHub.Server.Controllers.UsersController.html": {
    "href": "api/server/EchoHub.Server.Controllers.UsersController.html",
    "title": "Class UsersController | EchoHub Documentation",
    "summary": "Class UsersController Namespace EchoHub.Server.Controllers Assembly EchoHub.Server.dll [ApiController] [Route(\"api/users\")] [Authorize] [EnableRateLimiting(\"general\")] public class UsersController : ControllerBase Inheritance object ControllerBase UsersController Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors UsersController(EchoHubDbContext, ImageToAsciiService) public UsersController(EchoHubDbContext db, ImageToAsciiService asciiService) Parameters db EchoHubDbContext asciiService ImageToAsciiService Methods GetProfile(string) [HttpGet(\"{username}/profile\")] public Task<IActionResult> GetProfile(string username) Parameters username string Returns Task<IActionResult> UpdateProfile(UpdateProfileRequest) [HttpPut(\"profile\")] public Task<IActionResult> UpdateProfile(UpdateProfileRequest request) Parameters request UpdateProfileRequest Returns Task<IActionResult> UploadAvatar() [HttpPost(\"avatar\")] [EnableRateLimiting(\"upload\")] public Task<IActionResult> UploadAvatar() Returns Task<IActionResult>"
  },
  "api/server/EchoHub.Server.Controllers.html": {
    "href": "api/server/EchoHub.Server.Controllers.html",
    "title": "Namespace EchoHub.Server.Controllers | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Controllers Classes AuthController ChannelsController FilesController ServerController UsersController"
  },
  "api/server/EchoHub.Server.Data.EchoHubDbContext.html": {
    "href": "api/server/EchoHub.Server.Data.EchoHubDbContext.html",
    "title": "Class EchoHubDbContext | EchoHub Documentation",
    "summary": "Class EchoHubDbContext Namespace EchoHub.Server.Data Assembly EchoHub.Server.dll public class EchoHubDbContext : DbContext, IDisposable, IAsyncDisposable Inheritance object DbContext EchoHubDbContext Implements IDisposable IAsyncDisposable Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors EchoHubDbContext(DbContextOptions<EchoHubDbContext>) public EchoHubDbContext(DbContextOptions<EchoHubDbContext> options) Parameters options DbContextOptions<EchoHubDbContext> Properties Channels public DbSet<Channel> Channels { get; } Property Value DbSet<Channel> Messages public DbSet<Message> Messages { get; } Property Value DbSet<Message> RefreshTokens public DbSet<RefreshToken> RefreshTokens { get; } Property Value DbSet<RefreshToken> Users public DbSet<User> Users { get; } Property Value DbSet<User> Methods OnConfiguring(DbContextOptionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) Parameters optionsBuilder DbContextOptionsBuilder OnModelCreating(ModelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder) Parameters modelBuilder ModelBuilder"
  },
  "api/server/EchoHub.Server.Data.Migrations.InitialCreate.html": {
    "href": "api/server/EchoHub.Server.Data.Migrations.InitialCreate.html",
    "title": "Class InitialCreate | EchoHub Documentation",
    "summary": "Class InitialCreate Namespace EchoHub.Server.Data.Migrations Assembly EchoHub.Server.dll [DbContext(typeof(EchoHubDbContext))] [Migration(\"20260219023113_InitialCreate\")] public class InitialCreate : Migration Inheritance object Migration InitialCreate Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors InitialCreate() public InitialCreate() Methods BuildTargetModel(ModelBuilder) protected override void BuildTargetModel(ModelBuilder modelBuilder) Parameters modelBuilder ModelBuilder Down(MigrationBuilder) protected override void Down(MigrationBuilder migrationBuilder) Parameters migrationBuilder MigrationBuilder Up(MigrationBuilder) protected override void Up(MigrationBuilder migrationBuilder) Parameters migrationBuilder MigrationBuilder"
  },
  "api/server/EchoHub.Server.Data.Migrations.html": {
    "href": "api/server/EchoHub.Server.Data.Migrations.html",
    "title": "Namespace EchoHub.Server.Data.Migrations | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Data.Migrations Classes InitialCreate"
  },
  "api/server/EchoHub.Server.Data.html": {
    "href": "api/server/EchoHub.Server.Data.html",
    "title": "Namespace EchoHub.Server.Data | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Data Classes EchoHubDbContext"
  },
  "api/server/EchoHub.Server.Hubs.ChatHub.html": {
    "href": "api/server/EchoHub.Server.Hubs.ChatHub.html",
    "title": "Class ChatHub | EchoHub Documentation",
    "summary": "Class ChatHub Namespace EchoHub.Server.Hubs Assembly EchoHub.Server.dll [Authorize] public class ChatHub : Hub<IEchoHubClient>, IDisposable Inheritance object Hub Hub<IEchoHubClient> ChatHub Implements IDisposable Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChatHub(IChatService, ILogger<ChatHub>) public ChatHub(IChatService chatService, ILogger<ChatHub> logger) Parameters chatService IChatService logger ILogger<ChatHub> Methods GetChannelHistory(string, int) public Task<List<MessageDto>> GetChannelHistory(string channelName, int count = 50) Parameters channelName string count int Returns Task<List<MessageDto>> GetOnlineUsers(string) public Task<List<UserPresenceDto>> GetOnlineUsers(string channelName) Parameters channelName string Returns Task<List<UserPresenceDto>> JoinChannel(string) public Task<List<MessageDto>> JoinChannel(string channelName) Parameters channelName string Returns Task<List<MessageDto>> LeaveChannel(string) public Task LeaveChannel(string channelName) Parameters channelName string Returns Task OnConnectedAsync() public override Task OnConnectedAsync() Returns Task OnDisconnectedAsync(Exception?) public override Task OnDisconnectedAsync(Exception? exception) Parameters exception Exception Returns Task SendMessage(string, string) public Task SendMessage(string channelName, string content) Parameters channelName string content string Returns Task UpdateStatus(UserStatus, string?) public Task UpdateStatus(UserStatus status, string? statusMessage) Parameters status UserStatus statusMessage string Returns Task"
  },
  "api/server/EchoHub.Server.Hubs.html": {
    "href": "api/server/EchoHub.Server.Hubs.html",
    "title": "Namespace EchoHub.Server.Hubs | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Hubs Classes ChatHub"
  },
  "api/server/EchoHub.Server.Services.ChatService.html": {
    "href": "api/server/EchoHub.Server.Services.ChatService.html",
    "title": "Class ChatService | EchoHub Documentation",
    "summary": "Class ChatService Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public class ChatService : IChatService Inheritance object ChatService Implements IChatService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, ILogger<ChatService>) public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable<IChatBroadcaster> broadcasters, ILogger<ChatService> logger) Parameters scopeFactory IServiceScopeFactory presenceTracker PresenceTracker broadcasters IEnumerable<IChatBroadcaster> logger ILogger<ChatService> Methods AuthenticateUserAsync(string, string) public Task<(Guid UserId, string Username)?> AuthenticateUserAsync(string username, string password) Parameters username string password string Returns Task<(Guid UserId, string Username)?> BroadcastChannelUpdatedAsync(ChannelDto, string?) public Task BroadcastChannelUpdatedAsync(ChannelDto channel, string? channelName = null) Parameters channel ChannelDto channelName string Returns Task BroadcastMessageAsync(string, MessageDto) public Task BroadcastMessageAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task GetChannelHistoryAsync(string, int) public Task<List<MessageDto>> GetChannelHistoryAsync(string channelName, int count) Parameters channelName string count int Returns Task<List<MessageDto>> GetChannelListAsync() public Task<List<ChannelListItem>> GetChannelListAsync() Returns Task<List<ChannelListItem>> GetChannelTopicAsync(string) public Task<(string? Topic, bool Exists)> GetChannelTopicAsync(string channelName) Parameters channelName string Returns Task<(string Topic, bool Exists)> GetChannelsForUserAsync(string) public Task<List<string>> GetChannelsForUserAsync(string username) Parameters username string Returns Task<List<string>> GetOnlineUsersAsync(string) public Task<List<UserPresenceDto>> GetOnlineUsersAsync(string channelName) Parameters channelName string Returns Task<List<UserPresenceDto>> GetUserProfileAsync(string) public Task<UserProfileDto?> GetUserProfileAsync(string username) Parameters username string Returns Task<UserProfileDto> JoinChannelAsync(string, Guid, string, string) public Task<(List<MessageDto> History, string? Error)> JoinChannelAsync(string connectionId, Guid userId, string username, string channelName) Parameters connectionId string userId Guid username string channelName string Returns Task<(List<MessageDto> History, string Error)> LeaveChannelAsync(string, string, string) public Task LeaveChannelAsync(string connectionId, string username, string channelName) Parameters connectionId string username string channelName string Returns Task SendMessageAsync(Guid, string, string, string) public Task<string?> SendMessageAsync(Guid userId, string username, string channelName, string content) Parameters userId Guid username string channelName string content string Returns Task<string> UpdateStatusAsync(Guid, string, UserStatus, string?) public Task<string?> UpdateStatusAsync(Guid userId, string username, UserStatus status, string? statusMessage) Parameters userId Guid username string status UserStatus statusMessage string Returns Task<string> UserConnectedAsync(string, Guid, string) public Task UserConnectedAsync(string connectionId, Guid userId, string username) Parameters connectionId string userId Guid username string Returns Task UserDisconnectedAsync(string) public Task<string?> UserDisconnectedAsync(string connectionId) Parameters connectionId string Returns Task<string>"
  },
  "api/server/EchoHub.Server.Services.FileStorageService.html": {
    "href": "api/server/EchoHub.Server.Services.FileStorageService.html",
    "title": "Class FileStorageService | EchoHub Documentation",
    "summary": "Class FileStorageService Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public class FileStorageService Inheritance object FileStorageService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors FileStorageService(IConfiguration) public FileStorageService(IConfiguration configuration) Parameters configuration IConfiguration Methods DeleteFile(string) public void DeleteFile(string fileId) Parameters fileId string GetFilePath(string) public string? GetFilePath(string fileId) Parameters fileId string Returns string SaveFileAsync(Stream, string) public Task<(string fileId, string filePath)> SaveFileAsync(Stream stream, string fileName) Parameters stream Stream fileName string Returns Task<(string fileId, string filePath)>"
  },
  "api/server/EchoHub.Server.Services.FileValidationHelper.html": {
    "href": "api/server/EchoHub.Server.Services.FileValidationHelper.html",
    "title": "Class FileValidationHelper | EchoHub Documentation",
    "summary": "Class FileValidationHelper Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public static class FileValidationHelper Inheritance object FileValidationHelper Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods IsValidImage(Stream) Validates that a stream contains a recognized image format by checking magic bytes. The stream position is reset to the beginning after validation. public static bool IsValidImage(Stream stream) Parameters stream Stream Returns bool"
  },
  "api/server/EchoHub.Server.Services.ImageToAsciiService.html": {
    "href": "api/server/EchoHub.Server.Services.ImageToAsciiService.html",
    "title": "Class ImageToAsciiService | EchoHub Documentation",
    "summary": "Class ImageToAsciiService Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public class ImageToAsciiService Inheritance object ImageToAsciiService Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ImageToAsciiService() public ImageToAsciiService() Methods ConvertToAscii(Stream, int, int) public string ConvertToAscii(Stream imageStream, int width = 80, int height = 40) Parameters imageStream Stream width int height int Returns string"
  },
  "api/server/EchoHub.Server.Services.PresenceTracker.html": {
    "href": "api/server/EchoHub.Server.Services.PresenceTracker.html",
    "title": "Class PresenceTracker | EchoHub Documentation",
    "summary": "Class PresenceTracker Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public class PresenceTracker Inheritance object PresenceTracker Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors PresenceTracker() public PresenceTracker() Methods GetChannelsForUser(string) public List<string> GetChannelsForUser(string username) Parameters username string Returns List<string> GetConnectionsInChannels(List<string>) Get all unique connection IDs for users who share any of the given channels. public List<string> GetConnectionsInChannels(List<string> channels) Parameters channels List<string> Returns List<string> GetOnlineUserCount() public int GetOnlineUserCount() Returns int GetOnlineUsersInChannel(string) public List<string> GetOnlineUsersInChannel(string channelName) Parameters channelName string Returns List<string> GetUsernameForConnection(string) public string? GetUsernameForConnection(string connectionId) Parameters connectionId string Returns string IsOnline(string) public bool IsOnline(string username) Parameters username string Returns bool JoinChannel(string, string) Returns true if this is a new join, false if the user was already in the channel. public bool JoinChannel(string username, string channelName) Parameters username string channelName string Returns bool LeaveChannel(string, string) public void LeaveChannel(string username, string channelName) Parameters username string channelName string UserConnected(string, Guid, string) public void UserConnected(string connectionId, Guid userId, string username) Parameters connectionId string userId Guid username string UserDisconnected(string) public string? UserDisconnected(string connectionId) Parameters connectionId string Returns string"
  },
  "api/server/EchoHub.Server.Services.ServerDirectoryService.html": {
    "href": "api/server/EchoHub.Server.Services.ServerDirectoryService.html",
    "title": "Class ServerDirectoryService | EchoHub Documentation",
    "summary": "Class ServerDirectoryService Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public sealed class ServerDirectoryService : BackgroundService, IDisposable Inheritance object BackgroundService ServerDirectoryService Implements IDisposable Inherited Members object.GetType() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors ServerDirectoryService(IConfiguration, PresenceTracker, ILogger<ServerDirectoryService>) public ServerDirectoryService(IConfiguration configuration, PresenceTracker presenceTracker, ILogger<ServerDirectoryService> logger) Parameters configuration IConfiguration presenceTracker PresenceTracker logger ILogger<ServerDirectoryService> Methods ExecuteAsync(CancellationToken) protected override Task ExecuteAsync(CancellationToken stoppingToken) Parameters stoppingToken CancellationToken Returns Task StopAsync(CancellationToken) public override Task StopAsync(CancellationToken cancellationToken) Parameters cancellationToken CancellationToken Returns Task"
  },
  "api/server/EchoHub.Server.Services.SignalRBroadcaster.html": {
    "href": "api/server/EchoHub.Server.Services.SignalRBroadcaster.html",
    "title": "Class SignalRBroadcaster | EchoHub Documentation",
    "summary": "Class SignalRBroadcaster Namespace EchoHub.Server.Services Assembly EchoHub.Server.dll public class SignalRBroadcaster : IChatBroadcaster Inheritance object SignalRBroadcaster Implements IChatBroadcaster Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors SignalRBroadcaster(IHubContext<ChatHub, IEchoHubClient>, PresenceTracker) public SignalRBroadcaster(IHubContext<ChatHub, IEchoHubClient> hubContext, PresenceTracker presenceTracker) Parameters hubContext IHubContext<ChatHub, IEchoHubClient> presenceTracker PresenceTracker Methods SendChannelUpdatedAsync(ChannelDto, string?) public Task SendChannelUpdatedAsync(ChannelDto channel, string? channelName = null) Parameters channel ChannelDto channelName string Returns Task SendErrorAsync(string, string) public Task SendErrorAsync(string connectionId, string message) Parameters connectionId string message string Returns Task SendMessageToChannelAsync(string, MessageDto) public Task SendMessageToChannelAsync(string channelName, MessageDto message) Parameters channelName string message MessageDto Returns Task SendUserJoinedAsync(string, string, string?) public Task SendUserJoinedAsync(string channelName, string username, string? excludeConnectionId = null) Parameters channelName string username string excludeConnectionId string Returns Task SendUserLeftAsync(string, string) public Task SendUserLeftAsync(string channelName, string username) Parameters channelName string username string Returns Task SendUserStatusChangedAsync(List<string>, UserPresenceDto) public Task SendUserStatusChangedAsync(List<string> channelNames, UserPresenceDto presence) Parameters channelNames List<string> presence UserPresenceDto Returns Task"
  },
  "api/server/EchoHub.Server.Services.html": {
    "href": "api/server/EchoHub.Server.Services.html",
    "title": "Namespace EchoHub.Server.Services | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Services Classes ChatService FileStorageService FileValidationHelper ImageToAsciiService PresenceTracker ServerDirectoryService SignalRBroadcaster"
  },
  "api/server/EchoHub.Server.Setup.DatabaseSetup.html": {
    "href": "api/server/EchoHub.Server.Setup.DatabaseSetup.html",
    "title": "Class DatabaseSetup | EchoHub Documentation",
    "summary": "Class DatabaseSetup Namespace EchoHub.Server.Setup Assembly EchoHub.Server.dll public static class DatabaseSetup Inheritance object DatabaseSetup Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods InitializeAsync(IServiceProvider) public static Task InitializeAsync(IServiceProvider services) Parameters services IServiceProvider Returns Task"
  },
  "api/server/EchoHub.Server.Setup.FirstRunSetup.html": {
    "href": "api/server/EchoHub.Server.Setup.FirstRunSetup.html",
    "title": "Class FirstRunSetup | EchoHub Documentation",
    "summary": "Class FirstRunSetup Namespace EchoHub.Server.Setup Assembly EchoHub.Server.dll public static class FirstRunSetup Inheritance object FirstRunSetup Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Methods EnsureAppSettings() public static void EnsureAppSettings()"
  },
  "api/server/EchoHub.Server.Setup.html": {
    "href": "api/server/EchoHub.Server.Setup.html",
    "title": "Namespace EchoHub.Server.Setup | EchoHub Documentation",
    "summary": "Namespace EchoHub.Server.Setup Classes DatabaseSetup FirstRunSetup"
  },
  "articles/architecture.html": {
    "href": "articles/architecture.html",
    "title": "Architecture | EchoHub Documentation",
    "summary": "Architecture Overview EchoHub follows a decentralized model where each server is fully independent. There is no central authority or account federation. Users create one account per server. The server exposes two protocol interfaces to the same chat backend: IRC Client ──► TCP :6667 ──► IrcGateway ──┐ ├──► ChatService ──► DB + PresenceTracker TUI Client ──► WebSocket ──► ChatHub ─────┘ Both protocols call into a shared IChatService for business logic. Events fan out to all registered IChatBroadcaster implementations (SignalR and IRC). Components EchoHub.Core Shared library containing: Models: User, Channel, Message, RefreshToken DTOs: Record types for API requests/responses Contracts: IChatService (protocol-agnostic chat operations), IChatBroadcaster (event fan-out interface), IEchoHubClient (SignalR client interface) Constants: ValidationConstants (shared regex patterns), HubConstants EchoHub.Server ASP.NET Core web application: Controllers: REST API endpoints for auth, channels, users, files, server info Hubs: SignalR ChatHub -- thin adapter delegating to IChatService Auth: JWT token service (15-min access tokens, 30-day refresh tokens) Data: EF Core with SQLite Services: ChatService (core business logic), SignalRBroadcaster, presence tracking, file storage, image-to-ASCII conversion EchoHub.Server.Irc IRC protocol gateway (separate project for clean separation of concerns): IrcGatewayService: BackgroundService with TCP listener on configured port(s), optional TLS IrcCommandHandler: Per-client IRC command dispatch -- handles CAP/SASL, NICK/USER/PASS, JOIN/PART/PRIVMSG/QUIT, NAMES/TOPIC/WHO/WHOIS/AWAY/LIST/MODE/MOTD IrcBroadcaster: IChatBroadcaster implementation that formats chat events as IRC protocol lines, with echo suppression (IRC convention) IrcMessageFormatter: Converts MessageDto to IRC PRIVMSG lines -- splits long text at word boundaries (~400 byte chunks), sends images as ASCII art line-by-line IRC users authenticate with existing EchoHub accounts via PASS/NICK/USER or SASL PLAIN (BCrypt verification against the database). EchoHub.Client Terminal.Gui v2 TUI application: UI: Main window, dialogs, chat renderer with ANSI color support Services: API client with automatic token refresh, SignalR connection wrapper Themes: 13 built-in color themes Config: Client configuration management Communication REST API for authentication, profile management, channel CRUD, file uploads SignalR WebSocket for real-time messaging and presence updates (TUI client) IRC TCP for real-time messaging via standard IRC protocol (IRC clients) JWT tokens passed via query string for SignalR authentication IRC authentication via PASS/SASL PLAIN against BCrypt password hashes Broadcaster Pattern The IChatBroadcaster interface allows multiple protocols to receive chat events: SignalRBroadcaster: Wraps IHubContext<ChatHub>, filters out IRC connections IrcBroadcaster: Iterates live IRC connections in a channel, formats events as IRC protocol lines Both are registered in DI and called by ChatService when events occur. This means a message sent from an IRC client appears in the TUI client, and vice versa."
  },
  "articles/getting-started.html": {
    "href": "articles/getting-started.html",
    "title": "Getting Started | EchoHub Documentation",
    "summary": "Getting Started Prerequisites .NET 10 SDK Or grab a self-contained binary from Releases -- no runtime needed. Run the Server dotnet run --project src/EchoHub.Server On first run, the server automatically: Creates appsettings.json from the example config Generates a secure JWT secret Creates the SQLite database with a #general channel Run the Client dotnet run --project src/EchoHub.Client Connect to a server, register an account, and start chatting. Connect via IRC Enable the IRC gateway in the server's appsettings.json: { \"Irc\": { \"Enabled\": true, \"Port\": 6667 } } Then connect with any standard IRC client: irssi -c localhost -p 6667 -w <password> -n <username> IRC users must have an existing EchoHub account. Authentication works via PASS/NICK/USER or SASL PLAIN. Messages flow bidirectionally between IRC and TUI clients. For TLS, set TlsEnabled: true, TlsPort: 6697, and provide a PKCS#12 certificate path. See the Architecture page for details on how the IRC gateway integrates with the chat service. Configuration Server configuration is in appsettings.json (auto-generated on first run). See the example config for all available options. To list your server on the public directory, set Server:PublicServer to true and Server:PublicHost to your server's public address. Build from Source dotnet build src/EchoHub.slnx"
  },
  "changelog/index.html": {
    "href": "changelog/index.html",
    "title": "Changelog | EchoHub Documentation",
    "summary": "Changelog Release history for EchoHub. Releases v0.2.0 - IRC Gateway v0.1.1 - Directory Connection Self-Healing v0.1.0 - Initial Release"
  },
  "changelog/v0.1.0.html": {
    "href": "changelog/v0.1.0.html",
    "title": "v0.1.0 - Initial Release | EchoHub Documentation",
    "summary": "v0.1.0 - Initial Release Features Real-time messaging via SignalR JWT authentication with access and refresh tokens Channel management (create, set topic, delete) File and image uploads with magic-byte validation Image-to-ASCII conversion for terminal display Presence tracking (online, away, DND, invisible) 6 built-in TUI themes Rate limiting on auth, upload, and general endpoints Self-contained binary releases for Windows, Linux, and macOS"
  },
  "changelog/v0.1.1.html": {
    "href": "changelog/v0.1.1.html",
    "title": "v0.1.1 - Directory Connection Self-Healing | EchoHub Documentation",
    "summary": "v0.1.1 - Directory Connection Self-Healing Fixes Server now reconnects to the EchoHubSpace directory indefinitely when the API goes down, using exponential backoff (2s → 30s cap) If automatic reconnect is exhausted, the connection is rebuilt from scratch automatically Initial connection attempts also use exponential backoff instead of a fixed 30s delay"
  },
  "changelog/v0.2.0.html": {
    "href": "changelog/v0.2.0.html",
    "title": "v0.2.0 - IRC Gateway | EchoHub Documentation",
    "summary": "v0.2.0 - IRC Gateway Features IRC protocol gateway -- native IRC clients (irssi, WeeChat, HexChat, etc.) can connect to EchoHub servers Cross-protocol messaging -- messages flow bidirectionally between IRC and TUI clients in real time SASL PLAIN authentication -- IRC clients can authenticate via SASL or traditional PASS/NICK/USER Full IRC command support -- JOIN, PART, PRIVMSG, QUIT, NAMES, TOPIC, WHO, WHOIS, AWAY, LIST, MODE, MOTD TLS support -- optional encrypted IRC connections on port 6697 Image-to-IRC formatting -- images appear as ASCII art line-by-line with download URLs Message splitting -- long messages automatically split at word boundaries (~400 byte chunks) Configurable MOTD -- server message of the day for IRC clients Architecture Changes Extracted shared business logic from ChatHub into protocol-agnostic IChatService Introduced IChatBroadcaster pattern for multi-protocol event fan-out ChatHub refactored to thin adapter delegating to IChatService ChannelsController updated to use IChatService for broadcasts New EchoHub.Server.Irc project for clean separation of concerns IChatService and IChatBroadcaster interfaces live in EchoHub.Core/Contracts"
  },
  "index.html": {
    "href": "index.html",
    "title": "EchoHub Documentation | EchoHub Documentation",
    "summary": "EchoHub Documentation Welcome to the EchoHub documentation. EchoHub is a decentralized, IRC-style chat platform. Self-hosted, terminal-first, with a built-in IRC gateway so native IRC clients can connect alongside the TUI client. Website: echohub.voidcube.cloud | Public Servers: Server Directory Quick Links Getting Started - Set up and run EchoHub Architecture - System design and IRC gateway API Reference - Generated C# API documentation Changelog - Release history"
  }
}