Rand Stats

MUGS::Core

zef:japhb
Revision history for MUGS-Core

0.1.4  2024-03-02T17:54:55-08:00
  [Bug Fixes]
  - Tweak StructureValidator to deal with Rakudo change that broke Optional
  - Clear LocalUI.lobby-client on disconnect
  - Tweak CI workflow to silence GitHub Workflow warnings

  [Configuration]
  - Enable explicitly retrieving config default even if user config set
  - Add LocalUI helper methods for ui-type-specific configs
  - Add new config defaults for TUI optional elements
  - Add additional config defaults for CLI and TUI to support terminal
    capabilities overrides

  [Debugging]
  - Convert MUGS_DEBUG into a UInt, allowing tuning of debug verbosity
  - Tune default debug verbosity levels
  - Make sure debug messages go to $*ERR, not $*OUT

  [Packaging]
  - Update copyright year range

  [Refactoring]
  - Split LocalUI.load-plugins out of LocalUI.initialize to allow App UIs to
    load plugins in a visible loading screen, rather than silently before the
    UI launches
  - Add role with common support routines for Lobby UI implementations,
    supporting a minor refactoring of UI modules

  [Security]
  - Be a little more careful about handling user/username in Server


0.1.3  2023-06-04T09:06:03-07:00
  [Contacting us]
  - Move official IRC support channel from Freenode to Libera.Chat

  [Core features]
  - Support to/from-cbor and to-debug methods for all Message classes
  - Serialize to CBOR even for Supplier connections
  - Support Junction as StructureValidator schema node
  - Ensure config form valid before registering Server Game class
  - Allow for better errors from config form field validators
  - Support pre-packed Message data, for sending identical game updates to
    many clients
  - Provide extra Game UI options from App UI

  [Error handling]
  - Shutdown, not just disconnect, in LocalUI.exit-with-errors
  - Exit with errors if missing requested game plugins
  - Don't crash if Supplier is disconnected before final response
  - Work around Rakudo change in PROCESS dynamics

  [Packaging]
  - Update Dockerfile dependency versions
  - Update CBOR::Simple, Cro::CBOR, and Cro::* dependency versions
  - Upload to zef/fez using mi6 UploadToZef

  [Performance]
  - Stop sending empty WebSocket Continuation frames, approximately
    halving frame rate on the wire

  [Refactoring]
  - Factor common code out of CLI tools into LocalTool
  - Factor out decode-and-connect and initial-userpass into LocalUI
  - Factor out check directory exists before reading it in DevTool
  - Rename Server's broadcast-to-game to broadcast-message-to-game

  [Security]
  - Disallow security-related reserved names as identifiers

  [Tools]
  - Add a new-ui-type command to mugs-tool
  - Reorient mugs-tool game/genre subcommands for multi-repo world

  [Testing]
  - Work around YAMLish quoting change affecting File tests
  - Stop testing dubious packed/unpacked matching behavior


0.1.2  2021-05-13
  [MAJOR CHANGES]
  - In this release, network serialization has been completely switched over
    from JSON to CBOR (via CBOR::Simple and Cro::CBOR).  This allows a much
    richer data model on the wire, more accurate round-tripping, and much
    faster handling for floating point and packed binary data.

    HOWEVER: This also means that some data will be coming through in native
    (or in the case of enums, numeric) format, rather than converted to strings
    as with JSON.  You may be assuming receipt of string data in some places;
    expect to undo any workarounds you may have added.

    ALSO: In order to provide easier-to-read debugging output, some debug code
    outputs messages in prettified JSON format, which as mentioned above can't
    represent the full richness of CBOR data.  The following JSON::Fast PR will
    at least prevent debug output failures; if you're having debug issues,
    apply the JSON::Fast PR, reinstall it, and try again:

        https://github.com/timo/json_fast/pull/73

  [Bug fixes]
  - Fix a race condition in game client/UI startup
  - Don't create a second lobby client if directly entering lobby
  - Slightly improve invalid structure error messages
  - Explicitly depend on Cro component versions to work around Cro packaging
    issue (https://github.com/croservices/release/issues/2)

  [Logging/Telemetry]
  - Track creation Instant for Message objects
  - Add GameStateUpdate as first Log::Timeline::Task in Server
  - Switch --debug default to False (off) for mugs-ws-server

  [Performance]
  - Depend on Cro 0.8.5+ to get significant WebSocket performance improvements
  - Much faster and perf-stable StructureValidator
  - Support fast path for validating packed arrays

  [Testing]
  - Add tests for validation of packed and numeric arrays
  - Add a 'local-test-insecure' server alias for non-TLS connections


0.1.1  2021-04-15
  [Bug fixes]
  - Stub more required MUGS::App::LocalUI and MUGS::UI::Game methods
  - Don't record nop actions as game events

  [Clients]
  - Record most recently seen gamestate in client (where UI can access it)
  - LocalUIs always create a Lobby client before any game UIs
  - Improve Lobby client available game types list
  - Add Lobby client active games list
  - Track and handle game startup push messages
  - LocalUIs now let game startup initiate show-initial-state

  [Identities]
  - All identity types now do MUGS::Identity role
  - Add identity name deconfusion and reservation
  - Identity names ensured valid according to PRECIS-style ruleset
  - Identity names limited to 63 characters
  - Stringify Persona and Character to their screen-name

  [Messages/Protocol]
  - More details and better filtering in active-games info bundle
  - Define serialization for MUGS::Server::GameEvent
  - Send serialized game events to all participants
  - Flatten %update into game-update %data to improve message format consistency
  - Refactor winloss status to handle both PvP and co-op play

  [Servers]
  - Add a helper method for overriding a game config form default
  - Add a hook for post-processing at the end of process-action,
    just before returning the game status
  - Improve overrideability of maybe-(start/stop)-game
  - Clear up confusing naming and character/player confusion
  - Add a server connection debug-name and display it in WebSocket debug info

  [Testing]
  - Add Error test 'game', designed to generate errors in specific ways
  - Add initial tests for Error 'game'

  [Universes]
  - Support schema versioning, meta-state, and introspection
  - Generalize schema bootstrapping operation
  - Support `mugs-admin update-universe`
  - Check schema metadata when validating database


0.1.0  2021-03-21
  [Bug Fixes]
  - Add dependency on Terminal::ANSIColor (for mugs-release)

  [Packaging]
  - Ensure mugs-release is run from repo root
  - Add 'check' subcommand to mugs-release to confirm repo is ready
  - Add more generated HTML files to .gitignore

  [UI/UX]
  - Improve clarity of output from mugs-release


0.0.6  2021-03-16
  [Bug fixes]
  - Handle undefined files better in MUGS::Util::File
  - Fix detection of empty config file keys
  - Exclude pq from dependencies install in README SYNOPSIS

  [Packaging]
  - Run tests during Docker packaging
  - Add a mugs-release tool to automate parts of the release process

  [Tests]
  - Allow tests to be run as root
  - Test remaining bits of MUGS::Util::File
  - Add tests for MUGS::Util::{Implementation,UI}Registry
  - Add tests for MUGS::Util::Config


0.0.5  2021-03-12
  [Packaging]
  - Factor MUGS::App::CroServer helper routines out of ::WebSocketServer


0.0.4  2021-03-10
  [Packaging]
  - Support Docker builds
  - Support `cro run`

  [Bug fixes]
  - Flush WebSocketServer startup messages immediately
  - Show data type name when throwing InvalidStructure from StructureValidator
  - Fix internal Seq escaping from get-info-available-game-types

  [Debugging]
  - Show Connection message debug output as pretty-printed JSON
  - Don't log X::MUGS typed exceptions in Server unless DEBUG is set

  [Other changes]
  - Refactor and improve MUGS::Server::Game {maybe-,}{start,stop}-game methods
    * Allow genre and leaf game classes to hook start-game and stop-game
    * Only start games that have enough participants
    * Abandon games that drop below minimum participant count


0.0.3  2021-03-04
  - First public upload