* Client: fix Apidoc and move email files (#9139)
* fix apidoc
* move emails files
* quest leader can start/end quest; admins can edit challenges/guilds; reverse chat works; remove static/videos link; etc (#9140)
* enable link to markdown info on group and challenge edit screen
* allow admin (moderators and staff) to edit challenges
* allow admin (moderators and staff) to edit guilds
Also add some unrelated TODO comments.
* allow any party member (not just leader) to start quest from party page
* allow quest owner to cancel, begin, abort quest
Previously only the party leader could see those buttons. The leader still can.
This also hides those buttons from all other party members.
* enable reverse chat in guilds and party
* remove outdated videos from press kit
* adjust various wordings
* Be consistent with capitalization of Check-In. (#9118)
* limit for inlined svg images and make home leaner by not bundling it with the rest of static pages
* sep 27 fixes (#9088)
* fix item paddings / drawer width
* expand the width of item-rows by the margin of an item
* fix hatchedPet-dialog
* fix hatching-modal
* remove min-height
* Oct 3 fixes (#9148)
* Only show level after yesterdailies modal
* Fixed zindex
* Added spcial spells to rewards column
* Added single click buy for health and armoire
* Prevented task scoring when casting a spell
* Renamed generic purchase method
* Updated nav for small screen
* Hide checklist while casting
* fix some text describing menu items (#9145)
* 4.1.3
* use `selectGearToPin` instead of updateStore in migration-script (#9102)
* Tags redesign in edit-task modal (#9122)
* Truncate tags list to maximum number of tasks
This commit truncates the list of tags in the edit task modal and
displays the remaining selected tasks as a number.
* Align tags-select dropdown with "Tags" label
* Add tags popup component
* Use solid purple for tags-select dropdown
* Remove shadow when tags-select is active
* Add border-radius to tags-select
* Re-add previously disabled transitions
* Remove unused template element
* Add Clear Tags button to footer of tags popup
* Decrease column size for tags to better match design
* Truncate tag name to avoid overflows
* Add tag name as title to show full name on hover
* Grow inline tags select from left to right
* Style none button
* Add spacing to streak reset button to line up with tags select
* Add top offset to tags dropdown toggle to line up with label
* Ability to collapse checklists (#9158)
* ability to collapse checklists
* typo
* show warning to use the mobile apps (#9152)
* Oct 4 fixes (#9159)
* Added gem purchase note
* Added notification count
* Added party reload
* Added description when user can no longer purchase gems this month
* Prevent modal from showing when pruchasing recently purchased items
* Added progress bar
* Prevented non leader from loading approvals
* Added group billing
* Release fix (#9161)
* Merge Develop onto Release (#9123)
* Some random quick (#9111)
* Switch group button directions
* Allowed admins to export challenges
* Added scoping to some stable styles
* Fixed challenge cloning
* Tasks tags (#9112)
* Added auto apply and exit
* Add challenge tag editing
* Fixed lint
* Skill fixes (#9113)
* Added local storage setting for spell drawer
* Added new spell styles
* Fixed typo
* Reset local creds if access is denied (#9114)
* various fixes: group leader's name at top of edit drop-down; Members List; etc (#9117)
* fix text describing location of subscription/gem gift box
* disable Copy As To-Do in Tavern, guilds, party because it's not working
* change members label on group pages to Member List
* remove outdated info about seeing number of Gems available to buy
* allow Danger Zone to be seen by players without local authentication
Also add an hr because the Danger Zone heading was crammed up against the button above it.
* put current group leader's name at top of Leader change drop-down
* Client Fixes (#9120)
* unduplicate logout code
* re-enable debug menu
* fix pets badge and equipping mounts
* close gift modal after sending gems
* armoire notifications
* Oct 1 fixes (#9121)
* Added default tags to task
* Added seasonal gear check and show spooky
* Disabled spooky sparkles
* Fixed challenge remove tasks modal
* Hid checklist
* Added group gems modal
* Purchase with amazon
* Added check for user health
* Added missing notification file
* 4.1.1
* 4.1.2
* Merge develop into release (#9154)
* Client: fix Apidoc and move email files (#9139)
* fix apidoc
* move emails files
* quest leader can start/end quest; admins can edit challenges/guilds; reverse chat works; remove static/videos link; etc (#9140)
* enable link to markdown info on group and challenge edit screen
* allow admin (moderators and staff) to edit challenges
* allow admin (moderators and staff) to edit guilds
Also add some unrelated TODO comments.
* allow any party member (not just leader) to start quest from party page
* allow quest owner to cancel, begin, abort quest
Previously only the party leader could see those buttons. The leader still can.
This also hides those buttons from all other party members.
* enable reverse chat in guilds and party
* remove outdated videos from press kit
* adjust various wordings
* Be consistent with capitalization of Check-In. (#9118)
* limit for inlined svg images and make home leaner by not bundling it with the rest of static pages
* sep 27 fixes (#9088)
* fix item paddings / drawer width
* expand the width of item-rows by the margin of an item
* fix hatchedPet-dialog
* fix hatching-modal
* remove min-height
* Oct 3 fixes (#9148)
* Only show level after yesterdailies modal
* Fixed zindex
* Added spcial spells to rewards column
* Added single click buy for health and armoire
* Prevented task scoring when casting a spell
* Renamed generic purchase method
* Updated nav for small screen
* Hide checklist while casting
* fix some text describing menu items (#9145)
* on class change: remove owned gear from pinned items
* move dragging item-info closer to the cursor (food / hatching potion)
* remove v-once at attributesPopover (if the parent component is recycled the old data stays active)
* prevent popover to show data of an item that was removed - but the popover stays opened
* remove `classSelected` on adding new pinned gear
* use show::modal on buyModal / selectMembersModal instead of v-if=item
* show::modal for buyQuestModal - fix bundles class
* fix buy potion
* fix open selectMembersModal (after changing to shop::modal)
* 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
* not locking pre-owned gear - pin removed gear on revive
* fix createAnimal (check for function) - hide pet-popover while dragging food
* fix dragging popover text color
* fix drop toasts
* selectMembersModal: load members on item change
* show quests and open quest dialog on click
* extract questDialogContent/Drops to separate components & use those in startQuestModal & buyQuestModal
* fix market search
* remove & readd pinned gear on revive
* remove listener once destroyed
* Added task sync after joining challenge
* Added gem purchasing
* Updated member modal style
* Added community guidelines to all groups
* Added group plans redirect
* Began add new front page design
* Fixed challenge loading on mount
* Fixed upgrade
* Added default summary
* Fixed small nav bar styles
* Added more unlock options to avatar editor
* Added more home page finishes
* remove buyModal from all views / move to app.vue - show party member selection if card was bought
* add .btn style to 'show more' / 'show less'
* prevent adding duplicate pinned items - reset pinned gear on rebirth
* remove hourglass in items
* fix unequip gear from drawer
* fix bought item notification
* fix background in avatar - avatar position in buyModal
* use countBadge instead of class
* generic purchase action from buyModal to handle all kind of purchases - able to purchase backgrounds - return backgrounds as flat array
* List MysteryItem & Hourglass in Inventory/Items
* add Subscribers Gem Item (purchase by gold)
* fix mysterybox
* sort unlocked gear first
* add orb of rebirth to market
* remove old quest scroll + class of the quest items
* more padding on countBadge
* use the generic purchase on quests
* 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
* add hourglass to header
* multiple quest fixes - show quest info in popover/modal
* pin backgrounds
* unpin gem-purchable items / change pinType of quest to quests
* check if hatching potion is allowed on egg - wide hatching info
* fix (perf): items - request text()/notes() only once
* change items margin to 23px
* list cards + open modal to choose a target + add space between market items
* buy card from task-list
* fix tests - unpin items on purchasing eggs / hatchingPotions
* 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
* wip: add task scoring and persist checklist items
* remove unused files, fix checklist scoring and start adding support for groups tasks
* amke group and challenge tasks not scoreable
* 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
* Changed files to fix Bug 7958:
- website/client-old/.../userCtrl.js#38: removed to keep inventory constant
- website/common/.../changeClass.js#33: removed to stop 'classes' introduction
* Adjustments following Bug Review
- Removed remaining 'foundKey' logic
- Adjusted test logic to reflect feature change
* Reverting userCtrl.js to development version
- Reintroduces "classes" Guide tour
* New version of Fixes#7958
- Changed logic to only notify user the first time they choose a class
- Changed message to represent this change in logic
- #LINT: Cleaned interface for changing class
- New method: enableClasses() -- because, really, should we be calling User.changeClass({}) from the UX?
- New method: payForNewClass() -- handles prompting the user to confirm that they want to change class
* Remove new User Flag, use flags.tour.classes
* Whoopsie. Fix PR conflict.
* Changed files to fix Bug 7958:
- website/client-old/.../userCtrl.js#38: removed to keep inventory constant
- website/common/.../changeClass.js#33: removed to stop 'classes' introduction
* Adjustments following Bug Review
- Removed remaining 'foundKey' logic
- Adjusted test logic to reflect feature change
* Reverting userCtrl.js to development version
- Reintroduces "classes" Guide tour
* New version of Fixes#7958
- Changed logic to only notify user the first time they choose a class
- Changed message to represent this change in logic
- #LINT: Cleaned interface for changing class
- New method: enableClasses() -- because, really, should we be calling User.changeClass({}) from the UX?
- New method: payForNewClass() -- handles prompting the user to confirm that they want to change class
* Remove new User Flag, use flags.tour.classes
* Whoopsie. Fix PR conflict.
* Removed Extraneous Flag
* Removed Extraneous Flag
* Changed files to fix Bug 7958:
- website/client-old/.../userCtrl.js#38: removed to keep inventory constant
- website/common/.../changeClass.js#33: removed to stop 'classes' introduction
* New version of Fixes#7958
- Changed logic to only notify user the first time they choose a class
- Changed message to represent this change in logic
- #LINT: Cleaned interface for changing class
- New method: enableClasses() -- because, really, should we be calling User.changeClass({}) from the UX?
- New method: payForNewClass() -- handles prompting the user to confirm that they want to change class
Remove new User Flag, use flags.tour.classes
Whoopsie. Fix PR conflict.
Removed Extraneous Flag
* Fixes handling architecture change
* Updates following Review 20170418-0602
* Remove cause of mocha/no-exclusive-tests lint failure
* Fixed release pets/mounts achievements when fully earned and added unit tests for these changes
* Fixed release pets/mounts achievements to award only when fully earned and added unit tests for these changes, also fixed linting issues
* Updated variable assignments to make more readable
* Revised releaseBoth/Pets/Mounts to include null or undefined checks, also updated unit tests
* fixed integration tests
* Add test to prevent death users recovering health
* Add check for buying potions with zero health
* Validate hp <= 0 to take boss damage into account
* add possibility for group to block members from getting gems
* fixes
* fix tests
* adds some tests
* unit tests
* finish unit tests
* remove old code
* add colors palette
* add secondary menu component and style it
* add box shadow to secondary menu
* misc css, fixes for secondary menu
* client: add equipment page with grouping, css: add some styles
* add typography
* more equipment
* stable: fix linting
* equipment: add styles (lots of general styles too)
* remove duplicate google fonts loading
* add dropdowns
* design: white search input background, remove gray from items
* start adding drawer and selected indicator
* wip equipment
* fix equipment
* equipment: correctly bind new properties on items.gear.equipped
* equipment: fix vue binding. version 2
* equipment: fix vue binding. version 3
* back to first fix for equip op, fix for sourcemaps, send http request when an item is equipped, load bootstrap-vue components where needed
* checkboxes and radio buttons
* correctly renders selected items in first postion during the first render
* add search
* general changes, constants part of app state, add popovers
* add toggle switch, rename css
* correct offset
* upgrade deps
* upgrade deps
* drawer and lot of other work
* update equipping mechanism
* finish equipment
* fix compilation and upgrade deps
* use v-show in place of v-if to fix ui issues
* v-show -> v-if
* fix linting in test/client
* fix es6 compilation in test/client
* fix babel compilation for tests
* fix groupsUtilities mixin tests
* client: buttons
* client: buttons: fix colors
* client: finish buttons and dropdowns
* upgrade bootstrap-vue, finish buttons and dropdowns
* fix tasks page layout
* misc fixes for buttons
* add textareas
* fix app menu
* add inputs
* fixes for toggleSwitch
* typography
* checkboxes and radio buttons
* add checkbox icon
* fix equip.js
* extract strings to newClient.json
* add Popover above 'Use Costume' / 'Auto Equip' slider - disable item select if costume-mode and 'useCostume' isn't active
* show "you have disabled your costume" error above the drawer items
* check errorMessage for null
* hide star if costume not enabled
* fix errorMessage (!errorMessage seems not to work for string)
* show minimize / expand icon - always centered by css
* drawer test
* drawer: fix centering on large screens
* fix show more button
* add margin when two dropdowns are next to each other
* adjust the page padding based on the drawer, misc fixes
* drawer fixes
* Prevented watch functions from being called when task._edit is removed
* Added start date support on the UI task summary
* Fixed setting of monthly and calculations
* Fixed linting issues
* Added check for existence
* Added existence check
* Ensured correct start date is used on update
* Hid repeat options from anything not a daily
* Added missing locales
* Moved repeatables out of advance options
* 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
* Clean version of PR 8175
The original PR for this was here:
https://github.com/HabitRPG/habitica/pull/8175
Unfortunately while fixing a conflict in tasks.json, I messed up the rebase and wound up pulling in too many commits and making a giant mess. Sorry. :P
* Fixing test failure
This test seems to occasionally start failing (another coder reported the same thing happening to them in the blacksmiths’ guild) because the order in which the tasks are created can sometimes not match the order in the array. So I have sorted the tasks array after creation by the task name to ensure a consistent ordering, and slightly reordered the expect statements to match.
* Moved critical hit calculation from _addPoints() to _calculateDelta(). Added user as an input argument to _calculateDelta() so for critical hit calculation
* Changed test to expect task value of 1.5 after critical hit
* Revert "Moved critical hit calculation from _addPoints() to _calculateDelta(). Added user as an input argument to _calculateDelta() so for critical hit calculation"
This reverts commit 51b8ab6498.
* Moved critical hit calculation to _changeTaskValue(). Use value stored in user._tmp.crit in _addPoints()
* Test is no longer affected by critical hits
* Removed unneeded comment
* Added WIP test of critical hits
* Want the crit function to return 2 to test critical hits
* Changed crit function to export as a function within an object so that it can be stubbed for testing. References to the crit() function were updated to call crit.crit() instead
* Added test for increased experience on critical hits
* 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
* Adding the unopened mystery items to the call to get not obtained subscriber items. closes#7712
* refactoring according to pr
* Refactoring according to pr. moved time-travelers to it's own file and added new tests.
* Only unequip Gen 1 pets/mounts when releasing pets/mounts
* Changed mount declaration to match releasePets
* Check if a pet/mount is a drop type instead of checking for its name in the list of pets
* Changed references to pet and mount to petInfo and mountInfo for consistency with releasePets and releaseMounts
* Test that releasePets, releaseMounts, and releaseBoth do not unequip quest pets
* Fixed test names, and tests verify that a pet/mount is/is not a drop pet/mount on release
* Removed unneeded comments
* 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