What's Changed
- Added a multi-select question type with three scoring modes: Strict, Balanced, and Lenient
- Added optional instance branding: custom app name, logo, colors, and font, without forking the app (thanks @Valentin-Dumas31!)
- Players can now reconnect to an in-progress game from the join page using their saved PIN
- Added a button to export any quiz as a JSON file for backup or re-import
- Added a configurable max points value and an optional penalty for wrong answers, per question
- The language selector now shows each language in both its native and translated name
- Added a "no time limit" option for questions using order-based scoring
- Fixed a crash and answer index corruption that could happen when deleting questions (thanks @neyzerth for pointing us to the fix!)
- Fixed an issue preventing players with short names (1-3 characters) from joining a game
- Docker images are now also available on the GitHub Container Registry (ghcr.io), in addition to Docker Hub
Technical
- Refactored the question type system around an extensible registry, making it easier to add new question types
- Reorganized question type components into dedicated subfolders
- Consolidated the color palette into semantic design tokens
- Centralized lint and format tooling at the monorepo root, and migrated the oxlint config to TypeScript
- Split the README into a dedicated
docs/folder (configuration, quiz, branding, reverse proxy, WebSocket protocol) - Quiz and result files are now looked up by an id stored inside their content instead of their filename, hardening file access
Full Changelog: https://github.com/Ralex91/Rahoot/compare/3.0.1...3.1.0