tools/test_launcher_bridge.py tested crates/coa-core/src/launcher_bridge.py,
which the Rust launcher replaced; check.yml and release.yml still ran it, so
the release build failed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Manager starts servers with coa-core::launcher (no Python bridge),
the bug-report relay runs as coa-launcher relay-worker, and manage.py is
no longer edited. Preview identity in tauri.conf.json is kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ten settings in a new bot settings section: the switch, where it applies (dungeons, raids,
battlegrounds/arenas, open world), the damage, healing, damage-taken and tank-threat
multipliers (1 = unchanged, the module's defaults) and the per-boss tuning (advanced).
Translations in the five locales.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Listing (rates, modules, region, account provisioning), population with players and bots apart,
level cap and ruleset derived from the hash-checked capabilities. Realm records from protocol 1
keep their id, key and creation time and are republished in place. Host publishes the real
values: rates from the effective worldserver configuration, modules from the module catalog,
players/bots from the realm database.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
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>
merge3(target, base, ours) applies only the base->ours delta; session reconcile is
(C0, B0, B1, lenient), in-place update is (realm now, synced snapshot, new canonical, strict).
Item/pet mappings gain presence (present/filtered/realm_local) so realm-filtered state is
told from player deletion. Updates are journaled like imports (marker + alloc row) and
recovered from the realm. Live tests cover filtered vs deleted items, checkpoints, pets,
conflicts, lost answers, atomic rollback and the A->B->A->B round trip without a server.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reads one offline character out of a realm's characters database through the
existing Db abstraction: fixed SQL with the local guid as the only (numeric)
input, one consistent READ ONLY snapshot per character, hex-encoded text.
Maps the approved minimal v1 scope to the portable model; refuses online,
deleted, bot, active challenge/game mode/Manastorm and unknown-table cases.
Adds the 163-table registry, the settings policy, "Make Portable" in one store
transaction, and item mapping lifecycle with content identity (schema 2) so a
recycled local item guid never inherits an old portable item.
Recorded answers of a real MySQL drive the unit tests; live tests re-verify
them, read-only enforcement and snapshot consistency on a disposable server.
No realm database is written and nothing changes for existing installs.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>