Skip to content

Releases: qbreader/website

v4.4.1

24 Nov 20:11
Compare
Choose a tag to compare

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
    • Add a site-wide audio effect option in this page (#221, #140)
  • 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

24 Nov 20:06
ce12f93
Compare
Choose a tag to compare

More multiplayer improvements, and two new endpoints to retrieve a question by its _id.

Multiplayer

Frontend

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

Full Changelog: v4.3.2...v4.4.0

v4.3.2

24 Nov 20:04
Compare
Choose a tag to compare

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

24 Nov 20:01
2657b15
Compare
Choose a tag to compare

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

24 Nov 19:59
Compare
Choose a tag to compare

Add ability to star questions! Plus, even better looking multiplayer rooms.

  • Add ability to star questions
    • Creates new api endpoints at /auth/stars
  • 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

19 Aug 04:21
Compare
Choose a tag to compare

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)
  • 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 the set_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 the packet_id field. This embedded document contains the following fields:
packet: {
    _id: ObjectId,
    name: string,
    number: number,
}
  • The set_id, packet_id, setYear, setName, packetName, and packetNumber fields are deprecated and will be removed in a future release. As a reminder, the type field is still deprecated.
    • As an alternative, use the fields in the embedded documents stored in the set and packet fields. In MongoDB methods, these fields can be accessed by using quotes and dot notation, such as set.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.
  • 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, not username
  • Fix missing awaits and wrong return types

Full Changelog: v4.1.6...v4.2.0

v4.1.6

04 Aug 01:50
f0ad770
Compare
Choose a tag to compare

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
  • 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 of tossup_id on audio document
  • Fix issue where getAudio could crash server

Full Changelog: v4.1.5...v4.1.6

v4.1.5

10 Jul 00:21
Compare
Choose a tag to compare

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 in getRandomBonus
  • Let getUserStats handle no active players

Full Changelog: v4.1.4...v4.1.5

v4.1.4

10 Jul 00:18
Compare
Choose a tag to compare

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

10 Jul 00:17
Compare
Choose a tag to compare

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