* feat(content): prebuild Fall Festival
* fix(typos): because 2023 is not the same as 2024
* feat(css): having stylesheets is important
* feat(content): ready for review & testing
* fix(tests): account for Sept 09 bundle
* fix(gala): use multi event list more
fix a couple of strings too
* feat(content): Warrior and Rogue text
also fix timing of quest bundle feature
* fix(strings): correct stat boosts
* fix(content): missing mage
also adds missing margin to purchase gems button in buy modal
---------
Co-authored-by: SabreCat <sabe@habitica.com>
* feat: prevent user from purchasing a quest if prerequisites are not met
* test: fail to buy quest if not all prerequisites are met
* test: modify to check all quest prerequisites
* Log all gem transactions to database
* Also store hourglass transactions
* Fix tests
* Display transaction history in hall of heroes for admins
* add tests to new API call
* hide transaction settings tab for non admins
* fix(lint): remove console
* fix(lint): various automatic corrections
* fix(transactions): use enum expected pluralizations
* fix api unit tests
* fix lint
* fix failing test
* Fix minor inconsistencies
* Log all gem transactions to database
* Also store hourglass transactions
* Fix tests
* Display transaction history in hall of heroes for admins
* add tests to new API call
* hide transaction settings tab for non admins
* fix(lint): remove console
* fix(lint): various automatic corrections
* fix(transactions): use enum expected pluralizations
* fix api unit tests
* fix lint
* Fix minor inconsistencies
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* buyMysterySet records every item in Amplitude.
Record only the mysterySet
Fixes: #11705
* buyMysterySet records every item in Amplitude.
Extend unit test
Fixes: #11705
* Fix: Reset negative quest scrolls number to zero on purchase(gem)
* Refactor: rename website/common/script/ops/buy/buyQuest.js to website/common/script/ops/buy/buyQuestGold.js and update related files
* Test: add two tests related to negative quest scrolls
* fix(purchasing): more number validation
* test(purchasing): add error cases
Also refactor NaN check and create client mixin
* fix(purchasing): cover "purchase" cases
* wip: define items as mixed objects
* add default owned gear
* mark modified
* more mark modified
* more mark modified
* more mark modified
* more mark modified
* fix common tests
* fix common tests
* update mongoose
* add itemsUtils
* use new util function in hall controller
* add tests for items utils
* update website/server to mark all items as modified
* start updating common code
* update login incentives
* update unlock
* remove changes to package-lock.json
* remove changes to package.json
* removing duplicate translation key
* fixing typos
* extracting quest prerequisite check. adding check for previous quest completion, if required
* fixing (undoing) static change, adding tests
* more typos
* correcting test failures
* honoring quest prerequisites in quest invite API call. updating format of il8n string replacement arg
* no longer using apiError, use translate method instead (msg key was not defined)
* adding @apiError to docblock as requested in issue
* removing checks on quest invite method. small window of opportunity/low risk