{
  "source_base_path": "/home/runner/work/EchoHub/EchoHub/docs",
  "xrefmap": "xrefmap.yml",
  "files": [
    {
      "type": "Resource",
      "output": {
        "resource": {
          "relative_path": "index.json"
        }
      }
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.AppOrchestrator.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.AppOrchestrator.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.AppOrchestrator",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.AppOrchestrator.yml\" sourcestartlinenumber=\"1\">Central orchestrator for the EchoHub TUI client.\nWires UI events to service calls and connection events to UI updates.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Commands.CommandHandler.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Commands.CommandHandler.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Commands.CommandHandler",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Commands.CommandResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Commands.CommandResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Commands.CommandResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Commands.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Commands.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Commands",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.AccountPreset.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.AccountPreset.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config.AccountPreset",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.ClientConfig.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.ClientConfig.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config.ClientConfig",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.ConfigManager.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.ConfigManager.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config.ConfigManager",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.NotificationConfig.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.NotificationConfig.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config.NotificationConfig",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.SavedServer.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.SavedServer.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config.SavedServer",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Config.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Config.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Config",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.ApiClient.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.ApiClient.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.ApiClient",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.AsyncRunner.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.AsyncRunner.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.AsyncRunner",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.AsyncRunner.yml\" sourcestartlinenumber=\"1\">Eliminates repeated Task.Run/try/catch/app.Invoke(ShowError) boilerplate.\nRuns async work on a background thread and routes exceptions to the UI.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.AudioPlaybackService.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.AudioPlaybackService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.AudioPlaybackService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.BackupInfo.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.BackupInfo.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.BackupInfo",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.ChannelPasswordRequiredException.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.ChannelPasswordRequiredException.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.ChannelPasswordRequiredException",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.ChannelPasswordRequiredException.yml\" sourcestartlinenumber=\"1\">Thrown when joining a channel fails because a password is required or incorrect.\nThe UI catches this to prompt the user and retry.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.ClientEncryptionService.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.ClientEncryptionService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.ClientEncryptionService",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.ClientEncryptionService.yml\" sourcestartlinenumber=\"1\">Client-side encryption service. Uses the same AES-256-GCM format as the server\nso messages are encrypted end-to-end between client and server.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.ClipboardFiles.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.ClipboardFiles.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.ClipboardFiles",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.ClipboardFiles.yml\" sourcestartlinenumber=\"1\">Reads file paths that live on the OS clipboard as a <em sourcefile=\"_api_meta/client/EchoHub.Client.Services.ClipboardFiles.yml\" sourcestartlinenumber=\"1\">file list</em> (e.g. after copying a file in\nExplorer/Finder/Nautilus), which terminals do not paste as text. Lets Ctrl+V attach a copied\nfile directly instead of requiring the user to paste a raw path.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.ClipboardImage.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.ClipboardImage.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.ClipboardImage",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.ClipboardImage.yml\" sourcestartlinenumber=\"1\">Reads raw image data from the OS clipboard (e.g. an image copied from a browser, or a\nWin+Shift+S screenshot), which terminals cannot paste as text. Always returns PNG bytes:\nclipboard PNG data is passed through, clipboard bitmaps (CF_DIB) are re-encoded.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.EchoHubConnection.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.EchoHubConnection.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.EchoHubConnection",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.FolderPickResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.FolderPickResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.FolderPickResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.JoinOutcome.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.JoinOutcome.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.JoinOutcome",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.JoinOutcome.yml\" sourcestartlinenumber=\"1\">Result of joining a channel: decrypted history plus, for end-to-end encrypted\nchannels, the key envelope needed to unlock the room content key.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.NativeFolderPicker.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.NativeFolderPicker.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.NativeFolderPicker",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.NativeFolderPicker.yml\" sourcestartlinenumber=\"1\">Opens the OS-native folder chooser (Windows Explorer, macOS Finder, Linux GTK/KDE) by shelling\nout, so the TUI doesn't need a GUI toolkit reference. Returns <xref href=\"EchoHub.Client.Services.PickerOutcome.Unavailable\" data-throw-if-not-resolved=\"false\"></xref>\nwhen no native dialog can run, so callers can fall back to a configured path.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.NotificationSoundService.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.NotificationSoundService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.NotificationSoundService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.OutgoingAttachment.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.OutgoingAttachment.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.OutgoingAttachment",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.OutgoingAttachment.yml\" sourcestartlinenumber=\"1\">One file to upload as part of a message. For end-to-end encrypted channels the stream\nis already ciphertext, <xref href=\"EchoHub.Client.Services.OutgoingAttachment.DeclaredKind\" data-throw-if-not-resolved=\"false\"></xref> is set (image/audio/file), and\n<xref href=\"EchoHub.Client.Services.OutgoingAttachment.EncryptedPreview\" data-throw-if-not-resolved=\"false\"></xref> holds the room-encrypted ASCII art for images.\nFor normal channels only <xref href=\"EchoHub.Client.Services.OutgoingAttachment.Stream\" data-throw-if-not-resolved=\"false\"></xref> and <xref href=\"EchoHub.Client.Services.OutgoingAttachment.FileName\" data-throw-if-not-resolved=\"false\"></xref> are set.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.PathSetup.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.PathSetup.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.PathSetup",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.PathSetup.yml\" sourcestartlinenumber=\"1\">Ensures the application's directory is on the system PATH so users\ncan run 'echohub' from any terminal session.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.PickerOutcome.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.PickerOutcome.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.PickerOutcome",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.RoomKeyProtector.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.RoomKeyProtector.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.RoomKeyProtector",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.RoomKeyProtector.yml\" sourcestartlinenumber=\"1\">Encrypts cached room content keys at rest so the client config never holds them as\nplain base64. Windows uses DPAPI (current-user scope, format prefix &quot;dp1:&quot;). On other\nplatforms the keys are AES-GCM encrypted with a per-user master key file stored next\nto the config with 0600 permissions (prefix &quot;k1:&quot;) — without an OS keychain that is\nfile-permission-level protection, not zero-knowledge: anyone who can read both the\nconfig and the key file can recover the room keys. Values with no recognized prefix\nare legacy plain-base64 keys from older clients; they load once and are re-encrypted.\nThe room passphrase itself is never stored in any form.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.RoomKeyStore.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.RoomKeyStore.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.RoomKeyStore",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.RoomKeyStore.yml\" sourcestartlinenumber=\"1\">Holds room content keys for end-to-end encrypted channels: in-memory for the\nactive session, persisted per-server in the client config (like saved sessions)\nso users don't retype the passphrase every launch. Keys never leave this machine\nand are encrypted at rest by <xref href=\"EchoHub.Client.Services.RoomKeyProtector\" data-throw-if-not-resolved=\"false\"></xref>. Also tracks which\nchannels are known to be end-to-end encrypted, so senders can refuse to emit\nplaintext into a room whose key isn't cached yet.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.RoomLockedException.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.RoomLockedException.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.RoomLockedException",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.RoomLockedException.yml\" sourcestartlinenumber=\"1\">Thrown when sending into an end-to-end encrypted channel whose room key isn't cached:\nwithout the key the message would leave the client as plaintext, which must never happen.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.UpdateBackupService.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.UpdateBackupService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.UpdateBackupService",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.Services.UpdateBackupService.yml\" sourcestartlinenumber=\"1\">Manages pre-update backups and rollback restoration for the auto-updater.\nBackup location: ~/.echohub/update-backup/</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.UpdateChecker.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.UpdateChecker.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services.UpdateChecker",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Services.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Services.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Services",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Themes.Theme.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Themes.Theme.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Themes.Theme",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Themes.ThemeColors.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Themes.ThemeColors.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Themes.ThemeColors",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Themes.ThemeManager.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Themes.ThemeManager.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Themes.ThemeManager",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.Themes.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.Themes.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.Themes",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.AttachmentAction.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.AttachmentAction.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.AttachmentAction",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.AttachmentAction.yml\" sourcestartlinenumber=\"1\">An action a click on an attachment line can trigger.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.AttachmentActionSpan.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.AttachmentActionSpan.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.AttachmentActionSpan",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.AttachmentActionSpan.yml\" sourcestartlinenumber=\"1\">Inclusive column range on a chat line that triggers an attachment action when clicked.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.ChatColors.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.ChatColors.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.ChatColors",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.ChatColors.yml\" sourcestartlinenumber=\"1\">Shared color attributes for chat rendering (timestamps, system messages).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.ChatLine.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.ChatLine.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.ChatLine",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.ChatLine.yml\" sourcestartlinenumber=\"1\">A single line in the chat, composed of colored segments.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.ChatListSource.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.ChatListSource.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.ChatListSource",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.ChatListSource.yml\" sourcestartlinenumber=\"1\">Custom list data source for chat messages with per-segment coloring.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.ChatMessageManager.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.ChatMessageManager.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.ChatMessageManager",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.ChatMessageManager.yml\" sourcestartlinenumber=\"1\">Owns chat message storage, formatting, and mutation.\nFires <xref href=\"EchoHub.Client.UI.Chat.ChatMessageManager.MessagesChanged\" data-throw-if-not-resolved=\"false\"></xref> when a channel's message list is modified\nso the UI layer can refresh.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.ChatSegment.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.ChatSegment.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat.ChatSegment",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Chat.ChatSegment.yml\" sourcestartlinenumber=\"1\">A colored text segment within a chat line.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Chat.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Chat.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Chat",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.AudioPlayerDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.AudioPlayerDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.AudioPlayerDialog",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ChannelPasswordDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ChannelPasswordDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ChannelPasswordDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ChannelPasswordDialog.yml\" sourcestartlinenumber=\"1\">Prompts for a channel password when joining a protected channel.\nReturns the entered password, or null if the user cancels.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ConnectDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ConnectDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ConnectDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ConnectDialog.yml\" sourcestartlinenumber=\"1\">A Terminal.Gui dialog for entering server connection and authentication details.\nIncludes a saved servers selector when saved servers are available.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ConnectDialogResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ConnectDialogResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ConnectDialogResult",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ConnectDialogResult.yml\" sourcestartlinenumber=\"1\">Result returned from the connect dialog.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.CreateChannelDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.CreateChannelDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.CreateChannelDialog",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.CreateChannelResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.CreateChannelResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.CreateChannelResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileAction.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ProfileAction.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ProfileAction",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileAction.yml\" sourcestartlinenumber=\"1\">Action selected by the user in their own profile dialog.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileEditDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ProfileEditDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ProfileEditDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileEditDialog.yml\" sourcestartlinenumber=\"1\">A Terminal.Gui dialog for editing the user's profile (display name, bio, nickname color).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileEditResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ProfileEditResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ProfileEditResult",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileEditResult.yml\" sourcestartlinenumber=\"1\">Result returned from the profile edit dialog.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileViewDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.ProfileViewDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.ProfileViewDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.ProfileViewDialog.yml\" sourcestartlinenumber=\"1\">Dialog for viewing a user's server profile.\nShows Edit Profile / Set Status buttons when viewing own profile.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.SearchDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.SearchDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.SearchDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.SearchDialog.yml\" sourcestartlinenumber=\"1\">Command-palette style search dialog (Ctrl+K) for navigating channels and triggering app actions.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.SearchResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.SearchResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.SearchResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.SearchResultType.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.SearchResultType.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.SearchResultType",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.StatusDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.StatusDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.StatusDialog",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.StatusDialog.yml\" sourcestartlinenumber=\"1\">A Terminal.Gui dialog for setting the user's status and status message.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.StatusDialogResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.StatusDialogResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.StatusDialogResult",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Dialogs.StatusDialogResult.yml\" sourcestartlinenumber=\"1\">Result returned from the status dialog.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.UpdateConfirmDialog.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs.UpdateConfirmDialog",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Dialogs.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Dialogs.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Dialogs",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.DroppedFileParser.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Helpers.DroppedFileParser.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Helpers.DroppedFileParser",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.DroppedFileParser.yml\" sourcestartlinenumber=\"1\">Recognizes a dragged-and-dropped file (or files) that a terminal delivers into the input as an\nabsolute path. Terminals differ: some paste the whole path at once, others send it character by\ncharacter; either way this checks whether the current input text resolves to existing file(s).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.EmojiHelper.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Helpers.EmojiHelper.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Helpers.EmojiHelper",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.EmojiHelper.yml\" sourcestartlinenumber=\"1\">Converts emoji grapheme clusters to text shortcodes for safe TUI rendering.\nTerminal width calculations for emoji are unreliable across different terminals,\nso we replace them with fixed-width ASCII shortcodes for display only.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.HexColorHelper.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Helpers.HexColorHelper.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Helpers.HexColorHelper",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.HexColorHelper.yml\" sourcestartlinenumber=\"1\">Helper to parse hex colors to Terminal.Gui Attributes.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.NickColorHelper.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Helpers.NickColorHelper.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Helpers.NickColorHelper",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.Helpers.NickColorHelper.yml\" sourcestartlinenumber=\"1\">Deterministic per-nick colors for users who haven't picked a nickname color.\nThe same nick always maps to the same palette entry (classic IRC client behavior),\nso a busy channel stays scannable without any configuration.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.Helpers.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.Helpers.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.Helpers",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.ListSources.ChannelListSource.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.ListSources.ChannelListSource.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.ListSources.ChannelListSource",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.ListSources.ChannelListSource.yml\" sourcestartlinenumber=\"1\">Custom list data source for colored channel list rendering.\nActive channel gets a &gt; indicator, unread channels are bright with a count badge.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.ListSources.SearchListSource.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.ListSources.SearchListSource.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.ListSources.SearchListSource",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.ListSources.SearchListSource.yml\" sourcestartlinenumber=\"1\">List data source for the search dialog with filtering and colored rendering.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.ListSources.UserListSource.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.ListSources.UserListSource.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.ListSources.UserListSource",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.ListSources.UserListSource.yml\" sourcestartlinenumber=\"1\">Custom list data source for the online users panel with per-user nickname colors.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.ListSources.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.ListSources.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.ListSources",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.MainWindow.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.MainWindow.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI.MainWindow",
      "Summary": "<p sourcefile=\"_api_meta/client/EchoHub.Client.UI.MainWindow.yml\" sourcestartlinenumber=\"1\">Main Terminal.Gui window for the EchoHub chat client.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.UI.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.UI.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client.UI",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/client/EchoHub.Client.yml",
      "output": {
        ".html": {
          "relative_path": "api/client/EchoHub.Client.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Client",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Constants.HubConstants.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Constants.HubConstants.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Constants.HubConstants",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Constants.MessageConventions.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Constants.MessageConventions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Constants.MessageConventions",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Constants.MessageConventions.yml\" sourcestartlinenumber=\"1\">Cross-protocol message conventions. Action messages (<code>/me</code>) use the IRC CTCP ACTION\nwire format 0x01 + &quot;ACTION &quot; + text + 0x01 as the stored content, so IRC clients\ninteroperate natively (irssi's /me arrives in exactly this shape) and the TUI renders\n&quot;* nick text&quot;. In end-to-end encrypted rooms the marker encrypts along with the text.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Constants.ValidationConstants.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Constants.ValidationConstants.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Constants.ValidationConstants",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Constants.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Constants.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Constants",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.ChannelListItem.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.ChannelListItem.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.ChannelListItem",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IChannelService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IChannelService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IChannelService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IChatBroadcaster.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IChatBroadcaster.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IChatBroadcaster",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IChatService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IChatService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IChatService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IEchoHubClient.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IEchoHubClient.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IEchoHubClient",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Contracts.IEchoHubClient.yml\" sourcestartlinenumber=\"1\">Methods the server can invoke on connected clients.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IMessageEncryptionService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IMessageEncryptionService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IMessageEncryptionService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.IUserService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.IUserService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts.IUserService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Contracts.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Contracts.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Contracts",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ApiResponse-1.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ApiResponse-1.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ApiResponse<T>",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ApiResponse.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ApiResponse.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ApiResponse",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.AssignRoleRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.AssignRoleRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.AssignRoleRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.AttachmentDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.AttachmentDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.AttachmentDto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.AttachmentDto.yml\" sourcestartlinenumber=\"1\">A file attached to a message. <xref href=\"EchoHub.Core.DTOs.AttachmentDto.AsciiPreview\" data-throw-if-not-resolved=\"false\"></xref> holds the color-tag art for\nimages (null otherwise). For end-to-end encrypted channels the content behind\n<xref href=\"EchoHub.Core.DTOs.AttachmentDto.Url\" data-throw-if-not-resolved=\"false\"></xref> and the preview are ciphertext the server cannot read.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.AvatarUploadResponse.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.AvatarUploadResponse.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.AvatarUploadResponse",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.BanRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.BanRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.BanRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelCryptoDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ChannelCryptoDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ChannelCryptoDto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.ChannelCryptoDto.yml\" sourcestartlinenumber=\"1\">Public crypto metadata for a channel — enough for a client to derive its join\ncredential from a passphrase. Never includes the wrapped room key.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ChannelDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ChannelDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelError.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ChannelError.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ChannelError",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelMetaDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ChannelMetaDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ChannelMetaDto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.ChannelMetaDto.yml\" sourcestartlinenumber=\"1\">Human-facing summary of a channel (the <code>/meta</code> command). For encrypted channels the\nserver still knows these figures — count, timestamps, and stored blob sizes — even though it\ncannot read the content itself. <xref href=\"EchoHub.Core.DTOs.ChannelMetaDto.EstimatedSizeBytes\" data-throw-if-not-resolved=\"false\"></xref> is the sum of stored\nattachment blob sizes plus message text length, so it is an estimate, not an exact on-disk total.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ChannelOperationResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ChannelOperationResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ChannelOperationResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.CreateChannelRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.CreateChannelRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.CreateChannelRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.CreateInviteRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.CreateInviteRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.CreateInviteRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.DeleteAccountRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.DeleteAccountRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.DeleteAccountRequest",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.DeleteAccountRequest.yml\" sourcestartlinenumber=\"1\">Password re-confirmation for destructive self-service account actions.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.EmbedDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.EmbedDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.EmbedDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.EncryptionKeyResponse.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.EncryptionKeyResponse.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.EncryptionKeyResponse",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ErrorResponse.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ErrorResponse.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ErrorResponse",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ExportedAttachmentDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ExportedAttachmentDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ExportedAttachmentDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ExportedMessageDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ExportedMessageDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ExportedMessageDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.InviteDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.InviteDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.InviteDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.JoinChannelResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.JoinChannelResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.JoinChannelResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.KickRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.KickRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.KickRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.LoginRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.LoginRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.LoginRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.LoginResponse.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.LoginResponse.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.LoginResponse",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.MessageDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.MessageDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.MessageDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.MuteRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.MuteRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.MuteRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.PaginatedResponse-1.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.PaginatedResponse-1.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.PaginatedResponse<T>",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.RefreshRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.RefreshRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.RefreshRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.RegisterRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.RegisterRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.RegisterRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.RekeyChannelRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.RekeyChannelRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.RekeyChannelRequest",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.RekeyChannelRequest.yml\" sourcestartlinenumber=\"1\">Passphrase change for an encrypted channel: the client proves knowledge of the old\npassphrase (old auth key), then supplies the re-wrapped room key under the new one.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ReplyRefDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ReplyRefDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ReplyRefDto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.ReplyRefDto.yml\" sourcestartlinenumber=\"1\">Reference to the message a reply targets. <xref href=\"EchoHub.Core.DTOs.ReplyRefDto.Content\" data-throw-if-not-resolved=\"false\"></xref> is treated exactly like\nmessage content on the wire: transport-encrypted, and for end-to-end encrypted rooms it is\nroom ciphertext the client must decrypt (the server truncates only plaintext snippets).\nNull on a <xref href=\"EchoHub.Core.DTOs.MessageDto\" data-throw-if-not-resolved=\"false\"></xref> when the original message no longer exists.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.SendMessageRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.SendMessageRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.SendMessageRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.SendUrlRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.SendUrlRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.SendUrlRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.ServerStatusDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.ServerStatusDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.ServerStatusDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UpdateProfileRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UpdateProfileRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UpdateProfileRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UpdateStatusRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UpdateStatusRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UpdateStatusRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UpdateTopicRequest.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UpdateTopicRequest.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UpdateTopicRequest",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserDataExportDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserDataExportDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserDataExportDto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.DTOs.UserDataExportDto.yml\" sourcestartlinenumber=\"1\">Everything the server holds about a user, as stored. For end-to-end encrypted rooms the\nmessage content in here is room ciphertext — the server cannot include plaintext it never had.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserError.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserError.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserError",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserOperationResult.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserOperationResult.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserOperationResult",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserPresenceDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserPresenceDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserPresenceDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.UserProfileDto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.UserProfileDto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs.UserProfileDto",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.DTOs.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.DTOs.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.DTOs",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.Attachment.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.Attachment.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.Attachment",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Models.Attachment.yml\" sourcestartlinenumber=\"1\">A file attached to a message (image, audio, or any file). A message may carry\nzero or more attachments alongside its text content (Discord-style).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.AttachmentKind.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.AttachmentKind.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.AttachmentKind",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Models.AttachmentKind.yml\" sourcestartlinenumber=\"1\">The kind of a message attachment. Determines how the client renders it\n(ASCII preview for images, a play affordance for audio, a download line for files).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.Channel.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.Channel.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.Channel",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.ChannelMembership.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.ChannelMembership.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.ChannelMembership",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.InviteCode.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.InviteCode.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.InviteCode",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Models.InviteCode.yml\" sourcestartlinenumber=\"1\">A registration invite code. When the server runs with <code>Server:Registration = &quot;invite&quot;</code>,\nnew accounts (REST and IRC alike) require a valid, unexpired, not-fully-used code.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.Message.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.Message.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.Message",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.MessageType.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.MessageType.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.MessageType",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.RefreshToken.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.RefreshToken.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.RefreshToken",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.ServerRole.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.ServerRole.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.ServerRole",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.ServerStatsReport.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.ServerStatsReport.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.ServerStatsReport",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Models.ServerStatsReport.yml\" sourcestartlinenumber=\"1\">A snapshot of server activity over one reporting window, produced periodically by the\nstats-report background job. Each report is logged as pretty-printed JSON and persisted\nfor historical trend analysis. The window is &quot;since the previous report&quot; (or since startup\nfor the first report of a run).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.User.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.User.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.User",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.UserStatus.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.UserStatus.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models.UserStatus",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Models.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Models.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Models",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Security.RoomCrypto.DerivedKeys.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Security.RoomCrypto.DerivedKeys.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Security.RoomCrypto.DerivedKeys",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Security.RoomCrypto.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Security.RoomCrypto.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Security.RoomCrypto",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Security.RoomCrypto.yml\" sourcestartlinenumber=\"1\">Client-side envelope encryption for private (end-to-end encrypted) channels.</p>\n<p sourcefile=\"_api_meta/core/EchoHub.Core.Security.RoomCrypto.yml\" sourcestartlinenumber=\"3\">Design: at creation the client generates a random 256-bit room content key (RCK)\nthat encrypts all room content. The RCK is stored on the server <em sourcefile=\"_api_meta/core/EchoHub.Core.Security.RoomCrypto.yml\" sourcestartlinenumber=\"4\">wrapped</em>\n(AES-GCM encrypted) by a key derived from the passphrase, next to a BCrypt hash\nof a separately derived auth key used as the join gate. The passphrase, the\nkey-encryption key, and the RCK never leave the client, so the server can gate\njoins and count/measure content without being able to read it. Changing the\npassphrase only re-wraps the RCK — history is never re-encrypted.</p>\n<p sourcefile=\"_api_meta/core/EchoHub.Core.Security.RoomCrypto.yml\" sourcestartlinenumber=\"11\">Derivation: PBKDF2-SHA256(passphrase, salt, 210000 iterations) → 64 bytes;\nfirst 32 bytes are the auth key (sent to the server as lowercase hex),\nlast 32 bytes are the key-encryption key (never sent).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Security.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Security.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Security",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Services.AsciiBannerService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Services.AsciiBannerService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Services.AsciiBannerService",
      "Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Services.AsciiBannerService.yml\" sourcestartlinenumber=\"1\">Renders short text as a 5-row block-character banner (the <code>/banner</code> command).\nEntirely local — a hand-rolled figlet-style font, no dependencies, no network.\nOutput is plain message content, so it travels (and encrypts) like any other text.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Services.FileValidationHelper.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Services.FileValidationHelper.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Services.FileValidationHelper",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Services.ImageToAsciiService.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Services.ImageToAsciiService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Services.ImageToAsciiService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/core/EchoHub.Core.Services.yml",
      "output": {
        ".html": {
          "relative_path": "api/core/EchoHub.Core.Services.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Core.Services",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcBroadcaster.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcBroadcaster.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcBroadcaster",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcClientConnection.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcClientConnection.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcClientConnection",
      "Summary": "<p sourcefile=\"_api_meta/server-irc/EchoHub.Server.Irc.IrcClientConnection.yml\" sourcestartlinenumber=\"1\">Manages a single IRC client TCP connection.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcCommandHandler.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcCommandHandler.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcCommandHandler",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcGatewayService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcGatewayService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcGatewayService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcMessage.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcMessage.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcMessage",
      "Summary": "<p sourcefile=\"_api_meta/server-irc/EchoHub.Server.Irc.IrcMessage.yml\" sourcestartlinenumber=\"1\">Parsed representation of an IRC protocol line.\nFormat: [:prefix] COMMAND [params...] [:trailing]</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcMessageFormatter.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcMessageFormatter.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcMessageFormatter",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcNumericReply.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcNumericReply.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcNumericReply",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcOptions.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcOptions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcOptions",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.IrcServiceExtensions.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.IrcServiceExtensions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc.IrcServiceExtensions",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server-irc/EchoHub.Server.Irc.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-irc/EchoHub.Server.Irc.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Irc",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Auth.JwtTokenService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Auth.JwtTokenService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Auth.JwtTokenService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Auth.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Auth.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Auth",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Config.ServerLogsOptions.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Config.ServerLogsOptions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Config.ServerLogsOptions",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.ServerLogsOptions.yml\" sourcestartlinenumber=\"1\">Live server-log room settings, bound from the &quot;ServerLogs&quot; config section (env override:\n<code>ServerLogs__Enabled</code> etc.). When enabled, a read-only system channel is auto-created\nand log events are streamed to it live — log lines are never stored as messages in the\ndatabase; the rolling Serilog log files remain the only persistence.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Config.SpamOptions.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Config.SpamOptions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Config.SpamOptions",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.SpamOptions.yml\" sourcestartlinenumber=\"1\">Anti-spam thresholds, bound from the &quot;Spam&quot; config section. Defaults are lenient enough\nthat a fast typist never trips them; Mods and above are always exempt.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Config.StatsOptions.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Config.StatsOptions.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Config.StatsOptions",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.StatsOptions.yml\" sourcestartlinenumber=\"1\">Periodic server-stats report settings, bound from the &quot;Stats&quot; config section (env override:\n<code>Stats__Enabled</code> etc.). When enabled, a background job periodically snapshots server\nactivity, logs it as pretty-printed JSON, and persists it to the database.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Config.UploadLimits.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Config.UploadLimits.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Config.UploadLimits",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.UploadLimits.yml\" sourcestartlinenumber=\"1\">Admin-configurable upload limits, bound from the <code>Uploads</code> configuration section.\nSizes are expressed in megabytes in configuration; the <code>*Bytes</code> accessors convert them\nfor enforcement. Every default mirrors <xref href=\"EchoHub.Core.Constants.HubConstants\" data-throw-if-not-resolved=\"false\"></xref> so an absent or partial\n<code>Uploads</code> section preserves the historical built-in limits.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Config.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Config.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Config",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.AuthController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.AuthController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.AuthController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.ChannelsController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.ChannelsController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.ChannelsController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.FilesController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.FilesController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.FilesController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.InvitesController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.InvitesController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.InvitesController",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Controllers.InvitesController.yml\" sourcestartlinenumber=\"1\">Invite-code management for invite-gated registration (Admin+ only).\nCodes live in this server's own database — there is no central service.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.ModerationController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.ModerationController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.ModerationController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.ServerController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.ServerController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.ServerController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.UsersController.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.UsersController.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers.UsersController",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Controllers.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Controllers.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Controllers",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.EchoHubDbContext.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.EchoHubDbContext.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.EchoHubDbContext",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddAttachmentFileSize.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddAttachmentFileSize.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddAttachmentFileSize",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelEncryptionEnvelope.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddChannelEncryptionEnvelope.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddChannelEncryptionEnvelope",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelIsPublic.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddChannelIsPublic.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddChannelIsPublic",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelIsSystem.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddChannelIsSystem.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddChannelIsSystem",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelMembership.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddChannelMembership.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddChannelMembership",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddChannelPasswordHash.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddChannelPasswordHash.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddChannelPasswordHash",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddEncryptionSupport.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddEncryptionSupport",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddInvitesAndReplies.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddInvitesAndReplies.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddInvitesAndReplies",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddMessageAttachments.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddMessageAttachments.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddMessageAttachments",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddMessageEmbed.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddMessageEmbed.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddMessageEmbed",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddModerationRoles.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddModerationRoles.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddModerationRoles",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.AddServerStatsReports",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.InitialCreate.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.InitialCreate.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations.InitialCreate",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.Migrations.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data.Migrations",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Data.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Data.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Data",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Hubs.ChatHub.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Hubs.ChatHub.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Hubs.ChatHub",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Hubs.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Hubs.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Hubs",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ChannelService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ChannelService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ChannelService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ChatService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ChatService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ChatService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.DirectoryClaimStore.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.DirectoryClaimStore.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.DirectoryClaimStore",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.DirectoryClaimStore.yml\" sourcestartlinenumber=\"1\">Persists and exposes the EchoHubSpace directory claim — the opaque token issued on first\nregistration and the row's stable <code>ServerId</code>. Also surfaces ephemeral registration\nstatus (success/failure code, conflicting hosts) for operator-facing endpoints.</p>\n<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.DirectoryClaimStore.yml\" sourcestartlinenumber=\"5\">Persistence uses atomic write (tmp + rename). Treat the file contents as a secret.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.FileCleanupService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.FileCleanupService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.FileCleanupService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.FileStorageService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.FileStorageService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.FileStorageService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.LinkEmbedService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.LinkEmbedService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.LinkEmbedService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.MessageEncryptionService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.MessageEncryptionService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.MessageEncryptionService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.MuteExpirationService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.MuteExpirationService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.MuteExpirationService",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.MuteExpirationService.yml\" sourcestartlinenumber=\"1\">Background service that periodically unmutes users whose timed mute has expired.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.PresenceTracker.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.PresenceTracker.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.PresenceTracker",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.RegistrationStatus.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.RegistrationStatus.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.RegistrationStatus",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerDirectoryService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerDirectoryService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerDirectoryService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerLogs.LogBacklogEntry.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerLogs.LogBacklogEntry.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerLogs.LogBacklogEntry",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.ServerLogs.LogBacklogEntry.yml\" sourcestartlinenumber=\"1\">A backlog entry read from the log file: one timestamped log line plus any continuation\nlines (exception stack traces) that followed it.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerLogs.ServerLogsService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerLogs.ServerLogsService",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsService.yml\" sourcestartlinenumber=\"1\">Shared logic for the live log room: room identity, the role gate, and reading the backlog\ntail from the current rolling log file. The file stays the only persistence — log lines\nare never stored as messages.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsSink.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerLogs.ServerLogsSink.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerLogs.ServerLogsSink",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsSink.yml\" sourcestartlinenumber=\"1\">Serilog sink feeding the live log room. Events are queued in a bounded drop-oldest buffer\nand consumed by <xref href=\"EchoHub.Server.Services.ServerLogs.ServerLogsStreamService\" data-throw-if-not-resolved=\"false\"></xref>; nothing is written to the database.\nEvents emitted by the streaming pipeline itself (the stream service and SignalR transport\ninternals) are dropped here so a broadcast that logs — e.g. a transport warning on a dead\nconnection — can never enter a log → broadcast → log feedback loop.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsStreamService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerLogs.ServerLogsStreamService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerLogs.ServerLogsStreamService",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsStreamService.yml\" sourcestartlinenumber=\"1\">Streams queued log events to the live log room as ephemeral messages: SignalR only (the\nIRC gateway never sees them) and no database rows. Ensures the room exists before\nstreaming, recreating it on the fly if it was deleted.</p>\n<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.ServerLogs.ServerLogsStreamService.yml\" sourcestartlinenumber=\"5\">This class must never log from its streaming path — its namespace is excluded by\n<xref href=\"EchoHub.Server.Services.ServerLogs.ServerLogsSink\" data-throw-if-not-resolved=\"false\"></xref> as a second line of defense, but the primary rule is simply\nnot to log per event, otherwise every streamed line would spawn another.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.ServerLogs.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.ServerLogs.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.ServerLogs",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.SignalRBroadcaster.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.SignalRBroadcaster.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.SignalRBroadcaster",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.SpamGuard.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.SpamGuard.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.SpamGuard",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.SpamGuard.yml\" sourcestartlinenumber=\"1\">In-memory, per-user spam protection consulted from <xref href=\"EchoHub.Server.Services.ChatService\" data-throw-if-not-resolved=\"false\"></xref> (messages,\njoins) and <xref href=\"EchoHub.Server.Services.ChannelService\" data-throw-if-not-resolved=\"false\"></xref> (channel creation), so every ingress protocol —\nSignalR and IRC alike — shares the same limits. State is per-process and never persisted;\nauto-mutes land in the normal mute store. Operates only on content the server already\nstores (for end-to-end encrypted rooms that is ciphertext) — nothing is decrypted.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.SpamVerdict.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.SpamVerdict.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.SpamVerdict",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.SpamVerdictKind.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.SpamVerdictKind.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.SpamVerdictKind",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsCollector.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.Stats.ServerStatsCollector",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsCollector.yml\" sourcestartlinenumber=\"1\">Thread-safe, in-memory accumulator for server-activity counters that have no natural\ndatabase timestamp to query after the fact — session connects/disconnects, moderation\nactions, and peak concurrency. The periodic stats-report job snapshots and resets these\nonce per reporting window. Registered as a singleton; every increment is lock-free so it\nis safe to call from hot paths (connect/disconnect).</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsReportService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.Stats.ServerStatsReportService",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsReportService.yml\" sourcestartlinenumber=\"1\">Background job that periodically snapshots server activity over a window, logs it as\npretty-printed JSON (which also surfaces in the live server-logs room), and persists it to\nthe database for historical trends. Interval and retention are configurable via the &quot;Stats&quot;\nsection; the default cadence is every 6 hours.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.StatsCounters.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.Stats.StatsCounters.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.Stats.StatsCounters",
      "Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.StatsCounters.yml\" sourcestartlinenumber=\"1\">Immutable snapshot of the counters held by <xref href=\"EchoHub.Server.Services.Stats.ServerStatsCollector\" data-throw-if-not-resolved=\"false\"></xref>.</p>\n"
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.Stats.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.Stats",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.UserService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.UserService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services.UserService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Services.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Services.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Services",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Setup.DataMigrationService.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Setup.DataMigrationService.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Setup.DataMigrationService",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Setup.DatabaseSetup.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Setup.DatabaseSetup.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Setup.DatabaseSetup",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Setup.FirstRunSetup.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Setup.FirstRunSetup.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Setup.FirstRunSetup",
      "Summary": null
    },
    {
      "type": "ManagedReference",
      "source_relative_path": "_api_meta/server/EchoHub.Server.Setup.yml",
      "output": {
        ".html": {
          "relative_path": "api/server/EchoHub.Server.Setup.html"
        }
      },
      "version": "",
      "Uid": null,
      "IsMRef": true,
      "Title": "EchoHub.Server.Setup",
      "Summary": null
    },
    {
      "type": "Conceptual",
      "source_relative_path": "api/client-articles/index.md",
      "output": {
        ".html": {
          "relative_path": "api/client-articles/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "api/client-articles/toc.yml",
      "output": {
        ".html": {
          "relative_path": "api/client-articles/toc.html"
        },
        ".json": {
          "relative_path": "api/client-articles/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "api/core-articles/index.md",
      "output": {
        ".html": {
          "relative_path": "api/core-articles/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "api/core-articles/toc.yml",
      "output": {
        ".html": {
          "relative_path": "api/core-articles/toc.html"
        },
        ".json": {
          "relative_path": "api/core-articles/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "api/index.md",
      "output": {
        ".html": {
          "relative_path": "api/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "api/server-articles/index.md",
      "output": {
        ".html": {
          "relative_path": "api/server-articles/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "api/server-articles/toc.yml",
      "output": {
        ".html": {
          "relative_path": "api/server-articles/toc.html"
        },
        ".json": {
          "relative_path": "api/server-articles/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "api/toc.yml",
      "output": {
        ".html": {
          "relative_path": "api/toc.html"
        },
        ".json": {
          "relative_path": "api/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/architecture.md",
      "output": {
        ".html": {
          "relative_path": "articles/architecture.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/configuration.md",
      "output": {
        ".html": {
          "relative_path": "articles/configuration.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/docker.md",
      "output": {
        ".html": {
          "relative_path": "articles/docker.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/encrypted-rooms.md",
      "output": {
        ".html": {
          "relative_path": "articles/encrypted-rooms.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/encryption.md",
      "output": {
        ".html": {
          "relative_path": "articles/encryption.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/getting-started.md",
      "output": {
        ".html": {
          "relative_path": "articles/getting-started.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/irc-gateway.md",
      "output": {
        ".html": {
          "relative_path": "articles/irc-gateway.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/messages-and-attachments.md",
      "output": {
        ".html": {
          "relative_path": "articles/messages-and-attachments.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/moderation.md",
      "output": {
        ".html": {
          "relative_path": "articles/moderation.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/notification-sounds.md",
      "output": {
        ".html": {
          "relative_path": "articles/notification-sounds.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "articles/toc.yml",
      "output": {
        ".html": {
          "relative_path": "articles/toc.html"
        },
        ".json": {
          "relative_path": "articles/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "articles/tui-guide.md",
      "output": {
        ".html": {
          "relative_path": "articles/tui-guide.html"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Agent/README.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Agent/README.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Agent/repo-map.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Agent/repo-map.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Agent/symbol-graph.json",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Agent/symbol-graph.json"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/index.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/index.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/AppOrchestrator.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/AppOrchestrator.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Commands/CommandHandler.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Commands/CommandHandler.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Config/ClientConfig.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Config/ClientConfig.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Config/ConfigManager.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Config/ConfigManager.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Program.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Program.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ApiClient.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ApiClient.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AsyncRunner.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AsyncRunner.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AudioPlaybackService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AudioPlaybackService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AvatarHelper.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/AvatarHelper.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClientEncryptionService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClientEncryptionService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClipboardFiles.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClipboardFiles.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClipboardImage.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ClipboardImage.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ConnectionManager.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/ConnectionManager.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/EchoHubConnection.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/EchoHubConnection.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/NativeFolderPicker.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/NativeFolderPicker.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/NotificationSoundService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/NotificationSoundService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/OutgoingAttachment.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/OutgoingAttachment.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/PathSetup.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/PathSetup.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/RoomKeyProtector.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/RoomKeyProtector.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/RoomKeyStore.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/RoomKeyStore.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UpdateBackupService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UpdateBackupService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UpdateChecker.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UpdateChecker.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UserSession.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Services/UserSession.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Themes/Theme.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Themes/Theme.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/Themes/ThemeManager.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/Themes/ThemeManager.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatColors.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatColors.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatLine.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatLine.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatListSource.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatListSource.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatMessageManager.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatSegment.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/ChatSegment.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/RenderHelpers.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/RenderHelpers.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/WelcomeBanner.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Chat/WelcomeBanner.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/AudioPlayerDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/AudioPlayerDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ChannelPasswordDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ChannelPasswordDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ConnectDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ConnectDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/CreateChannelDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ProfileEditDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ProfileEditDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ProfileViewDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/ProfileViewDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/SearchDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/SearchDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/StatusDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/StatusDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/UpdateConfirmDialog.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Dialogs/UpdateConfirmDialog.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/DroppedFileParser.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/DroppedFileParser.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/EmojiHelper.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/EmojiHelper.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/HexColorHelper.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/HexColorHelper.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/Helpers/NickColorHelper.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/ChannelListSource.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/ChannelListSource.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/SearchListSource.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/SearchListSource.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/UserListSource.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/ListSources/UserListSource.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Client/UI/MainWindow.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Client/UI/MainWindow.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/HubConstants.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/HubConstants.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/MessageConventions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/MessageConventions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/ValidationConstants.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Constants/ValidationConstants.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChannelService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChannelService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChatBroadcaster.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChatBroadcaster.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChatService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IChatService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IEchoHubClient.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IEchoHubClient.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IMessageEncryptionService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IUserService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Contracts/IUserService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/AccountDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/AccountDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/AuthDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/AuthDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ChatDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ChatDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/CommonDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/CommonDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/InviteDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/InviteDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ModerationDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ModerationDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ProfileDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ProfileDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ServerDtos.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/DTOs/ServerDtos.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Attachment.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Attachment.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/AttachmentKind.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/AttachmentKind.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Channel.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Channel.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ChannelMembership.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ChannelMembership.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/InviteCode.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/InviteCode.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Message.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/Message.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/MessageType.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/MessageType.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/RefreshToken.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/RefreshToken.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ServerRole.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ServerRole.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ServerStatsReport.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/ServerStatsReport.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/User.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/User.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Models/UserStatus.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Models/UserStatus.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Security/RoomCrypto.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Security/RoomCrypto.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Services/AsciiBannerService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Services/AsciiBannerService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Services/FileValidationHelper.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Services/FileValidationHelper.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Core/Services/ImageToAsciiService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Core/Services/ImageToAsciiService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcBroadcaster.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcBroadcaster.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcClientConnection.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcClientConnection.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcCommandHandler.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcCommandHandler.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcGatewayService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcGatewayService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcMessage.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcMessage.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcMessageFormatter.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcMessageFormatter.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcNumericReply.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcNumericReply.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcOptions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcOptions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcServiceExtensions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server.Irc/IrcServiceExtensions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Auth/JwtTokenService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Auth/JwtTokenService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Config/ServerLogsOptions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Config/ServerLogsOptions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Config/SpamOptions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Config/SpamOptions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Config/StatsOptions.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Config/StatsOptions.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Config/UploadLimits.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Config/UploadLimits.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/AuthController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/AuthController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ChannelsController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ChannelsController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/FilesController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/FilesController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/InvitesController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/InvitesController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ModerationController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ModerationController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ServerController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/ServerController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/UsersController.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Controllers/UsersController.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Data/EchoHubDbContext.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Data/EchoHubDbContext.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Hubs/ChatHub.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Hubs/ChatHub.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Program.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Program.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ChannelService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ChannelService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ChatService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ChatService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/DirectoryClaimStore.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/DirectoryClaimStore.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/FileCleanupService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/FileCleanupService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/FileStorageService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/FileStorageService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/LinkEmbedService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/LinkEmbedService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/MessageEncryptionService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/MessageEncryptionService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/MuteExpirationService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/MuteExpirationService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/PresenceTracker.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/PresenceTracker.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerDirectoryService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerDirectoryService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsSink.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsSink.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsStreamService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/ServerLogs/ServerLogsStreamService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/SignalRBroadcaster.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/SignalRBroadcaster.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/SpamGuard.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/SpamGuard.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Services/UserService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Services/UserService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/DataMigrationService.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/DataMigrationService.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/DatabaseSetup.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/DatabaseSetup.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/FirstRunSetup.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Server/Setup/FirstRunSetup.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Code/src/EchoHub.Tests/Irc/TestHelpers.cs.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Code/src/EchoHub.Tests/Irc/TestHelpers.cs.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/README.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/README.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/Architecture.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/Architecture.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/Onboarding.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/Onboarding.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/Workflows/controller.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/Workflows/controller.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/Workflows/service.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/Workflows/service.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/api-client-authentication.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/api-client-authentication.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/attachments-transfer.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/attachments-transfer.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/clipboard-tools.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/clipboard-tools.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/command-handling.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/command-handling.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/encryption-roomkeys.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/encryption-roomkeys.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/real-time-connection.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/real-time-connection.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/ui-theming.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/ui-theming.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/Synthesis/update-management.md",
      "output": {
        "resource": {
          "relative_path": "auriondocs/Synthesis/update-management.md"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "auriondocs/index.html",
      "output": {
        "resource": {
          "relative_path": "auriondocs/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/index.md",
      "output": {
        ".html": {
          "relative_path": "changelog/index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "changelog/toc.yml",
      "output": {
        ".html": {
          "relative_path": "changelog/toc.html"
        },
        ".json": {
          "relative_path": "changelog/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.1.0.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.1.0.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.1.1.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.1.1.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.0.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.0.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.1.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.1.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.10.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.10.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.11.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.11.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.12.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.12.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.13.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.13.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.14.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.14.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.15.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.15.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.16.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.16.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.2.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.2.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.3.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.3.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.4.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.4.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.5.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.5.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.6.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.6.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.7.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.7.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.8.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.8.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "changelog/v0.2.9.md",
      "output": {
        ".html": {
          "relative_path": "changelog/v0.2.9.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/authentication.md",
      "output": {
        ".html": {
          "relative_path": "flows/authentication.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/channels.md",
      "output": {
        ".html": {
          "relative_path": "flows/channels.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/connection.md",
      "output": {
        ".html": {
          "relative_path": "flows/connection.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/flows.md",
      "output": {
        ".html": {
          "relative_path": "flows/flows.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/media.md",
      "output": {
        ".html": {
          "relative_path": "flows/media.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/messaging.md",
      "output": {
        ".html": {
          "relative_path": "flows/messaging.html"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "flows/moderation.md",
      "output": {
        ".html": {
          "relative_path": "flows/moderation.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "flows/toc.yml",
      "output": {
        ".html": {
          "relative_path": "flows/toc.html"
        },
        ".json": {
          "relative_path": "flows/toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Resource",
      "source_relative_path": "images/hue_icon.svg",
      "output": {
        "resource": {
          "relative_path": "images/hue_icon.svg"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "index.md",
      "output": {
        ".html": {
          "relative_path": "index.html"
        }
      },
      "version": ""
    },
    {
      "type": "Toc",
      "source_relative_path": "toc.yml",
      "output": {
        ".html": {
          "relative_path": "toc.html"
        },
        ".json": {
          "relative_path": "toc.json"
        }
      },
      "version": ""
    },
    {
      "type": "Conceptual",
      "source_relative_path": "todo.md",
      "output": {
        ".html": {
          "relative_path": "todo.html"
        }
      },
      "version": ""
    }
  ],
  "groups": [
    {
      "xrefmap": "xrefmap.yml"
    }
  ]
}