* fix(groups): correct timing on updating member quantities
* fix(groups): don't run group cancellation check if we're in invite flow
* fix(groups): update leader when memberCount is 1
* fix(groups): move leader update back--unrelated to group plans fix
* WIP(analytics): add / improve tracking
* fix(groups): revert attempt at tracking on group model
* fix(analytics): track questing based on user data
* each buy-operation now has a getItemType method - typo getItemKey - removed unneeded overrides
* Added mute end date
* Added indefinite mute for users using slurs
* Fixed user reload. Added no longer muted message. Added format for date
* Fixed lint
* correct curl parameter (-X for request method; -x for proxy information)
* fix typo in error message
* fix mistakes in apidocs for allocating Stat Points
* WIP(groups): add shared completion prop
Also fix an issue where the Needs Approval toggle would not read/save
correctly.
* fix(groups): save group options on task create
Also, correct count of assigned members when viewing user is among
assignments
* fix(groups): display correct messages in two places
* fix(tasks): eliminate console error related to filtering
Also localize a group plans string
* WIP(groups): implement single completion for approval workflow
* WIP(groups): Add shared completion handling to no-approval-needed flow
* WIP(groups): cover approval flow case for all-assigned
Also save new field on initial task creation
* fix(tasks): use default sharedCompletion value when creating tasks
* WIP(tests): non-working draft test
* Added completed todo to group query
* WIP(group-tasks): fix bugs, add tests
* refactor(group-tasks): deleteMany op, add more tests
* refactor(group-tasks): move shared completion handling to lib
* WIP(group-tasks): broken refactor
* WIP(group-tasks): await all the things
* Turned complete master task to save
* WIP(group-tasks): show completed
* fix(filtering): don't try to filter if no list is passed
* refactor(group-tasks): load completed to-dos on demand, not at start
* fix(group-tasks): don't double up on repeat visits
* fix(group-tasks): include brief explanation in dropdown
* fix(group-tasks): improve wording some more
* prints first error message only
* update signup error messages, missing password not working (wip)
* remove alerts, show notEmpty, first error only per param, update unit test
* move changes to client side
* 10282: Added code for blocking party and guild invitations from blocked players, added tests
* 10282: fixed test label
* Update POST-groups_invite.test.js
removed `it.only` which was used for testing
* initial refactor
* add scoredUp and scoredDown values for habits history entries, one entry per habit per day
* fix lint and add initial migration
* update old test
* remove scoreNotes
* dry run for migration
* migration fixes
* update migration and remove old test
* fix
* add challenges migration (read only)
* fix challenges migration
* handle custom day start
* update tasks in migration
* scoring: support cds
* add new test
* fix(group-plans): improved member count accuracy
* fix(migration): don't leave server running after completion
* fix(migration): don't update Stripe for non-Stripe methods
Also fixes a linting issue.
* fix(lint): no comma dangle here
* fix(async): put async token in relevant spot
* fix(lint): still more linting
* fix(async): better handling for async and promises
Also adds additional logging where discrepancies are found.
* feat(migration): provide CSV output
* fix(promises): better pause/resume
* fix(migration): don't update already canceled subs
* fix(groups): also address quantity/memberCount discrepancies
* fix(migration): also log quantity issues
* fix(migration): equation was reversed
* refactor(migration): condense logic, add error catch
* fix(migration): fix root cause of failed quantity update??
* fix(lint): gratuitous parens
* fix(test): expect group to be updated db-side
* fix(migration): actually update quantities?
* fix(groups): roll back unneeded Stripe lib change, refactor migration
* remove parallel saves from the code
* fix more unit tests
* do not save users when sending message in buyGift (saved later)
* fix test
* reinstall
* fix tests
* fix tests
* 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
* feat(gdpr) only store necessary data for social login
* feat(gdpr) also store email for social users
* fix(social auth): store emails array instead of single email
* fix(emails): do not get name from old facebook info
* add migration to remove extra data from social profiles
* update migration description
* fix tests
* fix typo in migration file
* remove inbox from user/stats routes
* remove inbox from news routes
* change signature for authWithHeaders
* do not load inbox in coupons routes
* do not load inbox in challenge routes
* do not load inbox in some members routes
* do not load inbox in chat routes
* begin implementing global webhooks
* add checklist item scored webhook
* add pet hatched and mount raised webhooks (no tests)
* fix typo
* add lvl up webhooks, remove corrupt notifications and reorganize pre-save hook
* fix typo
* add some tests, globalActivity webhook
* fix bug in global activiy webhook and add more tests
* add tests and fix typo for petHatched and mountRaised webhooks
* fix errors and add tests for level up webhook
* wip: add default data to all webhooks, change signature for WebhookSender.send (missing tests)
* remove unused code
* fix unit tests
* fix chat webhooks
* remove console
* fix lint
* add and fix webhook tests
* add questStarted webhook and questActivity type
* add unit tests
* add finial tests and features
* removing file that only contained a reference to a missing folder
* fixing typo
* using full dates to avoid moment warning in tests
* more typos
* sending an empty string to vue bootstrap tooltip (disabling it) if no challenge short name is set
* Fix challenges export CSV error by checking that users still belong to challenge
* Add test for challenge csv export fix
* Update fix for challenge export CSV bug
* Update tests for challenge export CSV to be more complete
* Refactor a test: change some 'let' variables to 'const'
* Began moving group chat to separate model
* Fixed lint issue
* Updated delete chat with new model
* Updated flag chat to support model
* Updated like chat to use model
* Fixed duplicate code and chat messages
* Added note about concat chat
* Updated clear flags to user new model
* Updated more chat checks when loading get group
* Fixed spell test and back save
* Moved get chat to json method
* Updated flagging with new chat model
* Added missing await
* Fixed chat user styles. Fixed spell group test
* Added new model to quest chat and group plan chat
* Removed extra timestamps. Added limit check for group plans
* Updated tests
* Synced id fields
* Fixed id creation
* Add meta and fixed tests
* Fixed group quest accept test
* Updated puppeteer
* Added migration
* Export vars
* Updated comments
* Client POC
We need to wrap each draggable region it its own div or else the
"draggable" element will conflict with each other. This screws up the
styling but that is totally fixable
* Ah that ref was being used after all, changing back
* Scaffold out a new callback for when we drag these things
Next is going to be the hard part: I need to save the sort order for
these to the database. I don't even know if there is a schema but hey
this is the best place to start
* Firefox caching is the problem: don't actually need the wrapper div
So I guess I should try this in chrome and see how it works then come
back to firefox and figure out what the heck is going on
* Scaffolding out our API call to save the sort order
The endpoint doesn't exist yet so we will need to add that
* Ok we are now calling our API endpoint to reorder these things
Of course it doesn't exist yet so you get a 404 when you try, but that
is ok
* Defining api endpoint, a work in progress
In particular I really had ought to use _id for these too, it appears
that the primary way we detect order doesn't even use "key" at all.
* Switching to using the pinned item UUID
This has much better results, but of course the server and client logic
don't match now. Will have to keep working on my splice to make sure
that they are the same
* I thought this would fix our server/client mismatch but it is not it
Something is really wrong with my logic somewhere, maybe I need to
update the db step?
* Moving this logic to the "user" rather than "tasks" and key off path
Path is unique and is less finiky than dealing with string comparisons
with ids. Unfortunately everything is still not working... I suppose
user.update() doesn't care about the position?
* This client code caused quite a lot of problems if you dragged fast
We don't really need it it seems, so off it goes
* Updating markup and CSS so it actually looks good.
Everything is working horray!!
I did just notice the following bug: the popover text sometimes makes it
very annoying to drag because you can't drop over it@
* Cleaning up my comments in the API section user.js
I had a lot of TODOS that are mostly done now
* Fixing a spacing code standards thing
* Turns out we never use type, so we should remove this from the API call
* Adding pinnedItemsOrder into the user schema
And disabling my call in the frontend before I do any more damage
* Halfway to using pinnedItemsOrder
This isn't working yet but it is not going to break it horribly like it
was before.
* Hooking up inAppRewards to always produce sorted information
It is suspicially working right now even though I have not added the
seasonal stuff logic yet...
* Updating the comments in user.js in movedPinnedItem
It turns out that my bandaid fix to just get the ball rolling perfectly
does what I need it to do when we have a length discrepancy. So we are
getting much closer to the final product, just need lots of testing
* Cleaning up code standards kinds of things
* Yay, this fixes the popover issue
I hope this is the right "vue" way to do things, because I tried a bunch
of other things that definately were not the right way to do it. And
this appears to work too
* ** Partial Work ** Starting tests on api call for draggable items
Doesn't work, doesn't compile so don't include in PR!
* Test failing still...
This is worth a save. The api call grabs the seasonal items too, so we
can't get away from using the common functions and calls here to get the
actual list of items
* Okay have the first test passing
Need to clean up my linter problems though
* Planning out the next two tests and fixing my format problems
* 2nd Test case written, this time with the "more" odd case
* Making sure that we didn't mess with pinned items
* Huh... this test doesn't give me the expected result
Drat, I guess I found a bug
* Throw an error when we put garbage in our api call.
Well, before we got user.pinnedItemsOrder filled with a bunch of "null"
entries which is not ideal. it still worked, but isn't this confusing
enough already?
* Cleaning up the multitude of linting problems thanks gulp :)
* Writing tests for inAppRewards.js, but something is wrong
* Fixing my linting errors in inAppRewards tests
These tests still do not run though, so they may fail and I would not
know
* Applying Negue's fixes to inAppRewards.js test
It never occured to me that we shouldn't try to reach the database while
in the common tests. Well, we shouldn't do that, we should use the
common.helpers instead. Thanks!
* protect all paths in user.pre(save using this.isDirectSelected to see if a field is available
* fix linting
* authWithHeaders: specify user fields to exclude instead of the ones to include, add comments, doc and improve test
* add more options to unit helper generateReq and add tests for excluding fields in authWithHeaders
* remove removePunctuationFromString function from test code
It's not needed now that the test banned words don't contain underscores.
* prevent tests accidentally throwing messageGroupChatSpam
This commit makes the user for most tests have contributor tiers so
that the user can't trigger the messageGroupChatSpam error message
(for posting messages too quickly).
This is useful when some of the tests fail due to broken code
because that makes more messages be posted than expected. If the user
doesn't have tiers, the messageGroupChatSpam error message would be
triggered, which gives misleading information about the test failure.
* add tests for banned swear and slur words posted in mixed case
* allow banned word error message to show bad words in the same case the user typed them
* stop using randomly-chosen real banned words in tests
The test modified in this commit had been using real banned words,
which meant that those words were being displayed to the contributors
when the test failed.
NB the 'check all banned words are matched' test also uses the real
banned words but the test failure messages don't show the words.
* improve translatability of bannedWordUsed error message
* downcase updating an email to be consistent with creating
* add tests to ensure downcase of email for create/update
* create migration to downcase existing User objects
* delete 'only'
* change gmail to example
* add trailing comma from lint error
* search for emails with at least one capital letter
* fix query in order to search for any email with at least one capital letter
* batch process effected users with at least one capital in email
* update script for batch process effected users
* `/task/user` `GET` endpoint takes plurals of task types as allowed
parameters, plus another custom `completedTodos` type
* `/tasks/group/:groupId` and `/tasks/challenge/:challengeId`
`GET` endpoints task plurals of task types as allowed parameters
* Updated from origin and added invite error fixes
* Update test for capitalization issue
* New error display
Changed app.vue to display error message using error.response.data.message
* Removed challenge group duplication
* Removed duplication of joined challenge
* Moved helpers to challenge library
* Passed group to function
* Fixed group response
* feat(world-boss): barebones API
* fix(world): use Express respond for better JSON
* fix(api): respond with code 200
* feat(content): canonical Dysheartener desc and Rage
* fix(world-boss): enable progress
* WIP(test): world state API
* WIP(test): refactor world boss setup
* WIP(test): better expectations
* fix(test): more expect polishing
* feat(event): server side World Boss
* fix(strings): accidental deletion
* fix(content): include encouragement after Rage
* refactor(world-boss): address comments
* testing additional event trigger for sendMessage
* moved keyup event to newmessage
* added keyup event to tavern vue too
* all food items now have version with definite and indefinite article. foodText also adapted in messages json
* modified api.food, and feed, armoire and drop mechanism
* drops now ok, removed dropArticle, corrected feed test
* test correction
* api doc modification for task completion
* Adding support for loading more members for Groups
Addresses issue #9720
Member modal component was only loading the maximum limit for queries
made to _getMembersForItem in /members, except with Challenges, which
was able to display a "Load More" button to retrieve another set of
users from the Challenge.
Made a few changes to how the GET request was being made when querying
for more members, added an easier way to know whether or not to display
the Load More button, and extracted some of the actions that were
too tightly coupled with the membersModal.vue.
* Fixes for failing lint tests
* Removing unnecessary async/await usage
* Fixing party view in header section
* Resolving missed conflict
* Adding necessary data for View Party in index header for web client to load party members
* Added initial bailey api
* wip
* implement new panel header
* Fixed lint
* add ability to mark notification as seen
* add notification count, remove top badge from user and add ability to mark multiple notifications as seen
* add support dismissall and mark all as read
* do not dismiss actionable notif
* mark as seen when menu is opened instead of closed
* implement ordering, list of actionable notifications
* add groups messages and fix badges count
* add notifications for received cards
* send card received notification to target not sender
* rename notificaion field
* fix integration tests
* mark cards notifications as read and update tests
* add mystery items notifications
* add unallocated stats points notifications
* fix linting
* simplify code
* refactoring and fixes
* fix dropdown opening
* start splitting notifications into their own component
* add notifications for inbox messages
* fix unit tests
* fix default buttons styles
* add initial bailey support
* add title and tests to new stuff notification
* add notification if a group task needs more work
* add tests and fixes for marking a task as needing more work
* make sure user._v is updated
* remove console.log
* notification: hover status and margins
* start styling notifications, add separate files and basic functionalities
* fix tests
* start adding mystery items notification
* wip card notification
* fix cards text
* initial implementation inbox messages
* initial implementation group messages
* disable inbox notifications until mobile is ready
* wip group chat messages
* finish mystery and card notifications
* add bailey notification and fix a lot of stuff
* start adding guilds and parties invitations
* misc invitation fixes
* fix lint issues
* remove old code and add key to notifications
* fix tests
* remove unused code
* add link for public guilds invite
* starts to implement needs work notification design and feature
* fixes to needs work, add group task approved notification
* finish needs work feature
* lots of fixes
* implement quest notification
* bailey fixes and static page
* routing fixes
* fixes # this.$store.dispatch(guilds:join, {groupId: group.id, type: party});
* read notifications on click
* chat notifications
* fix tests for chat notifications
* fix chat notification test
* fix tests
* fix tests (again)
* try awaiting
* remove only
* more sleep
* add bailey tests
* fix icons alignment
* fix issue with multiple points notifications
* remove merge code
* fix rejecting guild invitation
* make remove area bigger
* fix error with notifications and add migration
* fix migration
* fix typos
* add cleanup migration too
* notifications empty state, new counter color, fix marking messages as seen in guilds
* fixes
* add image and install correct packages
* fix mongoose version
* update bailey
* typo
* make sure chat is marked as read after other requests
* Added clone api
* Added new clone UI
* Fixed challenge clone
* Fixed lint and added mongo toObject
* Removed clone field, fixed type, fixed challenge task query
* Auto selected group
* Accounted for group balance when creating challenge
* Added check for if user is leader of guild
* Added leader existence check
* Added fix for leader and prizecost equal to
* Sleep status is tracked by analytics when toggled.
* Modify test: test that analytics is called with 'sleep' event and data passed includes the user's new sleep status
* update API comments to for `username` restrictions and to use Login Name terminology
We use "login name" rather than "username" in user-visible text
on the website and (usually) when communicating with users because
"username" could be confused with "profile name".
Using it in the docs allows you to search for that term.
* add alphanumeric and length validation for creating new login name (username)
The 'en-US' locale is specified explicitly to ensure we never use
another locale. The point of this change is to limit the character
set to prevent login names being used to send spam in the Welcome
emails, such as Chinese language spam we've had trouble with.
* add error messages for bad login names
* allow login name to also contain hyphens
This is because our automated tests generate user accounts using:
let username = generateUUID();
* allow login names to be up to 36 characters long because we use UUIDs as login names in our tests
* revert back to using max 20 characters and only a-z, 0-9 for login name.
It's been decided to change the username generation in the tests instead.
* disable test that is failing because it's redundant
Spaces are now prohibited by other code.
We can probably delete this test later. I don't want to delete it
now, but instead give us time to think about that.
* fix typos
* revert to login name restrictions that allow us to keep using our existing test code
I'm really not comfortable changing our test suite in ways that
aren't essential, especially since we're working in a hurry with
a larger chance than normal of breaking things.
The 36 character length is larger than we initially decided but
not so much larger that it's a huge problem.
We can reduce it to 20 when we have more time.
* limit username length to 20 chars
* fix tests
* feat(analytics): track challenge and task events
* feat(analytics): add more challenge events
Also tweaks data for better troubleshooting utility
* refactor(analytics): include IDs for challenges/groups
* refactor(analytics): term for award challenge is "close"
* Added notification for when leader is updated
* Abstracted challenge member search component
* Added challenge member search modal to challenge detail
* Added group search
* Added initial user projecting in auth and fixed projection for get user tasks
* Added fields to score route
* Added another field to get tasks
* Added group fields to user
* Fixed bug that allows users to complete todo and daily multiple times
* Added tests
* Fix syntax
* Fix existing tests that rely on multiple complete or uncomplete
* Undoes removal of website/client/README.md
* Change sessionOutdated string to reflect separate client needs
* Fix should update history test by changing lastCron
* Updated userItemsNotEnough string
* Added a variable to be passed to the deleteSocialAccountText string. This variable name is `magic_word` and is set as DELETE where used
* modified incorrectDeletePhrase to use a variable rather than translatable string for the word DELETE. Updated the DELETE-user test and the user api
* Changed noSudoAccess from translatable string to static
* Changed enterprisePlansEmailSubject from a translatable string to a static string within groupPlans.vue
* Fixed test problems with translation fixes
* Added no sudo access string to api messages
* changed plain string to apiMessage for no sudo access messages
* Remove flag from system messages, throw an error if system messages are flagged
* Modify unflag system message test to check if flagging a system message throws an error
* Move email from nconf to top
* allow banned word / swearword blocker to apply to all public guilds, with specified exceptions
* add another guild
* add more guilds to those that do not have the bannedWords blocker applied
* fix lint errors
* Prevented title editing on personal page
* Fixed claim/unlclaim from user task page
* Removed task from local on delete
* Immediately show unassigned bar
* Add move to group tasks
* Fixed group member count increase
* Added upgrade when group plan is canceled
* start to fix modals
* fixed cards paddings
* fix notifications not being marked as read
* add tests for reading a notification
* fixed indentation and added tests for reading multiple notifications
* register from home page using enter key
* test get party challenges by party ID
* tavern challenge tests; failing tests with ID 'party' or 'habitrpg'
* allow finding challenges by groupid 'party' or 'habitrpg'
* use single quotes in strings
* move emails images to website/static/emails and remove old files
* remove old client tests
* remove more files
* add sprites back
* cleanup gulp
* cleanup gulp
* remove old files
* more fixes
* pin bootstrap-vue
* disable old test
* remove old tasks
* fix apidoc
* Added removing invites
* Addeed messages for empty gems to icon
* Added member for challenge members
* Fixed task cloning ending
* Fixed group task assignment
* Added small hack to prevent scrolling issues
* Fixed lint
* start work on porting the reset password page
* add new api route for setting a new password after a reset
* wip client page
* port tests
* wip
* fix linting
* skip tests
* Discover challenges
* Fixed hero loading
* Moved add task button
* Fixed bailey showing
* Added logs for bad sub data
* Fixed blurb editing
* Added confirmation for deleteing message
* Reset invite modals on invite
* fixed group member sorting
* Fixed chat time styles
* Fixed hover on liked
* Fixed like count
* Added reverse
* Fixed editing party
* Added leader conditions
* Added search
* Added loading
* Reset members when leaving party
* Rounded pending
* Fixed overflow on collecting quests
* Added to invite friends
* Hid summary from party
* Fixed button styles
* Fixed button class
* Removed okay button
* Fixed renav for profile modal
* Added subscription back to menu
* Fixed static link
* Added daily due setting
* Added local auth adding
* Fixed centering of text
* Removed message locally
* Added count for new message
* Added style fix for profile pet
* Fixed achievement popovers
* Fixed white boxes
* Added plain color backgrounds
* fixed challenge mutability
* Fixed challenge editing
* Added notation for large numbers
* Add color text to guild sizes
* Removed membership filters from discover challenges
* Added invites to group
* Cmd + enter send message
* Made leader clickable
* Updated group validation
* Added cancelling autocomplete
* Added mention icon
* Added removing member
* Removed extra string
* extract seasonal-shop config - use summer season items (to work on)
* add suggested border to shopItems
* refactor getOfficialPinnedItems (now includes the seasonal gear)
* refactor shops.getSeasonalShop - add featured items to result - add the set to special equipment items
* feat(content): Fall 2017 seasonal gear
Also adds set keys for all prior seasonal gear.
* show item limited time (buyModal & shopItem)
* select seasonal fall sets
* WIP(seasonal-shop): placeholder Fall 2017 items
* fix lint
* sprites
* styling + fix purchase of seasonal spells
* compile sprites
* fixes: check isPinned with officialItems
* enable purchase of seasonal items for testing
* fix shop apis
* add featuredItems to market
* quest shop: add featuredItems to api
* tiem travelers shop: add featuredItems to api
* fix gear types filter
* feat(content): Fall 2017 compleat
* chore(sprites): compile
* show opened shop state (npc+background)
* add opened seasonal npc
* current seasonal users class set = purchase by gold - lock other sets of the current season
* hide event badge in seasonal shop - dot only for suggested items - cursor: pointer on shopItems
* refresh rewards column list (seasonal gear won't refresh it on purchase)
* fix duplicate seasonal gear -> remove special items from the old reward gear (which is used to reset the pinned gears)
* every current season gear is purchased by gold - prevent buyModal on locked items
* use the current event date range
* list seasonal sets by event date
* use custom method instead of updateStore to list the pinnable gear
* change daterange to 10-31
* fix start quest modal from items - disable invite quest button if a quest is already active
* toggle pin in buy-dialogs
* check if the item is not undefined/null - renamed the watch function
* fix spacing between rewards and items
* fix rewards description
* rewards cost in bold
* fix gp notifications
* fix dailies gray text
* fix cancel in task edit modal
* tags: use AND not OR for filtering
* fix tasksDefaults so that monthlies can be created correctly
* tags: usable if no task selected, saving checklist and tags saved the one being added without requiting to press enter
* remove tags from tasks when they are deleted
* fix tags removal when multiple tags are deleted and fix tags editing
* Added avatars to inbox
* Added ordering of inbox messages
* Fixed blurb not converting to string
* Added message to member modal
* Added quest invites
* Moved filters to server
* lock other classes gear
* fix avatar in equip-gear-modal
* fix seasonal shop
* seasonal : new gear type order
* fix pin gear (and get new gear on buying)
* API: /shops/market-gear - refactoring pinnedGearUtils - move _isPinned to common/libs
* use shops.getMarketGearCategories to list the marketGear
* use shops.getMarketCategories instead of API-call
* mark gear reward items as locked
* purchase time-travelers stuff + update view + use method instead of http-api + add missing mammoth shop image
* Time Travelers Shop: open/closed state
* time travelers: show gear preview + hide sidebar if closed
* update resized images
* fix lint
* create new summary field for challenges
* finish implementating summary for challenges, add some support for guilds
* make small improvements to challenges code
* fix lint errors
* add more code to support summaries for guilds (still more needed)
* fix existing tests by adding summary field
* make existing tests pass
* WIP make "Public Challenges" text translatable
* change "leader" locale key to "guildOrPartyLeader" to make searches for it easier
* remove v-once from h2 headings
* remove failed attempt to localise text in <script>
* add quick-and-dirty error checking for guild not having categories
* make "Public Challenges" text translatable
* rename final ...PlaceHolder strings to ...Placeholder (lower-case "h") for consistency with existing Placeholder strings
* wip: client: i18n
* remove maxAge from cookies to get same expiration ad localStorage
* set cookies expiration to 10 years
* moment: load translations in browser, moment: only load necessary data, remove jquery, remove bluebird
* ability to change language
* fix logout
* add some requiresLogin: false to static pages
* fix tests
* Forced full refresh after deletE
* Fixed styles on firefox
* Removed instagram link
* Added information to modal
* Fixed deleteing and task keeping
* Added redirect to challenge detail after created
* Updated challenge item styles
* Added new limit option to challenges
* Refactor api description for auth.js with @apiParam groups
* Refactor apiDoc toward better consistency
* Fix missing groups for get requests
* Fix missing groups for other request methods
* Added stripe payment for group plan
* Began adding amazon
* Added amazon payments for group
* Added get group plans route
* Added group plan nav
* Added initial task page
* Added create and edit group plans
* Added initial approval header and footer
* Added assignment and approved requirement
* Added minor text fixes
* Added inital approval flow
* Added approval modal
* Removed always true
* Added more styles for filters
* Added search
* Added env vars
* Fixed router issues
* Added env to social login
* Fixed merge conflict
* toggle pinned state of items server + client
* pin quests / add pin src
* add officially pinned items and api to get in app rewards
* update schema and get items deatils
* update pin actions to the new logic
* show countBadge only with a number
* extract getPinKey - pin seasonal items
* togglePinned in buy-dialogs
* add pinKey to shop items
* wip
* wip
* fix path
* togglePinnedItem as common.op / use in client
* fix linting
* pinning: getItemInfo and save in db path and type
* make api more consistent, fix bugs
* updates
* fix bugs
* update actions to current api
* marketGear
* change to pinType
* add mystery_set to getItemInfo
* fix isPinned
* ignore animals
* list shopItems (initial)
* shopItem now has default popoverconent, itemclass and price / currency - list pinned items as rewards - attributes to gear
* show buyModal for the rewards
* show mystery_set icon
* add info whether item is suggested
* write migration, fix style issues
* pin potion and armoire
* make potion, armoire not unpinnable
* show notes for armoire and potion, add default items for new users
* show unpin notification
* add/remove pinned gear on class-change
* remove pinned & add new gear on purchase - refactoring pinning methods - fixes
* always allow to purchase armoire
* highlight item if suggested
* tasks hover state
* hide column background if task too close
* wip edit tasks
* wip: replace tags
* upgrade bootstrap-vue and fix creare btn for tasks
* difficulty options colors and active label fixes
* fix tags
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* add test to check the error message contains the banned words used
* improve banned words test
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* add test to check the error message contains the banned words used
* improve banned words test
* merge with develop - aligned banned slurs check with banned words check
* initial quests.vue - refactorings - add group to quests
* shows quests by quest-group
* buyQuestModal with rewards sidebar
* store / actions to load seasonal/time-travelers shop data
* buyModal buyPressed instead of buyAction - seasonal shop categories now with specialClass property - seasonal shop
* time travelers vue - show hourglass in shopItem / buyDialog - fix banners
* cleanup
* show amount of already owned quests
* show html notes in popovers / dialog
* extract purchase-api to common.ops.purchaseWithSpell to call the same in the store / update the UI on purchases
* add time-travelers sprites
* fix lint
* add last mystery set images
* remove unused Page
* remove equipment from newClient.json
* initial market - routing - store - load market data
* move drawer/drawerSlider / count/star badge to components/ui
* filter market categories
* shopItem with gem / gold
* show count of purchable items
* show count of purchable itemsshow drawer with currently owned items + DrawerHeaderTabs-Component
* show featured gear
* show Gear - filter by class - sort by (type, price, stats) - sort market items
* Component: ItemRows - shows only the max items in one row (depending on the available width)
* Sell Dialog + Balance Component
* generic buy-dialog / attributes grid with highlight
* buyItem - hide already owned gear
* filter: hide locked/pinned - lock items if not enough gold
* API: Sell multiple items
* show avatar in buy-equipment-dialog with changed gear
* market banner
* misc fixes
* filter by text
* pin/unpin gear store actions
* Sell API: amount as query-parameter
* Update user.js
* fixes
* fix sell api amount test
* add back stroke/fill currentColor
* use scss variables
* Added challenges section
* Added public fields to guilds
* Added suggestion for habitica help guild
* Added categoires to group
* Added guild category filters
* Added guild filter by member count
* Removed console.log
* Updated group count in tests to account for newly created groups
* (server) Add parties array to store invites
* (server) Lint files
* Update joinGroup, rejectGroupInvite, _inviteByUUID, and remove clearPartyInvitation.js
* Update user schema: detailed 'invitations.parties' attributes
* Code improvement and do not let invite twice
* Check if the user is already invited earlier in the code
* Added message to invitation page, and show all invitations
* Added join party confirmation alert
* Small fixes
* Created test: allow inviting a user to 2 different parties
* Updated tests
* Update invitations.parties on more places
* Small adjustments
* Updates on invitations.party references
* Show all invitations when user is already in a party
* Fixed notifications counter
* Update both 'party' and 'parties' at _handleGroupInvitation
* Updated a test
* Fixed small mistake at _handleGroupInvitation
* More test update
* Update invitation.party when removing single invite and small adjust at view
* Added text to locale
* Added achievement to content and libs
* Added achievement modal
* Added achievement to notification model and controller
* Added achievement to user schema
* Grant achievement to inviter when user registers using emailed link
* Fix icon name
* Added integration test
* Fix linting
* Added sprite
* Initial psuedo-code for checking for slurs in messages
* Initial working prototype for blocking posting of slurs. Moved check from group.js to the chat api. Still needs: to permanently revoke chat privileges, to notify the moderators, a better method for checking for the blacklisted words, and a way to get the real list of words to check.
* Permanently revoke chat privileges when attempting to post a slur.
* Removed console logs
* Fixing rebase
* Do not moderate private groups
* Moved slur check to a generic check for banned words function
* Moved list of slurs to a separate file, fixed misplacement of return in ContainsBannedWords() function
* Slurs are blocked in both public and private groups
* Added code to send a slack message for slurs
* Fixed formatting issues
* Incorporated tectContainsBannedWords() function from PR 8197, added an argument to specify the list of banned words to check
* Added initial tests for blocking slurs and revoking chat priviliges
* Uncommented line to save revoked privileges
* Check that privileges are revoked in private groups
* Moved code to email/slack mods to chat api file
* Switched to BadRequest instead of NotFound error
* Restore chat privileges after test
* Using official placeholder slur
* Fixed line to export sendSubscriptionNotification function for slack
* Replaced muteUser function in user methods with a single line in the chat controller file
* Reset chatRevoked flag to false in a single line
* Switched method of setting chatRevoked flag so that it is updated locally and in the database
* First attempt at the muteUser function: revokes user's chat privileges and notifies moderators
* Manual merge for cherry-pick
* Initial working prototype for blocking posting of slurs. Moved check from group.js to the chat api. Still needs: to permanently revoke chat privileges, to notify the moderators, a better method for checking for the blacklisted words, and a way to get the real list of words to check.
* Permanently revoke chat privileges when attempting to post a slur.
* Removed console logs
* Created report to be sent to moderators via email
* Do not moderate private groups
* Moved slur check to a generic check for banned words function
* Moved list of slurs to a separate file, fixed misplacement of return in ContainsBannedWords() function
* Slurs are blocked in both public and private groups
* Added code to send a slack message for slurs
* Fixed formatting issues
* Incorporated tectContainsBannedWords() function from PR 8197, added an argument to specify the list of banned words to check
* Added initial tests for blocking slurs and revoking chat priviliges
* Uncommented line to save revoked privileges
* Check that privileges are revoked in private groups
* Moved code to email/slack mods to chat api file
* Switched to BadRequest instead of NotFound error
* Restore chat privileges after test
* Using official placeholder slur
* Fixed line to export sendSubscriptionNotification function for slack
* Replaced muteUser function in user methods with a single line in the chat controller file
* Reset chatRevoked flag to false in a single line
* Switched method of setting chatRevoked flag so that it is updated locally and in the database
* Removed some code that got re-added after rebase
* Tests for automatic slur muting pass but are incomplete (do not check that chatRevoked flag is true)
* Moved list of banned slurs to server side
* Added warning to bannedSlurs file
* Test chat privileges revoked when posting slur in public chat
* Fix issues left over after rebase (I hope)
* Added code to test for revoked chat privileges after posting a slur in a private group
* Moved banned slur message into locales message
* Added new code to check for banned slurs (parallels banned words code)
* Fixed AUTHOR_MOTAL_URL in sendTxn for slur blocking
* Added tests that email sent on attempted slur in chat post
* Created context for slur-related-tests, fixed sandboxing of email. Successfully tests that email.sendTxn is called, but the email content test fails
* commented out slack (for now) and cleaned up tests of sending email
* Successfully tests that slur-report-to-mods email is sent
* Slack message is sent, and testing works, but some user variables seem to only work when found in chat.js and passed to slack
* Made some fixes for lint, but not sure what to do about the camel case requirement fail, since that's how they're defined in other slack calls
* Slack tests pass, skipped camelcase check around those code blocks
* Fixed InternalServerError caused by slack messaging
* Updated chat privileges revoked error
* fix(locale): typo correction
* add possibility for group to block members from getting gems
* fixes
* fix tests
* adds some tests
* unit tests
* finish unit tests
* remove old code
* test: test that admin users can update guilds
* test: test admin removeMember privileges
* fix: allow admins to edit guilds
* fix: add edit guild options for admins
* test: test that admin can't remove current leader
* Add error msg for removing current leader
* Taskwoods Quest Line (#8156)
* feat(content): Gold Quest 2016-10
* chore(news): Bailey
* chore(i18n): update locales
* chore(sprites): compile
* 3.49.0
* chore: update express
* Fix for the ReDOS vulnerability
habitica is currently affected by the high-severity [ReDOS vulnerability](https://snyk.io/vuln/npm:tough-cookie:20160722).
Vulnerable module: `tough-cookie`
Introduced through: ` request`
This PR fixes the ReDOS vulnerability by upgrading ` request` to version 2.74.0
Check out the [Snyk test report](https://snyk.io/test/github/HabitRPG/habitica) to review other vulnerabilities that affect this repo.
[Watch the repo](https://snyk.io/add) to
* get alerts if newly disclosed vulnerabilities affect this repo in the future.
* generate pull requests with the fixes you want, or let us do the work: when a newly disclosed vulnerability affects you, we'll submit a fix to you right away.
Stay secure,
The Snyk team
* Documentation - coupon
closes#8109
* fix(client): Allow member hp to be clickable
fixes#8016closes#8155
* chore(npm): shrinkwrap
* test: test isAbleToEditGroup
* Add isAbleToEditGroup to groupsCtrl
* Remove unnecessary ternary
* Fix linting
* Move edit permission logic out to groupsCtrl
* fix: change ternary to boolean
* Fix linting
* Fixed merge issues
* Added image
* Added new achievement to user schema
* Added new achievement to content
* Added new achievement to libs
* Added achievement text to locale
* Added achievement to notification model and controller
* Grant achievement on joining or creating first challenge
* Added achievement to modal template
* Compiled new sprites
* Added integration tests
* Fix linting error
* Updating User API Doc (part 3)
* Updating User API Doc (part 3)
Fixed trailing spaces
* Updating User API Doc (part 3)
Made changes to @apiParamExample to make multi-line (which may have been cause of apiDoc failing)
* Updated quests to add questKey
* Make flags.chatRevoked prevent sending private messages (issue #7971)
* Disallow sending gems when messages aren't allowed.
* Created function to check for objections to an interaction to user model and wired it into the API (issue #7971)
* Fixes for issues raised by reviewers.
* Added allowed values to apidoc for api.getObjectionsToInteraction.
* Refactoring of getObjectionsToInteraction and minor API changes.
* fix(objections): address PR comments
* fix(strings): use US English for base edits
* refactor(test): typos and phrasing
* Improved API documentation for hall
* Fixes typos, removes apiHeader definitions and curl example
* Fixes @apiParam and capitalization errors. Moves @apiDefines to website/server/api-doc.js
* Fixed rebase.
* Removed commented out mail sending to pass linting. Styles from settings.styl still not propagating to app.css
* fix(feedback): address PR comments
* fix(style): linting errors
* Enabled repeatables
* Added every x to weekly
* Updated new recur logic to work with tests
* Added repeatable tests back
* Added custom day start support
* Moved back to zone function
* Added zone back
* Added nextDue field
* Abstracted set next due logic, set offset, and mapped to ISO
* Removed extra codes
* Removed clone deep
* Added summary local
* Fixed every x weekly
* Prevented edit of repeats on
* Added next due date
* Fixed display of next due dates
* Fixed broken tests
* added next due date as today for weekly
* Fixed integration tests
* Updated common test
* Use user's format
* Allow user to deselect all days during week
* Removed let from front end
* Fixes apidoc error with Cast Skill
Changes Body to Query, changed example from POST body
* Updated to remove trailing space
* Wording fix per Lady Alys
* Update user.js
Kicking off another test.
* Update user.js
* WIP(guilds): AB test pester modal
* WIP(AB-test): guild pester cont'd
* fix(style): linting error
* fix(AB-test): markModified and notif enum
* fix(tests): update AB expectations
* fix(modal): remove extra includes
* feat(achievements): add Joined Guild cheevo
Also removes unused achievement sprites, and properly saves counter used in A/B testing
* fix(style): linting error from conflict
* Added isDue field and isDue set on create
* Added isDue update on update task
* Add isdue calc to score task
* Added isdue calc to cron
* Fixed lint issue
* Added isDue to no set and updated grammar
* Updating APIDOC for issue 8087
* Updating User API Doc (round 2)
cleaned up trailing sapces
* Updating User API Doc (round 2)
Changed mpHeal to mpheal
* Adding code to look over the most recent messages to look for spam from a user
* Adding in translatable error message
* Adding 2 tests for spam detection
* Fixing changes requested for pull request
* Adding unit tests for group and fixing requested changes
* Fixing message and tests
* Forgot to remove this import
* Fixing lint errors
* Cleaning up the code and tests to be more readable
* Fixing lint errors
* Fixed linting issues
* Syntax fixes
* Updated grammar
* Added abiltiy to add group managers
* Added ability to remove managers
* Added ability for managers to add group tasks
* Allower managers to assign tasks
* Allowed managers to unassign tasks
* Allow managers to delete group tasks
* Allowed managers to approve
* Added initial ui
* Added approval view for managers
* Allowed managers to edit
* Fixed lint issues
* Added spacing to buttons
* Removed leader from selection of group managers
* Code review updates
* Ensured approvals are only done once
* Added ability for parties to add managers
* Add notifications to all managers when approval is requests
* Removed tasks need approval notifications from all managers when task is approve
* Fixed linting issues
* Hid add managers UI from groups that are not subscribed
* Removed let from front end
* Fixed issues with post task url params
* Fixed string locales
* Removed extra limited strings
* Added cannotedit tasks function
* Added limit fields and notification check by taskId
* Localized string and other minor issues
* Added manager and leader indicator
* Added group notifications refresh on sync
* Added close button for group notifications
* Removed group approval notifications when manager is removed
* Moved leader/manager indicators to after hp
* Added manager fields to groups
* Spelling and syntax fixes
* Added block when user types a swear word listed in banned words
* Moved banned words check to server
* Removed unused code
* Moved banned words to separate file and fixed grammar.
* Updated chat test
* Changed error to BadRequest
* Fixed regex matching
* Updated test banned word
* Moved banned words and cached regex
* Updated banned word message
* Add ban filter only for tavern
* Added tavern id constant
* Added more tests for banned words
* Added warning to banned words
* Added alert
* Added new regex to capture markdown
* Fixed lint, spelling and importing
* Added email invite limit
* change error message for sending too many invitations to instruct them to email us
* fix test error message to use variable in locales string
* add comment to warn about keeping INVITES_LIMIT low
If INVITES_LIMIT is allowed to be greater than MAX_EMAIL_INVITES_BY_USER
then the inviter can send more than MAX_EMAIL_INVITES_BY_USER invitations
at once.
* Fix User > Profile showing {getProgressDisplay()}
* Remove bad nextRewardAt check
* 1st iteration of issue #8385 - more pending
* #8385 config and jade fixes, tests pending
* #8385 fixing lint errors
* Fix faqs string and test
* Fix faq.jade and add workaround for faq.js
* Fixing accidental checking for faq.js
* fix emails in faq.js
* fetch emails once in auth.js
* Fixing community manager email in auth.js
* Update API Doc #8087
Includes: GET /api/v3/user – POST /api/v3/user/buy/:key
* User API Doc update 1
Changed "GET user" description to a URL to the user model
* Update API DOC User 1
Cleaned up stray spaces
* Updated API Doc for User (part 1)
for GET user:
restored apiDescription from first PR
put link to model into "apiSuccessExample"
* Remove notifications from example responses
* Fixed trailing spaces
* Added a field in Party page with members count and maximum members in party
* Added information of invitations counter
* Limited party to 2 members on server (API)
* Fixed english text
* Consider current number of invitations in the party
* Moved PARTY_LIMIT_MEMBERS to common folder
* Access the PARTY_LIMIT_MEMBERS through groupsCtrl
* Some corrections
* Hide invite button when invite limit is reached
* Added missing trailing comma
* Do not test 'returns only first 30 invites' in a party anymore, but in a guild: party is limited to 30 members, so it would always fail
* Test: allow 30 members in a party
* Test: do not allow 30+ members in a party
* Improved 'allow 30 members in a party' test
* Test: 'allow 30+ members in a guild'
* Added missing trailing comma
* Code style corrections
* Fixed new line position
* Party limit check done inside Group.validateInvitations function
* Improved members count query
* Fixed tests
* Rewrite tests
* Removed import of BadRequest: value became unused
* Added 'await' to remaining 'Group.validateInvitations' functions
* Fixed tests that would always success
* Added subscriptions to all members when group subs
* Added unsub when group cancels
* Give user a subscription when they join a subbed group
* Removed subscription when user leaves or is removed from group
* Fixed linting issues:
* Added tests for users with a subscription being upgraded to group plan
* Added tests for checking if existing recurring user sub gets updated during group plan. Added better merging for plans
* Added test for existing gift subscriptions
* Added additional months to user when they have an existing recurring subscription and get upgraded to group sub
* Adds test for user who has cancelled with date termined in the future
* Added test to ensure date termined is reset
* Added tests for extra months carrying over
* Added test for gems bought field
* Add tests to for fields that should remain when upgrading
* Added test for all payment methods
* Added prevention for when a user joins a second group plan
* Fixed subscribing tests
* Separated group plan payment tests
* Added prevention of editing a user with a unlimited sub
* Add tests to ensure group keeps plan if they are in two and leave one
* Ensured users with two group plans do not get cancelled when on group plan is cancelled
* Ensured users without group sub are untouched when group cancels
* Fixed lint issues
* Added new emails
* Added fix for cron tests
* Add restore to stubbed methods
* Ensured cancelled group subscriptions are updated
* Changed group plan exist check to check for date terminated
* Updated you cannont delete active group message
* Removed description requirement
* Added upgrade group plan for Amazon payments
* Fixed lint issues
* Fixed broken tests
* Fixed user delete tests
* Fixed function calls
* Hid cancel button if user has group plan
* Hide difficulty from rewards
* Prevented add user functions to be called when group plan is cancelled
* Fixed merge issue
* Correctly displayed group price
* Added message when you are about to join canclled group plan
* Fixed linting issues
* Updated tests to have no redirect to homes
* Allowed leaving a group with a canceld subscription
* Fixed spelling issues
* Prevented user from changing leader with active sub
* Added payment details title to replace subscription title
* Ensured we do not count leader when displaying upcoming cost
* Prevented party tasks from being displayed twice
* Prevented cancelling and already cancelled sub
* Fixed styles of subscriptions
* Added more specific mystery item tests
* Fixed test to refer to leader
* Extended test range to account for short months
* Fixed merge conflicts
* Updated yarn file
* Added missing locales
* Trigger notification
* Removed yarn
* Fixed locales
* Fixed scope mispelling
* Fixed line endings
* Removed extra advanced options from rewards
* Prevent group leader from leaving an active group plan
* Fixed issue with extra months applied to cancelled group plan
* Ensured member count is calculated when updatedGroupPlan
* Updated amazon payment method constant name
* Added comment to cancel sub user method
* Fixed smantic issues
* Added unite test for user isSubscribed and hasNotCancelled
* Add tests for isSubscribed and hasNotCanceled
* Changed default days remaining to 2 days for group plans
* Fixed logic with adding canceled notice to group invite
* Added setting and modal for score notes
* Added persistent score notes
* Fixed linting issues and documented new field
* Added max length to task score notes
* Added check for score notes existence
* Combined tasks perferences
* Leaving a group or a guild no longer removes the user from the challenges of that group or guild.
* Updating api docs for leaving group to take into account the default path no longer leaving challenges when leaving a group.
* Updating api docs for leaving group to take into account the default path no longer leaving challenges when leaving a group.
* refactored according to blade's comments to not be a breaking change. The api now accepts a body parameter to specify wether the user
should remain in the groups challenges or leave them. The change also adds more tests around this behavior to confirm that it works
as expected.
* Updating Tasks and Tags API Doc
* Update Tasks and Tag API Doc
added back * @apiUse ChallengeNotFound
* Update Tasks and Tag API Doc #8447
Corrected NotAuthorized errors to 401
* start migrating to bcrypt
* added method to convert the password to bcrypt when logging in, added method to compare password without knowing the hashing algorhytm, remove default
* travis: try to upgrade to container based infrastructure
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* use bcryptjs until bcrypt can be installed on travis, see https://github.com/kelektiv/node.bcrypt.js/issues/476
* correct sha1 unit tests
* try different mongodb repo
* try without mognodb services
* try again with bcrypt
* disable request logging in travis
* migrate missing routes
* simplify code
* remove bcryptjs
* fix typo
* fix typo
* fix typo in comment
* add unit tests for new passwords utility emthods
* travis: back to old infrastructure, containers often have timeouts
* add integration test for passwordHashMethod
* update shrinkwrap
* clarify code and add comments
* add integration tests
* fix linting
* fix integration tests
* spells: searing brightness should not affect challenge tasks
* fixed other incorrect group vs challenge task exclusions
* fixed /tasks/clearCompletedTodos test
didn't account for the new group task
* fixed comment omission in tasks/clearCompletedTodos
* Moved amazon tests to folder
* Abstracted amazon payment code and added initial test
* Abstracted cancel and subscribe logic to amazon payment lib
* Added arg checks to checkout
* Added constants. Added more subscription test
* Added with arg checks to cancel
* Fixed linting issues
* Added integration tests for amazon subscribe cancel
* Added integration test for amazon checkout
* Added integration test for amazon subscribe
* Added coupon unit test
* Fixed lint
* Fixed minor test issue and changed header expectations
* Fixed line endings
* Added notification for approval request in the group leaders language
* Added test for group task meta actions. Added sync when user claims
* Added tests for group task actions. Ensured assigned members are synce when added or removed
* Fixed approval required toggle
* Added support for users with comma in their name
* Fixed sync issue when user is approved and reloads the website
* Added advance options for group rewards
* Added back ticks to group claim message
* Fixed disappearing tasks that need approval
* Up chat limit to 400 for subbed groups
* Fixed line endings
* Updated activie subscription check
* Added group isSubscribed function
* Changed to isAfter
* Added move route for group tasks
* Added group task reorder to front end
* Added syncing with group task order
* Fixed linting issues
* Added missing exec and abstracted move code
* Added unit test for moveTask
* fix: throws an error when the server receives a post chat request with a message containing only whitespace.
* Adding a test confirming behavior around messages that only contain newlines.
* Removing accidental only that was left on a test
* Added all ui components back
* Added group ui items back and initial group approval directive
* Added approval list view with approving functionality
* Added notification display for group approvals
* Fixed linting issues
* Removed expectation from beforeEach
* Moved string to locale
* Added per use group plan for stripe
* Added tests for stripe group plan upgrade
* Removed paypal option
* Abstract sub blocks. Hit group sub block from user settings page. Added group subscriptin beneifts display
* Fixed lint issue
* Added pricing and adjusted styles
* Moved text to translations
* Added group email types
* Fixed typo
* Fixed group plan abstraction and other style issues
* Fixed email unit test
* Added type to group plan to filter our group plans
* Removed dev protection from routes
* Removed hard coding and fixed upgrade plan
* Added error when group has subscription and tries to remove
* Fixed payment unit tests
* Added custom string and moved subscription check up in the logic
* Added ability for old leader to delete subscription the created
* Allowed old guild leader to edit their group subscription
* Fixed linting and tests
* Added group sub page to user sub settings
* Added approval and group tasks requests back. Hid user group sub on profile
* Added group tasks sync after adding to allow for editing
* Fixed promise chain when resolving group
* Added approvals to group promise chain
* Ensured compelted group todos are not delted at cron
* Updated copy and other minor styles
* Added group field to tags and recolored group tag.
* Added chat message when task is claimed
* Preventing task scoring when approval is needed
* Added approval requested indicator
* Updated column with for tasks on group page
* Added checklist sync on assign
* Added sync for checklist items
* Added checkilist sync when task is updated
* Added checklist sync remove
* Sanatized group tasks when updated
* Fixed lint issues
* Added instant scoring of approved task
* Added task modal
* Fixed editing of challenge and group tasks
* Added cancel button
* Added add new checklist option to update sync
* Added remove for checklist
* Added checklist update
* Added difference check and sync for checklist if there is a diff
* Fixed task syncing
* Fixed linting issues
* Fixed styles and karma tests
* Fixed minor style issues
* Fixed obj transfer on scope
* Fixed broken tests
* Added new benefits page
* Updated group page styles
* Updated benefits page style
* Added translations
* Prevented sync with empty trask list
* Added task title to edit modal
* Added new group plans page and upgrade redirect
* Added group plans redirect to upgrade
* Fixed party home page being hidden and home button click
* Fixed dynamic changing of task status and grey popup
* Fixed tag editing
* Hid benifites information if group has subscription
* Added quotes to task name
* Fixed issue with assigning multiple users
* Added new group plans ctrl
* Hid menu from public guilds
* Fixed task sync issue
* Updated placeholder for assign field
* Added correct cost to subscribe details
* Hid create, edit, delete task options from non group leaders
* Prevented some front end modifications to group tasks
* Hid tags option from group original task
* Added refresh for approvals and group tasks
* Prepend new group tasks
* Fix last checklist item sync
* Fixed casing issue with tags
* Added claimed by message on hover
* Prevent user from deleting assigned task
* Added single route for group plan sign up and payments
* Abstracted stripe payments and added initial tests
* Abstracted amazon and added initial tests
* Fixed create group message
* Update group id check and return group
* Updated to use the new returned group
* Fixed linting and promise issues
* Fixed broken leave test after merge issue
* Fixed undefined approval error and editing/deleting challenge tasks
* Add pricing to group plans, removed confirmation, and fixed redirect after payment
* Updated group plan cost text
* included privateMessageGiftIntro in privateMessageGiftGemsMessage to take care of spacing error and make it easier for translators
* fixed spacing error in gems gift message and adjusted relevant tests
* removed privateMessageGiftIntro and privateMessageGiftSubscriptionMessage since they are no longer in use
* transferGems: use receiver language translation for PM strings #7722
* chore(test): DRY up transfer gems test
* chore(test): Allow check for language in translation assertion
* chore(test): Add test that member locales are used in transfer gems msg
* sendMessage: optionally take also the message in sender's language
when present, it is stored in the sender's inbox instead of the version
in the target language.
* transferGems: prepare pm in both languages #7722
* sendMessage: take an object for the second parameter instead
* payments: made two more gift strings translatable
* buyGems: send both translations for gifted gems
* buyGems: send push notifications in target user's locale
* createSubscription: send both translations for gifted subs
* createSubscription: send push notifications in target user's locale
* transferGems: send push notifications in target user's locale
* tests: adjust payment tests for translation changes
* added function doc for sendMessage
* tests: added bilingual test for buyGems
* feature: updating group.removeMember api to send an email to a user when an invite was rescinded or when no message was provided by the performing user.
* Adding validation that the email is being sent to the right user.
* fixing linting error
* pull apart achievements into different subcategories
* achievs previously hidden to others if unachieved are now always shown
* achievs previously always hidden if unachieved are now always shown
* pull apart ultimate gear achievs
* add achiev wrapper mixin
* add achiev mixin for simple counts
* add achiev mixin for singular/plural achievs
* add simpleAchiev mixin and support attributes
* always hide potentially unearnable achievs if unearned
* contributor achiev now uses string interpolation for readMore link
* transition to basic achiev grid layout
* fix npc achievement img bug introduced in c90f7e2
* move surveys and contributor achievs into special section so it is never empty
* double size of achievs in achievs grid
* achievs in grid are muted if unachieved (includes recompiled sprites)
* fix streak notification strings
* add counts to achievement badges for applicable achieved achievs
* list achievements by api
* fix achievement strings in new api
* unearned achievs now use dedicated (WIP) 'unearned' badge instead of muted versions of the normal badges
* fix & cleanup achievements api
* extract generation of the achievements result to a class
* clean up achievement counter css using existing classes
* simplify exports of new achievementBuilder lib
* remove class logic from achievementBuilder lib
* move achievs to common, add rebirth achiev logic, misc fixes
* replace achievs jade logic with results of api call
* fix linting errors
* achievs lib now returns achievs object subdivided by type (basic/seasonal/special
* add tests for new achievs lib
* fix linting errors
* update controllers and views for updated achievs lib
* add indices to achievements to preserve intended order
* move achiev popovers to left
* rename achievs lib to achievements
* adjust positioning of achieve popovers now that stats and achievs pages
are separate
* fix: achievements api correctly decides whether to append extra string for master and triadBingo achievs
* revert compiled sprites so they don't bog down the PR
* pull out achievs api integration tests
* parameterize ultimate gear achievements' text string
* break out static achievement data from user-specific data
* reorg content.achievements to add achiev data in related chunks
* cleanup, respond to feedback
* improve api documentation
* fix merge issues
* Helped Habit Grow --> Helped Habitica Grow
* achievement popovers are muted if the achiev is unearned
* fix singular achievement labels / achievement popover on click
* update apidoc for achievements (description, param-type, successExample, error-types)
* fix whitespace issues in members.js
* move html to a variable
* updated json example
* fix syntax after merge
* New notification feature that notifies a user when their group invite is accepted. fixes#7788
* Updating to a modal instead of a popup notification
* Making a generic modal template and using it for notifications of group invitation acceptance.
* Working with paglias's comments for doing translation server side.
* Final changes based on pr comments.
* Send a message to the party chat when a quest is aborted
* Added test cases for sending a message to party when quest is aborted
* Restore Group.prototype.sendChat after aborted quest test
* Added all ui components back
* Added group ui items back and initial group approval directive
* Added ability to mark tasks as requires approval. Added approvals ctrl. Added get approvals method to tasks service
* Added approval list view with approving functionality
* Added error to produce message when task requests approval
* Added notification display for group approvals
* Fixed notification read and adding task
* Fixed syncing with group approval required
* Added group id to notifications for redirect on client side
* Fixed approval request tests
* Fixed linting issues
* Removed expectation from beforeEach
* Moved string to locale
* Added eslint ignore
* Updated notification for group approved, added new icons, and updated styles
* Hid group plan ui
* Added payment to groups and pay with group plan with Stripe
* Added edit card for Stripe
* Added stripe cancel
* Added subscribe with Amazon payments
* Added Amazon cancel for group subscription
* Added group subscription with paypal
* Added paypal cancel
* Added ipn cancel for Group plan
* Added a subscription tab and hid only the task tab when group is not subscribed
* Fixed linting issues
* Fixed tests
* Added payment unit tests
* Added back refresh after stripe payment
* Fixed style issues
* Limited grouop query fields and checked access
* Abstracted subscription schema
* Added year group plan and more access checks
* Maded purchase fields private
* Removed id and timestampes
* Added else checks to ensure user subscription is not altered. Removed active field from group model
* Added toJSONTransform function
* Moved plan active check to other toJson function
* Added check to see if purchaed has been populated
* Added purchase details to private
* Added correct data usage when paying for group sub
* Added initial group tasks ui
* Changed group compnent directory
* Added group task checklist support
* Added checklist support to ui
* Fixed delete tags route
* Added checklist routes to support new group tasks
* Added assign user tag input
* Added new group members autocomplete directive
* Linked assign ui to api
* Added styles
* Limited tag use
* Fixed line endings
* Updated to new file structure
* Fixed failing task tests
* Updatd with new checklist logic and fixed columns
* Updated add task function
* Added userid check back to tag routes
* Added back routes accidently deleted
* Added locale strings
* Moved common task function to task service
* Removed files from manifest
* Added initial group tasks ui
* Changed group compnent directory
* Added checklist support to ui
* Added assign user tag input
* Added assign user tag input
* Added new group members autocomplete directive
* Added new group members autocomplete directive
* Removed group get tasks until live
* Linked assign ui to api
* Added styles
* Added server code for claiming a task
* ADded group task meta and claim button
* Adjusted styles, added local, and added confirm
* Updated claim with new file structures
* Fixed merge issue
* Removed extra file
* Removed duplicate functions
* Removed extra directive
* Removed dev items
* Added initial group tasks ui
* Changed group compnent directory
* Added group task checklist support
* Added checklist support to ui
* Fixed delete tags route
* Added checklist routes to support new group tasks
* Added assign user tag input
* Added new group members autocomplete directive
* Linked assign ui to api
* Added styles
* Limited tag use
* Fixed line endings
* Updated to new file structure
* Fixed failing task tests
* Updatd with new checklist logic and fixed columns
* Added purchased info to group and prevented non purchased group from seeing new group tasks
* Updated add task function
* Added userid check back to tag routes
* Marked tag tests as pending
* Added comments to pending tests
* Added back routes accidently deleted
* Added locale strings
* Other clarity fixes
* Moved common task function to task service
* Removed files from manifest
* Fixed naming collision and remove logic
* Removed group get tasks until live
* Fixed test to check update task. Removed extra removeTask call. Synced updated checklists. Added purchased to noset
* Fixed delete group task
* refactor: Move translate test utility to helpers directory
* Add kind property to webhooks
* feat: Add options to create webhook route
* refactor: Move webhook ops into single file
* refactor: Create webhook objects for specific webhook behavior
* chore(tests): Add default sleep helper value of 1 second
* feat(api): Add method for groups to send out webhook
* feat(api): Add taskCreated webhook task creation
* feat(api): Send chat webhooks after a chat is sent
* refactor: Move webhook routes to own controller
* lint: Correct linting errors
* fix(api): Correct taskCreated webhook method
* fix(api): Fix webhook logging to only log when there is an error
* fix: Update groupChatRecieved webhook creation
* chore: Add integration tests for webhooks
* fix: Set webhook creation response to 201
* fix: Correct how task scored webhook data is sent
* Revert group chat recieved webhook to only support one group
* Remove quest activity option for webhooks
* feat: Send webhook for each task created
* feat: Allow webhooks without a type to default to taskScored
* feat: Add logic for adding ids to webhook
* feat: optimize webhook url check by shortcircuiting if no url is passed
* refactor: Use full name for webhook variable
* feat: Add missing params to client webhook
* lint: Add missing semicolon
* chore(tests): Fix inccorect webhook tests
* chore: Add migration to update task scored webhooks
* feat: Allow default value of webhook add route to be enabled
* chore: Update webhook documentation
* chore: Remove special handling for v2
* refactor: adjust addComputedStatsToJSONObject to work for webhooks
* refactor: combine taskScored and taskActivity webhooks
* feat(api): Add task activity to task update and delete routes
* chore: Change references to taskScored to taskActivity
* fix: Correct stats object being passed in for transform
* chore: Remove extra line break
* fix: Pass in the language to use for the translations
* refactor(api): Move webhooks from user.preferences.webhooks to user.webhooks
* chore: Update migration to set webhook array
* lint: Correct brace spacing
* chore: convert webhook lib to use user.webhooks
* refactor(api): Consolidate filters
* chore: clarify migration instructions
* fix(test): Correct user creation in user anonymized tests
* chore: add test that webhooks cannot be updated via PUT /user
* refactor: Simplify default webhook id value
* refactor(client): Push newly created webhook instead of doing a sync
* chore(test): Add test file for webhook model
* refactor: Remove webhook validation
* refactor: Remove need for watch on webhooks
* refactor(client): Update webhooks object without syncing
* chore: update webhook documentation
* Fix migrations issues
* chore: remove v2 test helper
* fix(api): Provide webhook type in task scored webhook
* fix(client): Fix webhook deletion appearing to delete all webhooks
* feat(api): add optional label field for webhooks
* feat: provide empty string as default for webhook label
* chore: Update webhook migration
* chore: update webhook migration name
* Start adding google login
* fix local js issue
* implement syntax suggestions
* fix delete social tests
* Add service for authentication alerts
* fix social login tests
* make suggested google sign in changes
* fix accidentally deleted code
* refactor social network sign in
* fix incorrect find
* implement suggested google sign in changes
* fix(tests): Inject fake Auth module for auth controller
* fix(test): prevent social service from causing page reload
* fix loading user info
* Use lodash's implimentation of find for IE compatibility
* chore: increase test coverage around deletion route
* chore: clean up social auth test
* chore: Fix social login tests
* remove profile from login scope
* fix(api): Allow social accounts to deregister as user has auth backup
* temporarily disable google login button
* Added initial code for creating and reading group tasks
* Separated group task routes. Separated shared task functions
* Added taskOrder to group
* Minor style fixes
* Fixed lint issues
* Added unit tests for task manager
* Updated task helper functions
* Fixed history test
* Fixed group task query
* Removed extra var
* Updated with new file structure
* Updated noset values
* Removed unecessary undefineds, fixed comments, Added apiignore
* Separated group task routes. Separated shared task functions
* Added unit tests for task manager
* Added initial groups assign route and tests
* Added sync assigned task to user
* Added unassign route and unlink method
* Added remove and unlink group task
* Updated linking and unlinking. Add test for updating task info
* Added delete group task and tests
* Added sync on task update and tests
* Added multiple users assignment
* Updated unassign for multiple users
* Added test for delete task with multiple assigend users
* Added update task for multiple assigned users
* Fixed issue with get tasks
* Abstracted syncable attributes and add tests
* Fixed merge conflicts
* Fixed style issues, limited group query fields, and added await
* Fixed group fields needed. Removed api v2 code
* Fixed style issues
* Moved group field under group sub document. Updated tests. Fixed other broken tests
* Renamed linkedTaskId and fixed broken alias tests
* Added debug middleware to new routes
* Fixed debug middleware import
* Added additional user id check for original group tasks
* Updated challenge task check to look for challenge id
* Added checklist sync fix
* Allowing the flagging of messages that were written by user accounts that have since been deleted
* replacing ternary operator with else if, else paradigm
* formatting fixes
* fixing message in tests
* throw a 401 error if user tries to update his/her email to an email that exists already
* Make error message generic so we don't violate users' privacy. Added test case.
* Syntax fixes
* select only the _id field when searching for users with the same email. Return found document as javascript object.
* making requests to accept or reject a request fail because the invite is invalid clear the invite from the user so it doesn't require admin intervention. part of #7653
* Adding await
* api: return computed stats for members responses
* add integration tests for computed stats
* add unit tests for computed stats
* clarify test name
* add missing query parameter to test case
* reset test database before running API tests for the Hall
* Add API call for market inventory
* changes to shop api calls
* optimize shop categories
* add API call for quests
* add api call for time travelers shop
* fic buying items in shops
* fix linting errors
* shop adjustments for iOS app
* add tests to shops
* fix syntax issues
* Code formatting
* correct indentation
* add tests for api routes
* fix time travelers and seasonal
* Increase test coverage for shop routes
* refactor: Pull out trinket count in time traveler route
* refactor: Clarify instructions for seasonal shop script
* lint: Remove extra new line
* Adjust shops common test
* add new "allCompletedTodos" option to API for returning all completed To-Dos at once - fixes#7301
* make minor fixes to allCompletedTodos option
* change allCompletedTodos option to _allCompletedTodos and add a BETA comment
* feat(realtime-chat): add Pusher library to the server
* feat(realtime-chat): only for private groups
* feat(realtime-chat): add authentication endpoint for Pusher
* feat(realtime-chat): client proof of concept
* fix typo in apidoc
* feat(realtime-chat): redo authentication and write integration tests
* remove firebase code
* fix client side tests
* fix line ending in bower.json
* feat(realtime chat): use presence channels for parties, send events & disconnect clients if user leaves or is removed from party, automatically update UI
* pusher: enable all events in the background
* fix pusher integration tests
Documentation included the chatId in the url, but the api does not use it. Adding the chatId will cause a 404 error. The api marks all chats in the guild as read; not individual chats.
closes#7742
* Fix Social Push notifications
* Fix code formatting issues
* Fix commented issues
* Fix Syntax errors
* update push notify dependency
* specify push-notify version
* change how apn key is loaded
* feat(push-notifications): improve logging
* feat(push-notifications): disable v2 push notifications
* test(push-notifications): add unit tests and improve integration ones
* fix(push-notifications): throw when required params are missing
* fix(tests): correct descriptions and remove wrong comment
* fix(push-notifications): trim APN key
* fix(apn): log feedback only if it has data
* fix(apn): load cert and key differently
* fix(tests): correctly load apn during tests
* download creds from S3 and create AWS lib
* convert s3 buffer to a string
* fix(apn): remove console.log and do not use cert twice
* invert key and cert, disable failing test
* invert key and cert
* send email when admin unflags post
* Improved email acquisition code, minor changes to sent email
* Refactor getGoupUrl into its own method
* added unit test for getGroupUrl
* improved test and getGroupUrl
* move remaining files frm /common/script/public to website/public
* remove localstorage
* add back noscript template and put all javascript in the footer
* fixes client side tests
* remove double quotes where possible
* simplify jade code and add tests for buildManifest
* loading page with logo and spinner
* better loading screen in landscape mode
* icon on top of text logo
* wip: user.notifications
* notifications: simpler and working code
* finish implementing notifications
* correct loading screen css and re-inline images
* add tests for user notifications
* split User model in multiple files
* remove old comment about missing .catch()
* correctly setup hooks and methods for User model. Cleanup localstorage
* include UserNotificationsService in static page js and split loading-screen css in its own file
* add cron notification and misc fixes
* remove console.log
* fix tests
* fix multiple notifications
* WIP(drops): get drops out of _tmp
* fix(notifications): no watch for drops/mystery
* fix(ops): only two response values
* fix(test): update op expectation
Also update API docs for modified route.
* fix(lint): remove trailing space
* fix(test): update integration check
* Fixed more tests
* Added tags into user service
* Added api-v3 auth urls
* v3: fix package.json
* v3: fix package.json
* Fixed auth tests. Updated Authctrl response
* v3: remove newrelic config file in favour of env variables
* v3: upgrade some deps
* switch from Q to Bluebird
* v3 fix tests with deferred
* Removed extra consoles.log. Changed data.data to res.data
* v3 fix tests and use coroutines instead of regenerator
* v3: fix tests
* v3: do not await a non promise
* v3: q -> bluebird
* Changed id param for registration response
* Updated party query and create
* Ensured login callback happens after user sync
* Add challenges to groups. Fixed isMemberOfGuild check
* Updated party and group tests
* Fixed cron test
* return user.id and send analytics event before changing page
* fix trailing spaces
* disable redirects
* Api v3 party tavern fixes (#7191)
* Added check if user is in party before query
* Cached party query. Prevented party request when user is not in party. Updated Party create with no invites
* Update tavern ctrl to use new promise
* v3: misc fixes
* Api v3 task fixes (#7193)
* Update task view to use _id
* Added try catch to user service ops calls
* v3 client: saving after syncing is complete
* Fixed test broken by part sync change (#7195)
* v3: fix todo scoring and try to fix production testing problem
* revert changes to mongoose config
* mongoose: increase keepAlive
* test mongoose fix
* fix: Only apply captureStackTrace if it exists on the error object
* v3: fix reminders with no startDate
* mongoose: use options
* chore(): rename website/src -> website/server and website/public -> website/client (#7199)
* v3 fix GET /groups: return an error only if an invalid type is supplied not when there are 0 results (#7203)
* [API v3] Fix calls to user.ops and deleting tags (#7204)
* v3: fixes calls to user.ops from views and deleting tags
* v3: fix tests that use user._statsComputed
* Api v3 fixes continued (#7205)
* Added timzeone offset back
* Added APIToken back to settings page
* Fixed fetch recent messages for party
* Fixed returning group description
* Fixed check if user is member of challenge
* Fixed party members appearing in header
* Updated get myGroups param to include public groups. Fixed isMemberOf group
* Fixed hourglass purchase
* Fixed challenge addding tasks on first creating
* Updated tests to accomidate new changes
* fix: Correct checklist on client
Closes#7207
* fix: Pin eslint to 2.9
* minor improvements to cron code for clarity; fix inaccurate comments; add TODOs for rest-in-inn actions
* fix: Add missing type param to equip call
closes#7212
* rename and reword pubChalsMinPrize to reflect that it's only for Tavern challenges
* allows players to send gems to each other; other minor related changes - fixes https://github.com/HabitRPG/habitrpg/issues/7227
* fix tests for /members/transfer-gems
* fix: Set gems sent notification as translatable string
* chore: Remove unusued variable
* fix: Remove requirement on message paramter in transfer-gems
* add a missing variable declaration
* chore: clarify comments on cron code
* fix: Correct client request from habitrpg -> tavern
* update apidoc URL in package.json
Closes#7222
* Fixed start party by invites
* Updated spell casting to v3
* Fixed adding and removing tags on tasks
* Fixed page reload on settings change
* Fixed battle monsters with friends button
* Loaded completed todos when done is clicked
* chore: Reinstate floating version number for eslint
babel-eslint regression fixed
* Fixed reload tests
* change "an user" to "a user" in comments and text (no code changes) (#7257)
* fix: Alert user that drops were recieved
* remove userServices.js from karma.conf - it's been moved to website/client/js/services
* feat: Create debug update user route
* fix: Correct set cron debug function
* feat: Add make admin button to debug menu
* lint: Add missing semicolons in test
* fix: Temporarilly comment out udpate user debug route
* v3: fix _tmp for crit and streakBonus
* v3: execute all actions when leaving a solo party
* v3 client: fix group not found when leaving party
* v3 migration: fix challenge prize
* v3 cron: only save modified tasks
* v3: add CHALLENGE_TASK_NOT_FOUND to valid broken reasons
* v3: fix tasks chart
* v3 client: fix ability to leave challenge
* v3 client: fix filtering by tag and correctly show tag tooltip
* v3 common: fix tags tests
* v3 client: support unlinking not found challenges tasks
* v3: disable Bluebird warning for missing return, fixes#7269
* feat: Separate out update-user into set-cron and make-admin debug routes
* chore: Disable make admin debug route for v3 prod testing
* v3: misc fixes
* v3: misc fixes
* v3: fix adding multiple tasks
* Fixed join/leave button updates
* Queried only user groups to be available when creating challenges
* Fixed bulk add tasks to challenge
* Synced challenge tasks after leave and join.
* Fixed default selected group
* Fixed challenge member info. Fixed challenge winner selection
* Fixed deleting challenge tasks
* Fixed particiapting filter
* v3 client: fix casting spells
* v3: do not log sensitive data
* v3: always save user when casting spell
* v3: always save user when casting spell
* v3: more fixes for spells
* fix typos and missing information in apidocs - fixes https://github.com/HabitRPG/habitrpg/issues/7277 (#7282)
* v3: add TODO for client side spells
* feat: Add modify inventory debug menu
* Fixed viewing user progress on challenge
* Updated tests
* fix: Fix quest progress button
* fix incorrect Armoire test; remove unneeded param details from apidocs; disambiguate health potion
* v3: fix stealth casting
* v3: fix tasks saving and selection for rebirth reroll and reset (server-only)
* v3: fix auto allocation
* v3 client: misc fixes
* rename buyPotion and buy-potion to buyHealthPotion and buy-health-potion; fix apidoc param error
* Added delete for saved challenge task
* Fixed member modal on front page
* adjust text in apidocs for errors / clarity / consistency / standard terminology (no code changes) (#7298)
* fix bug in Rebirth test, add new tests, adjust apidocs (#7293)
* Updated task model to allow setting streak (#7306)
* fix: Correct missing * in apidoc comments
* Api v3 challenge fixes (#7287)
* Fixed join/leave button updates
* Queried only user groups to be available when creating challenges
* Fixed bulk add tasks to challenge
* Synced challenge tasks after leave and join.
* Fixed default selected group
* Fixed challenge member info. Fixed challenge winner selection
* Fixed deleting challenge tasks
* Fixed particiapting filter
* Fixed viewing user progress on challenge
* Updated tests
* Added delete for saved challenge task
* v3: fix sorting
* [API v3] add CRON_SAFE_MODE (#7286)
* add CRON_SAFE_MODE to example config file, fix some bugs, add an unrelated low-priority TODO
* create CRON_SAFE_MODE to disable parts of cron for use after extended outage - fixes https://github.com/HabitRPG/habitrpg/issues/7161
* fix a bug with CRON_SAFE_MODE, remove duplicated code, remove completed TODO comment
* fix check for CRON_SAFE_MODE
* v3 client: fix typo
* adjust debug menu Modify Inventory: hungrier pets, fewer Special items, "Hide" buttons
* completed To-Dos: return the 30 most recent instead of 30 oldest (#7318)
* v3 migration: fix createdAt date
* adjust locales text, key names, and files for Rebirth, Reset, and Fortify / ReRoll for consistency with existing strings (#7321)
* v3: fix unlinking multiple tasks
* v3 fix releasing pets
* v3: fix authenticating with apiUrl
* v3: fix typo
* v3 fix client tests for unlinking
* v3 client: do not show start quest button when quest is active
* v3 client: fix ability to send cards
* v3 client: fix misc challenge issues
* v3: fix notifications
* v3 client: more user friendly errors
* v3 client: only load completed todos once
* v3 client: fix tests
* v3: move TAVERN_ID to common code
* fix: Provide default type and text for new task creation in score route
* fix: Provide default history [] for habit in score route
* fix: Add _legacyId prop to tasks to support non-uuid identifiers
* chore: Change v3 migration to use _legacyId instead of legacyId
* fix: check for _legacyId in tasks if id does not exist
* refactor: Extract out finding task by id or _legacyId into a function
* Api v3 party quest fixes (#7341)
* Fix display of add challenge message when group challenges are empty
* Fixed forced quest start to update quest without reload
* Fixed needing to reload when accepting party invite
* Fix group leave and join reload
* Fixed leave current party and join another
* Updated party tests
* v3 client: remove console.log statement
* v3: misc fixes
* v3 client: fix predicatbale random
* v3: info about API v3
* v3: update footer with links to developer resources
* v3: support party invitation from email
* v3 client: fix chat flagging
* fix: Correct get tasks route to properly get todos (#7349)
* move locales strings from api-v3.json to other locales files (#7347)
* move locales strings from api-v3.json: authentication strings -> front.json
* move locales strings from api-v3.json: authentication strings -> tasks.json
* move locales strings from api-v3.json: authentication strings -> groups.json
* move locales strings from api-v3.json: authentication strings -> challenge.json
* move locales strings from api-v3.json: authentication strings -> groups.json (again)
* move locales strings from api-v3.json: authentication strings -> quests.json
* move locales strings from api-v3.json: authentication strings -> subscriber.json
* move locales strings from api-v3.json: authentication strings -> spells.json
* move locales strings from api-v3.json: authentication strings -> character.json
* move locales strings from api-v3.json: authentication strings -> groups.json (PMs)
* move locales strings from api-v3.json: authentication strings -> npc.json
* move locales strings from api-v3.json: authentication strings -> pets.json
* move locales strings from api-v3.json: authentication strings -> miscellaneous
* move locales strings from api-v3.json: authentication strings -> contrib.json and settings.json
* move locales strings from api-v3.json: delete unused string (invalidTasksOwner), delete api-v3.json, whitespace cleanup
* v3 client: fix sticky header
* v3: remove unused code
* v3 client: correctly redirect after inviting
* Removed v2 calls from views (#7351)
* v3: fix tests for challenge export
* v3: fallbackto authWithHeaders if wuthWithSession or authWithUrl fails
* Added force cache update when fetching new messages (#7360)
* v3: fetch whole user when booting from group tto avoid issues with pre save hook expecting all data
* v3: misc fixes for payments
* v3: limit fields of challenge tasks that can be updated
* fix(tests): never connect to NODE_DB_URI for tests
* Added new route for setting last cron and updated front end
* v3: fix iap url
* v3: fix build and ios IAP
* Changed route to user set custom day start
* v3: iap accessible under /api/v3, fixes to spells and groups invitations
* v3: correctly use v3 routes in client
* remove XP, GP when unticking a Daily with a completed checklist - fixes https://github.com/HabitRPG/habitrpg/issues/7246
* use natural language for error message about skills on challenge tasks (#7336), fix other gramatical error
* Updated ui when user rejects a guild invite (#7368)
* feat: complete custom day start route
Closes#7363
* fix: Correct spelling of healAll skill
fix: Correct sprite name of healAll skill
* fix: Change all instances of spookDust -> spookySparkles
* add dateCreated to all tasks; add empty challenge object to tasks that don't have one (#7386)
* add plumilla to artists for Tangle Tree in Bailey message
* Fixed quest drop modal (#7377)
* Fixed quest drop modal
* Fixed broken party test
* [API v3] Maintenance Mode (#7367)
* WIP(maintenance): maintenance
* WIP(maintenance): working locale features
* fix(maintenance): don't translate info page target
* WIP(maintenance): start adding info page
* fix(maintenance): linting
* feat: Add container to maintenance info page
* fix(maintenance): add config.json edits
Also DRY variables for main vs info pages
* fix(maintenance): linting
* refactor(maintenance): further slim down variables
* refactor: Remove unnecessary variables
* fix: Correct string interpolation in maintenace view
* feat: Dynamically add time to maintenance pages
* maintenance mode: do not connect to mongodb
* fix(maintenance): clean up timezones etc.
* fix(maintenance): remove unneeded sprite
* Tavern party challenges invites fix (#7394)
* Added challenges and invitations to party
* Loaded tavern challenges
* Updated group and quest services tests
* v3: implement automatic syncing if user is not up to date
* Removed unnecessary fields when updating groups and challenges (#7395)
* v3: do not saved populated user
* v3: correctly return user subset
* Chained party promises together (#7396)
* v3: $w -> splitWhitespace
* use bluebird
* use babel polyfill
* migration: fix items
* update links for v3
* Updated shortname validation to support multiple browsers
* Docs changes (#7401)
* chore: Clarify transfer-gems documentation
* chore: Clarify api status route documentation
* chore: Mark webhooks as BETA
* Added tags update route. Added sort to user service (#7381)
* Added tags update route. Added sort to user service
* Change update tasks route to reorder tasks
* Fixed linting issue
* Changed params for reorder tags route
* Fixed not found tag and added test
* Added password confirmation when deleteing account (#7402)
* fix production logging
* feat(commit): push
* empty commit
* feat(maintenance): post-downtime news & awards (#7406)
* fix exporting avatar
* second attempt at fixing exporting avatar
* fix production logging
* s3: convert moment to date instance
* fix avatar sharing and caching (30 minutes)
* fix: Correct missing parameter
Closes#7433
* fix: Validate challenge shortname on server
* adjust text strings - fixes https://github.com/HabitRPG/habitrpg/issues/5631 and also Short Name -> Tag Name