A server folder with Settings/docker.json is a Docker installation: MySQL, the
auth server and the world server run in containers controlled through the
docker command line. Every other folder is a repack and goes through the
unchanged Windows code. driver::run, process::observe and layout::scan check
for the marker first and hand over to coa_core::docker.
- start: network, runtime image (libraries only, binaries are mounted from
Core/), database healthy, world listening, then auth. A container that stops
while starting reports the cause found in its log (DatabaseNotRunning,
PortInUse, ...). New error code DockerUnavailable (docker missing, stopped,
or not usable by this user).
- stop: world (180 s to save), auth, database; exit code 0 observed.
- observe: container state, health and port readiness mapped to the existing
ServiceState. Readiness is a connection that stays open, because Docker's
proxy accepts connections before the server inside listens.
- passwords go by environment, never on a command line; the remote console is
published on 127.0.0.1 only; the server's own database updater is turned off
(it needs a mysql client the image does not have and stops the server).
Tested: 18 new tests with an in-memory Docker, and a real run through
examples/drive: database, world (ready in 11 s) and auth started from a
package-shaped folder, stopped with exit code 0 and restarted.
Not included: installation, database setup, backups and SQL through the
container, updates, firewall/exposure, the client under Wine/Proton.
A choice about files the owner changed appears in place below the buttons. First-time client setup keeps its dialog.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The collection switches and every other documented setting become tabs of the same
panel, are searched together with the curated settings and are saved by the same bar.
The Modules page drops the status legend; Playerbots is named SQUID's Playerbots.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Named realmlists (e.g. Solo, PTR): a drop-down by the PLAY button switches the game client by writing the chosen text into every
locale's realmlist.wtf (the replaced file is saved first); add / edit / remove with a name and the realmlist text (or just an
address). First use offers 'Solo' (127.0.0.1) and, if the client held another realmlist, 'Previous'.
- Modules page: bundled catalog (modules/catalog.json) of the optional modules built into the server; switch each on or off (its
Enable setting), open its page on GitHub, edit its configuration with the module's own documentation. Nine modules to start with.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Form (summary, what happened, expected, steps) plus the Manager version, Windows version, install kind and server version filled in
automatically, a redacted diagnostics file to attach, and a button that opens GitHub's new-issue page with the standard template
(the full text goes to the clipboard when it is too long for a link). Nothing is sent from the Manager and no token is needed.
open_link accepts only this project's new-issue page for that.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Players page: list of the server's accounts with password change, access level (player/moderator/GM/administrator) and
rename (a rename also sets a new password because the login verifier depends on the name; refused while logged in).
Companion and console accounts are never listed.
- Install screen: size of the server from the signed package list (unpacked, download, peak) and the drive check uses it.
- Install progress shows downloaded / total volume and speed.
- Own show/hide button on password fields (the browser's one disappeared after leaving the field).
- Settings: one sentence on what the companion addon does.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The update's busy flag, progress and result were local to the Settings card, so switching tabs and coming back showed 'Update now'
again while the update was still running (and the server rightly answered 'another action is still in progress'). They now live in the
shared server-update store: the card re-attaches to the running update with its progress, and shows how it ended.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Server settings page gains 'CPU cores for the world' (MapUpdate.Threads), translated in all languages.
- On the first start of an installed server (not imports) the Manager sets it to half the logical processors (2..8) unless
the owner already raised it, and lowers Logger.network / Logger.entities.player from debug to info; once per server.
- tools/sample_stacks.py: sampling profiler for a running worldserver (dbghelp + PDB), used to find what the world thread spends time on.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
PLAY turns into UPDATE CLIENT when a tracked client is outdated; with no client linked
it offers choosing an existing folder or downloading from the community launcher servers
(resumable, hash-verified, free-space checked, progress and stop). Files the player changed
are kept on request or moved aside, never silently replaced. Existing clients can be adopted
from Settings. Fresh downloads get a realmlist for each installed locale.
Fixes zero-length files in the downloader (found by the live probe).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>