Table of Contents

Namespace McServerLauncher.Views

Classes

AddEditServerDialog
CreateServerDialog
DeleteServerDialog
InstallLoaderDialog

Installs a mod loader (Fabric for now) into an EXISTING server folder, turning a vanilla server into a moddable one. On success it updates the passed ServerConfig in place and the dialog returns true.

LogBatcher

Buffered progress logger for dialog TextBoxes (EFI-6): the Forge installer prints thousands of lines, and appending each one directly (Text += line) froze the UI. Lines are buffered and flushed a few times per second, keeping only the most recent McServerLauncher.Views.LogBatcher.MaxLines. Extracted from CreateServerDialog and InstallLoaderDialog, which kept two identical copies of this logic. Call Stop() from the dialog's OnClosed.

MainWindow
MessageBox

Small cross-platform message box helper (Avalonia has no built-in one). Provides an information/warning dialog and a yes/no confirmation, both modal and localized.

MissingDependenciesDialog

Shown before starting a server whose mods or plugins are waiting on something that is not there.

MissingDependencyRow

One missing thing, shaped for the list in the dialog.

ModDetailsView
PlayitApiKeyDialog

Connects the user's Playit account. Primary path (partner configured): the third-party setup-code flow — the user gets a setup code from playit.gg (opened only on a click), pastes it, and the dialog exchanges it for a per-user self-managed agent (secret key + id) via PlayitPartnerService. Fallback (partner NOT configured, e.g. dev builds): the legacy behavior of pasting a Playit write key. Which one ran is signalled by IsSetupResult.

PlayitConnection

Shared "connect your Playit account" flow, used both from the per-server tunnel actions and from the Settings dialog. Encapsulates the setup-code dialog, persisting the resulting agent secret (encrypted) and wiring PlayitApiService, so the user never touches keys or files.

ServerBackupsView
ServerConfigDialog
ServerModsView
ServerTypePicker

Picking the server type as a grid of cards rather than a drop-down of bare names.

SettingsDialog

App settings, grouped in one place (language, notifications, Playit connection, and room for more later). Language and notifications are edited on a copy and applied by the caller on Save; the Playit connection is an action that persists immediately (connect/disconnect).

ToastService

Small toast notifications drawn as borderless always-on-top windows in the bottom-right corner of the screen (pure Avalonia, no external dependencies, works even while the main window is hidden in the tray). They never steal focus, auto-dismiss after a few seconds, and clicking one restores the main window. Used for "player joined" / "server crashed" style events.

WhatsNewDialog

Shows what's-new notes after an update, accumulating every version the user skipped.

Enums

MissingDependenciesChoice

What the user decided about a server whose content is missing something.