Releases: qbreader/website
v4.4.1
Create a settings page, and some improvements to how the gameplay pages are rendered. Also improves the answer-checking code.
Frontend
- Optimize how singleplayer settings are loaded
- The website now loads settings before doing anything else, which should mitigate the screen flashing as the user settings (e.g. select by set name) are loaded in
- Create a settings page
- Change default to type to answer for bonuses
- Increase options width on devices between L and XL (based on the Bootstrap grid system)
- If redirected to login page, logging in redirects you back to previous page
- Skip numbering for inactive geoword buzzes (in admin view)
Backend
- Move all routing to
routes/
folder
Answer Checking
- Reorganize the answer checking code to make it easier for others to contribute
- Add a specification.md document to describe what kind of answerlines to expect
- Fix same token being matched multiple times in stringMatchesReference (for evaluating answers) (#132)
- Fix given and expected fields being flipped in answerline testing output
Full Changelog: v4.4.0...v4.4.1
v4.4.0
More multiplayer improvements, and two new endpoints to retrieve a question by its _id
.
Multiplayer
- Highlight user score by @JeliHacker in #216
- Add option to make room private upon creation by @JeliHacker in #220
Frontend
- Make arrow icons also dropdown by @JeliHacker in #218
Backend
- API route
/api/tossup-by-id
to find a tossup by ID by @tildezero in #225 - Also adds an api route
/api/bonus-by-id
to find a bonus by ID
New Contributors
- @tildezero made their first contribution in #225
Full Changelog: v4.3.2...v4.4.0
v4.3.2
Better file structure to help other contributors contribute. Also, the set list is not retrieved dynamically.
- Reorganize
/api/admin
and/api/geoword
into separate folders. - Dynamically get the set list instead of caching on server startup
- Sets that are uploaded to the database will now instantly appear, instead of having to wait for the next server restart
- May have a small, but so far unnoticeable, hit on performance.
- Add instructions for how to set up
.env
file. - Fix an issue where invalid ObjectID would crash the server.
Full Changelog: v4.3.1...v4.3.2
v4.3.1
Adds a timer to multiplayer and create types.js
.
- Add timer by @JeliHacker in #215
- Created
types.js
(see #206) - Fixes a bug where
getQuestionCount
would return 0 - Move geoword audio into
client/
Full Changelog: v4.3.0...v4.3.1
v4.3.0
Add ability to star questions! Plus, even better looking multiplayer rooms.
- Add ability to star questions
- Creates new api endpoints at
/auth/stars
- Creates new api endpoints at
- Add correct/incorrect label for multiplayer rooms by @JeliHacker in #210
- Set
Access-Control-Allow-Origin
to*
for public api endpoints
Geoword
- Fix
getLeaderboard
not getting inactive buzzes (in admin view) - Use
audio.currentTime
to calculate celerity
Full Changelog: v4.2.0...v4.3.0
v4.2.0
Changes to how tossups and bonuses are represented in the MongoDB database. This release also adds pages to display user statistics in graphs, more singleplayer code organization (and better code organization in general), and some minor bug fixes.
Frontend
- Fix category selection bug in database (#198)
- Fix issues with packet numbers at the end of a set
- Fix geoword issue where ties would result in both players getting a tossup (in
/geoword/compare
) - Add graphs showing individual stats (#192)
- Update list of contributors in about page
- Fix multiplayer bug where tossup is undefined on connection
Backend
- By default, don't test timing functions when running
npm test
- Test random question functions in correctness test (makes sure they run without throwing errors)
- Add routes and database functions to show individual stats (#192)
- Routes:
/user/stats/tossup-graph
,/user/stats/bonus-graph
,/auth/user-stats/tossup-graph
,/auth/user-stats/bonus-graph
)
- Routes:
- Fix bug where
setName
parameter in stats would never match anything - Reorganize sending email to
server/email.js
file - Use
Date.now()
instead of whatever monstrosities I was using before - Don't authenticate
nodeMailer
if no API key is provided- This should make it easy for others to run the program locally, as previously they would run into authentication issues
Database
- A new packets collection exists. The
_id
of a packet corresponds to the original_id
of the packets originally stored as embedded documents in the sets collection. In addition, packet documents no longer store an array of the tossups and bonuses they contain, as that data was previous unreliable and inaccurate. Set documents no longer store the packets they contain, but packet documents do store the _id of the sets they contain. - The
set
parameter on tossup and bonus documents now contains an embedded document. The previous value, the_id
of the set that the tossup/bonus belonged to, is now stored in theset_id
field. This embedded document contains the following fields:
set: {
_id: ObjectId,
name: string,
year: number,
}
- The
packet
parameter on tossup and bonus documents now contains an embedded document. The previous value, the_id
of the set that the tossup/bonus belonged to, is now stored in thepacket_id
field. This embedded document contains the following fields:
packet: {
_id: ObjectId,
name: string,
number: number,
}
- The
set_id
,packet_id
,setYear
,setName
,packetName
, andpacketNumber
fields are deprecated and will be removed in a future release. As a reminder, thetype
field is still deprecated.- As an alternative, use the fields in the embedded documents stored in the
set
andpacket
fields. In MongoDB methods, these fields can be accessed by using quotes and dot notation, such asset.year
. - If there is a v5.0.0, these fields will be removed by then. Otherwise, warning will be provided when these fields are removed.
- As an alternative, use the fields in the embedded documents stored in the
- Similar changes were made to the
packet
field of geoword documents, but since no external API relies on these (or should), this isn't given as much attention. - For details about code changes, see #203
Answer Checking
- Fix bug where
extractKeyWords
would not extract all key words, allowing some insufficient answers to be accepted - Add typo correction for "contentinal" -> "continental"
Geoword
- Fix issue where geoword ranking is wrong (#194)
- Avoid destructuring function parameters when unnecessary
- By default, geoword functions use
user_id
, notusername
- Fix missing awaits and wrong return types
Full Changelog: v4.1.6...v4.2.0
v4.1.6
Code organization, geoword improvements, and singleplayer bug fixes. Also, you can finally visit https://qbreader.org and be redirected to the main site (previously, including the https
and omitting the www
would cause the page to load forever).
Frontend
- Remove unnecessary client-side logging
- Overhauled singleplayer code organization: it should be much cleaner now (and resembles the multiplayer code)
- Removed unnecessary
createTossupCard
parameter - Don't record bonus stats when not logged in
- Removed unnecessary
- Store "powermarked tossups only" setting in
localStorage
- Fix issue where non-three part bonuses would appear, even when the setting was applied
- Update rules for www and https
Geoword
- Record geoword prompt trail
- Fix geoword audio not playing on safari
Backend
- Reorganize
/api
,/auth
,/geoword
endpoint code- No change to api functionality
- Store each endpoint in its own file and organize by folder structure
- Clean up imports
- Less laggy multiplayer reading
- Change email address to
noreply@qbreader.org
Answer Checking
- Remove HTML tags when checking answer
- Fix issue where close years would almost always be accepted (#195)
- Only accept answer abbreviations (i.e. first letter of every word) longer than one letter
Database
- Increase database limit (max query return length) to 10000
- Add default values and explicit array support to all parameters of
/api/query
Geoword
- Store geoword audio on MongoDB instead of Github
- Dynamically get cost of packet (allowing packets of varying cost in the future, not just $2.50)
- Store
audio_id
on tossup document, instead oftossup_id
on audio document - Fix issue where
getAudio
could crash server
Full Changelog: v4.1.5...v4.1.6
v4.1.5
Big geoword features, and fix some bugs and security issues.
Frontend
- Compare geoword stats against other players (#187)
- Be able to view packets after finishing a geoword opus
- Escape HTML whenever possible in question cards
- (Multiplayer) Remove focus from chat-input when it's hidden
Backend
- Prevent unauthorized packet page access
- Change how arrays are encoded when passed to GET requests
- Fix
bonusLength
issues ingetRandomBonus
- Let
getUserStats
handle no active players
Full Changelog: v4.1.4...v4.1.5
v4.1.4
Add an admin portal (only for admins). Also, add an active opus system; see https://hsquizbowl.org/forums/viewtopic.php?p=395743#p395743 for more info. (If an opus is closed, then it is not active.)
Backend
- Add
/api/admin
endpoints
Full Changelog: v4.1.3...v4.1.4
v4.1.3
Filter tossups by powermark, plus some multiplayer and answer checking improvements.
Frontend
- Add filter tossups with powermark (#188)
- Use
URLSearchParams
whenever possible - Improve layout of user-stats page on mobile (#184)
- Change default to select by difficulty (instead of select by set name)
Multiplayer
- Fix issue with refreshing while buzzed in (#178)
Backend
- Add comma-dangle eslint rule
- Rename tests folder to test
- Handle more edge cases in answer checking algorithm (#165)
Full Changelog: v4.1.2...v4.1.3