82 Commits
Author SHA1 Message Date
Corfirean 5544d62c23 Remove repeated screenshot titles from gallery pages (#144) 2026-10-23 07:52:51 +05:00
Corfirean 93784af0d9 Localize screenshot galleries and complete visible interface translations (#143) 2026-10-23 07:43:36 +05:00
Corfirean ff09d3d056 Translate public READMEs and guides into all Manager languages (#142) 2026-10-23 06:39:11 +05:00
Дмитрий 8d9dc47fed Merge published documentation and shared changelog updates for 0.7.1 2026-10-22 09:37:33 +05:00
Corfirean 2e3f36d2fd docs: keep public guides and screenshots focused on users (#139) 2026-10-22 08:12:13 +05:00
Corfirean 8f39896f0c Publish released 0.7 player guides and screenshot gallery on master (#138) 2026-10-22 08:04:59 +05:00
Дмитрий d22ff09ac6 Publish reviewed 0.7.0 screenshots and player guides with experimental status 2026-10-21 23:10:19 +05:00
Дмитрий 57ec6892aa Merge Warcraft Reborn realm support into the 0.7.0 candidate 2026-10-21 22:48:48 +05:00
Дмитрий 0e62be5097 Add Warcraft Reborn realm profile support 2026-10-21 08:08:56 +05:00
Дмитрий f40c0e1324 Merge current master into portable characters while retaining 0.7.0 2026-10-19 13:47:05 +05:00
Corfirean e3fbb2e4b6 Update older versions directly using database migration history (#112) 2026-10-16 16:56:32 +05:00
Corfirean a7b56d6aed Simplify updates to one recovery-backed migration pass (#111)
* Share migration planning and execution across update phases

* Apply updates in one recovery-backed pass without nested server rehearsals

* Preserve applied core SQL and share account migration history across realms
2026-10-16 13:39:43 +05:00
Дмитрий 97c024d95c Install current stable full images and qualify clean installation 2026-10-14 19:22:45 +05:00
Дмитрий be2f252593 Show Overview update failures and cover copied launcher configuration 2026-10-14 08:26:19 +05:00
Дмитрий 24d593d787 Roll back late repair failures and verify signed repair recovery 2026-10-14 07:25:56 +05:00
Дмитрий 4a9760b864 Recover shutdown with damaged templates and MySQL state 2026-10-14 07:07:35 +05:00
Дмитрий 482bbfcdfd Fix repair completion and expose SQUID and rehearsal failures 2026-10-14 06:52:24 +05:00
Дмитрий e60b5e2e5a feat(client): add native login & password prefill for Ascension client (0.7.0)
- Implement LibSerialize v1, raw DEFLATE and print base64 codec in glue_config
- Prefill login credentials in join_realm, portable_launch and play
- Preserve all existing saved client accounts without loss
- Rebuild production 0.7.0 NSIS artifacts and update SHA-256 checksums
2026-10-11 18:13:01 +05:00
Fabien F. 0250b61c62 feat: a wrong game data folder is diagnosed, and it can be changed from Settings
The world refusing to start with the standard Data set (no CoA DBC) is now
reported as GameDataMismatch. A Settings card shows the folder in use and
changes it while the server is stopped, using the install checks.
2026-10-11 08:57:43 +02:00
Fabien F. dfd8a50975 fix: sharing with friends and the other screens work on a Docker server
Second part of the audit of every screen for a Docker server. What it found, and
what now happens:

- Play with friends. "Servers open" read the BindIP of the configuration files, which
  the containers force to 0.0.0.0, so it was green on a fresh server while who can
  connect is decided by the address the ports are published on (bindAddress in
  docker.json). Opening and closing now edit bindAddress (and set
  CoA.AllowRemoteClients), the open state is read from it, and enabling a mode no
  longer fails on netsh / PowerShell after it already rewrote the files. There is no
  firewall row on Linux (Docker publishes the ports itself); the Windows reply is
  unchanged.
- The "private services" check (Friends and Diagnostics) could never fail on Linux: it
  reads the Windows listener table. For a Docker server it is computed from how the
  ports are published: the database never, the console only on 127.0.0.1, the game
  servers on bindAddress.
- Console, Database tab: read a mysql log file that does not exist; it shows
  `docker logs` of the database container.
- The Overview showed a service that had stopped by itself as "Stopped"; it now says
  "Stopped unexpectedly".
- Settings: a Docker server that was added but never started had no
  worldserver.conf and the page failed; it is created from its template. A talent
  file path outside the Core folder is refused (the container cannot see it).
- Backups of configuration now include docker.json; verifying the files of an
  imported Docker server looked for worldserver.exe and reported it missing.
- Linux locations: the friend package and the diagnostics go to the desktop folder
  (from the user directories file) instead of /tmp, the problem report names the
  distribution, and the size advice for companions reads /proc/meminfo instead of
  assuming 8 GB.

Every Windows branch is the code that was there; the dispatch is the early return on
docker::is_docker (or the host flavor for the firewall).
2026-10-11 08:57:38 +02:00
Дмитрий d828c982de chore(release): promote release candidate to v0.7.0 2026-10-10 11:27:15 +05:00
Дмитрий 453b870914 docs(release): update artifact sizes and hashes after merging master 0.6.12 2026-10-10 08:18:38 +05:00
Дмитрий e035f33fc0 style: format merged codebase and update release artifact hashes 2026-10-10 08:09:50 +05:00
Дмитрий 2b95553168 Merge master into feat/portable-characters 2026-10-10 07:59:32 +05:00
Дмитрий 2561e85893 docs(release): correct metadata, regenerate third-party notices, record RC artifact hashes 2026-10-10 06:04:14 +05:00
Дмитрий 51e0f136d6 feat(phase15): release and security hardening, DPAPI key store, probe & protocol hardening, secret redaction, audit and readiness report 2026-10-09 21:59:44 +05:00
Дмитрий ad39bd2020 docs: sync control protocol transfer flow and infra public relay port range; fix coord and relay test suites 2026-10-09 14:45:56 +05:00
Дмитрий 65ace578f7 Merge origin/master into feat/portable-characters 2026-10-09 14:41:53 +05:00
Дмитрий 6e438cfe95 feat(relay): complete Phase 13.1 hardening, port pool scaling, and live load testing 2026-10-09 13:28:32 +05:00
Дмитрий c743157b97 Implement Phase 12.1 Remote Portable Transfer and Phase 13 Game Relay 2026-10-09 08:29:07 +05:00
Дмитрий 1dc212968d feat(infra): enable production TLS for Phases 11-12 via coa-manager.duckdns.org 2026-10-09 07:12:42 +05: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
ДмитрийandClaude Sonnet 5.5 42c05c50e7 Phase 12: gate results in the control protocol document; label of the preferred-name save button
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 23:12:31 +05:00
ДмитрийandClaude Sonnet 5.5 461ffddd0d Phase 12: realm key pinning, linked accounts stay linked, control protocol and registry protocol 2 documentation, client credential audit tool
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 23:04:48 +05:00
ДмитрийandClaude Sonnet 5.5 3e57d32c90 Phase 10: deployment notes on the rate-limit check
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:31:48 +05:00
ДмитрийandClaude Sonnet 5.5 1267bcc41e Phase 10: central realm Registry, Host publishing lifecycle, deployment
crates/coa-registry-proto (protocol 1: types, limits, signed-request canonicalisation, test vectors),
services/coa-registry (axum + PostgreSQL, migrations, rate limits, Dockerfile, deploy files),
services/coa-registry-e2e (Host lifecycle against the real service, live VPS gate),
coa-core realm_registry (identity keys, client, publishing loop on its own thread),
Settings -> Public listing card, docs REGISTRY_PROTOCOL.md and REGISTRY_DEPLOYMENT.md.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 20:23:13 +05:00
ДмитрийandClaude Sonnet 5.5 ec40f146aa Phase 9.1: document the checkpoint after a restart
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 18:05:53 +05:00
ДмитрийandClaude Sonnet 5.5 d05bfe8b09 Merge master (0.6.6) into feat/portable-characters
Conflicts were additive only: the rusqlite and if-addrs dependencies sit side by side, and the
portable.* and fr.lan.* translation blocks are both kept in en and ru.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:54:17 +05:00
ДмитрийandClaude Sonnet 5.5 5abba832e5 Phase 9: Player Mode screen for portable characters and host runtime in the app
Characters screen (realms, make portable, preflight with the projection warning, one-click Play,
status chips, saved versions, diagnostics), Tauri commands, runtime started and stopped with the
application, native pin recorded on make-portable, degraded state derived from stored projection,
history in words instead of session identifiers, live test for make-portable then arm.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 17:04:58 +05: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
Дмитрий c2e4634367 Phase 8: documentation 2026-10-07 11:13:21 +05:00
ДмитрийandClaude Sonnet 5.5 297bd39101 Phase 8: level-cap projection audit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 10:08:12 +05:00
ДмитрийandClaude Sonnet 5.5 35a2d5dea7 feat(portable): Phase 6.1 format v2 with strict v1 migration and job format; Phase 7 capability negotiation and extensions
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 06:54:11 +05:00
ДмитрийandClaude Sonnet 5.5 f6006edfaf docs(portable): Phase 6 verification and findings; harness collection-add
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-07 05:54:49 +05:00
ДмитрийandClaude Sonnet 5.5 b2b2009b0d feat(portable): Phase 6 audit, appearance section, collections channel (WIP: Manager side)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 17:29:34 +05:00
ДмитрийandClaude Sonnet 5.5 cfcace8337 portable: Phase 5 - in-place update arms the next session; verification record
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 14:35:55 +05:00
ДмитрийandClaude Sonnet 5.5 9870a3814c portable: Phase 5 - live bridge, online importer client, session harness, docs
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-06 14:15:21 +05:00