Cockatrice/doc/continuumatrice-product-migration.md

5.9 KiB

Continuumatrice product migration and coexistence

This is a product fork, not a renamed Cockatrice binary. The upstream Cockatrice runtime, MTG cards, profiles, update feeds, launchers and installers must remain independent.

Runtime identity

Component Continuumatrice
CMake target / installed binary continuumatrice
Linux build output build/continuumatrice/continuumatrice (source folder remains upstream named)
Linux app launcher continuumatrice.desktop
Qt application Continuumatrice
Qt organization Continuum Universes Studio
User data on Linux (default XDG) ~/.local/share/Continuumatrice/
User cache on Linux ~/.cache/Continuumatrice/
Single-instance socket ContinuumatriceSingleInstance
Deep-link scheme continuumatrice://
Card XML root (native) continuumatrice_carddatabase version 4
Card XML root (import compatibility) cockatrice_carddatabase version 4
Fork server executable (when built) continuum-servatrice
Fork server config continuum-servatrice.ini

Both <cockatrice_carddatabase version="4"> and <continuumatrice_carddatabase version="4"> load, but new XML saved by the fork uses the new root. The parser format and gameplay features still derive from the Cockatrice codebase; this change is not an automatic rules engine.

The source directories cockatrice/ and servatrice/, common libcockatrice_* targets, and historical class names are left as internal implementation details to avoid needless churn and protocol breakage. They do not identify the installed product.

Card data

  • A new profile receives a valid empty XML v4 starter database, with no MTG cards.
  • Put Continuum Universes card sets in ~/.local/share/Continuumatrice/customsets/, or import from the Card Database menu.
  • The default image download URL list is empty. Older fork profiles have known Scryfall/Gatherer URLs removed while custom URLs are preserved.
  • The upstream MTG Oracle importer is not shipped: WITH_ORACLE=OFF is the default and WITH_ORACLE=ON is deliberately refused until there is a replacement.
  • The inherited first-run Magic importer and automatic public-server/Commander-bracket fetches are disabled.
  • Application release checks point only to the Continuumatrice GitHub repository; automatic update checks are off until a fork release is available.

An independent Continuum Universes catalogue importer remains to be implemented. Static XML v4 import is already available.

System integration

Linux: continuumatrice binary, independent .desktop file, own SVG icon and continuumatrice:// handler. No takeover of .cod or cockatrice://.

Windows: packaging script uses a separate installation directory, uninstall registry key, executable, URL protocol and process-lock detection. It must never remove or overwrite cockatrice.exe or the upstream Uninstall\Cockatrice key.

macOS: separate app executable/bundle identifier and continuumatrice:// link handling; .cod handler removed to avoid competition with Cockatrice.

The Windows and macOS installers are not yet verified. Source and packaging changes should not be presented as validated shipping installers.

Build

cmake -S . -B build --fresh -G Ninja \
  -DCMAKE_BUILD_TYPE=Release -DWITH_CLIENT=ON -DWITH_SERVER=ON -DWITH_ORACLE=OFF
cmake --build build --target continuumatrice continuum-servatrice --parallel 16
./build/continuumatrice/continuumatrice

An internal compatibility target cockatrice still depends on continuumatrice to accommodate older CI invocations, but never emits a cockatrice executable. Previously compiled copies of build/cockatrice/cockatrice are stale.

Release checklist

  • Configure and compile Continuumatrice with openSUSE Qt 6 using a clean CMake cache.
  • Confirm build/continuumatrice/continuumatrice runs and the app name and original SVG icon appear.
  • Confirm old /usr/bin/cockatrice, ~/.local/share/Cockatrice and MTG card images remain untouched.
  • Open both clients simultaneously; confirm distinct sockets, settings, card databases, decks and caches.
  • Load both legacy and new-root XML and verify custom images and Front/Support/Command mapping.
  • Test Limbo, Refuge and Oblivion card moves, view windows, counters, mirrored positions and reconnect.
  • Confirm startup does not request MTG artwork, Oracle updates, Commander brackets, or upstream server lists.
  • Check a continuumatrice:// link and ensure cockatrice:// still belongs to MTG Cockatrice.
  • Install and uninstall user-local Linux app; ensure no MTG desktop-file or icon collision.
  • Test Windows installer in a VM with upstream Cockatrice preinstalled, including install, upgrade, uninstall and .cod association preservation.
  • Test macOS app bundle identity and installation alongside upstream Cockatrice.
  • Verify GPL requirements, notice retention and upstream attribution.

Status: Committed source changes; no completed Qt compilation, package build, or runtime validation in the assistant environment. Release is blocked pending these tests.

Continuum-Servatrice dedicated server

CMake uses add_subdirectory(servatrice "${CMAKE_BINARY_DIR}/continuum-servatrice"), retaining the inherited source files but placing generated build files and the executable in their own product folder. WITH_SERVER=ON is the default; WITH_SERVER=OFF is a deliberate opt-out for client-only builds.

The MySQL schema servatrice/continuum-servatrice.sql uses continuum_servatrice_ table prefixes, paired with servatrice/continuum-servatrice.ini.example. Default listening ports are 4757/4758. Existing Servatrice implementations, account/room/networking functionality and extended Limbo/Refuge/Oblivion game zones are retained.

The fork server should be hosted against an independent MySQL database, not an existing upstream MTG Servatrice database. See hosting instructions.