Commit Graph
146 Commits
Author SHA1 Message Date
Дмитрий 1a71f18def fix(client): create missing patch directories before publishing 2026-10-13 06:20:23 +05:00
Дмитрий 7d7bc530ec fix(client): preserve originals and verify race patch lifecycle 2026-10-13 06:14:32 +05:00
Дмитрий 53a05820c8 Prepare recovery once for bulk updates and release Manager 0.6.15 2026-10-12 03:47:24 +05:00
Дмитрий c45f962d02 Normalize rehearsal roots to avoid prefix errors on Windows 2026-10-12 01:03:35 +05:00
Дмитрий 247159e56c Normalize all upgrade qualification paths before update transactions 2026-10-11 22:03:09 +05:00
Дмитрий 7e170744bf Exercise an explicitly relative fixture path in regression 2026-10-11 21:50:09 +05:00
Дмитрий 10daa9b74d Resolve startup fixture roots before copying candidate files 2026-10-11 21:49:44 +05:00
Дмитрий 10a6744192 Normalize MySQL inventory roots consistently on Windows 2026-10-11 01:31:22 +05:00
Дмитрий 7557b347c5 Merge remote-tracking branch 'origin/master' into automation/immutable-channels 2026-10-11 01:31:22 +05:00
Дмитрий 9ae5fb471b Rehearse Windows updates and preserve complete MySQL recovery 2026-10-10 23:34:29 +05:00
Дмитрий 59036867d7 Report all database objects blocking update recovery 2026-10-10 22:33:54 +05:00
Дмитрий 949614f11a fix(races): update excluded bot race IDs as requested by llusixn 2026-10-10 22:06:19 +05:00
Дмитрий 9ee0e9f6af Revert "Keep the RA test peer open until clients finish under parallel load"
This reverts commit 3405c89fe8.
2026-10-10 20:56:15 +05:00
Дмитрий 3405c89fe8 Keep the RA test peer open until clients finish under parallel load 2026-10-10 20:55:38 +05:00
Дмитрий 4c4d39f1de feat(races): synchronize custom races bot setting with playerbots excluded races 2026-10-10 20:55:27 +05:00
Дмитрий b101c79e96 Qualify upgrades through the real Manager transaction in isolated fixtures 2026-10-10 20:51:02 +05:00
Дмитрий 3b7f77d92e Check packaged MySQL Unicode regex support on fresh data 2026-10-10 19:52:07 +05:00
Дмитрий 0589722e71 Include persisted schema failures in diagnostic exports 2026-10-10 19:38:36 +05:00
Дмитрий a3717c08bb Retain each schema failure report during recovery validation 2026-10-10 19:37:13 +05:00
Дмитрий dc2bffc57e Keep complete schema diagnostics across update rollback 2026-10-10 19:34:52 +05:00
Дмитрий e34ab45443 Add full isolated server startup qualification for disposable Windows fixtures 2026-10-10 13:02:33 +05:00
Дмитрий 40f9feab84 Bind upgrade compatibility to signed database source contracts 2026-10-10 12:57:11 +05:00
Дмитрий 5b16842720 Isolate update startup checks and recover validation configurations 2026-10-10 12:34:48 +05:00
Дмитрий 02843bb6d1 Check release compatibility and recover unhealthy updates automatically 2026-10-10 12:22:14 +05:00
Дмитрий a9ab7ced7e Merge branch 'fix/module-base-update-replay' into automation/immutable-channels 2026-10-10 12:15:43 +05:00
Дмитрий 115c57f54e Separate module installation SQL from incremental update packages 2026-10-10 12:11:19 +05:00
Дмитрий 94fd5fb5b9 Resolve signed immutable server update channels 2026-10-10 12:05:14 +05:00
Дмитрий 94d4ade1c7 Fix headless world startup for issue #46 and release Manager 0.6.12 2026-10-10 07:59:03 +05:00
Дмитрий b0951dbee7 feat(races): update verified client assets to CoA Custom 1.5 2026-10-10 06:56:44 +05:00
Дмитрий 374a3f9c23 feat(races): ship client integration in Manager 0.6.9 2026-10-10 06:35:01 +05:00
Дмитрий d20d5a6410 Merge remote-tracking branch 'origin/master' into feat/custom-races
# Conflicts:
#	src/screens/ModulesPage.tsx
2026-10-10 06:29:49 +05:00
Дмитрий 1228807eaf feat(races): integrate client patch installation and controls 2026-10-10 06:29:32 +05:00
Дмитрий 9099168927 Merge master and preserve Linux installation and crash history mocks 2026-10-10 05:47:39 +05:00
Corfirean a27e0eb6ab Merge pull request #44 from Corfirean/fix/db-error-details
Do not report an SQL error as "the database is not running"
2026-10-10 05:46:39 +05:00
Fabien F. f934bef303 fix: find a running Wine client under both names of a linked home folder
On SteamOS and Bazzite /home is a link to /var/home; Wine keeps the path it was
given, so the resolved one alone can miss the command line. The start order is
unchanged (database up and healthy before the realm list is updated): a comment
says so.
2026-10-08 17:30:08 +02:00
Fabien F. a625b065cf feat: start the game client under umu-launcher / Wine on Linux
client::launch started Ascension.exe directly, which cannot work on Linux, and
client::is_running found nothing (it reads the Windows process list). wine.rs is
the Linux counterpart, and both hand over to it on a Linux host.

It runs the command of the project's own launcher script: umu-run with a Proton
build (GAMEID=0, PROTONPATH, WINEPREFIX, started from the client folder), else
plain Wine, with WINEDLLOVERRIDES=divxtac=d (DivxTac.dll deadlocks the world
loading screen under wine-mono). The newest GE-Proton found for Steam is used, or
umu's own choice; COA_PROTONPATH, COA_WINEPREFIX and client-launch.json override
the detection; the prefix defaults to ~/Games/umu/coa-client. The game runs in its
own process group, so closing the Manager does not close it, and prints to
client.log. Whether it runs is read from /proc, where the command line holds the
Windows form of the client path. A clear message says what to install when neither
umu nor Wine is found.

Tests: detection (newest build, no build, Wine only, nothing, overrides), the
command, the /proc match, and a real spawn with a stand-in umu-run that records its
environment. Not run: the real client.
2026-10-08 17:28:59 +02:00
Fabien F. 5c3a9def0c feat: realm profiles (CoA / Wildcard) work on a Docker server
The Realm card showed "io: No such file or directory (os error 2)" on a Docker
server: the Wildcard check read Core/worldserver.exe. The card lets the owner
switch realm, so it is made to work rather than hidden.

What the repack's patched launcher did at each start is done by the Docker
backend: finish an interrupted switch (realms::before_start), name the realms in
the realm list, and give the containers the databases of the selected realm
(acore_world_wildcard, acore_characters_wildcard). The switch itself is the shared
code. prepare_launcher has nothing to patch on a Docker server, and Wildcard
support is read from Core/worldserver as it is from Core/worldserver.exe (the .exe
wins when both exist, so a repack is read as before).

Tests: the support check on both binary names, no launcher to adapt, and the
databases passed to the containers for each realm. Creating the Wildcard realm
itself needs a build and a database with the Wildcard migrations and was not run.
2026-10-08 17:28:59 +02:00
Fabien F. 25098b5a63 fix: a Docker server is never offered or given the repack's updates
Found by installing a server through the new screen: the update check of a Docker
server read the Windows "stable" channel and offered "0.261003.17 (you have
0.261003.1)". Applying it would have put the repack's executables, MySQL and
launcher into a Linux server folder.

Refused in the core (update::preview, apply and rollback), so no caller can do it.
The Settings tab says that updates are not available for Docker servers yet; the
background check stays quiet, as for any failed check.

A test applies the same update package to the same folder with and without
Settings/docker.json: refused and untouched with it, committed without it.
2026-10-08 17:28:59 +02:00
Fabien F. 45a699d2ca feat: install a new Docker server from the install screen (Linux)
The install commands ask coa_core::platform::flavor() once and hand a Docker
install to src-tauri/src/docker_install.rs; the repack arm of each command is
untouched (an early return and an extra optional parameter are all that changed
in lib.rs). New command install_environment tells the screen the kind of server,
the suggested folder (~/CoaServer) and why Docker cannot be used, if it cannot.

On Linux the install screen shows the game data folder (used in place, read-only)
and the server package (a folder or an address; there is no default address until
a signed Linux package is published), and disables Install until both are given
and Docker works. It shows Docker's own message with a "Check again" button when
Docker is missing, stopped or not allowed for the user. The Windows screen is
unchanged (checked side by side in the browser mock).

A debug build (tauri dev) accepts another package key named in
COA_DEV_TRUSTED_KEY, to try the installer on a package signed with a throwaway
key; a release build always uses the embedded key.

New text is English only for now (other languages fall back to it).
2026-10-08 17:28:52 +02:00
Дмитрий be68eb4341 Add unsaved changes navigation guard and server auto-restart with crash analyzer
- Add UnsavedChangesGuard modal (Save/Discard/Cancel) when navigating between tabs
- Wire guard into ModulesPage and SettingsPage with floating action bar
- Implement crash parser and explanation engine in coa-core
- Expose list_crashes Tauri command and CrashItem API
- Add auto-restart on unexpected server crash with crash loop protection
- Add crash counter badge and CrashHistoryModal with human-readable explanations and full crashlogs
- Support all 6 locales (en, ru, de, fr, es, zh)
2026-10-08 18:58:41 +05:00
Corfirean 58c1e1aee0 Merge pull request #41 from lostmind84/feat/linux-release-fixture
feat: validate a release and export its baseline on Linux
2026-10-08 14:04:02 +05:00
ДмитрийandClaude Sonnet 5.5 ad69fb0401 Do not report an SQL error as "the database is not running"
Only the client's own connection errors (ERROR 2003 and 2002, "Can't connect") count as a stopped
database. The SQLSTATE 22003 of an out-of-range value contains "2003" and hid the real error of a
failing release migration. The message now also carries the client's last line.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 11:29:08 +05:00
ДмитрийandClaude Sonnet 5.5 c8a0f6872f Hide the SQUID bot accounts from the Accounts list
Accounts named with AiPlayerbot.RandomBotAccountPrefix (default rndbot) belong to the bot
system like the companions' accounts: they are not listed and cannot be renamed or deleted.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 09:33:46 +05:00
ДмитрийandClaude Sonnet 5.5 1acbcc2bb5 Fix the dashboard tab: large answers, damaged history files, browser link and realm drop-down
The dashboard now runs through a small launcher that avoids the immediate socket shutdown that
cut answers above 64 KB on Windows, supplies the missing level-builds file, removes history
files zeroed by a crash, is addressed as 127.0.0.1 and opens in the browser through its own
command. The realm drop-down is hidden while both worlds start together.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 08:33:36 +05:00
ДмитрийandClaude Sonnet 5.5 838cc07e73 Add the SQUID dashboard tab and make a stopped server stay stopped after updating
The Dashboard tab (shown with SQUID Playerbots) downloads the dashboard release of the
bots' release series, starts it on a free local port and shows it in the window. After an
update, a server that was stopped stays stopped unless the owner asked for it to start.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:33:07 +05:00
ДмитрийandClaude Sonnet 5.5 4c4f8bbb3e Accept both published versions of the Wildcard table repair
The migration manager_repair__20261005_missing_wildcard_tables was published with two
different checksums; a server that applied one refused the update carrying the other.
Both versions have the same effect, so the Manager treats them as interchangeable.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:12:51 +05:00
ДмитрийandClaude Sonnet 5.5 d85d86a3dc Recognise the coa-bots world server and explain the undo step
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:12:01 +05:00
ДмитрийandClaude Sonnet 5.5 017b977bfa Same version is never an update; Repair lists the files that differ
An update is decided by version: files the owner edited at the same version no longer
open a keep/replace decision. Repair shows which files differ or are missing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:09:33 +05:00
ДмитрийandClaude Sonnet 5.5 337418afe0 Add a configurable backup folder and drop-down bot settings
Backups can be stored in a chosen folder (new backups go there, older ones stay listed),
and a backups folder that is a link to another drive no longer fails the update's safety
backup check. SQUID settings that declare a fixed list of choices are edited as a drop-down
and validated against it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:08:09 +05:00
ДмитрийandClaude Sonnet 5.5 072a657649 Remove-server card, Accounts tab, quiet background update check, safer install cleanup
- Settings: a card removes a stopped server from the Manager (no files deleted).
- The Players tab is now Accounts in all languages.
- The five-minute background check no longer starts and stops MySQL on a stopped
  server; only an explicit check may start it.
- A failed install keeps its marker until the folder is complete, cleans up after a
  failure that happens after the move, and reports the launcher's output; install and
  update errors have a Copy button.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:01:20 +05:00