Releases: cmu-sei/Gameboard
v3.9.1
Gameboard 3.9.1 introduces the "Synchronized Start" feature for games, resolves an issue preventing example responses to challenges from being displayed, and a number of minor infrastructure and security updates.
New features
- Games can now set to "Synchronized Start" mode.
- Sync start games can't be launched until all registered players (across all registered teams if it's a team game) have marked themselves ready, which they can do on the lobby screen.
- Once all players have readied, the game will automatically launch following a brief countdown. All players will have identical session start times and lengths.
- Users with the
Admin
andTester
roles can launch their own sessions in sync start games independent of whether all players have marked themselves ready.
Bug fixes
- Resolved an issue that prevented Gameboard from correctly rendering example answers to challenges.
- Resolved unintended behavior with session reset which caused challenge archive to fail in some cases. Integration tests have been added to clarify business rules around challenge reset.
- Resolved an issue that could cause Gameboard to fail to accurately report the nature of an exception during challenge launch if the game engine API errors.
Dependencies
- RXJS has been upgraded to
7.8.0
for improved performance and better API tooling.
Infrastructure and Miscellaneous
- Gameboard's content security policy settings have been updated to facilitate security across a broader range of deployment scenarios.
- The
Gameboard.Tests.Unit
andGameboard.Tests.Integration
projects have been renamed toGameboard.Api.Tests.Unit
andGameboard.Api.Tests.Integration
to better align with other solution projects.
v3.9.0
v3.9.0 of Gameboard includes new features, infrastructure updates, and bug fixes.
New features
- Admins now have the ability to manually award bonus points to teams or players in the context of a challenge. A description is currently required. This functionality is also available by API endpoint. A future update will modify score representations in other areas of the app (e.g. the scoreboard) to clarify how point totals are calculated.
- The Challenges admin screen now lists all members of a challenge's team.
Infrastructure updates
- Anonymous API consumers may no longer obtain the app's version via API call.
- Player challenge data on the Admin -> Game -> Players screen is now loaded on demand rather than proactively in order to improve page performance.
- Gameboard now depends on version 2.2.0 of TopoMojo. (Any Gameboard
installations relying on this version must also be configured to run against a TopoMojo installation running at least2.2.0
.) - Topomojo's 2.2.0 version includes improvements to the sync process which brings workspaces into Gameboard as challenge specs. Therefore, if you're migrating from a prior version, run "Sync from Source" on your games to ensure their challenge spec data is correctly migrated to Gameboard.
- Gameboard's default settings for OIDC have been adjusted to support smoother silent refresh by default, and the previous OIDC package has been replaced with
oidc-client-ts
. - API keys no longer depend on a per-user public key and are now computed using a new hashing strategy. As a side effect of this change, any api keys generated using 3.8.1 of Gameboard will no longer validate and have been removed from user profiles. Keys can be regenerated in Admin -> Users. Apologies for any inconvenience.
Bug fixes
- An error that prevented challenges from being graded successfully has been resolved.
- A bug that could produce the error "Challenge Start Pending" when a player launches multiple challenges consecutively has been resolved.
- Events on the "Challenges" admin screen are now always sorted in time order (ascending).
- An issue that prevented the player session clocks from updating has been resolved.
- Resolved a bug that could cause 500-level server errors for challenges with empty markdown fields.
v3.8.1
Gameboard version 3.8.1 contains bug fixes, visual enhancements, and new endpoints for consumers of Gameboard's API.
Bug fixes
- The "View scoreboard" link went missing from the player session component on the game page. It has been returned to its normal location. Resolves #133.
- The indicator that informs the user whether a player/team has an active session or not has been restored, along with a change in look and feel. Red means that the session has expired. Yellow means that it hasn't been created yet, and slowly pulsing green means that the session is active. All states have tooltips for easier readability. In the future, we will review options to better support colorblind users. Resolves #132.
- Possibly inspired by the "view scoreboard" link's sudden disappearance, "Admin Start" also went missing in the previous release. Fortunately, it followed the scoreboard link home. Resolves #131.
- A long-standing bug that prevented a user's held roles from lighting up in user administration (to indicate which roles they hold) has been fixed. Resolves #130.
- A tooltip has been added to the "Copy to Markdown" button in the support ticket list to clarify what it does. Resolves #129.
- The timer that counts down during a player session was failing to do so. It's back in business. Resolves #123.
Enhancements
- The player/team session status light described above now appears on the player list in admin screens to enable admin tracking of player activity.
- In addition to seeding through a seed.json file, users spinning up a new Gameboard installation can optionally seed an admin user via
appsettings.conf
(or through a.values.yaml
file for K8 installations). See PR #127 for details. - Gameboard's Swagger page now offers PCKE support.
API Surface
v3.8.0
Gameboard 3.8.0 contains performance optimizations, bug fixes, and multiple new features. This PR has a corresponding one in the Gameboard UI project.
New features
- Gameboard now supports
x-api-key
header-based authorization. Admins can issue API keys for any user account on the Users screen in Admin. Resolves #107. - The game enrollment and session commencement process has been improved, receiving some performance optimizations and, most notably, improved differentiation between the "unenroll" and "reset session" commands.
- "Unenroll" is only available before a session has begun, and only for non-manager players in team games. It now removes a single player from the game. Resolves #111.
- "Reset Session" now removes an entire team from the game after they've started session. All record of their session is deleted, including challenge data.
- These functions are available to players in the game lobby screen and to admins on the "Players" screen for a specific game. Note that admins cannot currently unenroll individual players in team games.
- New installations can now be correctly seeded with desired data, including users, games, challenges, and more! Rename the included
seed-data.json.example
file toseed-data.json
to get started. Resolves #106. - Practice mode is now available!
- Support various modes: competition, practice, test
- Admin designates Game as "Practice"
- Public practice challenge browser shows all challenges in practice games.
- Auto session creation in practice mode (sliding window).
- Players can extend/end session.
- Players can see previous sessions in profile/history.
- Admins can toggle modes on player browser.
Bug fixes
- Players can no longer generate certificates for a game unless their score is greater than zero.
- It's no longer possible to set a challenge as a prerequisite for itself. Partially addresses #114, but it's likely that in a future version we'll expand this guard to detect dependency cycles at a deeper level.
Performance improvements
- The Admin -> Users screen now downloads a slimmed-down dataset and loads additional data by request, which should result in faster load times and increased page performance. Resolves #116.
Infrastructure
- An abstraction layer has been added to support the use of additional game engines beyond TopoMojo and to support the Crucible project.
- AutoFixture has been added to the Integration tests project to support better test semantics.
- Gameboard now supports optional HTTP logging. This can be enabled using
app.settings.conf
and setting any of the following optional values:Logging__EnableHttpLogging
Logging__RequestBodyLogLimit
Logging__ResponseBodyLogLimit
v3.7.1
Version 3.7.1 of Gameboard contains bug fixes and improvements to stability through additional automated tests.
Infrastructure
- Internal logs for errors during session extension have been improved to better identify any future issues.
Bug fixes
- Resolved an issue that could the displayed name of a team to be inconsistent between the scoreboard and admin views
- Resolved an issue that prevented images in challenge markdown from being rendered in Gameboard.
Tests
- Additional unit and integration tests have been added to support system stability.
- Additional test infrastructure has been added to support efficient test authoring.
v3.7.0
Version 3.7.0 of the Gameboard API contains architectural changes, stability improvements, and the introduction of automated testing.
Platform
- Gameboard.API now runs on .NET Core 7
- Package dependencies have been upgraded to compatible versions
Enhancements
- The
State
column from theChallenges
table is now archived in theChallengesArchived
table along with the rest of the challenge data.
Bug fixes
- Resolved an issue where a support ticket's details may load incorrectly under certain conditions.
Testing
- Added test projects (including unit and integration tests) along with appropriate supporting infrastructure. Tests can be run with the test runner integrated into Visual Studio, any third-party .NET Core-compatible test runner in Visual Studio Code, or with the
dotnet test
command executed at the solution root. - Sample tests have been written of each type. More will be added in future releases.
- CI has been modified to fail if tests fail.
v3.6.20
Improves Cubespace scoring endpoints
What's Changed
- 3.6.20 by @sei-bstein in #88
Full Changelog: 3.6.19...3.6.20