* 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>
* fix(drops): include needed data to double cap
* fix(lint): whitespace and commas
* Add tests for drop cap
Signed-off-by: Sabe Jones <sabe@habitica.com>
---------
Signed-off-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabe@habitica.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
* use lean for getting task lists
* Only load necessary user data for group-plans call
Also don’t make a db request for groups if the user is in none
* Only load necessary user fields for in app rewards
* Optimize updateStore by not checking every item
* Only load necessary user data for task scoring
* improve performance of inbox request calls
* merge fix
* fix scoring task call
* add quests to scoring call
* fix showing official pinned items
* also load achievements
* Optimize database access during spell casting
* load less data when casting spells
* Begin migrating update calls to updateOne and updateMany
* Only update user objects that don’t have notification yet
* fix test
* fix spy
* Don’t unnecessarily update user when requesting invalid guild
* fix sort order for middlewares to not load user twice every request
* fix tests
* fix integration test
* fix skill usage not always deducting mp
* addtest case for blessing spell
* fix healAll
* fix lint
* Fix error for when some spells are used outside of party
* Add check to not run bulk spells in web client
* fix(tags): change const to let
---------
Co-authored-by: SabreCat <sabe@habitica.com>
Removed testing banner
Fixed a JS console error when assigning a user to a previously open task
Fixed a potential abuse where user might be able to score someone else's
task via API call
Fixed an issue where finding tasks by alias could return tasks belonging
to other users
Fixed an issue that was appending the user's party ID to their list of
Guilds
Fixed an issue where group tasks were not receiving the default tag
needed for filtering them on user's personal list
* i18n string updates (issue #9210)
* change offHand to offHandCapitalized
* added removeTasks to challenge.json
* added hairBangs back to character.json
* added hairBangs back to character.json
* more hairBangs nonsense
* added hairBangs to hair-settings.vue, removed same from character.json
* changed levelUp to levelup in levelUp.vue and achievements.json
* fix duplicate string values
* fixed different strings with same content in different files
* updated test/api/v3 and test/api/v4 with messageTaskNotFound
* Delete POST-tasks_taskId_checklist_itemId_score.test.js
File got copied to a new directory, doesn't need to be here.
* fix: userID token in patrons.vue and heroes.vue
* removed: unused clock of code
* Restored eggsItemType to inventory.json
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* WIP: #12555
-dayOfMonth takes timezone into account on task update for monthly dailys
-startDate set to start of day in user's tz on task update for monthly
dailys
-tweaked a test so that it's actually testing something
* WIP: 12555
-task.startDate gets set to start of day in user's tz on task creation
and task update
-set preferences.timezoneOffset to nonzero value in certian test user objects
-removed date literals in test:api-v3:integration:tasks:PUT
* change $type to date for task and add new test
* adjust apidocs to reflect type change
* migration test for api date $type change
* minor fixes to migration
* unset instead of set empty string
* add type filter
* fix(todo date migration): make sure the update command works and limit update ops
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Also:
- Fix the test for this which has been equally broken.
- Simplify apidoc position info and make consistent in similar routes.
- Replace non-ascii characters in apidoc comment.
* Add new API call to complete multiple task scorings in one call
* Improve API response
* Improve saving process
* Improve handling for multiple tasks scored at once
* Handle challenge task errors better
* Improve check for alias
* Improve check for task scorings
* Fix merge errors
* make nodemon ignore content_cache
* Fix completing group tasks
* fix test
* fix tests (again)
* typo
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix lint
* fix tests
* fix(teams): checklist, notes
* handleSharedCompletion: handle error, make sure it is run after the user task has been saved
* fix typo
* correctly handle errors in handleSharedCompletion when approving a task
* fix(teams): improve disabled states
* handleSharedCompletion: do not increase completions by 1 manually to adjust for last approval not saved yet
* revert changes to config.json.example
* fix(teams): more style fixage
* add unit tests for findMultipleByIdOrAlias
* exclude api v4 route from apidocs
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* scoreTasks: validate body
* fix tests, move string to api errors
* fix(tests): update expectations for breaking change
* start updating api docs, process tasks sequentially to avoid conflicts with user._tmp
* do not crash entire bulk operation in case of errors
* save task only if modified
* fix lint
* undo changes to error handling: either all tasks scoring are successfull or none
* remove stale code
* do not return user._tmp when bulk scoring, it would be the last version only
* make sure user._tmp.leveledUp is not lost when bulk scoring
* rewards tests
* mixed tests
* fix tests, allow scoring the same task multiple times
* finish integration tests
* fix api docs for the bulk score route
* refactor(task-modal): lockable label component
* wip loading spinner
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(btn): fix padding to have height of 32px
* implement loading spinner
* remove console.log warnings
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* finish merge - never throw an error when a group task requires approval (wip - needs tests)
* fix taskModal merge
* fix merge
* fix(task modal): add newline
* fix(column.vue): add newline at end of file
* mvp yesterdaily modal
* fix tests
* fix api docs for bulk scoring group tasks
* separate task scoring and _tmp handling
* handle _tmp when bulk scoring
* rya: close modal before calling cron API, prevents issues with modals
* rya: fix conflicts with other modals
* add sounds, support for group plans, analytics
* use asyncResource for group plans
* fix lint
* streak bonus: add comment about missing in rya
* move yesterdailyModal
* fix issues with level up modals and rya
* add comments for future use, fix level up modals not showing up at levels with a quest drop
* handle errors in rya modal
* bundle quest and crit notifications
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Phillip Thelen <viirus@pherth.net>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
* Updating daily daysOfMonth array when startDate is updated and adding integration tests to test this functionality
* Adding more test cases and adding semicolons to the end of lines
* Only updating the monthly repetition if the daily was already set to repeat on a day of the month
* fix(lint): whitespace
Co-authored-by: Laurel Thomson <laurel.beth.thomson@gmai.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix(teams): checklist, notes
* fix(teams): improve disabled states
* fix(teams): more style fixage
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* fix(tests): update expectations for breaking change
* refactor(task-modal): lockable label component
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* refactor(tasks): better spacing, generic multi select
* fix(tasks): various visual and behavior updates
* fix(tasks): incidental style tweaks
* fix(teams): standardize approval request response
* refactor(teams): correct test, use res.respond message param
* fix(storybook): renamed component
* fix(teams): age approval-required To Do's
Fixes#8730
* fix(teams): sync personal data as well as team on mixin sync
* fix(teams): hide unclaim button, not whole footer; fix switch focus
* fix(achievements): unrevert width fix
Co-authored-by: Sabe Jones <sabrecat@gmail.com>