* fix(profile): detect attempt to use banned words as display name. refactor profanity detection method.
* fix(profile): detect attempt to use banned words in blurb. further refactor profanity detection. inform the user their chat privileges have been revoked.
* refactor: add function to normalize Unicode strings and remove diacritics
* fix: improve regEx to prevent false partial matches e.g. 'hello' being recognised as banned words. porting fix from #12309
* fix(profile): refactor of profanity detection for #12445
* fix(profile): add test for swear words in new profile. fix existing tests
* fix(profile): show different error message for attempted slur use in username by new users.
* fix(profile): remove incorrect slur test
* fix(profile): fix slurs not caught at start of end of strings connect by punctuation
* tests(profile): fix tests for profanity checking
* remove exclusive test
* 11865 - update text for slur warnings
* 11865 - remove unused string from locale files
* 11865 - improve naming of banned word usage locale string
* 11865 - improve logic so that differentiated warnings are shown depending on whether a slur or other profanity has been used in a display name
* 11865 - construct slur regexes outside the validation function in which they are used
* 11865 - fix tests
* WIP: #12555
-dayOfMonth takes timezone into account on task update for monthly dailys
-startDate set to start of day in user's tz on task update for monthly
dailys
-tweaked a test so that it's actually testing something
* WIP: 12555
-task.startDate gets set to start of day in user's tz on task creation
and task update
-set preferences.timezoneOffset to nonzero value in certian test user objects
-removed date literals in test:api-v3:integration:tasks:PUT
* change $type to date for task and add new test
* adjust apidocs to reflect type change
* migration test for api date $type change
* minor fixes to migration
* unset instead of set empty string
* add type filter
* fix(todo date migration): make sure the update command works and limit update ops
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* upgrade stripe module
* switch stripe api to latest version
* fix api version in tests
* start upgrading client and server
* client: switch to redirect
* implement checkout session creation for gems, start implementing webhooks
* stripe: start refactoring one time payments
* working gems and gift payments
* start adding support for subscriptions
* stripe: migrate subscriptions and fix cancelling sub
* allow upgrading group plans
* remove console.log statements
* group plans: upgrade from static page / create new one
* fix#11885, correct group plan modal title
* silence more stripe webhooks
* fix group plans redirects
* implement editing payment method
* start cleaning up code
* fix(stripe): update in-code docs, fix eslint issues
* subscriptions tests
* remove and skip old tests
* skip integration tests
* fix client build
* stripe webhooks: throw error if request fails
* subscriptions: correctly pass groupId
* remove console.log
* stripe: add unit tests for one time payments
* wip: stripe checkout tests
* stripe createCheckoutSession unit tests
* stripe createCheckoutSession unit tests
* stripe createCheckoutSession unit tests (editing card)
* fix existing webhooks tests
* add new webhooks tests
* add more webhooks tests
* fix lint
* stripe integration tests
* better error handling when retrieving customer from stripe
* client: remove unused strings and improve error handling
* payments: limit gift message length (server)
* payments: limit gift message length (client)
* fix redirects when payment is cancelled
* add back "subUpdateCard" string
* fix redirects when editing a sub card, use proper names for products, check subs when gifting
* refactor(api-members): separate handler for the GET /challenges/:challengeId/members route
* refactor(api-members): challenges-related code removed from _getMembersForItem handler function
* feat(api-members): added support to the new includeTasks query parameter for the GET /challenges/:challengeId/members route
* fix(api-members): adjustments to the GET /challenges/:challengeId/members route
* fix(api-members): merge of _getMembersTasksFromChallenge and additional check for a test suite
* refactor(api-members): includeAllMembers query parameter got removed from the GET /challenges/:challengeId/members route
* GET-challenges_challengeId_members.test.js: use _id
* members.js: use _id instead of id
* use id instead of _id
* _id instead of id
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* upgrade helmet to version 4
* deps(short-uuid): upgrade to version 4, closes#12573
* deps(slack): upgrade to version 4
* deps(slack): upgrade to version 5, closes#11442
* deps(amplitude): upgrade to latest version use api v2
* fix tests
* slack tests: return promise
* refactor slack setup for tests
* fix slack unit tests
* challenge won notification: add more info
* update tests
* use new notification on web, fixes#7716
* wip design
* finalize design
* fix markdown rendering
* Loggly-only user support events (#12676)
* feat(analytics): Loggly-only user support events
* fix(analytics): clean up more Unknowns
* wip: allow tracking events from the server
* analytics: allow tracking generic events on the server
* remove console.logs
* remove console.log (client)
* add integration test
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* fix(banned words): fix partial matching of words containing diacritics against banned words list (#12309)
* lint: remove whitespace to fix error
* test: add test to prevent partial matching of words containing diacritics against banned words list (#12309)
* doc: add link to Unicode table of diacritical marks (#12309)
Fixes#12417
Squashed commit of the following:
commit 1f074175c480a638cf61e2c72ca57cdc6f8699b6
Author: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Date: Mon Oct 26 10:57:23 2020 +0100
fix(i18n): remove unused string questLevelTooHigh
commit 12cc74002ec87c14cc000b008454f34475fd3636
Merge: 4fc260e552 ad9b551de3
Author: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Date: Mon Oct 26 10:50:39 2020 +0100
Merge branch 'feature/level-locked-quests-should-be-used-at-any-level' of https://github.com/hamboomger/habitica into hamboomger-feature/level-locked-quests-should-be-used-at-any-level
commit ad9b551de3b85d7e60c93c011ef82720c79a4787
Author: hamboomger <hamboomger@gmail.com>
Date: Thu Oct 8 13:34:19 2020 +0300
fix(quests): Quests that are level-locked for purchase can now be used at any level
* add cannotRemoveQuestLeader string
* throw error when member is quest leader
* add the new apidoc error
* change i18n key name
* fix apidoc formatting and change key in throw()
* add test for preventing removing quest owner
* patch(groups): change error codes
Also:
- Fix the test for this which has been equally broken.
- Simplify apidoc position info and make consistent in similar routes.
- Replace non-ascii characters in apidoc comment.
* Begin refactoring news API to return individual markdown posts
* Implement simple bailey CMS
* Prevented users with lvl less than 10 from seeing mana
* Added in class checks and notification tests
* Added getter use
* Fixed class check
* chore(i18n): update locales
* 4.60.2
* remove tests that are no longer needed because we won't be purging private messages (#10670)
Ref: this comment from paglias: https://github.com/HabitRPG/habitica/issues/7940#issuecomment-406489506
* remove .only
* allow challenge leader/owner to view/join/modify challenge in private group they've left - fixes#9753 (#10606)
* rename hasAccess to canJoin for challenges
This is so the function won't be used accidentally for other
purposes, since hasAccess could be misinterpretted.
* add isLeader function for challenges
* allow challenge leader to join/modify/end challenge when they're not in the private group it's in
* delete duplicate test
* clarify title of existing tests
* add tests and adjust existing tests to reduce privileges of test users
* fix lint errors
* remove pointless isLeader check (it's checked in canJoin)
* Correct Challenges tooltip in Guild view (#10667)
* Fix new party member cannot join pending quest (#10648)
* Saved sort selection into local storage for later use - fixes#10432 (#10655)
* Saved sort selection into local storage for later use
* Updated code to use userLocalManager module
* Fix initial position item info when selecting one item after another (fixes#10077) (#10661)
* Update lastMouseMoveEvent even when dragging an egg or potion.
* Update lastMouseMoveEvent even when dragging a food item.
* Refactor/market vue (#10601)
* extract inventoryDrawer from market
* show scrollbar only if needed
* extract featuredItemsHeader / pinUtils
* extract pageLayout
* extract layoutSection / filterDropdown - fix sortByNumber
* rollback sortByNumber order-fix
* move equipment lists out of the layout-section (for now)
* refactor sellModal
* extract checkbox
* extract equipment section
* extract category row
* revert scroll - remove sellModal item template
* fix(lint): commas and semis
* Created category item component (#10613)
* extract filter sidebar
* fix gemCount - fix raising the item count if the item wasn't previously owned
* fixes#10659
* remove unneeded method
* fix typo when importing component
* feat(content): Forest Friends Quest Bundle
* chore(sprites): compile
* chore(i18n): update locales
* 4.60.3
* fix(bcrypt): install fork compatible with Node 8
* chore(i18n): update locales
* 4.60.4
* add swear words - TRIGGER / CONTENT WARNING: assault, slurs, swearwords, etc
* add pinUtils-mixin - fixes#10682 (#10683)
* chore(news): Bailey
* chore(i18n): update locales
* 4.60.5
* Improve rendering banner about sleeping in the inn
See #10695
* Display settings in one column
* Small Updates (#10701)
* small updates
* fix client unit test
* fix uuid validation
* Revert "Small Updates (#10701)" (#10702)
This reverts commit dd7fa73961.
* feat(event): Fall Festival 2018
* chore(sprites): compile
* chore(i18n): update locales
* 4.61.0
* Move inbox to its own model (#10428)
* shared model for chat and inbox
* disable inbox schema
* inbox: use separate model
* remove old code that used group.chat
* add back chat field (not used) and remove old tests
* remove inbox exclusions when loading user
* add GET /api/v3/inbox/messages
* add comment
* implement DELETE /inbox/messages/:messageid in v4
* implement GET /inbox/messages in v4 and update tests
* implement DELETE /api/v4/inbox/clear
* fix url
* fix doc
* update /export/inbox.html
* update other data exports
* add back messages in user schema
* add user.toJSONWithInbox
* add compativility until migration is done
* more compatibility
* fix tojson called twice
* add compatibility methods
* fix common tests
* fix v4 integration tests
* v3 get user -> with inbox
* start to fix tests
* fix v3 integration tests
* wip
* wip, client use new route
* update tests for members/send-private-message
* tests for get user in v4
* add tests for DELETE /inbox/messages/:messageId
* add tests for DELETE /inbox/clear in v4
* update docs
* fix tests
* initial migration
* fix migration
* fix migration
* migration fixes
* migrate api.enterCouponCode
* migrate api.castSpell
* migrate reset, reroll, rebirth
* add routes to v4 version
* fix tests
* fixes
* api.updateUser
* remove .only
* get user -> userLib
* refactor inbox.vue to work with new data model
* fix return message when messaging yourself
* wip fix bug with new conversation
* wip
* fix remaining ui issues
* move api.registerLocal, fixes
* keep only v3 version of GET /inbox/messages
* Fix API early Stat Point allocation (#10680)
* Refactor hasClass check to common so it can be used in shared & server-side code
* Check that user has selected class before allocating stat points
* chore(event): end Ember Hatching Potions
* chore(analytics): reenable navigation tracking
* update bcrypt
* Point achievement modal links to main site (#10709)
* Animal ears after death (#10691)
* Animal Ears purchasable with Gold if lost in Death
* remove ears from pinned items when set is bought
* standardise css and error handling for gems and coins
* revert accidental new line
* fix client tests
* Reduce margin-bottom of checklist-item from 10px to -3px. (#10684)
* chore(i18n): update locales
* 4.61.1
* Position inn banner when window is resized
* feat(content): Subscriber Items and Magic Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.62.0
* Update inn banner handling
* Fix banner offset on initial load
* Fix minor issues.
* Issue: 10660 - Fixed. Changed default to Please Enter A Value (#10718)
* Issue: 10660 - Fixed. Changed default to Please Enter A Value
* Issue: 10660 - Fixed/revision 2 Changed default to Enter A Value
* chore(news): Bailey announcements
* chore(i18n): update locales
* 4.62.1
* adjust wiki link for usernameInfo string
https://github.com/HabitRPG/habitica-private/issues/7#issuecomment-425405425
* raise coverage for tasks api calls (#10029)
* - updates a group task - approval is required
- updates a group task with checklist
* add expect to test the new checklist length
* - moves tasks to a specified position out of length
* remove unused line
* website getter tasks tests
* re-add sanitizeUserChallengeTask
* change config.json.example variable to be a string not a boolean
* fix tests - pick the text / up/down props too
* fix test - remove changes on text/up/down - revert sanitize condition - revert sanitization props
* chore(i18n): update locales
* 4.62.2
* chore(news): Bailey
* chore(i18n): update locales
* 4.62.3
* inbox: fix avatar display and order
* Username announcement (#10729)
* Change update username API call
The call no longer requires a password and also validates the username.
* Implement API call to verify username without setting it
* Improve coding style
* Apply username verification to registration
* Update error messages
* Validate display names.
* Fix API early Stat Point allocation (#10680)
* Refactor hasClass check to common so it can be used in shared & server-side code
* Check that user has selected class before allocating stat points
* chore(event): end Ember Hatching Potions
* chore(analytics): reenable navigation tracking
* update bcrypt
* Point achievement modal links to main site (#10709)
* Animal ears after death (#10691)
* Animal Ears purchasable with Gold if lost in Death
* remove ears from pinned items when set is bought
* standardise css and error handling for gems and coins
* revert accidental new line
* fix client tests
* Reduce margin-bottom of checklist-item from 10px to -3px. (#10684)
* chore(i18n): update locales
* 4.61.1
* feat(content): Subscriber Items and Magic Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.62.0
* Display notification for users to confirm their username
* fix typo
* WIP(usernames): Changes to address #10694
* WIP(usernames): Further changes for #10694
* fix(usernames): don't show spurious headings
* Change verify username notification to new version
* Improve feedback for invalid usernames
* Allow user to set their username again to confirm it
* Improve validation display for usernames
* Temporarily move display name validation outside of schema
* Improve rendering banner about sleeping in the inn
See #10695
* Display settings in one column
* Position inn banner when window is resized
* Update inn banner handling
* Fix banner offset on initial load
* Fix minor issues.
* Issue: 10660 - Fixed. Changed default to Please Enter A Value (#10718)
* Issue: 10660 - Fixed. Changed default to Please Enter A Value
* Issue: 10660 - Fixed/revision 2 Changed default to Enter A Value
* chore(news): Bailey announcements
* chore(i18n): update locales
* 4.62.1
* adjust wiki link for usernameInfo string
https://github.com/HabitRPG/habitica-private/issues/7#issuecomment-425405425
* raise coverage for tasks api calls (#10029)
* - updates a group task - approval is required
- updates a group task with checklist
* add expect to test the new checklist length
* - moves tasks to a specified position out of length
* remove unused line
* website getter tasks tests
* re-add sanitizeUserChallengeTask
* change config.json.example variable to be a string not a boolean
* fix tests - pick the text / up/down props too
* fix test - remove changes on text/up/down - revert sanitize condition - revert sanitization props
* Change update username API call
The call no longer requires a password and also validates the username.
* feat(content): Subscriber Items and Magic Potions
* Re-add register call
* Fix merge issue
* Fix issue with setting username
* Implement new alert style
* Display username confirmation status in settings
* Add disclaimer to change username field
* validate username in settings
* Allow specific fields to be focused when opening site settings
* Implement requested changes.
* Fix merge issue
* Fix failing tests
* verify username when users register with username and password
* Set ID for change username notification
* Disable submit button if username is invalid
* Improve username confirmation handling
* refactor(settings): address remaining code comments on auth form
* Revert "refactor(settings): address remaining code comments on auth form"
This reverts commit 9b6609ad646b23d9e3e394c1856f149d9a2d0995.
* Social user username (#10620)
* Refactored private functions to library
* Refactored social login code
* Added username to social registration
* Changed id library
* Added new local auth check
* Fixed export error. Fixed password check error
* fix(settings): password not available on client
* refactor(settings): more sensible placement of methods
* chore(migration): script to hand out procgen usernames
* fix(migration): don't give EVERYONE new names you doofus
* fix(migration): limit data retrieved, be extra careful about updates
* fix(migration): use missing field, not migration tag, for query
* fix(migration): unused var
* fix(usernames): only generate 20 characters
* fix(migration): set lowerCaseUsername
* fix(lint): comma
* fix(lint): comma spacing
* chore(i18n): update locales
* 4.63.0
* chore(news): Bailey
* chore(i18n): update locales
* 4.63.1
* fix(usernames): various
Reword invalid characters error
Correct typo in slur error
Remove extraneous Confirm button
Reset username field if empty on blur
Restore ability to add local auth to social login
* fix(auth): account for new username paradigm in add-local flow
* fix(auth): alert on successful addLocal
* chore(i18n): update locales
* 4.63.2
* fix(auth): Don't try to check existing username on new reg
* 4.63.3
* feat(content): Armoire and BGs 2018/10
* chore(sprites): compile
* fix(passport): use graph API v2.8
* chore(i18n): update locales
* 4.64.0
* Begin refactoring news API to return individual markdown posts
* Implement simple bailey CMS
* remove old news markdown
* Correctly display images in bailey modal
* Remove need for newStuff migration
* Add basic tests
* Fix authentication issue
* Fix tests
* Update news model
* add API route to get single post
* remove news admin frontend code
* fix lint error
* Fix merge mixups
* Fix lint errors
* fix api call
* fix lint error
* Fix issues caused by merging
* remove console log
* Improve news display
* Correctly update users notifications
* Fix date display for news posts
* Fix tests
* remove old cache file
* correctly create date
* correctly create promise
* Better check for existance.
* Improve docs
* Fix minor issues
* Add method to get latest post
* fix lint errors
* use correct call for 404
* add comment about old newStuff field
* paginate news
* Fix lint errors
* Remove unnecessary await
* Fix broken tests
* ...
* correct existence check
* fix database queries
* change approach to cached news posts
* fix tests
* Change how news posts are cached
* Fetch last news post at an interval
* Fix typos and other small things
* add new permission for modifying bailey posts
* add test for ensureNewsPoster
* return last news post with legacy api
* Fix test
* Hopefully fix test
* change fields to _id
* Fixes
* Fixes
* fix test
* Fixes
* make all tests pass
* fix lint
* id -> _id
* _id -> id
* remove identical tell me later route from api v4
* fix lint
* user model: fix issues with newStuff
* improve user#toJSONTransform
* fix typo
* improve newsPost.js
* fix(integration tests): do not return flags.newStuff if it was not selected
* fix news controller
* server side fixes, start refactoring client
* more client fixes
* automatically set author
* new stuff: show one post per user + drafts
* change default border radius for modals to 8px
* required fields and defaults
* slit news into its own component and fix static page
* noNewsPoster: move from i18n to apiError
* remove unused strings
* fix unit tests
* update apidocs
* add backward comparibility for flags.newStuff in api v3
* fix integration tests
* POST news: make integration test independent of number of posts
* api v3 news: render markdown
* static new-stuff: add padding and fix when user not logged in
* test flags.newStuff
* api v3: test setting flags.newStuff on PUT /user
* refactor news post cache and add tests
* remove new locales file
* more resilient tests
* more resilient tests
* refactor tests for NewsPost.updateLastNewsPost
* api v4: fix tests
* api v3: fix tests
* can set flags.newStuff in api v4
Co-authored-by: Keith Holliday <keithrholliday@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: Alys <Alys@users.noreply.github.com>
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Carl Vuorinen <carl.vuorinen@gmail.com>
Co-authored-by: Rene Cordier <rene.cordier@gmail.com>
Co-authored-by: Forrest Hatfield <github@forresthatfield.com>
Co-authored-by: lucubro <88whacko@gmail.com>
Co-authored-by: negue <negue@users.noreply.github.com>
Co-authored-by: Alys <alice.harris@oldgods.net>
Co-authored-by: J.D. Sandifer <sandifer.jd@gmail.com>
Co-authored-by: Kirsty <kirsty-tortoise@users.noreply.github.com>
Co-authored-by: beatscribe <rattjp@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
* content: add gems blocks
* gemsBlocks: include ios and android identifiers
* wip: promo code
* split common constants into multiple files
* add second promo part
* geCurrentEvent, refactor promo
* fix lint
* fix exports, use world state api
* start adding world state tests
* remove console.log
* use gems block for purchases
* remove comments
* fix most unit tests
* restore comment
* fix lint
* prevent apple/google gift tests from breaking other tests when stub is not reset
* fix unit tests, clarify tests names
* iap: use gift object when gifting gems
* allow gift object with less data
* fix iap tests, remove findById stubs
* iap: require less data from the mobile apps
* apply discounts
* add missing worldState file
* fix lint
* add test event
* start removing 20 gems option for web
* start adding support for all gems packages on web
* fix unit tests for apple, stripe and google
* amazon: support all gems blocks
* paypal: support all gems blocks
* fix payments unit tests, add tests for getGemsBlock
* web: add gems plans with discounts, update stripe
* fix amazon and paypal clients, payments success modals
* amazon pay: disabled state
* update icons, start abstracting payments buttons
* begin redesign
* redesign gems modal
* fix buttons
* fix hover color for gems modal close icon
* add key to world state current event
* extend test event length
* implement gems modals designs
* early test fall2020
* fix header banner position
* add missing files
* use iso 8601 for dates, minor ui fixes
* fix time zones
* events: fix ISO8601 format
* fix css indentation
* start abstracting banners
* refactor payments buttons
* test spooky, fix group plans box
* implement gems promo banners, refactor banners, fixes
* fix lint
* fix dates
* remove unused i18n strings
* fix stripe integration test
* fix world state integration tests
* the current active event
* add missing unit tests
* add storybook story for payments buttons component
* fix typo
* fix(stripe): correct label when gifting subscriptions
* Added the "Allow banned words" checkbox to create/update guild forms
Added the "Allow banned words" checkbox to guild create/update forms which are only visible to Admins
* Updated create/update group API to include bannedWordsAllowed property
Added logic to set bannedWordsAllowed depending on conditions
* Updated word banning logic to use bannedWordsAllowed guild value instead
Updated word banning logic to use bannedWordsAllowed guild value and deleted hardcoded guild file & import
* Updated banned words test
* Pull Request amends
Removed the setting of bannedWordsAllowed during group creation
Added v-once to elements
Updated existing test and added tests related to bannedWordsAllowed functionality
* Small amend
* Small amend
Removed leftover code that was left during testing
* Fix bug in challenge tags not converted to normal tags after challenge ended/deleted
* Added test cases to test bug fix
* Set tag.challenge from String to Boolean in tag model schema
* Update existing test with tag challenge set to boolean instead of string
* Added migration file for converting tag challenge field from string to bool
* Implement suggestions from ilnt
* Use mongoose instead of Mock in migration
* Change from update to bulkwrite
* update users individually
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* when filtering by owned challenges, challenges that a user owns but has not joined will be included
* add tests for filtering challenges by owned
* fix lint
* Add new API call to complete multiple task scorings in one call
* Improve API response
* Improve saving process
* Improve handling for multiple tasks scored at once
* Handle challenge task errors better
* Improve check for alias
* Improve check for task scorings
* Fix merge errors
* make nodemon ignore content_cache
* Fix completing group tasks
* fix test
* fix tests (again)
* typo
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix lint
* fix tests
* fix(teams): checklist, notes
* handleSharedCompletion: handle error, make sure it is run after the user task has been saved
* fix typo
* correctly handle errors in handleSharedCompletion when approving a task
* fix(teams): improve disabled states
* handleSharedCompletion: do not increase completions by 1 manually to adjust for last approval not saved yet
* revert changes to config.json.example
* fix(teams): more style fixage
* add unit tests for findMultipleByIdOrAlias
* exclude api v4 route from apidocs
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* scoreTasks: validate body
* fix tests, move string to api errors
* fix(tests): update expectations for breaking change
* start updating api docs, process tasks sequentially to avoid conflicts with user._tmp
* do not crash entire bulk operation in case of errors
* save task only if modified
* fix lint
* undo changes to error handling: either all tasks scoring are successfull or none
* remove stale code
* do not return user._tmp when bulk scoring, it would be the last version only
* make sure user._tmp.leveledUp is not lost when bulk scoring
* rewards tests
* mixed tests
* fix tests, allow scoring the same task multiple times
* finish integration tests
* fix api docs for the bulk score route
* refactor(task-modal): lockable label component
* wip loading spinner
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(btn): fix padding to have height of 32px
* implement loading spinner
* remove console.log warnings
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* finish merge - never throw an error when a group task requires approval (wip - needs tests)
* fix taskModal merge
* fix merge
* fix(task modal): add newline
* fix(column.vue): add newline at end of file
* mvp yesterdaily modal
* fix tests
* fix api docs for bulk scoring group tasks
* separate task scoring and _tmp handling
* handle _tmp when bulk scoring
* rya: close modal before calling cron API, prevents issues with modals
* rya: fix conflicts with other modals
* add sounds, support for group plans, analytics
* use asyncResource for group plans
* fix lint
* streak bonus: add comment about missing in rya
* move yesterdailyModal
* fix issues with level up modals and rya
* add comments for future use, fix level up modals not showing up at levels with a quest drop
* handle errors in rya modal
* bundle quest and crit notifications
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Phillip Thelen <viirus@pherth.net>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
* hide upgrade button for public guilds
* prevent group plans for public guilds
* fix unit tests
* fix integration and unit tests that assumed group plans could be public guilds
* more unit tests fixes
* more resilient unit test
* more resilient unit test
* Excluding tavern from showing up in GET /groups API when 'guilds' or 'publicGuilds' type parameter is included.
* Fixed test errors.
* Resolved pull request #12438 issues.
Moved Tavern exclusion to Group model, removed Group controller back to the original and resolved test failures.
* Added logic for a repeating Chilling Frost skill. Added test case for redundant chilling frost skill cast. Added comments for the logic of repeating Stealth skill because of an error.
* Added logic for a repeating Stealth skill. Avoiding MP reduction still pending because of console error. Test cases pending.
* Completed the logic for a repeated Stealth skill. Added repeated frost skill cast check in common. Removed exclusive test. Test cases are pending.
* Added test case for Stealth skill recast. Fixed lint errors. Fixed a flaw in if statement which led to test case failure.
* Fixed lint errors in test case.
* Added a common JSON entry for skil recasts in three files. Other files remaining. Added Chilling Frost recast check in common code. Modified test cases.
* Added spellDisabled condition in client code.
* Reverted JSON messages for three languages. Added spellAlreadyCast attribute to JSON file in locales/en. Made changes for showing appropriate message in client code.
* Added an import for throwing BadRequest in common code. Modified test case accordingly.
* Update website/common/script/content/spells.js
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* Added target and req attributes in cast() method arguments.
* Changed common code test case because of increased function parameters. Moved chilling frost test casse to common tests instead of server tests.
* Changed the test case format in common tests.
* Added a missing done statement.
* Fixed a minor error which led to failing test case. Removed the exclusive test which led to lint error.
* Fixed lint errors.
* Added a class named 'disabled' for the frontend change.
* fix(skills): style cleanup
* fix(skills): unfix
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* Updating daily daysOfMonth array when startDate is updated and adding integration tests to test this functionality
* Adding more test cases and adding semicolons to the end of lines
* Only updating the monthly repetition if the daily was already set to repeat on a day of the month
* fix(lint): whitespace
Co-authored-by: Laurel Thomson <laurel.beth.thomson@gmai.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix(teams): checklist, notes
* fix(teams): improve disabled states
* fix(teams): more style fixage
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* fix(tests): update expectations for breaking change
* refactor(task-modal): lockable label component
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* refactor(tasks): better spacing, generic multi select
* fix(tasks): various visual and behavior updates
* fix(tasks): incidental style tweaks
* fix(teams): standardize approval request response
* refactor(teams): correct test, use res.respond message param
* fix(storybook): renamed component
* fix(teams): age approval-required To Do's
Fixes#8730
* fix(teams): sync personal data as well as team on mixin sync
* fix(teams): hide unclaim button, not whole footer; fix switch focus
* fix(achievements): unrevert width fix
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* Issue 10209 - Remove read usages of zone
* Issue 10209 - Add coverage on daysSince and startOfDay cron utility functions
* Issue 10209 - Add unit test for daysUserHasMissed method
* Issue 10209 - Remove usages of deprecated `moment.js#zone` method.
* Issue 10209 - Add helper function to centralise logic
Also simplify timezoneOffsetToUtc function in site.vue
* Issue 10209 - Also add getUtcOffset as method on user
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* simplify ip address management by using the trust proxy express option
* add setupExpress file
* fix redirects middleware tests
* fix lint
* short circuit the ip blocking middleware
* basic implementation with ip based limiting
* improve logging
* upgrade apidoc
* apidoc: add introduction section
* fix lint
* fix tests
* fix lint
* add unit tests for rate limiter
* do not send retry-after header when points are available
* automatically fix lint
* fix more lint issues
* use userId as key for rate limit when available
* simplify ip address management by using the trust proxy express option
* add setupExpress file
* fix redirects middleware tests
* fix lint
* short circuit the ip blocking middleware
* basic implementation with ip based limiting
* improve logging
* upgrade apidoc
* apidoc: add introduction section
* fix lint
* fix tests
* fix lint
* add unit tests for rate limiter
* do not send retry-after header when points are available
* automatically fix lint
* fix more lint issues
* use userId as key for rate limit when available
* add run-rs to dependencies
* wip: add replica set to api unit github action
* wip: add replica set to api unit github action
* wip: fix gh actions mongodb replica set setting
* usa replica set for integration tests
* add correct mongodb version matrix for integration tests
* use different db connection on gh actions
* Revert "use different db connection on gh actions"
This reverts commit aa8db759d380ba58ac90304c786b3eba5004b1bd.
* add example transaction
* add mongo script to package.json
* abstract mongodb utils, connect using hostname on windows
* npm scripts: mongo -> mongo:dev
* add setup script for run-rs on windows
* gh actions: run in test environment
* remove test files
* better error handling, use cross-spawn to avoid issues on windows
* fix lint
* Getting the latest code
* Temporary fix for Redundant Party Invite. Needs changes.
* Added logic to check if the user is an existing member of the party that the user is invited to.
* Added a test case for redundant party invite check.
* Changed the test case for redundant party invite to see if it runs successfully.
* Made changes to the test cases.
* Fixed lint errors.
* Removed the exclusive mocha test.
* Referred the issue in the name of the new test case.
* Modified test case to check its veracity.
* Checking if the update statement is working or not.
* Piggybacking the updating of user tag list.
When a new task is being added to a challenge, added code to update user tag list along with the existing code that already involves syncing / updating the user documents of challenge members.
* Update comment on number of simulatenaeous users to be updated concurrently in TaskQueue.
* Added comment to explain previous commit caaca469f8 (Update comment on number of simulateneous users to be updated concurrently in TaskQueue)
* Added unit tests for testing commit caaca469f8 (Update comment on number of simulateneous users to be updated concurrently in TaskQueue)
* Removed unused lines from newly added test cases
* Implemented lint suggestions
* Update code with changes requested in PR
* Fix bug where updated webhook options failed to save
This bug was caused by Mongoose not creating getters/setters for array
elements (https://mongoosejs.com/docs/faq.html#array-changes-not-saved).
So, although the webhook was being updated properly, Mongoose was not
actually committing it to the database. Telling Mongoose that the array
of webhooks has changed via `markModified` fixes the issue.
Additionally, the relevant API test case was only checking whether or
not the webhook returned from the PUT endpoint matched the expected
update. Since the endpoint was returning the updated webhook without
querying the database again, this test case would pass. It has been
updated to check both the returned webhook as well as the version of the
webhook that is saved to the database against the expected. In other
words:
`assert returned === saved === expected`
Fixes#12336
* Call markModified on webhook.options instead of user.webhooks
This tells Mongoose that only the modified webhook's options changed
instead of telling it that the entire user.webhooks array changed,
saving a costly DB update.
* fix(chat) - Don't insert user link in url-less link and properly log source-mapping failures
* fix(chat) - Add link to markdown spec and list of known issues
* fix(chat) - Log regular expression as String
* Issue 10924 - Don't break up links with mention links
* Issue 10924 - Recognise links between brackets.
* Issue 10924 - Rely on markdown parser for link determination
* Issue 10924 - Only increment index once in findTextBlocks
* Issue 11050 - Small tuneups to unlock.js
- Use includes i.o. indexOf
- Extract small function for object setting duplication
- Use every instead of custom counter
* Issue 11050 - Properly store purchased items when purchasing them
* Issue 11050 - Couple more tuneups in unlock.js and implemented partial failure scenario
* Issue 11050 - Fix last lint issue
* Issue 11050 - Check path for gear i.o. failing to write it to purchased
* Issue 11050 - Guarantee variation coverage in tests
* Issue 11050 - Use startsWith instead of includes for background check
* Issue 11050 - Don't unlock lost items
* Improve whitespacing in highlightMentions.js unit test
* Issue 11504 - Don't link users in markdown code blocks
Use the markdown-it parser to determine what parts of the message are code block first.
Then work from those parser tokens back to content parts that should not be handled.
Still convoluted, but can be improved once a "user mention plugin" is added to habitica-markdown.
* Issue 11504 - Put functions in JavaScript order and fix linting issues
* Issue 11504 - Use includes i.o. multiple or checks and added some context.
* Issue 11504 - Add docstring for highlightMentions and simplify fence regex
* Issue 11504 - Replace inline recursor with default parameter value
* add date check
* achievements modal polishing
* refresh private-messages page when you are already on it
* add countbadge knob to change the example
* fix lint
* typos
* typos
* typos
* add toggle for achievements categories
* typo
* fix test
* fix edit avatar modal cannot be closed
* WIP(settings): subscriber page improvements
* WIP(subscriptions): more design build-out
* fix(css): disabled button styles
* fix(css): better Amazon targeting
* fix hide tooltip + align header correctly
* disable perfect scroll
* load messages on refresh event
* fix header label + conversation actions not breaking layout on hover
* WIP(g1g1): notif
* WIP(g1g1): notif cont'd
* fix(test): snowball change
* fix(event): feature NYE card
* chore(sprites): compile
* fix(bgs): include TT required field
* add gifting banner to the max height calculation
* chore(event): enable winter customizations
* WIP(gifting): partial modal implementation
* feat(gifting): select giftee modal
* fix(gifting): notification order, modal dismiss
* Begin implementing sign in with apple
# Conflicts:
# package-lock.json
# website/common/script/constants.js
# website/server/libs/auth/social.js
# website/server/models/user/schema.js
* Add apple sign in button to website
* fix lint errors
* fix config json
* fix(modals): correct some repops
* fix(gifting): style updates
* fix(buy): modal style changes
* fix(modals): also clean out "prev"
* Attempt workaround for sign in with apple on android
* temporarily log everything as error
* refactor(modals): hide in dismiss event
* fix temporary test failure
* changes to sign in with apple
* fix: first batch of layout issues for private messages + auto sizing textarea
* fix(modals): new dismiss logic
* fix(modals): new dismiss no go??
* Only use email scope
* print debugging
* .
* ..
* ...
* username second line - open profile on face-avatar/conversation name - fix textarea height
* temporarily disable apple auth and just return data for debugging
* Hopefully this works
* .....
* WIP(subscription): unsubscribed state
* .
* ..
* MAYBE THIS ACTUALLY WORKS???
* Implement apple sign in
* fix some urls
* fix urls
* fix redirect and auth
* attempt to also request name
* fix lint error
* WIP(subscription): partial subscribed
* chore(sprites): compile
* Change approach so that it actually works
* fix config error
* fix lint errors
* Fix
* fix lint error
* lint error
* WIP(subscription): finish subscribed
* refresh on sync
* new "you dont have any messages" style + changed min textarea height
* new conversationItem style / layout
* reset message unread on reload
* chore(npm): update package-locks
* fix styles / textarea height
* feat(subscription): revised sub page RC
* list optOut / chatRevoked informations for each conversation + show why its disabled
* Improve apple redirect view
* Fix apple icon on group task registration page
* WIP(adventure): prereqs
* Block / Unblock - correct disabled states - $gray-200 instead of 300/400
* canReceive not checking chatRevoked
* fix: faceAvatar / userLink open the selected conversation user
* check if the target user is blocking the logged-in user
* fix(subs): style tweaks
* fix(profiles): short circuit contributor
Attempted fix for #11830
* chore(sprites): compile
* fix(content): missing potion data
* fix(content): missing string
* WIP(drops): new modal
* fix(subs): moar style tweaks
* check if blocks is undefined
* max-height instead of height
* fix "no messages" state + canReceive on a new conversation
* WIP(adventure): analytics fixes etc
* Improve apple signin handling
* fixed conversations width (280px on max 768 width page)
* feat(adventure): random egg+potion on 2nd task
* fix(lint): noworkies
* fix(modal): correctly construct classes
* fix(tests): expectations and escape
* Fix typo
* use base url from env variables
* fix lint
* call autosize after message is sent
* fix urls
* always verify token
* throw error when social auth could not retrieve id
* Store emails correctly for apple auth
* Retrieve name when authenticating through apple
* Fix lint errors
* fix all lint errors
* fix(content): missing strings
* Revert "always verify token"
This reverts commit 8ac40c76bfa880f68fa3ce350a86ce2151b9cf95.
# Conflicts:
# website/server/libs/auth/social.js
* Correctly load name
* remove extra changes
* remove extra logger call
* reset package and package-lock
* add back missing packages
* use name from apple
* add support for multiple apple public keys
* add some unit and integration tests
* add apple auth integration test
* tweak social signup buttons
* pixel pushing
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
* fix(webhooks): don t parse response as json
* upgrade got to version 10
* remove old header
* fix tests
* fix email auth
* add migration
* update email error
* split migration in two
* start implementing an ip blocker
* fix comments and add to list of middlewares
* fix code, comment code and improve response
* wip tests
* fix order
* fixes and tests
* todo comment
* add failures field to webhooks and sanitize
* implement logic
* use update instead of save
* specify timeout and maximum number of retries
* add tests
* Fix bug to allow guild summary and description to match against search term in MyGuilds component
* Add unit test to groupUtilities to test filterGroup function
* Changes made after running npm:run:lint
* Fix bug when filter guild function does not match against guild size correctly when the guild has member count = 100 or 1000
According to habitica wiki Guilds Guide, gold-tier guilds are guilds with 1000 or more members. However, under the current code of filter guild function, it matches guilds as gold-tier as strictly more than 1000 members, excluding 1000 members. Similar silver-tier guilds should have 100 to 999 members, but the current code it matches guilds as silver-tier for members between 101 and 999 members.
* Added unit tests to test the newly added code in the groupsUtilities mixin for the current issue
* Add unit testing to test search guild name, summary, and description in myGuilds component
* Add suggestions from lint
* Added searching by guild summary and white space handling in search terms.
For discover guilds component, added the following:
1) handling of searching by guild summary
2) preventing white space in search terms to display all guilds
3) added test cases for testing the search functionality in discove guilds to ensure consistent behaviour between the searching in MyGuilds and public guilds.
* Remove console statements from test file
* Implement suggestions from lint.
Co-authored-by: osiris <eynsan@yahoo.co.uk>
* Ensure official challenges are listed first
* Fix lint errors
* Move query creation into separate function
* switching branches
* Fixes and tests
* Formatting fixes
* Linting
* fix tests
* WIP(adventure): prereqs
* WIP(drops): new modal
* WIP(adventure): analytics fixes etc
* feat(adventure): random egg+potion on 2nd task
* fix(lint): noworkies
* fix(modal): correctly construct classes
* fix(tests): expectations and escape
* fix(first-drops): address comments
* fix(first-drops): don't give random drops until first drops
* fix(drops): remove more Level 3 references
* refactor(drops): no need for cloning
* refactor(drops): unnecessary export
* fix(first-drops): force sync
* fix(first-drops): move to server
* fix(first-drops): escape in case we get here with >0 items
* fix(lint): line length
* fix(pet-food): remove unused string
Introduce a new error type blockedToSendToThisUser for the cases where you have blocked a player from sending private messages to you, if you try to message them or if you try to transfer gems to them, you will see the error "You can't send to this player because you have block this player."
* Implement atomic user challenges update
Prevents multiple concurrent requests from passing through
Fixes#11295
* Move user challenges update to separate method
* Rename challenge syncToUser to syncTasksToUser
Now that adding the challenge to user is separated, this methods main purpose is to sync the tasks
* Fix lint errors
* Strip markdown from push notifications
* Revert "Strip markdown from push notifications"
This reverts commit 4741e584c63031d0d4609e18a4e4f082d4c4e72e.
* correctly set type for mention push notifications
* Add unformattedText field to chat messages
* fiix lint errors
* Add check that markdown formatting is stripped from messages
* Add check for markdown formatting in messages.
* feat(subscriber): award mystery items at cron
* fix(mystery): backfill skipped months
* fix(mystery): adjust subscriber text
* fix(mystery): correct moment logic
and remove irrelevant tests
* fix(mystery): build set one month in advance
* fix(mystery): don't add empty set to Time Travelers
* refactor(mystery): readability
* password min length: server + client side registering
* tweak text, add tests
* misc
* use red border for invalid inputs
* fix auth form for groups
* remove default firefox box shadown on invalid elements
* fix css in authForm
* fix margings
* misc fixes to forms and buttons
* fix typo
* move the update username route to v3 (#10836)
* Add API Call to retrieve auto-complete options for usernames
* Create links to users profile in chat messages
* Begin adding server-side autocomplete to web client
* Add Test to opt out of username being searchable
* Fix issue with username highlighting
* Correctly update message text when using autocomplete
* remove old autocomplete component
* Improve chat input design
* rewrite mongoose migration to avoid using recursion
* fixes
* select more fields
* use lean and .update
* fix(tests): correct expects
* fix(tests): linting & more expects
Also one more tweak for invite validation responsiveness
* chore(news): Bailey
* chore(i18n): update locales
* 4.70.0
* fix(chat): less intrusive highlight and better margins
* fix(chat): more width tweakage
* feat(content): Oddballs Bundle
Also includes one more tweak to @mention text highlighting
* chore(sprites): compile
* chore(i18n): update locales
* 4.71.0
* groupChatReceived webhook fix (#10802)
* Moved sendGroupChatReceivedWebhooks to group.sendChat function.
* Added test for new functionality.
* Set width on .custom-control-label (#10840)
Set `width: 100%` on the `.custom-control-label`.
Although `overflow-wrap: break-word` is set on the parent `.checklist-item` element, it doesn't seem to take effect unless a width is set on the label.
* Very large Guild member counts overflow the badge #10753 (#10812)
* Update superagent to the latest version 🚀 (#10848)
* fix(package): update superagent to version 4.0.0
* chore(package): update lockfile package-lock.json
* fix(chat): prevent duplicate messages, closes#10823
* Fix for #10814, prevent ParallelSave errors (#10852)
* fix(group leave): prevent ParallelSave errors while leaving a group with multiple group or challenge tasks
* fix typo
* move computed-props to methods - refactor mountItem to use the states inside (#10853)
* feat(content): Frost Hatching Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.72.0
* fix(stable): remove progress number from petItem
* add two slurs - TRIGGER / CONTENT WARNING: assault, slurs, swearwords, etc
* more checks on the item.klass, also added the specialClass checks (#10859)
* feat(content): Turkey Day 2018
* chore(sprites): compile
* chore(i18n): update locales
* 4.73.0
* chore(i18n): update locales
* 4.73.1
* feat(footer): always show expanded footer (#10862)
* Fixes issue #10857 ("Tags have extra space at the bottom when they should be centered") (#10861)
* Fix for #10857 centered category tag text
* Fixes#10857 and #10856 display tag markdown.
* Attach client to chat messages (#10845)
* Attach client to chat messages
* Word
* Design tweaks
* Fix potential error
* chore(event): end Thanksgiving tweaks
* chore(i18n): update locales
* 4.73.2
* Improve chat input design
* Fix test errors
* Move tier icons import to index
* correctly name event variable
* Debounce autocomplete calls
* optimize mention highlighting
* fix failing tests
* Fix sending private messages
* Cache username autocomplete requests
* optimize autocomplete regex
* Fix lint error
* add optional parameters to limit autocompletion to specific group
* Fix non-profile urls not being usable.
* Correctly handle autocomplete for public and private guilds
* Add check to make sure users don’t search for parties/guilds they are not part of
* fix lint error
* limit autocomplete results to 5
* fix(mentioning): change default, adapt settings control to checkbox
* Improve auto completing
* improve username autocomplete
* Fix merge issue
* remove old code
* Send push notifications on mentions
* Improve handling for sending mention notifications
* Fix lint error
* Update schema.js
* Fix failing test
* Don't send push notification to users who aren't in the party
* Remove tributejs from dependencies
* Add more achievements to notifications list
* use addNotification
* Fix logic to not award stable achievements over and over
* Improve achievement display
* Fix setting notifications for party inviter
* Add tests that notifications are added correctly
* Fix tests
* Fix: moved debuffPotions from vue component
- Move logic of choosing proper debuf potion from vue component to website commons
- introduce new function to get debuffSpellItems
* Fix: move debuffPotions to server
* Refactoring: move setting of debuff potion to func
* Fix: sanity
* Refactoring & Tests:
- Create test case for get and set DebuffPotionItems functions
- Fix setDebuffPotionItems function to not create duplicated debuff items
- Make debuff potion type of items unpinnable
- Move list of debuffs to constant to reuse it in tests and functions
* Fix: typo in test describe
* Fix: translation of unpin
* Fix: setDebuffPotionItems on cron buffs reset
* Fix: use full path for debuff potions
* fix(teams): no hover bg change for noninteractive checkboxes
* feat(teams): send notification to managers on task claim
Also fix client unit test broken by prev commit
* feat(groups): don't penalize for tasks assigned since last activity
* fix(tests): actually fix client unit
* fix(teams): improve task styles
* fix(teams): let people other than leader see relevant approvals
Also more style fixes
* fix(approvals): better filtering and task headings for approval data
* fix(test): correct test expectations for new GET /approvals behavior
* fix(groups): style tweaks
* different border for group and normal tasks
* fix(teams): remove extra click for claiming
* fix(teams): leaders & managers can check off approval-required tasks
* fix(teams): don't notify user of own claim
* fix group task margin and z-index on hover
* fix(menu): sporadic error in top bar
* fix(teams): more approval header and footer adjustments
* fix(tests): adjust expectations for self-approval
* fix(teams): address PR comments
* refactor(timestamps): date user activity on authenticated requests
* refactor(timestamps): update local user instead of direct db update
* feat(content): Hourglass Quest
* fix(hourglasses): NaN from undefined
* fix(quests): sanity check for negative scrolls
* fix(hourglasses): don't show quantity selection for binary items
* fix(route): validate number, use body not params
* test(timetrav): add quest tests
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* Added tests to check if a member of a group plan maintains free subscription when leaving another group without a plan
* Added tests to check if member of a group plan still keeps free subscription when leaving some other group without a plan
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* Added tests to check if a member of a group plan maintains free subscription when leaving another group without a plan
* Added tests to check if member of a group plan still keeps free subscription when leaving some other group without a plan
* move existing tests for chatRevoked users to 'mute user' describe block
* give consistent names to chatRevoked tests and use const not let
* improve methods for restoring chat permissions to test users
* add tests for shadow-muting and define constants for flag-related numbers
* update user profile URLs and reverse private/public 'if' statements
* implement shadow muting in the API and schemas
* add interface for mods to turn shadow muting on/off for a user
- checkbox in the Hall
- icon in the user's profile
* mark chat posts as being shadow muted (marking is visible to mods only)
* convert Admin Tools in profile from icons to text; make crown icon a toggle
* move logic for displaying flag count to a computed property
* prevent chat notifications for shadow-muted posts
* merge all changes to one commit of PR #11157 / #11226
* rename the new paged messages route
* rename event, move map-method to the Inbox schema, fix lint
* move `mapMessage`-call to `getUserInbox`
* revert schema.method back to a normal one
* load messages per conversation
* only sort ones in ui
* add contributor to message
* fix correct message layout/message
* mugenScroll on chatMessages
* fix lint, no mugen-scroll, use own scroll handler
* fix height / margin of modal + use button to load more
* fix tests
* user data from inbox
* style "load earlier messages"
* move mapMessage to the inbox api result / extract sentMessage of members-api-controller
* fix test back
* fix test
* keep last scroll position
* just set the Id of the returned message instead of all other properties
* fix add new messages (buttons were hidden) + load more
* item-mounted debounce to trigger the re-scrolling
* WIP(groups): quickish wins
* WIP(groups): two quick wins
1. Don't show task creation button if user is not leader or manager
2. Don't require JS confirm() for approving tasks
* fix(group-plans): allow delete from options button
* fix(group-plans): update tasksOrder when task deleted
* fix(group-tasks): dismiss notification when user takes action
* refactor(tasks): DRY out create button styling
* fix(group-tasks): sync after claiming/unclaiming
* fix(claiming): better sync and notif handling
* fix(tasks): force sync instead of explicitly clearing notif
* fix(tasks): reposition task creation button
* fix(group-tasks): default to single completion
* fix(group-tasks): move completion condition field above approval switch
* fix(group-tasks): todo validation error and approval notif dismissal
* fix(group-tasks): default single completion on client
* fix(group-tasks): move completion condition up more
* fix(group-tasks): maintain client-side user assignment list
* fix(group-tasks): remove approval notifications when task deleted
* fix(group-tasks): send assigned task to top of task list
* fix(group-tasks): remove useless tag filter dropdown
* feat(group-tasks): notify user of assigned task
* fix(group-tasks): don't allow approval of tasks w/ no approval request
* fix(tests): adjust expectations
* fix(group-tasks): more sensible action on assignment notif click
* Add message of cancelled quest in party chat
Issue #11093
* Delete trailing spaces
For successful passing the test
* Add test of cancelled quest's message
Also, added an explanation that partyMembers[1] hasn't accepted the invitation in the 'cancels a quest' test
* Fix: import Group
Import Group to pass Lint syntax test
* Move save function to Promise.all
* Fix moving save to Promise.all
* 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
* Add if block to search for username if not valid uuid
* Add validationError check
* Modify test case and added test case for username
* Update description of API
* Update Test
* Correct test
* Change placeholder text in heroes.vue
* Refactor code
* Add quotes
* Update hall.js
- Adds the member's username to the challenge csv
- Updates to unit tests
- Issue #10955
Supports the ability for challenge owners to judge challenge winners
after the added functionality enabling users to modify their name
(display name). The added field ties the user to their results by
their username.