Commit Graph
181 Commits
Author SHA1 Message Date
Дмитрий ee59708fbf Prepare Manager 0.6.8 release v0.6.8 2026-10-10 05:51:09 +05:00
Corfirean 3ed9c5dacd Merge pull request #48 from Corfirean/feat/unsaved-guard-and-auto-restart
feat: unsaved changes navigation guard and server auto-restart with crash analyzer
2026-10-10 05:50:58 +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
Corfirean c46edd2feb Merge pull request #38 from lostmind84/feat/linux-b3b-install-screen
feat: install screen, Wine/Proton client and realm profiles for a Docker server (Linux)
2026-10-10 05:46:36 +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. c882a21334 docs: changelog entry for the Linux install screen 2026-10-08 17:28:59 +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
Corfirean 7540527d30 Merge pull request #43 from Corfirean/release/0.6.7
Release Manager 0.6.7
v0.6.7
2026-10-08 09:49:45 +05:00
ДмитрийandClaude Sonnet 5.5 5328709826 Release Manager 0.6.7
Version bump only. Collects: the update check no longer fails after a crash and no longer
starts MySQL in the background, the Wildcard table repair checksum error, same-version files
edited by hand are not an update, a stopped server stays stopped after an update, the layout
fixes, one card per realm, remove-server and backup-folder settings, the Accounts tab
(bot accounts hidden), a world server started from the coa-bots folder, and the new
SQUID bot Dashboard tab.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 09:41:37 +05:00
Corfirean 478ea8a960 Merge pull request #42 from Corfirean/fix/update-check-resilience
Fix the update check, add the dashboard tab and a batch of Manager fixes
2026-10-08 09:40:59 +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 c3791f80f1 Shorten two changelog titles to the 90 character limit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 08:58:25 +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 0a050a40a2 Add start-after-update options and clarify the always-max-skills setting
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:11:08 +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 f920ff8a59 Fix the stray window scrollbar, the Overview button overflow and show one card per realm
- The main area and the console log are now positioning contexts, so screen-reader-only
  text inside them can no longer extend the whole window (the second scrollbar in the update
  dialog and the window scroll on the Console database tab).
- The client button group on the server card wraps instead of leaving the card.
- With both worlds starting together, each realm gets its own card.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 07:04:29 +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
ДмитрийandClaude Sonnet 5.5 c6e8a34509 Make the update check survive damaged launcher state and an unavailable database
A crash during a launcher write can leave .state/*.json zero-filled, which made
every launcher start (and so the update check) fail with "Something went wrong".
Zero-filled state files are now discarded before each launcher verb, the check
degrades to a warning when the database cannot be inspected, and database start
failures carry the launcher's own output.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 06:56:03 +05:00
Fabien F. 3f98ba3add test: the release fixture database arguments are a Linux case 2026-10-07 21:01:43 +02:00
Fabien F. 7a3fefaafd feat: validate a release and export its baseline on Linux
The signed base package holds the MySQL data directory of a Windows repack. On a
Linux computer extract-schema-base now turns it into a Docker server folder whose
database container opens that directory (mysqlData in docker.json), so the release
SQL, the schema contract and export-baseline run with the Docker installation code.
Windows is unchanged: it still bootstraps the repack's own database program.
2026-10-07 13:56:00 +02:00
Corfirean fac6ce469a Merge pull request #35 from Corfirean/release/0.6.6
Release Manager 0.6.6 (version bump)
v0.6.6
2026-10-07 10:35:07 +05:00
ДмитрийandClaude Sonnet 5.5 f22cedd963 Release Manager 0.6.6
Version bump only. Collects: one-click diagnostics and report routing, LAN
address selector, Auction House Bot card without a GUID, experimental Linux
Docker installer, and the fixes already on master since 0.6.5.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 10:20:40 +05:00
Corfirean 0b5f12941c Merge pull request #29 from Corfirean/feat/ahbot-auto-character
AH bot card: no character GUID needed
2026-10-07 06:53:31 +05:00
Corfirean f3fc14b55a Merge pull request #34 from Corfirean/fix/lan-address-selector
Choose and remember the LAN address friends connect to
2026-10-07 06:53:22 +05:00
Corfirean beaec7d27e Merge pull request #33 from Corfirean/feat/diagnostics-routing
One-click diagnostics and report routing to Manager, Companions and SQUID
2026-10-07 06:48:04 +05:00
ДмитрийandClaude Sonnet 5.5 8490dc9983 Let the person choose and keep the LAN address friends connect to
Sharing on the local network used to take whatever address the Manager found
first, which is often a virtual adapter. The Friends page now lists the usable
IPv4 addresses of the computer (the automatic one marked) and accepts a custom
one. The choice is kept independently of the sharing mode, so it survives
restarts and switching to other modes. A chosen address that is not available
is reported instead of silently switching to another adapter.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 06:44:34 +05:00
ДмитрийandClaude Sonnet 5.5 3f8abcbbe8 Merge pull request #20 from lostmind84/feat/linux-b3a-installer
feat: install a new server as a Docker installation (Linux)

Also give the installer's test helper the compatible_sha256 field that master
added to manifest::Migration after the pull request was branched.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 06:37:13 +05:00
ДмитрийandClaude Sonnet 5.5 b3c50a7b39 Collect all diagnostics in one click and route reports to the right project
- The diagnostic package now also holds crash reports and small crash dumps from
  Core/Crashes, Windows' own crash records for the server programs (needed for
  crashes that bypass the server's crash handler), the newest update journals,
  the bot, supervisor and updater logs, and a view of which server programs run
  and from where. The folder with the file opens after export.
- JSON files in the package keep valid JSON after secrets are removed.
- The problem report asks what the problem is about and opens the new-issue page
  of the Manager, CoA Companions or SQUID Playerbots, preselecting the bot system
  that is switched on. One button collects diagnostics and opens the report.
- Targets come from the module catalog; only their new-issue pages may be opened.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 06:21:11 +05:00
ДмитрийandClaude Sonnet 5.5 bbdad37e40 NPC Enchanter card: hint how to place and remove the NPC
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 15:40:23 +05:00
ДмитрийandClaude Sonnet 5.5 0ed4d5e268 AH bot card: shorter buyer hint
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:49:20 +05:00
ДмитрийandClaude Sonnet 5.5 b13ee55bb9 AH bot card: the buyer does not spend gold
The module never deducts money from the auction character when it bids or buys, so the hint no longer says the character needs gold.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:41:42 +05:00
ДмитрийandClaude Sonnet 5.5 51a45db8cb AH bot card: no GUID needed, the server creates its own auction character
The GUID setting moves to the advanced list and the card text and the seller hint no longer ask for a character.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 13:35:32 +05:00
Corfirean 3f700ee8f4 Merge pull request #28 from Corfirean/codex/release-065-coordinated
Release 0.6.5: reliable update guards and coordinated SQUID integration
2026-10-06 11:19:07 +05:00
Дмитрий 277ebba847 Restore the original realm before disposable SQUID recovery v0.6.5 2026-10-06 10:46:04 +05:00
Дмитрий 9a0b815937 Cover initial SQUID import and bot creation in startup budget 2026-10-06 10:42:08 +05:00
Дмитрий 78b84e11c2 Add disposable SQUID provisioning and repeated-start acceptance 2026-10-06 10:20:18 +05:00
Дмитрий 6aea9011f9 Allow first SQUID startup to complete large database imports 2026-10-06 10:12:13 +05:00
Дмитрий 171d9a2bf8 Add coordinated release packaging and disposable update acceptance 2026-10-06 10:08:54 +05:00
Дмитрий 0d6d8a0db8 Harden server update history, recovery guards and repeated checks 2026-10-06 07:01:13 +05:00