* Add group plan selection modal for upgrades
Allow users to select an existing group to upgrade before creating a new one.
* crlf -> lf lint
* set selection of group plan
Also tiny UI fixes
* Update group plan selection to include expired plans
* Add includeExpiredPlans option to group fetching
* force flag when fetching group plans
* Update group plan eligibility check
* Fix eslint error in push notification import
* replace chaining (?.) w/null check
* Remove comment
* set initial selected group plan, and fix card rounding
* format member count
* Show warning for pending party invites when upgrading to paid group plan
Show warning for pending party invites when upgrading to paid group plan. If user upgrades from party to group, remove any pending invites
* suppress error toasts for group modal, and UI tweaks for group modal
suppress error toast for 404 on party fetch for users without a party (for group modal), Increase check SVG size in selectableCard, and show "Previously upgraded" label for parties that were canceled group plans
* Clear upgradingGroup state after group plan payment
* Update emoji system to native Unicode rendering
* Fix line endings in habiticaMarkdown test
* fix indented code block detection for markdown-it v14
* update habitica-markdown to include v3 emoji dataset (pointed towards test branch)
* size emoji in markdown
* emoji autocomplete to chat, messages, tasks, and profile
add :emoji shortcode autocomplete dropdown (reusing existing autocomplete mixin w/new helper)
* try upping github-action fix
* trying another github actions fix
* update habitica-markdown package version (v3.0.0 -> v4.0.0)
* Fix emoji autocomplete overlapping actual text
position dropdown below text
* update group-plans info card styles
* Support Melior emoji autocomplete & more places for emoji autocomplete
Include emoji autocomplete in task checklists, tags, challenge name/summary/description
* position emoji autocomplete dropdown below text area
* fix: replace nested ternary
* Emoji autocomplete fixes
Fix emoji autocomplete overlapping checklist text, and add short name emoji autocomplete
* Have emoji autocomplete dropdown directly below text, add to task tag
* Fix emoji autocomplete starting at beginning/end initially
* lint/line length
* Add group plan selection modal for upgrades
Allow users to select an existing group to upgrade before creating a new one.
* crlf -> lf lint
* set selection of group plan
Also tiny UI fixes
* Update group plan selection to include expired plans
* Add includeExpiredPlans option to group fetching
* force flag when fetching group plans
* Update group plan eligibility check
* Fix eslint error in push notification import
* replace chaining (?.) w/null check
* Remove comment
* set initial selected group plan, and fix card rounding
* format member count
* Show warning for pending party invites when upgrading to paid group plan
Show warning for pending party invites when upgrading to paid group plan. If user upgrades from party to group, remove any pending invites
* suppress error toasts for group modal, and UI tweaks for group modal
suppress error toast for 404 on party fetch for users without a party (for group modal), Increase check SVG size in selectableCard, and show "Previously upgraded" label for parties that were canceled group plans
* Clear upgradingGroup state after group plan payment
* Update emoji system to native Unicode rendering
* Fix line endings in habiticaMarkdown test
* fix indented code block detection for markdown-it v14
* update habitica-markdown to include v3 emoji dataset (pointed towards test branch)
* size emoji in markdown
* emoji autocomplete to chat, messages, tasks, and profile
add :emoji shortcode autocomplete dropdown (reusing existing autocomplete mixin w/new helper)
* try upping github-action fix
* trying another github actions fix
* update habitica-markdown package version (v3.0.0 -> v4.0.0)
* Fix emoji autocomplete overlapping actual text
position dropdown below text
* update group-plans info card styles
* Support Melior emoji autocomplete & more places for emoji autocomplete
Include emoji autocomplete in task checklists, tags, challenge name/summary/description
* position emoji autocomplete dropdown below text area
* fix: replace nested ternary
* Emoji autocomplete fixes
Fix emoji autocomplete overlapping checklist text, and add short name emoji autocomplete
* Have emoji autocomplete dropdown directly below text, add to task tag
* Fix emoji autocomplete starting at beginning/end initially
* lint/line length
* Revert "trying another github actions fix"
This reverts commit 72fc7fc20e.
* Revert "try upping github-action fix"
This reverts commit 70e48a57aa.
* fix(git): revert ci changes
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
* Add group plan selection modal for upgrades
Allow users to select an existing group to upgrade before creating a new one.
* crlf -> lf lint
* set selection of group plan
Also tiny UI fixes
* Update group plan selection to include expired plans
* Add includeExpiredPlans option to group fetching
* force flag when fetching group plans
* Update group plan eligibility check
* Fix eslint error in push notification import
* replace chaining (?.) w/null check
* Remove comment
* set initial selected group plan, and fix card rounding
* format member count
* Show warning for pending party invites when upgrading to paid group plan
Show warning for pending party invites when upgrading to paid group plan. If user upgrades from party to group, remove any pending invites
* suppress error toasts for group modal, and UI tweaks for group modal
suppress error toast for 404 on party fetch for users without a party (for group modal), Increase check SVG size in selectableCard, and show "Previously upgraded" label for parties that were canceled group plans
* Clear upgradingGroup state after group plan payment
* Add new api call for kubernetes startup probe
* add hostname as tag for loggly
* Only listen to one change
* increase vite min chunk size
* respond gracefully to shutdown signal
* update server readiness according to mongodb and redis connection
* make larger vite chunks
* fix lint
* replace lodash template usage with micromustache
* remove function brackets from translations
* add newline
* remove old test
* split core translations from content translations
* fix directory not existing
* fix lint
* fix most customizations not being pinnable
* set correct pinTypes
* fix(pinning): correct purchase types for base hair and mustaches
* automatically unpin purchased customizations
* ability to pin customization items
* Fix pin not showing on buy modal
* Pin on buy modal tweak
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
Co-authored-by: Hafiz <hafizbhamidi@gmail.com>
* fix(content): textual tweaks and updates
* fix(link): direct to FAQ instead of wiki
* fix(faq): correct Markdown
* Show orb of rebirth confirmation modal after use (window refresh)
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
* message effective limit optimization
* Keep max limit for web (400 recent messages)
* Fix amount of messages initially being shown
* PM_PER_PAGE set to 50
* Increases number of messages in inbox test
* Increases number of messages for inbox pagination test
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
* message effective limit optimization
* Keep max limit for web (400 recent messages)
* Add UUID validation for 'before' query parameter
* add party message stress test tool in admin panel
* lint
* add MAX_PM_COUNT of 400, admin tool for stress testing messages
* comment
* update stress test inbox message tool to use logged in user
* comment
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
* fix(responsive): adjustments for small screens by @Hafizzle
* Fixed cut off modal issues
- Fixed limited time banner being cut off on smaller devices
- Fixed Pin on purchase quest modal being cut off
* Update order of views on Stats tab
* Update styling of stat boxes & add stat allocation info
* Live stat allocation & auto allocation implemented
- Update stat allocation UI/UX cont.
- Update stats live (versus pressing save)
- Dynamically show the distribute dropdown based on if auto allocate switch is enabled
* Remove duplicate string value, convert line endings
* Fix auto allocation toggle alignment
* lint fixes
* Auto allocate UI fixes
- remove info icon in each dropdown option, and replace info below each option
- disable auto allocate dropdown instead of hiding it
- removed radio buttons drop auto allocate options dropdown
- Points available & auto allocate text share same baseline now
* Stat allocation updates
* Assigned Stat
* lint fixes
* stat feedback UI updates
* tweak
* stat allocation UI tweaks
refactor allocation mode selection with selectList component & other UI tweaks
* Fix hover dropdown padding & stat allocation chip always showing
* Update stat allocation dropdown styling
* Remove bold text on hover
* Stat allocation by task dropdown
* remove empty lines
* show selected attribute on component itself
* task stat selection UI updates
* fix(cr): remove weird line endings
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
* Confirmation prompts (replace browser confirmation prompts)
* lint
* lint
* Fix confirmation modal not showing for items w/gems
* Updated delete and confirmation modals
* lint
* Fix top bar on color on confirmation prompt clipping
* Show currency amount on purchase confirmation modals
* confirmation modals using existing components
* lint
* Broken task confirmation modal
* Replace class change confirmation with modal
* fix(style): correct indentation
* Replace warning svg w/ existing alert svg, and reset language strings
* fix(json): json doesn't like comma dangles
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
* fix(content): textual tweaks and updates
* fix(link): direct to FAQ instead of wiki
* fix(faq): correct Markdown
* Show orb of rebirth confirmation modal after use (window refresh)
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
* message effective limit optimization
* Keep max limit for web (400 recent messages)
* Fix amount of messages initially being shown
* PM_PER_PAGE set to 50
* Increases number of messages in inbox test
* Increases number of messages for inbox pagination test
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
* message effective limit optimization
* Keep max limit for web (400 recent messages)
* Add UUID validation for 'before' query parameter
* add party message stress test tool in admin panel
* lint
* add MAX_PM_COUNT of 400, admin tool for stress testing messages
* comment
* update stress test inbox message tool to use logged in user
* comment
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
* fix(content): textual tweaks and updates
* fix(link): direct to FAQ instead of wiki
* fix(faq): correct Markdown
* Show orb of rebirth confirmation modal after use (window refresh)
* Set and check rebirth confirmation modal from localstorage
Set and check rebirth confirmation modal from localstorage after window reload
* Don't show orb of rebirth confirmation modal until page reloads
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
* fix(responsive): adjustments for small screens by @Hafizzle
* Fixed cut off modal issues
- Fixed limited time banner being cut off on smaller devices
- Fixed Pin on purchase quest modal being cut off
---------
Co-authored-by: Hafiz <hafizbhamidi@gmail.com>
* add new frontend files
* Add UI for managing blockers
* correctly reset local data after creating blocker
* Tweak wording
* Add UI for managing blockers
* restructure admin pages
* add blocker to block emails from registration
* lint fixes
* Await genericPurchase completion before page reload to prevent request cancellation.
Also adds defensive check for undefined error.response in axios interceptor to prevent "t.response undefined" errors.
* Fix shop tabs overflow off screen at certain zoom levels
Fix quest cards get cut off on small screens
Fix pop-up windows extend past screen edges on mobile
* Update ToS error message
- Updated account suspension message from "This account, User ID..." to "Your account @[username] has been
blocked..."
- Modified server auth middleware to pass username parameter when throwing account suspended error
-Modified auth utils loginRes function to include username in suspended account error
- Updated client bannedAccountModal component to pass username (empty string if unavailable)
- Updated login test to expect username in account suspended message
* lint fix
* Responsive Layout for Equipment Containers
- Added responsive CSS for mobile (<768px) and tablet (769px-1024px)
- Implemented flex-wrap layout that automatically stacks items in rows of 4 on smaller
* remove redundant disabled styles in task modals
The .disabled class conflicting with existing disabled state implementations
* Revert "Merge branch 'fiz/item-container-scaling' into qa/bat"
This reverts commit 4f28bfaad4dbeade66e507fd10904c133b206bda, reversing
changes made to 477dd6328acc6a63f5e7f1e98f2dd581665f1898.
* fix(blockers): duplicated code from rebase
* fix(admin): revert accidental change from rebase
* move !error.response to correct level
!error.response before any attempt to access error.response.status
* chore(github): split responsiveness to #15514
* Group string updates & removals
Removed the "Couple sharing tasks" and "Coworkers sharing tasks" strings:
- Removed from all language locale files
- Removed from both Vue components that used them in dropdowns:
- groupPlanCreationModal.vue
- successModal.vue
* Remove some Group strings
Remove the "groupParentChildren", "groupFriends", "groupManager", and "groupTeacher" strings from all languages (except default)
---------
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Kalista Payne <kalista@habitica.com>
* Load all participants when end challenge modal is opened.
* Fetch members in batches until members are loaded
* Fix challenge winner search to load all participants
Separated loading flags to prevent conflicts between modals
* Rename end challenge members flag to be more clear
* await load members
* Implement challenge member search only when searching w/debounce
* add new frontend files
* Add UI for managing blockers
* correctly reset local data after creating blocker
* Tweak wording
* Add UI for managing blockers
* restructure admin pages
* add blocker to block emails from registration
* lint fixes
* Await genericPurchase completion before page reload to prevent request cancellation.
Also adds defensive check for undefined error.response in axios interceptor to prevent "t.response undefined" errors.
* Fix shop tabs overflow off screen at certain zoom levels
Fix quest cards get cut off on small screens
Fix pop-up windows extend past screen edges on mobile
* Update ToS error message
- Updated account suspension message from "This account, User ID..." to "Your account @[username] has been
blocked..."
- Modified server auth middleware to pass username parameter when throwing account suspended error
-Modified auth utils loginRes function to include username in suspended account error
- Updated client bannedAccountModal component to pass username (empty string if unavailable)
- Updated login test to expect username in account suspended message
* lint fix
* Responsive Layout for Equipment Containers
- Added responsive CSS for mobile (<768px) and tablet (769px-1024px)
- Implemented flex-wrap layout that automatically stacks items in rows of 4 on smaller
* remove redundant disabled styles in task modals
The .disabled class conflicting with existing disabled state implementations
* Revert "Merge branch 'fiz/item-container-scaling' into qa/bat"
This reverts commit 4f28bfaad4dbeade66e507fd10904c133b206bda, reversing
changes made to 477dd6328acc6a63f5e7f1e98f2dd581665f1898.
* fix(blockers): duplicated code from rebase
* fix(admin): revert accidental change from rebase
* move !error.response to correct level
!error.response before any attempt to access error.response.status
* chore(github): split responsiveness to #15514
---------
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Kalista Payne <kalista@habitica.com>
* Fix profile modal tab navigation URLs for both own and other users profiles
- Add routes for /user/profile, /user/stats, and /user/achievements
- Update selectPage() to properly update URLs when switching tabs
- Own profile uses /user/{tab} format
- Other users' profiles use /profile/{userId}#{tab} format
- Parse hash fragments when navigating to other users' profile tabs
- Ensure direct navigation to tab URLs opens correct tab
* Fix undefined userId
* Server now matches usernames case insensitively like client
- Preserves original capitalization in mention text
- Fixes profile links not working with wrong case mentions
* lint fixes
* g1g1 width auto sizing w/padding
* Challenge participants spacing & text sizing fix
* Fix inconsistent profile URL format between own and other users' profiles
- Update profile tab navigation to use consistent URL format for all users
- Redirect old /user/* routes to new format for backward compatibility
- Update all navigation points (dropdown menu, notifications) to use new URLs
* Update End Challenge modal
- Replace dropdown with searchable input (384x32px) for winner selection
- Add visual badge state with gems icons for challenge completion
- Update Delete Challenge flow with refund info and proper styling
- Add close button (X) with opacity hover effect
- Enhance Award Winner button with gem icon and dynamic prize display
- Apply conditional styling based on winner selection state
- Update text colors: Maroon/50 for delete warning, Gray/100 for "OR" text
- Add proper translations for gem/gems and refund description
* lint error fixes
* end challenge modal fixes
* lint fix
* Use existing closeX component, minor UI fixes to close challenge modal
* fix lint
* Delete icon color to match text on close challenge modal
use color field to set delete icon color
* Highlight username on close challenge modal color updates
- Background color on hover: purple-600
- Text color on hover: purple-300
- Changed transition from just background-color to all so both color changes animate smoothly
* Fix strings
* Refactor g1g1 notifications from database-driven to event-based system
Changed g1g1 (gift one get one) notifications to display automatically during event periods instead of requiring database storage. Notifications now appear based on event calendar dates and use sessionStorage for dismissal state.
- Display g1g1 notification when event is active in worldState
- Store dismissal state in sessionStorage with event-specific keys
- Remove dependency on user.notifications database array
- Maintain identical user experience and appearance
* Update prize card to match participants card on challenges
* End Challenge modal UI tweaks
* Prevent false mention highlights
Prevent false mention highlights when a user's display name matches another user's username. The purple mention indicator now only appears for actual @username mentions.
* lint fixes
* Remove mention highlight
* Mention highlighting to only highlight w/username mentions
* Update G1G1 Notification
- Updated text styling for title & description
- Updated button styling
- Updated close button
* lint fix
* Add updated G1G1 notification SVGs
* Don't highlight display name w/mention
* g1g1 UI updates
- Fix sizing of gift SVGs (96px tall)
- Update button to use button element and styles <button class="btn btn-secondary mx-auto">
- Fixed positioning, color, and hover state of close icon (default white 50% opacity, hover 75% opacity)
* Fix g1g1 close icon hover state
Fix hover state of close icon (default white 50% opacity, hover 75% opacity)
* g1g1 close hover state fix
* End challenge UI updates
- Fix modal title positioning
- Fix close icon positioning
- Fix spacing between title and gem graphic
- Fix spacing between label and input field
- Fix search icon position, change input hint to "@Username"
- Set search results text align start/left with 16px starting padding.
- Fix Award Button state
* remove trailing space
* Fix exit hover state on g1g1
* fix g1g1 close icon (directly render close icon)
* new line
* Update z-index of g1g1 close button
* add display name support for mention highlighting
mention highlights now trigger for both username and display name mentions.
* Override default close button color (gray -> white)
(Also revert the renderWithMentions change)
* Fix mention display name test (& fix lint)
* Revert display name mention, strictly only username
Mentions work w/username only (works w/case insensitive as well)
* Improved case-insensitive username matching
* add close-white.svg, replace close.svg on g1g1
* find mentions that match the current user's username (case-insensitive)
* fix lint errors
* end challenge modal UI updates
* Don't change gem color on update
* disabled state button match button.scss syling
* remove padding from g1g1 close
* Directly use button.scss on end challenge modal
* Update disabled state for button.scss
* explicitly set close challenge modal button disabled/enabled state
* fix trailing space
* Add font details (and fix text color) for button disabled state
* Update award winner button min-height & padding
* button.scss button disabled styling updates
* Remove redundant disabled override on award winner button
* lint
* Use single gifts svg, and apply transform to flip horizontally
Remove unneeded gifts_end.svg
* Replaced the hardcoded #1A1B1D color with the $black from colors.scss
* Removed the 0.5em padding w/p-2
* added v-once to the refund text element
* Converted the line-height values from pixel values to multipliers
* feat(gpc): warn user about enabling analytics
* fix(gpc): style tweaks
* fix(privacy): local storage doesn't understand Boolean
* fix(gpc): do record if user has opted in
* fix(privacy): don't flip flop if no value changed
* refactor sending jobs to worker server
* remove unused imports
* add delete button to adminpanel
* June 2025 content build (#15437)
* chore: June 2025 content build
* chore: typo fixing
* chore: corrections to summer 2025 mage armor, spritesheet
* fix(css): rebuild spritesmith-main
---------
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
* fix(script): don't use extremely costly regex
* fix(logging): don't spam empty error events
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (134 of 134 strings)
Translated using Weblate (Hungarian)
Currently translated at 100.0% (280 of 280 strings)
Translated using Weblate (French)
Currently translated at 100.0% (280 of 280 strings)
Translated using Weblate (Spanish)
Currently translated at 99.6% (279 of 280 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.4% (840 of 862 strings)
Translated using Weblate (German)
Currently translated at 99.8% (907 of 908 strings)
Translated using Weblate (Dutch)
Currently translated at 79.3% (219 of 276 strings)
Translated using Weblate (Dutch)
Currently translated at 28.1% (69 of 245 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.4% (840 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.5% (402 of 412 strings)
Translated using Weblate (Dutch)
Currently translated at 91.5% (377 of 412 strings)
Translated using Weblate (Dutch)
Currently translated at 85.2% (774 of 908 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (908 of 908 strings)
Translated using Weblate (Slovak)
Currently translated at 63.4% (106 of 167 strings)
Translated using Weblate (Hungarian)
Currently translated at 100.0% (908 of 908 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (908 of 908 strings)
Translated using Weblate (Slovak)
Currently translated at 2.0% (5 of 245 strings)
Translated using Weblate (French)
Currently translated at 100.0% (908 of 908 strings)
Translated using Weblate (Russian)
Currently translated at 64.4% (158 of 245 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.0% (837 of 862 strings)
Translated using Weblate (German)
Currently translated at 97.9% (844 of 862 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.3% (401 of 412 strings)
Translated using Weblate (Portuguese)
Currently translated at 95.3% (393 of 412 strings)
Translated using Weblate (Slovak)
Currently translated at 45.6% (413 of 905 strings)
Translated using Weblate (Slovak)
Currently translated at 50.8% (85 of 167 strings)
Translated using Weblate (Russian)
Currently translated at 99.1% (113 of 114 strings)
Translated using Weblate (Russian)
Currently translated at 64.0% (157 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 64.0% (157 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 62.0% (152 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 62.0% (152 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.8% (149 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.8% (149 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.4% (148 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.4% (148 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.0% (147 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 60.0% (147 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 57.9% (142 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 57.9% (142 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 56.7% (139 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 56.7% (139 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 56.3% (138 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 56.3% (138 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 53.8% (132 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 53.8% (132 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 53.4% (131 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 53.4% (131 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 48.9% (120 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 48.9% (120 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 48.5% (119 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 48.5% (119 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 46.9% (115 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 45.3% (111 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 45.3% (111 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 45.3% (111 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 45.3% (111 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 44.4% (109 of 245 strings)
Translated using Weblate (German)
Currently translated at 99.9% (3324 of 3325 strings)
Translated using Weblate (Russian)
Currently translated at 44.4% (109 of 245 strings)
Translated using Weblate (Russian)
Currently translated at 44.4% (109 of 245 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (94 of 94 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.8% (107 of 114 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (22 of 22 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.7% (429 of 430 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.1% (820 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (902 of 905 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Portuguese)
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.1% (820 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.1% (820 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.1% (820 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.8% (107 of 114 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.6% (3114 of 3325 strings)
Translated using Weblate (Portuguese)
Currently translated at 53.9% (1793 of 3325 strings)
Translated using Weblate (Dutch)
Currently translated at 78.1% (2600 of 3325 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.5% (242 of 243 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.1% (820 of 862 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.6% (398 of 412 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (902 of 905 strings)
Translated using Weblate (Italian)
Currently translated at 99.1% (113 of 114 strings)
Translated using Weblate (Italian)
Currently translated at 87.3% (2903 of 3325 strings)
Translated using Weblate (Italian)
Currently translated at 17.1% (42 of 245 strings)
Translated using Weblate (Italian)
Currently translated at 99.0% (408 of 412 strings)
Translated using Weblate (Italian)
Currently translated at 92.7% (102 of 110 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.0% (3292 of 3325 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (3285 of 3325 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (3285 of 3325 strings)
Translated using Weblate (Slovak)
Currently translated at 100.0% (134 of 134 strings)
Translated using Weblate (Slovak)
Currently translated at 100.0% (412 of 412 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (905 of 905 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 98.1% (3262 of 3325 strings)
Co-authored-by: Andrea <goffopaguro@gmail.com>
Co-authored-by: Artem StolyROV <stolyarov11303@gmail.com>
Co-authored-by: Céu <marcel.ufscar@gmail.com>
Co-authored-by: David Kaya <david@kaya.sk>
Co-authored-by: Filip Betko <filipbetko@gmail.com>
Co-authored-by: FingerTiao <787170918@qq.com>
Co-authored-by: Irina Shcherbinina <cat3dcat007@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Mencius <beautyalinap@gmail.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Nikita Maximov <ruvemaximus@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Tetiana <merekka13@gmail.com>
Co-authored-by: Tom <tompsognathus@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: V Aar <v.vanderaar@gmail.com>
Co-authored-by: Viktor Révész <rviktor@ivankapal.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: razil <boss.razmarin@gmail.com>
Co-authored-by: Волкозмей <klippiky@gmail.com>
Co-authored-by: Данила Мальцев <maltsev-danila@inbox.ru>
Co-authored-by: Татьяна Куклева <klippiky@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/hu/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/it/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/content/it/
Translate-URL: https://translate.habitica.com/projects/habitica/content/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/content/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/it/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/hu/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/it/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Npc
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
* 5.36.4
* chore(deps): bump serialize-javascript in /website/client (#15395)
Bumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/yahoo/serialize-javascript/releases)
- [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.1...v6.0.2)
---
updated-dependencies:
- dependency-name: serialize-javascript
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps-dev): bump axios from 1.7.4 to 1.8.2 (#15401)
Bumps [axios](https://github.com/axios/axios) from 1.7.4 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.4...v1.8.2)
---
updated-dependencies:
- dependency-name: axios
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump prismjs from 1.29.0 to 1.30.0 (#15403)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.29.0 to 1.30.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.29.0...v1.30.0)
---
updated-dependencies:
- dependency-name: prismjs
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump @babel/runtime-corejs2 in /website/client (#15406)
Bumps [@babel/runtime-corejs2](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs2) from 7.23.6 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime-corejs2)
---
updated-dependencies:
- dependency-name: "@babel/runtime-corejs2"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump @babel/helpers in /website/client (#15407)
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.23.6 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)
---
updated-dependencies:
- dependency-name: "@babel/helpers"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump @babel/runtime from 7.23.9 to 7.26.10 (#15410)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.23.9 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)
---
updated-dependencies:
- dependency-name: "@babel/runtime"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump http-proxy-middleware in /website/client (#15427)
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.9)
---
updated-dependencies:
- dependency-name: http-proxy-middleware
dependency-version: 2.0.9
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Optimize database access for some use cases (#15444)
* optimize query when listing challenge tasks
* Optimize query for checking if user is party leader
* correct worker call
* remove unused priority
* fix tests
* don’t use body with delete
* add detailed information about sub payment for google and apple
* Support paypal details for subscription in admin panel
* stripe payment details
* fix imports
* fix tests
* fix deleting account
* begin building group admin panel
* fix convertig sub to group plan
* improve sub status display
* fix lint
* fix long line
* fix sub state display
* lint fix
* fix
* delete amplitude data by default
* improve searching for email in admin panel
* correctly call method
* move delete button in admin panel
* fix(lint): whitespace
* fix(style): indent
* fix(typo): humand
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Natalie <78037386+CuriousMagpie@users.noreply.github.com>
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Andrea <goffopaguro@gmail.com>
Co-authored-by: Artem StolyROV <stolyarov11303@gmail.com>
Co-authored-by: Céu <marcel.ufscar@gmail.com>
Co-authored-by: David Kaya <david@kaya.sk>
Co-authored-by: Filip Betko <filipbetko@gmail.com>
Co-authored-by: FingerTiao <787170918@qq.com>
Co-authored-by: Irina Shcherbinina <cat3dcat007@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Mencius <beautyalinap@gmail.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Nikita Maximov <ruvemaximus@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Tetiana <merekka13@gmail.com>
Co-authored-by: Tom <tompsognathus@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: V Aar <v.vanderaar@gmail.com>
Co-authored-by: Viktor Révész <rviktor@ivankapal.com>
Co-authored-by: razil <boss.razmarin@gmail.com>
Co-authored-by: Волкозмей <klippiky@gmail.com>
Co-authored-by: Данила Мальцев <maltsev-danila@inbox.ru>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kalista Payne <kalista@habitica.com>