- 29 August 2026 — Fork maintenance and modernization:
- This is a fork of the original Pretend You're Xyzzy project, brought up to date after several
years of dormancy. See the
GitHub commit history
for full details; here's a summary of what changed.
- Platform upgrade:
- Upgraded to Java 25 (the current LTS), including the dependency updates needed to compile
and run on it (Guice, EasyMock, Hibernate, log4j2, and others).
- Migrated the persistence layer from javax.persistence
to jakarta.persistence and Hibernate 6, replacing the
old hand-rolled SQLite dialect with Hibernate's own maintained community SQLite dialect.
- Deployment:
- Added a Docker Compose deployment (a Dockerfile and docker-compose.yml) for running behind a
reverse proxy, including a PostgreSQL service that seeds itself automatically from the existing
card catalog.
- Interface:
- Added dark mode, with automatic detection based on your OS/browser setting and a manual
toggle.
- Bug fixes:
- Fixed a lock-ordering deadlock between the connected-users list and the game manager.
- Fixed several race conditions in game state handling (card set ID list, player list
logging).
- Fixed a crash risk when starting a game whose custom (Cardcast) card sets fail to load.
- Fixed a bug where waiting for a new chat/game message could return before a message had
actually arrived.
- Fixed illegible disabled buttons in dark mode.
- Code quality:
- Worked through SonarCloud's full findings list for the project. Along the way this fixed
some real issues, not just style: a log-injection-adjacent logging pattern, a server-side
request forgery hole in custom-deck-by-URL loading, and a switch from MD5 to SHA-256 for a
cache key, among others.
- Housekeeping:
- Repointed GitHub links (repository, bug reports, source metadata) at this fork instead of
upstream.
- CI and Dependabot now run on a self-hosted GitHub Actions runner, with Dependabot PRs that
pass CI merged automatically.