117 Commits
Author SHA1 Message Date
Corfirean b90b377fc3 Merge pull request #17 from Corfirean/codex/reliable-server-updates
Recover failed updates and validate release database schemas
v0.6.2
2026-10-05 02:38:57 +05:00
Дмитрий a02130f587 Prepare Manager 0.6.2 release 2026-10-05 02:31:56 +05:00
Дмитрий f4e36f21eb Merge remote-tracking branch 'origin/master' into codex/reliable-server-updates 2026-10-05 02:31:00 +05:00
Дмитрий 65c9945626 Validate release databases and require full schema contracts 2026-10-05 01:56:36 +05:00
Corfirean f13398bbd7 Merge pull request #13 from lostmind84/feat/linux-b2-container-db
feat: database access through the container for Docker installations
2026-10-05 01:45:07 +05:00
Дмитрий e8367354ef Record update stages and migration results for support diagnosis 2026-10-05 00:14:15 +05:00
Дмитрий 461fa035d0 Validate race-class starts and protect existing character visibility 2026-10-04 23:58:51 +05:00
Дмитрий 3edc600f97 Recover database and file updates together after failures 2026-10-04 23:55:15 +05:00
Дмитрий c3d87e1ff2 Keep bot settings release note within changelog limit 2026-10-04 20:40:54 +05:00
Дмитрий d2496603e7 Configure both bot systems exclusively in the shared Bots tab 2026-10-04 20:40:36 +05:00
Дмитрий 2eea0e117c Add translated module settings and exclusive SQUID Playerbots controls 2026-10-04 20:26:39 +05:00
Дмитрий 2e3fb24e1a Run release socket tests without parallel timing contention v0.6.1 2026-10-04 15:43:50 +05:00
Дмитрий 146b1c50b9 Release Manager 0.6.1 and preserve Docker lifecycle compatibility 2026-10-04 15:43:29 +05:00
Дмитрий c02c635463 Fix settings input, client launch, server repair and simultaneous realms 2026-10-04 15:40:06 +05:00
Fabien F. 58b5ddeb07 feat: database access through the container for Docker installations
Db runs mysql, mysqldump and mysqladmin inside the database container with
docker exec -i when the server folder is a Docker installation, connecting over
TCP on the container's loopback like the repack's commands do on the host. The
password still travels only in MYSQL_PWD. Every caller keeps using Db unchanged
(accounts, backups, population, migrations, the RA service account), and the
host needs no MySQL client. The repack path is untouched: one line before its
tools are looked up. A stopped container or a missing one is reported as a
database that is not running.

Tested: 4 new tests (commands built for the container, no password on a command
line, repack unchanged, error classification), and a real run against the
Docker folder: SQL queries, a quick backup (156 characters tables), restore with
the previous database kept, a damaged backup refused, the RA service account
created by SQL, the world server console reached through its published
loopback port, an account created through it and listed by the Manager.
2026-10-03 21:21:26 +02:00
Дмитрий 162bfd1e04 Release Manager 0.6.0 with Chinese localization, realm sync and Linux preview v0.6.0 2026-10-03 22:50:01 +05:00
Дмитрий 85963b0bf0 Merge branch 'review/pr11' into release/0.6.0 2026-10-03 22:45:53 +05:00
Дмитрий 79d293e120 Merge branch 'review/pr5' into release/0.6.0
# Conflicts:
#	src-tauri/src/lib.rs
2026-10-03 22:45:53 +05:00
Дмитрий 46ba3fa3dc Merge branch 'review/pr9' into release/0.6.0 2026-10-03 22:45:37 +05:00
Дмитрий beb3b03010 Merge branch 'review/pr4' into release/0.6.0 2026-10-03 22:45:37 +05:00
Fabien F. 3da9628b79 feat: Docker runtime backend for Linux (start, stop, status)
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.
2026-10-03 12:44:20 +02:00
Corfirean 1bcef5f8c2 Add CoA / Wildcard realm profiles for v0.5.0 (#10)
* Add isolated Wildcard realm profiles and release v0.5.0

* Document realm validation and align npm lock version
v0.5.0
2026-10-03 11:12:04 +05:00
Дмитрий e7113f3ceb Test the content-scaling master switch against the bundled catalog 2026-10-03 07:24:21 +05:00
CorfireanandClaude Sonnet 5.5 831685dbd7 Changelog fragments (changelog.d) and the shared rules for people and AIs
Rules and format: https://github.com/Corfirean/coa-server-build/blob/main/changelog/GUIDE.md

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 07:05:52 +05:00
CorfireanandClaude Sonnet 5.5 50b48e8af5 Changelog fragments (changelog.d) and the shared rules for people and AIs
Rules and format: https://github.com/Corfirean/coa-server-build/blob/main/changelog/GUIDE.md

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 07:05:07 +05:00
Дмитрий c0c414f5a8 fix(report): open GitHub reports with the system URL opener (#8) 2026-10-03 06:22:49 +05:00
CorfireanandClaude Sonnet 5.5 5c21ef106d fix(config): an imported server gets the module config files it lacks at start and after an update
A server without a module's active file (an old repack updated by the Manager) made two modules log a
'missing property' line on every world tick.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 05:39:12 +05:00
CorfireanandClaude Sonnet 5.5 375be1b2c5 fix(nav): a module's page is hidden when the module is not on the server at all
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 05:18:14 +05:00
CorfireanandClaude Sonnet 5.5 1181b920d3 fix(modules): announced (Soon) modules stay greyed out, with no 'always on' note or settings
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 22:54:25 +05:00
CorfireanandClaude Sonnet 5.5 42dbdeae1f feat(client): updating the game client shows a progress bar on its button, no window over the app
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>
2026-10-02 22:49:36 +05:00
CorfireanandClaude Sonnet 5.5 dffb4811aa fix(update): add the new module config keys before the update's check start
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 21:45:56 +05:00
Fabien F. e889e0a789 feat: the Manager starts and finds its folders on Linux
- main: set WEBKIT_DISABLE_DMABUF_RENDERER=1 on Linux unless the user did.
  WebKitGTK's DMA-BUF renderer ended the process at startup with a Wayland
  "Protocol error" (seen with an NVIDIA card on Wayland).
- data_dir: use $XDG_DATA_HOME (absolute only) or ~/.local/share on Linux
  instead of the temp folder. Windows keeps %LOCALAPPDATA%.
- open_link: xdg-open on Linux, explorer.exe on Windows as before.
- tailscale_exe: look in the usual Linux locations.

Every Windows branch is the previous code unchanged.
2026-10-02 18:40:07 +02:00
Fabien F. d638bf3304 fix: snapshot ids, file modes and path case on Linux
- config snapshots: two snapshots of the same scope in the same millisecond
  shared one folder. A restore snapshots the current state just before reading
  the snapshot it restores, so on a fast disk the snapshot being restored was
  overwritten with the current files and the restore did nothing. Each snapshot
  now gets its own folder (numeric suffix when the name is taken). This was the
  intermittent failure of snapshot_restore_roundtrip_is_byte_exact_and_undoable.
- package extract: restore the execute bit on ELF binaries and #! scripts (the
  archive carries no modes). No effect on Windows.
- fsx::starts_with_ci: case-insensitive on Windows only; /srv/CoA and /srv/coa
  are different folders on Linux.
- registry test: use a root path that is a root on the running OS.

cargo test --workspace on Linux: 157 passed, 0 failed.
2026-10-02 18:40:07 +02:00
CorfireanandClaude Sonnet 5.5 53aa117ec2 fix(update): say 'up to date' when the version and files are unchanged instead of offering an update
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
v0.4.0
2026-10-02 21:32:43 +05:00
CorfireanandClaude Sonnet 5.5 cc5363b385 Release 0.4.0: modules page, one settings panel, collections, account delete, bot economy switches
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 20:41:25 +05:00
CorfireanandClaude Sonnet 5.5 209dbe37ac feat(ui): module settings open under their card's row; Other settings tab
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 17:07:39 +05:00
CorfireanandClaude Sonnet 5.5 89be57b4e4 feat(ui): one search, tabs and save bar on the Server page; no module legend
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>
2026-10-02 16:33:00 +05:00
CorfireanandClaude Sonnet 5.5 1f54fbf909 feat(modules): NPC Enchanter is a switchable early module
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 15:39:06 +05:00
ДмитрийandClaude Sonnet 5.5 31c08934ad Modules page: places held for Auction House Bot, NPC Enchanter and Playerbots with a Soon badge; module GitHub links from the catalog are allowed to open
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 15:07:25 +05:00
ДмитрийandClaude Sonnet 5.5 3b4cea7530 The companions are recognised by their .dist default file when no active config exists yet; the Bots settings page creates the active file from it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 12:10:27 +05:00
ДмитрийandClaude Sonnet 5.5 b091061cc5 Appearances and collections card on the Server page; the compatibility part is no longer a card on the Modules page
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 11:36:42 +05:00
ДмитрийandClaude Sonnet 5.5 726b089f42 Modules page: square icon cards with status (early/beta/release), switch, GitHub and settings; companions, scaling, TBC and WotLK packs and client compatibility in the catalog; a module switched off hides its page. Accounts: delete an account with confirmation.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 11:26:09 +05:00
ДмитрийandClaude Sonnet 5.5 14173d7d7e Server settings: Achievement.RealmFirstBlockBots (bots cannot take Realm First achievements)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 06:21:51 +05:00
ДмитрийandClaude Sonnet 5.5 05397c4505 Import: when the chosen folder is the Core folder or an outer folder, offer the server's main folder; say clearly when it is a standalone AzerothCore server
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-02 05:31:28 +05:00
ДмитрийandClaude Sonnet 5.5 9444434734 Settings: full searchable list of every documented world-server setting (575), edited in place with a snapshot before each save
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 22:54:36 +05:00
ДмитрийandClaude Sonnet 5.5 8f2b585641 Server settings: 20 more curated settings (drop rates by quality, talents, repair cost, auction cut, instances, professions, cross-faction, weather) in five languages
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 22:50:06 +05:00
ДмитрийandClaude Sonnet 5.5 3281750104 Diagnostics: fold repeated config warnings, list config/log files, include the CoA switches
A server whose module configs lack a key logs the same warning on every tick, which filled the 512 KB log tails of a
bug report and hid the actual failure. Read 8 MB back, fold the repeats, then keep the last part.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 20:29:30 +05:00
ДмитрийandClaude Sonnet 5.5 d01e401f3c Layout fixes (fluid main card, password field), no emoji in reports, empty modules page; Release 0.3.1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
v0.3.1
2026-10-01 16:30:12 +05:00
ДмитрийandClaude Sonnet 5.5 81aacdf5bb Realmlist switcher next to PLAY, and a Modules page
- 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>
2026-10-01 16:10:45 +05:00
ДмитрийandClaude Sonnet 5.5 a79c26ed49 Report a problem: a tab that prepares a prefilled GitHub bug report
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>
2026-10-01 15:56:53 +05:00