Skip to content

Repository files navigation

SBAzeroth

SBAzeroth is a desktop control center for monitoring and safely operating a local AzerothCore deployment.

It combines a Wails desktop shell with a Go backend and a React/TypeScript frontend. The current desktop target is macOS; the frontend can also run as a browser preview with mock data.

Version: 1.1.0

Screenshots

Dashboard

The dashboard summarizes server health, realm activity, resource usage, service state, and active dungeon runs.

SBAzeroth dashboard

Services

The services view exposes the managed authserver and worldserver processes, their readiness state, ports, uptime, and lifecycle actions.

SBAzeroth services

Diagnostics

Diagnostics collects actionable health checks and provides a safe support bundle without configuration files, environment variables, secrets, or absolute deployment paths.

SBAzeroth diagnostics

Monitoring

Monitoring presents CPU, memory, disk, process, port, and readiness telemetry for the local deployment.

SBAzeroth monitoring

Features

Server lifecycle

  • Start services in the safe order: authserver, readiness check, worldserver, readiness check.
  • Stop gracefully with saveall, server shutdown 10, and SIGINT for authserver.
  • Restart as a strict Stop/Start sequence.
  • Show step-by-step progress, failures, and rollback information.
  • Prevent concurrent lifecycle operations.
  • Protect external or read-only processes from destructive actions.
  • Block ordinary window closing while managed processes are active, so the world can be saved first.

SBAzeroth only controls processes started by the current application session. Processes found after a restart are treated as external/read-only; a PID alone does not grant permission to send commands.

Dashboard and operations

  • Server hero with operational status, realm type, XP rates, and deployment identity.
  • Current server status and service readiness.
  • Online character count, faction balance, groups, raids, average latency, and realm activity.
  • Active dungeon-run summary and links to investigation screens.
  • Dedicated views for services, diagnostics, monitoring, logs, console, and players.

Logs and console

  • Live bounded tail for authserver and worldserver output.
  • Pause and autoscroll controls.
  • Search and filters by source and severity.
  • Copy visible log lines.
  • Managed worldserver console with safety-oriented command handling.
  • Runtime logs stored under .sbazeroth/runtime/ with 0600 permissions.
  • Log rotation limited to a 16 MiB active file and one .1 backup.

Dungeon Runner

Dungeon Runner is the main workflow for preparing and observing automated dungeon parties.

  • Build parties from eligible online characters.
  • Filter by dungeon, level, class, faction, and role.
  • Respect faction locks and ignored players.
  • Balance automatic party selection across available characters.
  • Start and monitor dungeon runs.
  • Show active runs, results, party composition, bot levels, and run history.
  • Repeat a previous party and run multiple parties as a batch.

SBAzeroth Dungeon Runner

Raid Runner

Raid Runner prepares and monitors raid-sized bot groups through the Raid Runner integration built into mod-dungeon-clear.

  • Open an active raid automatically when the application starts.
  • Select eligible RND/addclass bots in the application from their active talent builds and pass explicit mt, ot, and heal roles to the module.
  • Create named local premades, arrange up to eight five-player groups, and add, replace, or remove saved player characters through paginated Character DB search.
  • Keep explicit MT, OT, Heal, and DPS assignments with class icon, level, current item level, and active specialization details.
  • Reuse a saved premade from New raid after faction, talents, availability, composition, and raid capacity are revalidated.
  • Track provisioning, boss progress, party health/mana, combat state, loot, and recent events.
  • Start, watch, stop, and inspect raid runs without restarting the desktop application.
  • Hand the provisioned raid to Dungeon Clear while Raid Runner owns raid-specific roster and lifecycle policy.

SBAzeroth Raid Runner

Settings

Settings keeps local application preferences and deployment paths in one place.

  • Switch the interface language between English and Russian.
  • Configure the deployment root and authserver/worldserver binary paths.
  • Show when a change requires a server restart before it takes effect.

SBAzeroth Settings

Core Config

Core Config is a metadata-aware editor for the deployment’s AzerothCore settings. It supports safe, reviewed changes to non-sensitive parameters.

  • Read worldserver.conf and authserver.conf from the configured deployment root.
  • Group settings by functional area.
  • Show descriptions, types, defaults, and current values from the metadata catalog.
  • Wrap long values so paths and multi-line settings remain readable.
  • Keep configuration access inside SBAZEROTH_SERVER_ROOT.
  • Validate parameter names, value types, duplicate keys, and newline constraints before writing.
  • Protect sensitive parameters from editing and redact them in the UI.
  • Review a before/after diff and explicitly confirm each change.
  • Create a .bak backup before replacing the configuration file.
  • Write through a temporary file and atomically replace the original configuration.

SBAzeroth Core Config

Modules

Modules provides a read-only overview of the server’s installed or discovered modules.

  • List module directories detected in the deployment.
  • Show module identity and available metadata.
  • Keep module discovery separate from lifecycle controls.
  • Surface missing or unreadable module data without modifying the deployment.

SBAzeroth Modules

Realm data and configuration

  • Read-only character and realm discovery from the configured deployment.
  • Metadata-aware Core Config presentation and editing.
  • Long values are wrapped for safe inspection and editing.
  • Configuration remains inside the selected deployment root.

Safety and supportability

  • No automatic SIGKILL for managed lifecycle operations.
  • External processes are never treated as owned processes.
  • Diagnostic ZIPs exclude .conf files, environment variables, secrets, and absolute deployment paths.
  • Runtime file access is restricted to the configured deployment root.
  • Native macOS application icon and a dark Azeroth-inspired visual theme.

Architecture

  • Desktop shell: Wails 2
  • Backend: Go 1.25+
  • Frontend: React 19, TypeScript, Vite 8
  • UI icons: Lucide React
  • Unit tests: Go test and Vitest
  • End-to-end tests: Playwright

The Go backend owns deployment discovery, process lifecycle, monitoring, logs, player data, and dungeon-runner services. The React frontend renders the control center and communicates with the backend through the Wails gateway. Browser preview mode uses deterministic mock data and does not operate a real deployment.

Requirements

  • macOS ARM64 for the current desktop build.
  • Go 1.25 or newer.
  • Node.js 24 LTS or newer.
  • pnpm 11.
  • Wails CLI v2.15.0 for desktop development and production builds.

Configuration

SBAzeroth uses the deployment root as the source for configuration, logs, data, and runtime resources:

export SBAZEROTH_SERVER_ROOT=/path/to/azerothcore

The default root is $HOME/Documents/server. Binary locations can be configured independently:

export SBAZEROTH_AUTHSERVER_BINARY=/path/to/authserver
export SBAZEROTH_WORLDSERVER_BINARY=/path/to/worldserver

By default, configuration is read from stable/etc/worldserver.conf and stable/etc/authserver.conf inside the deployment root.

Local application data

SBAzeroth stores its own settings in a local SQLite database:

<UserConfigDir>/SBAzeroth/sbazeroth.db

The database contains runtime paths, the interface language, Dungeon Runner preferences, and Raid Runner premades scoped to the selected deployment. It does not replace the AzerothCore MySQL databases and must not be used for passwords or other secrets. On the first launch after upgrading, the application imports the previous settings.json and WebView localStorage preferences automatically.

Close SBAzeroth before copying the database manually. SQLite WAL mode may create sbazeroth.db-wal and sbazeroth.db-shm next to the main file; include these files in a raw file backup, or create the backup while the application is stopped.

Raid Runner и RND-боты

Raid Runner использует raid-контракт mod-dungeon-clear. SBAzeroth сам читает активные таланты RND/addclass-ботов уровня 60+, собирает autofill-состав одной фракции и передаёт его как party=Main:mt,Offtank:ot,Healer:heal,Dps. В таком explicit-составе имя без суффикса роли эквивалентно :dps. Обычные персонажи игроков не используются в autofill, но могут быть явно добавлены в сохранённый premade через paginated Character DB API. Ограничение RaidRunner.AutoRoster.Faction (auto, alliance или horde) применяется и при выборе на стороне приложения.

Именованные premade-составы сохраняются в локальной SQLite по GUID персонажей, позиции 0..39 и назначенной пользователем роли. Изменяемые данные — имя персонажа, level, active spec, current ilvl и availability — перечитываются из Character DB; сбой расчёта отображаемого current ilvl не делает валидного бота недоступным. Перед запуском применяются лимиты конкретного рейда: ZG/AQ20 до 20 участников, Naxxramas до 25, остальные поддержанные рейды до 40.

Текущая версия mod-dungeon-clear сортирует explicit roster по ролям перед распределением по raid subgroups. SBAzeroth сохраняет и передаёт пользовательский порядок, но для точного воспроизведения этих групп внутри игры модулю нужен отдельный контракт position/subgroup и размещение участников по нему в provisioning.

Для выборки используются CharacterDatabaseInfo из stable/etc/worldserver.conf и PlayerbotsDatabaseInfo из stable/etc/modules/playerbots.conf. Если DBC талантов или одна из этих БД недоступны, запуск отклоняется до отправки команды с явной ошибкой.

Встроенный module-side fallback с командой size= по-прежнему настраивается параметрами Raid Runner:

# stable/etc/modules/mod_dungeon_clear.conf

RaidRunner.AutoRoster.Enabled = 1
RaidRunner.AutoRoster.RequireRndOrAddclass = 1
RaidRunner.AutoRoster.GenerateMissingBots = 0
RaidRunner.AutoRoster.AllowPlayerCharacters = 0
RaidRunner.AutoRoster.MinMembers = 10
RaidRunner.AutoRoster.MaxMembers = 40
RaidRunner.AutoRoster.MinLevel = 60
RaidRunner.AutoRoster.Faction = auto
RaidRunner.Recovery.MaxAttempts = 1

Параметры отвечают за следующее:

Параметр Назначение
Enabled Включает обработку Raid Runner и module-side auto-roster.
RequireRndOrAddclass Требует, чтобы каждый автоматически выбранный участник был RND/addclass-ботом. Рекомендуется 1.
GenerateMissingBots Должен оставаться 0: поддерживаемый mod-playerbots не предоставляет ограниченный runtime API генерации ботов. При нехватке пула запуск отклоняется с диагностикой.
AllowPlayerCharacters Разрешает обычных персонажей игроков. Для безопасного режима должно быть 0.
MinMembers / MaxMembers Минимальный и максимальный размер автоматически создаваемого рейда.
MinLevel Минимальный уровень RND-ботов, доступных для выбора.
Faction Ограничение фракции: auto, alliance или horde. При auto используется фракция подходящего состава.
Recovery.MaxAttempts Число автоматических попыток восстановить остановленный Dungeon Clear; после превышения рейд получает состояние failed.

Безопасный режим только для ботов — RequireRndOrAddclass = 1, GenerateMissingBots = 0 и AllowPlayerCharacters = 0. Для запуска premade с обычными сохранёнными персонажами требуется явно включить AllowPlayerCharacters = 1; на autofill это не влияет. SBAzeroth фильтрует autofill по playerbots_account_type (RND и addclass) до отправки команды и сообщает, какой роли не хватает.

После изменения файла конфигурации перезапустите worldserver или выполните штатную перезагрузку конфигурации модуля. При ошибке конфигурации Raid Runner должен остановить запуск с объяснением проблемы, а не переходить в менее безопасный режим.

Installation and development

Install frontend dependencies:

pnpm install

Run the browser preview with mock data:

pnpm dev

Run the Wails desktop development application:

go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 dev

Build instructions

Browser frontend

pnpm build

The static bundle is written to dist/.

macOS application

Build the production Wails application:

go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 build

The application bundle is generated at build/bin/sbazeroth.app.

For the project’s macOS packaging flow, use:

pnpm build:mac

After a successful build, the script can offer to install the application at /Applications/SBAzeroth.app.

Windows and Linux

The frontend is platform-independent, but native Wails packaging requires the target operating system’s toolchain and WebView dependencies. Run the build on the target platform:

go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 build

For Windows, use a Windows environment with Go, Node.js, pnpm, WebView2, and the Wails CLI installed. For Linux, use a Linux environment with Go, Node.js, pnpm, GTK/WebKit development packages, and the Wails CLI installed. The generated bundle is placed under build/bin/ according to the target platform.

Cross-compiling the complete desktop application from macOS is not currently supported by the repository packaging script because Wails depends on native WebView and platform toolchains.

Testing

Run Go tests:

go test ./...

Run frontend unit tests:

pnpm test

Run the Playwright end-to-end suite:

pnpm test:e2e

Capture the preview screenshots:

pnpm exec playwright test e2e/preview-screenshots.spec.ts --project=desktop-chrome

Lifecycle tests use a fake runtime. Do not run Start, Stop, or Restart smoke tests against a production deployment.

Project status

Version 1.1.0 adds the Raid Runner workspace with automatic and manual rosters, saved premades backed by paginated Character DB lookup, live encounter monitoring, battle logs, and persisted raid history. It also improves Dungeon Runner candidate management and the managed worldserver console.

License

No license has been declared yet.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages