* wip
* wip frontend
* cleanup
* wip
* refactoring
* wip
* first working version
* wip
* update calendar with new result
* add migration script
* dates are hard
* fix naming inconsistencies
* requested changes on migration
* timezones
* update date-fns, use date-fns/utc
* resolve cyclic dependency by extracting test activity calender into new file
* cleanup
* fix increment
* fix
* tests
* test coverage
* test migration
* migration more logging
* migration add unique index on uid if missing
* update legend styling
* 53 columns
* wip
* move dropdown and legend to the top
add dropdown border
yeet hotpink
invisible filler boxes
remove year from month format
* responsive update
* lowercase months
* handle current year, fix tests
* handle year change
* make days square again
* handle newly created users correctly
* move css
* add wrapper for easier styling
rework some font sizes/widths
reorder styles
* media queries
* align
* rework styling once more
* dont commit debug
* add days full to fill the space a bit
* show partial months
* hover on 0 tests
* start dynamic calendar on sunday
* no activity
* hover
* remove label on fillers
* remove label on fillers
* fix months, update tests for months
* adjust tests to new requirements
* cleanup
* fix migration
* impr(commandline): add "add/remove quote to favorites" commands
closes#5368
* chore: remove daily lb which is no longer in the backend
* fix: dropdown element flashing for couple frames on page load
* feat(language): add japanese romaji 1k (nthngnssmnnglss)
* fix: optional chaining
!nuf
* fix(words generator): infinite custom text tests not working correctly
* chore: missing languages in list and group files
* fix(language): remove duplicates
!nuf
* add readline sync to confirm
* gh action complaints
* unnecessary check
* premium only
* add years to drop down only if premium
* Update setup-tests.ts
* test fix
* cleanup
---------
Co-authored-by: Miodec <jack@monkeytype.com>
* added nodemailer and mjml
* added email template
* basic email util file
* added email queue
* email worker
* renamed folder
* showing which queues and workers were initialized
* initializing email on server boot
added some test code
* renamed to email worker
* type fix
* renamed queue
* added queue to list
* added worker to list
* logging when config was verified
* handling send mail result
* not minifying (not supported anymore)
using .html property
returning correct value
* dont send me emails
* added port to .env
* updated example
* updated test email
* using env email
* parseint base
* message
* refactor
* message
* rename
* moved email templates
* using async file read
* typo
* using mustache
* moved file
renamed to email client
* logging with prometheus
* added social links
* line
* using stronger types (object instead of array of any[])
moved prometheus logging into email client
added function to send mail using a template
* fixed templates not working
* removed console log
* name change
* rename
* moved templates
* rename
* string interpolation
* string interpolation
* moved to dev dependencies, exact versions
* moved types
* removed function, remove unnecessary if
* update template params
* updated name
* fixed button not clickable
* throwing
* moved template metadata to one place
* rename
* sending email on account creation
* removed test code
removed await
* fixed button
* not stopping the server if email client validation failed
* added metric for queue lengths
* exposing getjobcounts
* added job to log queue lengths
* added endpoint to request verification email
* using send verification email that calls api instead of firebase built in
* updated route
* renamed function
* recording time to complete
* returning 400 if email already verified
* setting transport initialized to true earlier, setting it to false if caught error
* moved forgot password flow to a simple popup, added new endpoint to ape
* added forgotpasswordemail route
* added email tempalte
* setting transport to false if caught error
* added email queue function
* moved try higher
* fixed log
* Add new rate limiting flow
* Oops
* Fix nit
* Fix some bugs
* Split key generation functions
* Remove 429
* Change message for root limiter
* Flag 429 and add config
* Add status code config
* Check enabled flag
* Add custom status for ape keys
* Bump coverage
* swapped conditions around
whats the point of checking if the status code is in the array if the whole thing is turned off anyway
Co-authored-by: Miodec <bartnikjack@gmail.com>