* begin moving to new fcm library
* Add error handling
* Add opening notification to correct screen
* Fix tests and make async
* lint fix
* Rename pushNotificationstest..js to pushNotifications.test.js
* fix(potions): remove Fungi Potion time banner
* 5.24.3
* update(content): add 2024-06 content prebuild (#15231)
* update sprites
* add 2024-06 content
* add 2024-06 enchanted armoire items
* update sprites
* update sprites
* fix errors found in testing
* Fix liveliness probes being rate limited (#15236)
* Do not rate limit any liveliness probes
* update example config
* Translated using Weblate (German)
Currently translated at 96.2% (181 of 188 strings)
Translated using Weblate (Japanese)
Currently translated at 99.4% (769 of 773 strings)
Translated using Weblate (German)
Currently translated at 93.6% (176 of 188 strings)
Translated using Weblate (Japanese)
Currently translated at 96.2% (2972 of 3089 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (232 of 232 strings)
Translated using Weblate (Japanese)
Currently translated at 96.8% (841 of 868 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (94 of 94 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (German)
Currently translated at 86.7% (163 of 188 strings)
Translated using Weblate (German)
Currently translated at 85.1% (160 of 188 strings)
Translated using Weblate (German)
Currently translated at 84.0% (158 of 188 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (94 of 94 strings)
Translated using Weblate (German)
Currently translated at 83.5% (157 of 188 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)
Translated using Weblate (German)
Currently translated at 82.9% (156 of 188 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)
Translated using Weblate (German)
Currently translated at 81.9% (154 of 188 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (8 of 8 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (8 of 8 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (German)
Currently translated at 79.2% (149 of 188 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (189 of 189 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (8 of 8 strings)
Translated using Weblate (German)
Currently translated at 90.6% (2799 of 3089 strings)
Translated using Weblate (German)
Currently translated at 77.6% (146 of 188 strings)
Translated using Weblate (German)
Currently translated at 90.5% (2797 of 3089 strings)
Translated using Weblate (German)
Currently translated at 90.4% (2794 of 3089 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (German)
Currently translated at 90.1% (2786 of 3089 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (German)
Currently translated at 77.1% (145 of 188 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (763 of 773 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (German)
Currently translated at 90.0% (2782 of 3089 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (773 of 773 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (378 of 378 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (239 of 239 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (French)
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (German)
Currently translated at 75.0% (141 of 188 strings)
Translated using Weblate (Spanish)
Currently translated at 99.0% (766 of 773 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (189 of 189 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (Japanese)
Currently translated at 98.8% (764 of 773 strings)
Translated using Weblate (Japanese)
Currently translated at 99.6% (258 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (378 of 378 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (140 of 140 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (Ukrainian)
Currently translated at 62.5% (1931 of 3089 strings)
Translated using Weblate (German)
Currently translated at 89.8% (2777 of 3089 strings)
Translated using Weblate (French)
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.5% (762 of 773 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (French)
Currently translated at 82.9% (156 of 188 strings)
Translated using Weblate (German)
Currently translated at 93.0% (241 of 259 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (8 of 8 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (427 of 427 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.5% (762 of 773 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Japanese)
Currently translated at 99.2% (257 of 259 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.5% (762 of 773 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (868 of 868 strings)
Translated using Weblate (German)
Currently translated at 92.2% (239 of 259 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (286 of 286 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (239 of 239 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (188 of 188 strings)
Translated using Weblate (German)
Currently translated at 91.8% (238 of 259 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.5% (762 of 773 strings)
Translated using Weblate (German)
Currently translated at 90.3% (234 of 259 strings)
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Kem Kembo <medamamef@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Tetiana <merekka13@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Inventory
Translation: Habitica/Limited
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
* 5.25.0
* Fix dockerfile (#15241)
* Fix issue with l4p not resetting properly (#15240)
* actually clear out seeking field on user. Even when creating a party
* Add tests to ensure party.seeking is cleared
* fix(lint): don't assign unused const
---------
Co-authored-by: Sabe Jones <sabe@habitica.com>
---------
Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Natalie <78037386+CuriousMagpie@users.noreply.github.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Finrod <963505255@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Kem Kembo <medamamef@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Tetiana <merekka13@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Rafał Jagielski <jagielski.rafal.uwm@gmail.com>
* Optimize database access during spell casting
* load less data when casting spells
* Begin migrating update calls to updateOne and updateMany
* Only update user objects that don’t have notification yet
* fix test
* fix spy
* Don’t unnecessarily update user when requesting invalid guild
* fix sort order for middlewares to not load user twice every request
* fix tests
* fix integration test
* fix skill usage not always deducting mp
* addtest case for blessing spell
* fix healAll
* fix lint
* Fix error for when some spells are used outside of party
* Add check to not run bulk spells in web client
* fix(tags): change const to let
---------
Co-authored-by: SabreCat <sabe@habitica.com>
* create Admin Panel page with initial content from Hall's admin section
* reorganise Admin Panel form and add more accordians
* add lastCron to fields returned by api.getHeroes
* improve timestamps and authentication section
* add party and quest info to Admin Panel, add party to heroAdminFields
* move Admin Panel menu item to top of menu, make invisible to non-admins
* remove code used for displaying all Heroes
* add avatar appearance and drops section in Admin Panel
* allow logged-in user to be the default hero loaded
* add time zones to timestamp/authentication section
* rename Items to Update Items
This will allow a new Items section to be added.
* add read-only Items display with button to copy data to Update Items section
* remove never-used allItemsPaths code that had been copied from Hall
* update tests for the attributes added to heroAdminFields
* supply names for items and also set information for gear/equipment
* remove code that loads subsections of content
We use enough of the content that it's easier to load it all and
access it through the content object, especially when we're looping
through different item types.
* add gear names and set details to Avatar Costume/Battle Gear section
* make the wiki URLs clickable and make minor item format improvements
* add gear sets for Check-In Incentives and animal ears and tails
* add gear set for Gold-Purchasable Quest Lines
Also merges the existing Mystery of the Masterclassers quest set into it.
* fix error with Kickstarter gear set and include wiki link
* improve description of check-in incentive gear set
* fix description of Items section
* fix lint warnings
* update another test for the attributes added to heroAdminFields
* allow "@" to be included when specifying Username to load
* create GetHeroParty API v3 route to fetch a given user's party data
Only some data from the party will be loaded (e.g., not private
data such as name, description).
Includes tests for the route.
See the next commit for front-end changes that use this.
* display data from a given user's party in admin panel
Only some data from the party will be loaded (e.g., not private
data such as name, description).
Also adds support for finding and displaying errors from the
user's data.
* use new error handling method for other sections
- Time zone differences
- Cron bugs
- Privilege removal (mute/block) - not a bug but needs to be highlighted
* redirect non-admin users away from admin-only page (WIP)
This needs more work. Currently, admin users are also redirected
if they access the page by direct URL or after reload.
* clarify source of items from Check-In Incentives and Lunar Battle quests
* replace non-standard form fields with HTML forms
* add user's language, remove unused export blocks
* convert functions to filters: formatDate, formatTimeZone
* improve display of minutes portion of time zone in Admin Panel
* move basic details about user to a new component
* move Timestamp/Cron/Auth/etc details to a new component - WIP, has errors
The automatic expand and error warnings don't reset themselves when
you fetch data for a new user.
* replace non-standard form fields with HTML forms
Most of this was done in 26fdcbbee5
* move Timestamp/Cron/Auth/etc details to a new component (fixed)
* move Avatar and Drops section to a new component
* move Party and Quest section to a new component
* move Contributor Details to new component, add checkbox for admin, add preview
This adds a markdown-enabled preview of the Contributions textarea.
It also removes the code that automatically set contributor.admin
to true when the Tier was above 7.
That feature wasn't secure because the Tier can be accidentally
changed if you scroll while the cursor is over the Tier form field
(we accidentally demoted a Socialite once by doing that and if
we'd scrolled in the other direction we would have given her
admin privileges).
Instead there's now a checkbox for giving moderator-level privileges.
We'll want that anyway when we move to a system of selected
privileges for each admin instead of all admin privileges being
given to all mods/staff.
There's also a commented-out checkbox for giving Bailey CMS
privileges, for when we're ready to use that. The User model doesn't
yet have support for it.
* move Privileges and Gems section to a new component
* rename formatItems to getItemDescription; make other minor fixes
* remove an outdated test description
This "pended" explanation probably wasn't needed after "x" was
removed from "describe" in 2ab76db27c
* add newsPoster Bailey CMS permission to User model and Admin Panel
* move formatDate from mixins to filters
* make lint fixes
* remove development comments from hall.js
I'll be handling the TODO comment and I've left in my "XXX" marker
to remind me
* fix bug in Hall's castItemVal: mounts are null not false
* move Items section to a new component and delete Update Items section
The Update Items section is no longer needed because the new Items
component has in-place editing.
* remove unused imports
* add "secret" field to "Privileges, Gem Balance" section.
Also move the markdownPreview style from contributorDetails.vue to
index.vue since it's used in two components now.
* show non-Standard never-owned Pets and Mounts in Items section
* redirect non-admin users away from admin-only page
This completes the work started in commit a4f9c754ad
It now allows admins to access the page when coming from another
page on the site or from a direct link, including if the admin user
isn't logged in yet.
* display memberCount for party
* add secret.text field to Contributor Details
This is in addition to showing it in the Privileges section because
the secret text could be about either troublesome behaviour or
contributions.
* allow user to be loaded into Admin Panel via a URL
This includes:
- router config has a child route for the admin panel with a
Username/ID as a parameter
- loadHero code moved from top-level index page into a new
"user support" index page
- links in the Hall changed to point to admin panel route
- admin panel link added to admin section of user profile modal
* keep list of known titles on their own lines
* sort heroFields alphabetically
No actual changes.
* return all flags for use in Admin Panel and fix Hall tests for flags
Future Admin Panel changes will display more flags.
NB 'flags' wasn't in the tests before, even though two optional
flags were being fetched.
The tests weren't failing because the test users hadn't been given
data for those optional flags.
The primary reason for this change now is to fix the tests.
* show part of the API Token in the Admin Panel
* send full hero object into cronAndAuth.vue
This is a prelude to allowing this component to change the hero.
* split heroAdminFields string into two: one for fetching data and one for showing it
This is because apiToken must be fetched but not shown,
while apiTokenObscured is calculated (not fetched) and shown.
* let admin change a user's API Token
* restore sanity
* remove code to show obscured version of API Token
It will return with tighter permissions for viewing it.
* add Custom Day Start time (CDS) to Timestamps, Time Zone... section
* commit lint's automatic fixes - one for admin-panel changes in hall.js
The other fixes aren't related to this PR but I figured they may
as well go live.
* apply fixes from paglias's comments, excluding style/CSS changesd
The comments that this PR fixes start at
https://github.com/HabitRPG/habitica/pull/12035#pullrequestreview-500422316
Style fixes will be in a future commit.
* fix styles/CSS
* allow profile modal to close when using admin panel link
Also removes an empty components block.
* prevent Admin Panel being used without new userSupport privilege
Also adds initial support for other contributor.priv privileges
and changes Debug Menu to add userSupport privilege
* don't do this: this.hero = { ...hero };
* enhance quest error messages
* redirect to admin-panel home page when using "Save and Clear Data"
The user's ID / name is still in the form for easy refetching.
* create ensurePriv function, use in api.getHeroParty
* fix lint problems and integration tests
* add page title to top-level Admin Panel
Also add more details to a router comment (consistent with a similar
comment) in case it helps anyone.
* fix tests
* display Moderation Notes above Contributions
* lint fix
* remove placeholder code for new privileges
I had planned to have each of these implemented in stages, but
paglias wanted it all done at once. I'm afraid that's too big a
project for me to take on in a single PR so I'm cancelling
the plans for adjusting the privileges.
* Improve permission handling
* Don't report timezone error on first day
* fix lint error
* .
* Fix lint error
* fix failing tests
* Fix more tests
* .
* ..
* ...
* fix(admin): always include permissions when querying user
also remove unnecessary failing test case
* permission improvements
* show transactions in admin panel
* fix lint errors
* fix permission check
* fix(panel): missing mixin, handle empty perms object
Co-authored-by: Alys <alice.harris@oldgods.net>
Co-authored-by: SabreCat <sabe@habitica.com>
* update tests to check for issue #12664
* rewrite processCollectionQuest to allocate quest items proportionally
Removes need to check for excess items, fixing issue #12664
* move test for this bug to the correct context section & remove redundant test
* refactor processCollectionQuest more
* tweak confusing comments
* Strip markdown from push notifications
* Revert "Strip markdown from push notifications"
This reverts commit 4741e584c6.
* correctly set type for mention push notifications
* Add unformattedText field to chat messages
* fiix lint errors
* Add check that markdown formatting is stripped from messages
* Add check for markdown formatting in messages.
* Prevent progress being cleared when quest ends
changing group tests to make sure it keeps user's progress
fix and remove .only() from tests
* fix tests and check null case for clearing up user's quest without resetting progress
* add hasCancelled method for group/user, prevent cancelling a subscription twice
* wip
* paypal: do not cancel a subscription twice
* make sure hasCancelled and hasNotCancelled return a boolean result
* shared model for chat and inbox
* disable inbox schema
* inbox: use separate model
* remove old code that used group.chat
* add back chat field (not used) and remove old tests
* remove inbox exclusions when loading user
* add GET /api/v3/inbox/messages
* add comment
* implement DELETE /inbox/messages/:messageid in v4
* implement GET /inbox/messages in v4 and update tests
* implement DELETE /api/v4/inbox/clear
* fix url
* fix doc
* update /export/inbox.html
* update other data exports
* add back messages in user schema
* add user.toJSONWithInbox
* add compativility until migration is done
* more compatibility
* fix tojson called twice
* add compatibility methods
* fix common tests
* fix v4 integration tests
* v3 get user -> with inbox
* start to fix tests
* fix v3 integration tests
* wip
* wip, client use new route
* update tests for members/send-private-message
* tests for get user in v4
* add tests for DELETE /inbox/messages/:messageId
* add tests for DELETE /inbox/clear in v4
* update docs
* fix tests
* initial migration
* fix migration
* fix migration
* migration fixes
* migrate api.enterCouponCode
* migrate api.castSpell
* migrate reset, reroll, rebirth
* add routes to v4 version
* fix tests
* fixes
* api.updateUser
* remove .only
* get user -> userLib
* refactor inbox.vue to work with new data model
* fix return message when messaging yourself
* wip fix bug with new conversation
* wip
* fix remaining ui issues
* move api.registerLocal, fixes
* keep only v3 version of GET /inbox/messages
* prevent quest progress message in party chat when user is resting in the inn
* improve comment
* update tests now that the test group includes a new member (sleeping quest participant)
* adjust a test to fix lint failure (and make the test better)
* fix order of element assignments in test array