* WIP(privacy): start of banner
* WIP(privacy): layout rough
* WIP(privacy): mobile layout, add modal
* fix(privacy): implement toggle disable and setting row fold
* fix(privacy): clean up a couple of styles
* fix(privacy): adjust banner width at mobile sizes
* WIP(privacy): remove Loggly echo of Amplitude data
* fix(banners): account for privacy in snackbar position
* WIP(privacy): dismiss banner
* chore(analytics): update to maintaned GA4 library
* fix(tests): lint, misuse of apiError
* fix(analytics): add debug mode
* fix(analytics): load new library on client
* WIP(privacy): gtag.js based implementation
* fix(analytics): lint issues
* fix(lint): one more unused
* fix(lint): client errors
* feat(privacy): draft workflows
* fix(analytics): linting, send needed user values
* fix(tests): use mock analytics service in test env
* fix(tests): restore previous logic for node env
* feat(intro): jump to page 2 onboarding
* WIP(auth): revisions to registration flow
* WIP(privacy): landing page and banner revisions
* WIP(signup): added new username, tos, privacy state
* fix(signup): revert debugging logic
* WIP(signup): add defaulting and checkbox
* wip(signup): move social auth behind username screen
* Squashed commit of the following:
commit ca0a238e5f008525ed154c5eaf12e44f2fc22b00
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed May 7 12:17:20 2025 +0200
make emails lowercase
commit a2ce748558ce9134e6825208a7e66d78e720202e
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Apr 9 13:27:01 2025 +0200
remove unused import
commit cc6ce6c388d9693cf192c4bea733931fc8c31c37
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Apr 9 13:13:03 2025 +0200
add tests for new api route
commit 0d40a6230b548625482aa9f6831c93ed9d62533a
Author: Kalista Payne <sabrecat@gmail.com>
Date: Wed Jun 18 15:50:22 2025 -0500
update social tests
commit 79177d6754589b9e54682af8a531b63f60215dab
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Apr 9 10:21:51 2025 +0200
new api route to check if an email is available
commit 11df73fe07eeb730c2a95593e18e14a931f52429
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Apr 9 10:21:39 2025 +0200
Add field to not register social account when called
* Squashed commit of the following:
commit b8a2f0b8ee
Author: CuriousMagpie <eilatan@gmail.com>
Date: Thu Jun 20 17:18:30 2024 -0400
update privacy policy
* fix(vite): import syntax
* feat(auth): precheck on defaulted username
* feat(auth): add store action for check-email
* feat(auth): check email before proceeding
* WIP(login): refactor username screen
* WIP(auth): complete login/reg flow
* fix(auth): filter out expected 404
* fix(login): use allowRegister with Apple
and add z-index to component
* fix(login): style corrections and email passthru
* Fix edgecase
Signed-off-by: Kalista Payne <sabrecat@gmail.com>
* fix(auth): correct error behaviors
* fix(auth): rewire Apple auth
* make check-email check for restricted domains
Signed-off-by: Kalista Payne <kalista@habitica.com>
* fix(signup): all the style
* fix(express): return when responding
* fix(error): reduce specificity for restricted domain issue
* fix apple auth
Signed-off-by: Kalista Payne <kalista@habitica.com>
* fix(signup): change from blur to 500ms debounce
* fix(login): add missing 200 response in Apple flow
* fix(signup): more reconciliation with @phillipthelen's work
* fix(signup): now using token not code
* fix(reg): don't bail on Apple if we're allowing reg
* fix(auth): more reconciliation with @phillipthelen code
* feat(copy): privacy policy updates
* fix(copy): replace placeholder
* fix(vue): use Vite syntax for scss import
* fix(static): corrections to copy and css
* chore(style): remove excess whitespace
* use correct error
Signed-off-by: Kalista Payne <kalista@habitica.com>
* fix(layout): inputs, add privacy banner
* fix(login): button hover, more validation states
* fix(login): further layout and UX corrections
* fix(static): add back containing div for show/hide
* fix(apple): clean out Apple token
* fix(settings): only change preference on save
* fix(settings): correct save/cancel behavior
* fix(layout): consistent use of header/footer
* fix(layout): reposition mountains for reg/login/forgot
* fix(signup): partial rollback of /username route
* refactor(signup): move /username to page
* fix(apple): don't overwrite reg method
* fix(username): don't skip empty validation
* fix(input): don't show valid if no username
* fix(login): clean out Apple token if using another method
* fix(apple): possible race with token
* fix(tests): some housekeeping
* fix(config): copypasta
* fix(lint): various cleanup
* fix(lint): line squeeze
* fix(lint): one more v-for
* fix(groups): funnel invite flow to new username page
* Squashed commit of the following:
commit 3c5ba4bf24e4bb7996786520101f27ad66405bce
Author: Kalista Payne <kalista@habitica.com>
Date: Mon Aug 18 14:38:31 2025 -0500
fix(privacy): update link ref
commit 9d216f623b
Author: Kalista Payne <kalista@habitica.com>
Date: Mon Aug 18 14:18:22 2025 -0500
fix(privacy-tos): copy edits cont'd
commit d744f47140
Author: Kalista Payne <kalista@habitica.com>
Date: Mon Aug 18 13:43:22 2025 -0500
fix(privacy): copy edits and ToC reflow
commit 2c3c3fc9ce
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 18 18:46:24 2025 +0200
lint
commit cf363034d5
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 18 18:34:54 2025 +0200
fix link
commit 3afacd2c05
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 18 18:34:42 2025 +0200
add updated terms
commit 258b722499
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 18 17:58:42 2025 +0200
put back button to show/hide third party info
commit 2992e0299b
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Aug 18 17:58:32 2025 +0200
minor edits
commit bb5e252299
Author: Kalista Payne <kalista@habitica.com>
Date: Sun Aug 17 21:01:50 2025 -0500
fix(privacy): update Section 3
commit c79af7baa8
Author: Kalista Payne <kalista@habitica.com>
Date: Fri Aug 15 17:28:49 2025 -0500
fix(privacy): various copy edits
commit 100f2f4574
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Aug 15 11:37:37 2025 +0200
add newline
commit 11d1cfd0d9
Author: Phillip Thelen <phillip@habitica.com>
Date: Fri Aug 15 11:10:01 2025 +0200
update privacy policy
commit 59b99badf3
Author: Kalista Payne <kalista@habitica.com>
Date: Fri Aug 8 14:04:19 2025 -0500
5.38.2
commit 78daeb4191
Author: Kalista Payne <kalista@habitica.com>
Date: Fri Aug 8 13:36:19 2025 -0500
fix(apple): don't run auth middleware during redirect
commit 93f8d60903
Author: Weblate <noreply@weblate.org>
Date: Fri Aug 8 10:12:25 2025 +0200
Translated using Weblate (German)
Currently translated at 99.4% (185 of 186 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (186 of 186 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (186 of 186 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (54 of 54 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (243 of 243 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (15 of 15 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (47 of 47 strings)
Translated using Weblate (Dutch)
Currently translated at 78.0% (2643 of 3385 strings)
Translated using Weblate (Dutch)
Currently translated at 40.8% (100 of 245 strings)
Translated using Weblate (Polish)
Currently translated at 89.9% (233 of 259 strings)
Translated using Weblate (Dutch)
Currently translated at 67.5% (175 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (110 of 110 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 20.8% (51 of 245 strings)
Translated using Weblate (Turkish)
Currently translated at 65.9% (60 of 91 strings)
Translated using Weblate (Turkish)
Currently translated at 65.9% (60 of 91 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 17.9% (44 of 245 strings)
Co-authored-by: FingerTiao <787170918@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Karmelkowy <kicimeow.karmelio@gmail.com>
Co-authored-by: Linsey Dunya Pastoor <sekai.creations@gmail.com>
Co-authored-by: Mete Olmez <metezori27@gmail.com>
Co-authored-by: Sefa Uğurlu <ugurlusefa2@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: innnko <ayakabooker@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/death/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pl/
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Communityguidelines
Translation: Habitica/Contrib
Translation: Habitica/Death
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Settings
commit eb16fec41e
Author: Phillip Thelen <phillip@habitica.com>
Date: Wed Aug 6 22:08:07 2025 +0200
Add interface to block ip-addresses or clients due to abuse (#15484)
* Read IP blocks from database
* begin building general blocking solution
* 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
* improve test coverage
* Improve blocker UI
* add blocker to block emails from registration
* lint fix
* fix
* lint fixes
* fix import
* add new permission for managing blockers
* improve permission check
* fix managing permissions from admin
* improve navbar display for non fullAccess admin
* update block error strings
* lint fix
* add option to errorHandler to skip logging
* validate blocker value during input
* improve blocker form display
* chore(subproj): reconcile habitica-images
* fix(scripts): use same Mongo version for dev/test
* fix(whitespace): eof
* documentation improvements
* remove nconf import
* remove old test
---------
Co-authored-by: Kalista Payne <kalista@habitica.com>
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
commit 47d832bf12
Author: Fiz <34069775+Hafizzle@users.noreply.github.com>
Date: Tue Aug 5 15:12:44 2025 -0500
Add backend support for Hydra mount (#15482)
* chore: update time travelers shop to display seasonal backgrounds
* chore: update time travelers banner (note CSS borken rn)
* chore: fix borken CSS and update logic in shop
* chore: added isSubscribed function, not working
* chore: isSubscribed working but no bg for subscribers
* chore: logic and css updates
* chore: update habitica-images
* chore: add check for trinket
* chore: more time traveler shop logicking
* Add backend support for Hydra mount
- Add Dragon-Hydra to special mounts in stable.js
- Configure as contributor level 7 reward with canFind: true
- Add GIF format support for mount sprites
- Enable admin panel granting capability
* Fix Vue template errors in timeTravelers component
* Fix duplicate template block in timeTravelers component
* add CSS for Hydra mount GIF sprites
Added CSS rules for Mount_Head_Dragon-Hydra and Mount_Body_Dragon-Hydra GIF sprites
* Remove the separate Hydra mount dimension declaration
---------
Co-authored-by: CuriousMagpie <eilatan@gmail.com>
commit c03ab9855f
Author: Kalista Payne <kalista@habitica.com>
Date: Tue Aug 5 14:31:05 2025 -0500
5.38.1
commit 8f96b7b7fd
Author: Weblate <noreply@weblate.org>
Date: Tue Aug 5 13:02:45 2025 +0200
Translated using Weblate (Chinese (Traditional))
Currently translated at 17.1% (42 of 245 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 16.7% (41 of 245 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 16.3% (40 of 245 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 98.8% (425 of 430 strings)
Translated using Weblate (French)
Currently translated at 99.4% (184 of 185 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 15.9% (39 of 245 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (268 of 268 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (3385 of 3385 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (185 of 185 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (3379 of 3385 strings)
Translated using Weblate (Polish)
Currently translated at 95.5% (128 of 134 strings)
Translated using Weblate (Japanese)
Currently translated at 94.7% (254 of 268 strings)
Translated using Weblate (Polish)
Currently translated at 94.0% (126 of 134 strings)
Translated using Weblate (Japanese)
Currently translated at 98.6% (424 of 430 strings)
Translated using Weblate (Japanese)
Currently translated at 98.3% (423 of 430 strings)
Translated using Weblate (Japanese)
Currently translated at 92.5% (798 of 862 strings)
Translated using Weblate (Japanese)
Currently translated at 92.4% (797 of 862 strings)
Translated using Weblate (Japanese)
Currently translated at 90.6% (781 of 862 strings)
Translated using Weblate (Japanese)
Currently translated at 91.9% (3112 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 91.9% (3111 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 94.0% (174 of 185 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (8 of 8 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 15.5% (38 of 245 strings)
Translated using Weblate (Japanese)
Currently translated at 91.6% (3104 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 93.5% (173 of 185 strings)
Translated using Weblate (Japanese)
Currently translated at 99.6% (279 of 280 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Japanese)
Currently translated at 89.2% (769 of 862 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 94.4% (253 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 91.8% (170 of 185 strings)
Translated using Weblate (Japanese)
Currently translated at 97.9% (421 of 430 strings)
Translated using Weblate (Japanese)
Currently translated at 91.6% (3104 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 93.6% (251 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 90.8% (168 of 185 strings)
Translated using Weblate (Japanese)
Currently translated at 82.4% (202 of 245 strings)
Translated using Weblate (French)
Currently translated at 100.0% (268 of 268 strings)
Translated using Weblate (French)
Currently translated at 100.0% (3385 of 3385 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 15.1% (37 of 245 strings)
Translated using Weblate (French)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 91.3% (3092 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 92.5% (248 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 92.5% (248 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (193 of 193 strings)
Translated using Weblate (Croatian)
Currently translated at 100.0% (15 of 15 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (167 of 167 strings)
Translated using Weblate (Korean)
Currently translated at 22.8% (56 of 245 strings)
Translated using Weblate (Korean)
Currently translated at 47.7% (128 of 268 strings)
Translated using Weblate (Croatian)
Currently translated at 45.1% (121 of 268 strings)
Translated using Weblate (Korean)
Currently translated at 71.9% (620 of 862 strings)
Translated using Weblate (Croatian)
Currently translated at 70.6% (609 of 862 strings)
Translated using Weblate (Croatian)
Currently translated at 75.0% (6 of 8 strings)
Translated using Weblate (Korean)
Currently translated at 67.6% (291 of 430 strings)
Translated using Weblate (Korean)
Currently translated at 52.8% (1788 of 3385 strings)
Translated using Weblate (Croatian)
Currently translated at 50.3% (1706 of 3385 strings)
Translated using Weblate (Croatian)
Currently translated at 51.7% (134 of 259 strings)
Translated using Weblate (Czech)
Currently translated at 92.8% (130 of 140 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 86.9% (233 of 268 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (94 of 94 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (94 of 94 strings)
Translated using Weblate (Danish)
Currently translated at 92.1% (105 of 114 strings)
Translated using Weblate (Czech)
Currently translated at 89.4% (102 of 114 strings)
Translated using Weblate (Czech)
Currently translated at 83.5% (112 of 134 strings)
Translated using Weblate (Spanish (Latin America))
Currently translated at 71.6% (308 of 430 strings)
Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (245 of 245 strings)
Translated using Weblate (Serbian)
Currently translated at 84.4% (49 of 58 strings)
Translated using Weblate (Bulgarian)
Currently translated at 51.4% (144 of 280 strings)
Translated using Weblate (Swedish)
Currently translated at 66.5% (286 of 430 strings)
Translated using Weblate (Serbian)
Currently translated at 65.5% (282 of 430 strings)
Translated using Weblate (Slovak)
Currently translated at 65.5% (282 of 430 strings)
Translated using Weblate (Romanian)
Currently translated at 66.7% (287 of 430 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (430 of 430 strings)
Translated using Weblate (Danish)
Currently translated at 66.0% (284 of 430 strings)
Translated using Weblate (Czech)
Currently translated at 69.7% (300 of 430 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.7% (3377 of 3385 strings)
Translated using Weblate (Swedish)
Currently translated at 54.1% (1834 of 3385 strings)
Translated using Weblate (Serbian)
Currently translated at 50.6% (1714 of 3385 strings)
Translated using Weblate (Slovak)
Currently translated at 50.0% (1695 of 3385 strings)
Translated using Weblate (Romanian)
Currently translated at 60.5% (2050 of 3385 strings)
Translated using Weblate (Hebrew)
Currently translated at 38.4% (1301 of 3385 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (3385 of 3385 strings)
Translated using Weblate (Danish)
Currently translated at 54.0% (1829 of 3385 strings)
Translated using Weblate (Czech)
Currently translated at 59.6% (2020 of 3385 strings)
Translated using Weblate (Swedish)
Currently translated at 75.6% (140 of 185 strings)
Translated using Weblate (Serbian)
Currently translated at 73.5% (136 of 185 strings)
Translated using Weblate (Slovak)
Currently translated at 84.8% (157 of 185 strings)
Translated using Weblate (Romanian)
Currently translated at 78.9% (146 of 185 strings)
Translated using Weblate (Portuguese)
Currently translated at 82.1% (152 of 185 strings)
Translated using Weblate (Italian)
Currently translated at 91.8% (170 of 185 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (185 of 185 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (185 of 185 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (185 of 185 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (Danish)
Currently translated at 77.2% (143 of 185 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 98.7% (242 of 245 strings)
Translated using Weblate (Czech)
Currently translated at 75.1% (139 of 185 strings)
Translated using Weblate (Bulgarian)
Currently translated at 74.5% (138 of 185 strings)
Translated using Weblate (Czech)
Currently translated at 8.1% (20 of 245 strings)
Translated using Weblate (Swedish)
Currently translated at 72.0% (621 of 862 strings)
Translated using Weblate (Serbian)
Currently translated at 65.1% (562 of 862 strings)
Translated using Weblate (Slovak)
Currently translated at 66.9% (577 of 862 strings)
Translated using Weblate (Romanian)
Currently translated at 77.7% (670 of 862 strings)
Translated using Weblate (Portuguese)
Currently translated at 70.0% (604 of 862 strings)
Translated using Weblate (Polish)
Currently translated at 67.1% (579 of 862 strings)
Translated using Weblate (Italian)
Currently translated at 86.8% (749 of 862 strings)
Translated using Weblate (Indonesian)
Currently translated at 86.0% (742 of 862 strings)
Translated using Weblate (Hebrew)
Currently translated at 66.1% (570 of 862 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 98.0% (845 of 862 strings)
Translated using Weblate (Danish)
Currently translated at 69.9% (603 of 862 strings)
Translated using Weblate (Czech)
Currently translated at 69.7% (601 of 862 strings)
Translated using Weblate (Bulgarian)
Currently translated at 66.3% (572 of 862 strings)
Translated using Weblate (Serbian)
Currently translated at 74.0% (305 of 412 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (193 of 193 strings)
Translated using Weblate (Danish)
Currently translated at 90.0% (371 of 412 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Swedish)
Currently translated at 53.6% (139 of 259 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Danish)
Currently translated at 62.1% (161 of 259 strings)
Translated using Weblate (Bulgarian)
Currently translated at 54.0% (140 of 259 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 82.8% (222 of 268 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 99.4% (184 of 185 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 98.3% (241 of 245 strings)
Translated using Weblate (Japanese)
Currently translated at 91.3% (3092 of 3385 strings)
Translated using Weblate (Japanese)
Currently translated at 88.4% (237 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (134 of 134 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Japanese)
Currently translated at 100.0% (243 of 243 strings)
Translated using Weblate (Japanese)
Currently translated at 82.4% (202 of 245 strings)
Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Japanese)
Currently translated at 87.3% (234 of 268 strings)
Translated using Weblate (Japanese)
Currently translated at 86.4% (160 of 185 strings)
Translated using Weblate (Japanese)
Currently translated at 99.8% (913 of 914 strings)
Translated using Weblate (German)
Currently translated at 100.0% (268 of 268 strings)
Translated using Weblate (German)
Currently translated at 100.0% (3377 of 3377 strings)
Translated using Weblate (German)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (German)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (German)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (German)
Currently translated at 100.0% (259 of 259 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (3385 of 3385 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (914 of 914 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (268 of 268 strings)
Translated using Weblate (Russian)
Currently translated at 88.5% (248 of 280 strings)
Translated using Weblate (Spanish)
Currently translated at 99.8% (3379 of 3385 strings)
Translated using Weblate (German)
Currently translated at 100.0% (862 of 862 strings)
Co-authored-by: Ayaka Booker <ayakabooker@gmail.com>
Co-authored-by: Chaotic Lawful <habitica@eusebius.fr>
Co-authored-by: FingerTiao <787170918@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jan Freihöfer <jan.stauch.is@gmail.com>
Co-authored-by: Karmelkowy <kicimeow.karmelio@gmail.com>
Co-authored-by: Lio Zam <zerofux@web.de>
Co-authored-by: Mika <isekai.chr@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Vera <verasmolinap@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Zhi Hao Li <zhihaoli000@gmail.com>
Co-authored-by: Zuz Q <zuzannakunik@gmail.com>
Co-authored-by: innnko <ayakabooker@gmail.com>
Co-authored-by: 吳昀錡 <J1120241@gm.fdhs.tyc.edu.tw>
Co-authored-by: 潘致翰 <happyq0908@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
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/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/character/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/content/da/
Translate-URL: https://translate.habitica.com/projects/habitica/content/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/death/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/front/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/front/da/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/front/it/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/front/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/front/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/front/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/da/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/he/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/da/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/da/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/es/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/da/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/he/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/id/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/it/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/cs/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Content
Translation: Habitica/Death
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
commit 1dde2674f6
Author: Kalista Payne <sabrecat@gmail.com>
Date: Mon Jun 16 16:43:56 2025 -0500
fix(content): don't filter out the thing we want
commit 76122a8889
Author: Kalista Payne <sabrecat@gmail.com>
Date: Wed Jun 4 14:28:27 2025 -0500
fix(mobile): provide Challenge categories via API
commit 9e309a875e
Author: Kalista Payne <kalista@habitica.com>
Date: Mon Jul 28 14:15:00 2025 -0500
5.38.0
commit 09e3a394b8
Author: Kalista Payne <kalista@habitica.com>
Date: Mon Jul 28 14:06:45 2025 -0500
5.37.3
commit eba263360f
Author: Weblate <noreply@weblate.org>
Date: Mon Jul 28 21:03:17 2025 +0200
Translated using Weblate (German)
Currently translated at 100.0% (134 of 134 strings)
Translated using Weblate (German)
Currently translated at 100.0% (134 of 134 strings)
Translated using Weblate (German)
Currently translated at 100.0% (3377 of 3377 strings)
Translated using Weblate (German)
Currently translated at 100.0% (3377 of 3377 strings)
Translated using Weblate (German)
Currently translated at 100.0% (3377 of 3377 strings)
Translated using Weblate (German)
Currently translated at 100.0% (243 of 243 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 98.6% (850 of 862 strings)
Translated using Weblate (German)
Currently translated at 99.8% (3373 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.8% (3373 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.8% (3373 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.5% (3361 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.5% (3361 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.5% (3361 of 3377 strings)
Translated using Weblate (German)
Currently translated at 99.4% (3360 of 3377 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (185 of 185 strings)
Translated using Weblate (Polish)
Currently translated at 67.1% (579 of 862 strings)
Translated using Weblate (Polish)
Currently translated at 67.1% (579 of 862 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (Polish)
Currently translated at 100.0% (91 of 91 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 100.0% (184 of 184 strings)
Translated using Weblate (German)
Currently translated at 100.0% (245 of 245 strings)
Translated using Weblate (German)
Currently translated at 100.0% (47 of 47 strings)
Translated using Weblate (German)
Currently translated at 100.0% (193 of 193 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 14.2% (35 of 245 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 13.8% (34 of 245 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 13.0% (32 of 245 strings)
Translated using Weblate (Hebrew)
Currently translated at 2.0% (5 of 245 strings)
Translated using Weblate (Hebrew)
Currently translated at 66.1% (570 of 862 strings)
Translated using Weblate (Portuguese)
Currently translated at 54.1% (1830 of 3377 strings)
Co-authored-by: FingerTiao <787170918@qq.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jan Freihöfer <jan.stauch.is@gmail.com>
Co-authored-by: Jonathan Niessen <37.friedrich@gmail.com>
Co-authored-by: Karmelkowy <kicimeow.karmelio@gmail.com>
Co-authored-by: Katharina <katharinaanna.wilding@gmail.com>
Co-authored-by: Laura Fleckenstein <fleckenstein_laura@web.de>
Co-authored-by: Omer I.S <omeritzicschwartz@gmail.com>
Co-authored-by: Remigiusz Haziak <haziakremigiusz@gmail.com>
Co-authored-by: Uwe B <hbtca@tunixgut.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Wellinton Cardoso <wmcardoso1@hotmail.com>
Co-authored-by: cloudzzy <truskawka412@gmail.com>
Co-authored-by: 吳昀錡 <J1120241@gm.fdhs.tyc.edu.tw>
Translate-URL: https://translate.habitica.com/projects/habitica/character/de/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/de/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/he/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/de/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/he/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pl/
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Contrib
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Npc
Translation: Habitica/Questscontent
commit 9550eec718
Author: Phillip Thelen <phillip@habitica.com>
Date: Mon Jul 28 16:50:38 2025 +0200
Fix 500 when deleting a very old group plan account (#15481)
commit f267eb67e9
Author: Kalista Payne <kalista@habitica.com>
Date: Tue Jul 29 14:12:35 2025 -0500
fix(static): add back missing div for show/hide
commit 28251f42ab
Author: Kalista Payne <kalista@habitica.com>
Date: Thu Jul 24 22:59:01 2025 -0500
feat(privacy): preview page
* feat(privacy): respect Global Privacy Control
* fix(lint): remove unused component
* fix(test): test user opts in to tracking
* fix(test): add user pref to more contexts
* fix(test): final spot in api-unit
* fix(tests): update integrations
* chore(privacy): add paragraph to s1, retire separate preview pages
* fix(build): route copypasta
* fix(router): lingering dead import
---------
Signed-off-by: Kalista Payne <sabrecat@gmail.com>
Signed-off-by: Kalista Payne <kalista@habitica.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: CuriousMagpie <eilatan@gmail.com>
* reset the ApiToken on password changes/resets
* fix/add tests
* fix(typo): test grammar
* update new API Token Strings, removed unused one
---------
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
* fix(auth): record local email for social users where possible
* fix(auth): Apple emails are junk, prefer Google
* fix(auth): correct placement of logic to save local email
* fix(auth): run full function in both workflows to avoid conflicts
Co-authored-by: SabreCat <sabe@habitica.com>
* Don't sign in user when trying to connect a social account that was already created
* Log social users into matching local auth accounts
If the social account has an email that already exists as a local user, instead of creating a new account log them into their account and add the social auth to the account
* If possible set local authentication email for social users
* Allow password reset emails to be sent to social login users
* lint fixes
* Fix issues and tests
* fix tests
* Fix lint error.
* fix(profile): detect attempt to use banned words as display name. refactor profanity detection method.
* fix(profile): detect attempt to use banned words in blurb. further refactor profanity detection. inform the user their chat privileges have been revoked.
* refactor: add function to normalize Unicode strings and remove diacritics
* fix: improve regEx to prevent false partial matches e.g. 'hello' being recognised as banned words. porting fix from #12309
* fix(profile): refactor of profanity detection for #12445
* fix(profile): add test for swear words in new profile. fix existing tests
* fix(profile): show different error message for attempted slur use in username by new users.
* fix(profile): remove incorrect slur test
* fix(profile): fix slurs not caught at start of end of strings connect by punctuation
* tests(profile): fix tests for profanity checking
* remove exclusive test
* 11865 - update text for slur warnings
* 11865 - remove unused string from locale files
* 11865 - improve naming of banned word usage locale string
* 11865 - improve logic so that differentiated warnings are shown depending on whether a slur or other profanity has been used in a display name
* 11865 - construct slur regexes outside the validation function in which they are used
* 11865 - fix tests
* add date check
* achievements modal polishing
* refresh private-messages page when you are already on it
* add countbadge knob to change the example
* fix lint
* typos
* typos
* typos
* add toggle for achievements categories
* typo
* fix test
* fix edit avatar modal cannot be closed
* WIP(settings): subscriber page improvements
* WIP(subscriptions): more design build-out
* fix(css): disabled button styles
* fix(css): better Amazon targeting
* fix hide tooltip + align header correctly
* disable perfect scroll
* load messages on refresh event
* fix header label + conversation actions not breaking layout on hover
* WIP(g1g1): notif
* WIP(g1g1): notif cont'd
* fix(test): snowball change
* fix(event): feature NYE card
* chore(sprites): compile
* fix(bgs): include TT required field
* add gifting banner to the max height calculation
* chore(event): enable winter customizations
* WIP(gifting): partial modal implementation
* feat(gifting): select giftee modal
* fix(gifting): notification order, modal dismiss
* Begin implementing sign in with apple
# Conflicts:
# package-lock.json
# website/common/script/constants.js
# website/server/libs/auth/social.js
# website/server/models/user/schema.js
* Add apple sign in button to website
* fix lint errors
* fix config json
* fix(modals): correct some repops
* fix(gifting): style updates
* fix(buy): modal style changes
* fix(modals): also clean out "prev"
* Attempt workaround for sign in with apple on android
* temporarily log everything as error
* refactor(modals): hide in dismiss event
* fix temporary test failure
* changes to sign in with apple
* fix: first batch of layout issues for private messages + auto sizing textarea
* fix(modals): new dismiss logic
* fix(modals): new dismiss no go??
* Only use email scope
* print debugging
* .
* ..
* ...
* username second line - open profile on face-avatar/conversation name - fix textarea height
* temporarily disable apple auth and just return data for debugging
* Hopefully this works
* .....
* WIP(subscription): unsubscribed state
* .
* ..
* MAYBE THIS ACTUALLY WORKS???
* Implement apple sign in
* fix some urls
* fix urls
* fix redirect and auth
* attempt to also request name
* fix lint error
* WIP(subscription): partial subscribed
* chore(sprites): compile
* Change approach so that it actually works
* fix config error
* fix lint errors
* Fix
* fix lint error
* lint error
* WIP(subscription): finish subscribed
* refresh on sync
* new "you dont have any messages" style + changed min textarea height
* new conversationItem style / layout
* reset message unread on reload
* chore(npm): update package-locks
* fix styles / textarea height
* feat(subscription): revised sub page RC
* list optOut / chatRevoked informations for each conversation + show why its disabled
* Improve apple redirect view
* Fix apple icon on group task registration page
* WIP(adventure): prereqs
* Block / Unblock - correct disabled states - $gray-200 instead of 300/400
* canReceive not checking chatRevoked
* fix: faceAvatar / userLink open the selected conversation user
* check if the target user is blocking the logged-in user
* fix(subs): style tweaks
* fix(profiles): short circuit contributor
Attempted fix for #11830
* chore(sprites): compile
* fix(content): missing potion data
* fix(content): missing string
* WIP(drops): new modal
* fix(subs): moar style tweaks
* check if blocks is undefined
* max-height instead of height
* fix "no messages" state + canReceive on a new conversation
* WIP(adventure): analytics fixes etc
* Improve apple signin handling
* fixed conversations width (280px on max 768 width page)
* feat(adventure): random egg+potion on 2nd task
* fix(lint): noworkies
* fix(modal): correctly construct classes
* fix(tests): expectations and escape
* Fix typo
* use base url from env variables
* fix lint
* call autosize after message is sent
* fix urls
* always verify token
* throw error when social auth could not retrieve id
* Store emails correctly for apple auth
* Retrieve name when authenticating through apple
* Fix lint errors
* fix all lint errors
* fix(content): missing strings
* Revert "always verify token"
This reverts commit 8ac40c76bf.
# Conflicts:
# website/server/libs/auth/social.js
* Correctly load name
* remove extra changes
* remove extra logger call
* reset package and package-lock
* add back missing packages
* use name from apple
* add support for multiple apple public keys
* add some unit and integration tests
* add apple auth integration test
* tweak social signup buttons
* pixel pushing
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
* password min length: server + client side registering
* tweak text, add tests
* misc
* use red border for invalid inputs
* fix auth form for groups
* remove default firefox box shadown on invalid elements
* fix css in authForm
* fix margings
* misc fixes to forms and buttons
* fix typo
* wip: define items as mixed objects
* add default owned gear
* mark modified
* more mark modified
* more mark modified
* more mark modified
* more mark modified
* fix common tests
* fix common tests
* update mongoose
* add itemsUtils
* use new util function in hall controller
* add tests for items utils
* update website/server to mark all items as modified
* start updating common code
* update login incentives
* update unlock
* remove changes to package-lock.json
* remove changes to package.json
* Change update username API call
The call no longer requires a password and also validates the username.
* Implement API call to verify username without setting it
* Improve coding style
* Apply username verification to registration
* Update error messages
* Validate display names.
* Fix API early Stat Point allocation (#10680)
* Refactor hasClass check to common so it can be used in shared & server-side code
* Check that user has selected class before allocating stat points
* chore(event): end Ember Hatching Potions
* chore(analytics): reenable navigation tracking
* update bcrypt
* Point achievement modal links to main site (#10709)
* Animal ears after death (#10691)
* Animal Ears purchasable with Gold if lost in Death
* remove ears from pinned items when set is bought
* standardise css and error handling for gems and coins
* revert accidental new line
* fix client tests
* Reduce margin-bottom of checklist-item from 10px to -3px. (#10684)
* chore(i18n): update locales
* 4.61.1
* feat(content): Subscriber Items and Magic Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.62.0
* Display notification for users to confirm their username
* fix typo
* WIP(usernames): Changes to address #10694
* WIP(usernames): Further changes for #10694
* fix(usernames): don't show spurious headings
* Change verify username notification to new version
* Improve feedback for invalid usernames
* Allow user to set their username again to confirm it
* Improve validation display for usernames
* Temporarily move display name validation outside of schema
* Improve rendering banner about sleeping in the inn
See #10695
* Display settings in one column
* Position inn banner when window is resized
* Update inn banner handling
* Fix banner offset on initial load
* Fix minor issues.
* Issue: 10660 - Fixed. Changed default to Please Enter A Value (#10718)
* Issue: 10660 - Fixed. Changed default to Please Enter A Value
* Issue: 10660 - Fixed/revision 2 Changed default to Enter A Value
* chore(news): Bailey announcements
* chore(i18n): update locales
* 4.62.1
* adjust wiki link for usernameInfo string
https://github.com/HabitRPG/habitica-private/issues/7#issuecomment-425405425
* raise coverage for tasks api calls (#10029)
* - updates a group task - approval is required
- updates a group task with checklist
* add expect to test the new checklist length
* - moves tasks to a specified position out of length
* remove unused line
* website getter tasks tests
* re-add sanitizeUserChallengeTask
* change config.json.example variable to be a string not a boolean
* fix tests - pick the text / up/down props too
* fix test - remove changes on text/up/down - revert sanitize condition - revert sanitization props
* Change update username API call
The call no longer requires a password and also validates the username.
* feat(content): Subscriber Items and Magic Potions
* Re-add register call
* Fix merge issue
* Fix issue with setting username
* Implement new alert style
* Display username confirmation status in settings
* Add disclaimer to change username field
* validate username in settings
* Allow specific fields to be focused when opening site settings
* Implement requested changes.
* Fix merge issue
* Fix failing tests
* verify username when users register with username and password
* Set ID for change username notification
* Disable submit button if username is invalid
* Improve username confirmation handling
* refactor(settings): address remaining code comments on auth form
* Revert "refactor(settings): address remaining code comments on auth form"
This reverts commit 9b6609ad64.
* Social user username (#10620)
* Refactored private functions to library
* Refactored social login code
* Added username to social registration
* Changed id library
* Added new local auth check
* Fixed export error. Fixed password check error
* fix(settings): password not available on client
* refactor(settings): more sensible placement of methods
* chore(migration): script to hand out procgen usernames
* fix(migration): don't give EVERYONE new names you doofus
* fix(migration): limit data retrieved, be extra careful about updates
* fix(migration): use missing field, not migration tag, for query
* fix(migration): unused var
* fix(usernames): only generate 20 characters
* fix(migration): set lowerCaseUsername
* 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
* prints first error message only
* update signup error messages, missing password not working (wip)
* remove alerts, show notEmpty, first error only per param, update unit test
* move changes to client side
* feat(gdpr) only store necessary data for social login
* feat(gdpr) also store email for social users
* fix(social auth): store emails array instead of single email
* fix(emails): do not get name from old facebook info
* add migration to remove extra data from social profiles
* update migration description
* fix tests
* fix typo in migration file
* remove inbox from user/stats routes
* remove inbox from news routes
* change signature for authWithHeaders
* do not load inbox in coupons routes
* do not load inbox in challenge routes
* do not load inbox in some members routes
* do not load inbox in chat routes
* downcase updating an email to be consistent with creating
* add tests to ensure downcase of email for create/update
* create migration to downcase existing User objects
* delete 'only'
* change gmail to example
* add trailing comma from lint error
* search for emails with at least one capital letter
* fix query in order to search for any email with at least one capital letter
* batch process effected users with at least one capital in email
* update script for batch process effected users
* update API comments to for `username` restrictions and to use Login Name terminology
We use "login name" rather than "username" in user-visible text
on the website and (usually) when communicating with users because
"username" could be confused with "profile name".
Using it in the docs allows you to search for that term.
* add alphanumeric and length validation for creating new login name (username)
The 'en-US' locale is specified explicitly to ensure we never use
another locale. The point of this change is to limit the character
set to prevent login names being used to send spam in the Welcome
emails, such as Chinese language spam we've had trouble with.
* add error messages for bad login names
* allow login name to also contain hyphens
This is because our automated tests generate user accounts using:
let username = generateUUID();
* allow login names to be up to 36 characters long because we use UUIDs as login names in our tests
* revert back to using max 20 characters and only a-z, 0-9 for login name.
It's been decided to change the username generation in the tests instead.
* disable test that is failing because it's redundant
Spaces are now prohibited by other code.
We can probably delete this test later. I don't want to delete it
now, but instead give us time to think about that.
* fix typos
* revert to login name restrictions that allow us to keep using our existing test code
I'm really not comfortable changing our test suite in ways that
aren't essential, especially since we're working in a hurry with
a larger chance than normal of breaking things.
The 36 character length is larger than we initially decided but
not so much larger that it's a huge problem.
We can reduce it to 20 when we have more time.
* limit username length to 20 chars
* fix tests