Releases: monkeytypegame/monkeytype
v25.49.0
Thank you to all the contributors who made this release possible!
Features
- funbox: Add rot13 funbox (@Leonabcd123) (#7116) (e8339f0a1)
- quote search: add custom quote length filter (@Leonabcd123) (#7109)
Improvements
- perf: defer UI updates away from input logic (@Miodec) (#7162) (b9924ff49)
Together with input v3 input handling logic is now MUCH faster, and should result in a more consistent experience, especially on slower machines. - words-filter: add 'exact match only' checkbox (@Leonabcd123) (#7126) (2886c7283)
- input-history: Change style for incomplete last word in input history (@Leonabcd123) (#7117) (f6df27246)
- timer/progress style: add flashing timer style (@gianpena) (#7139) (d18408700)
- quotes: Add quotes from eChat source code (@sapbotgit) (#7154) (a875aa6ed)
- validate username on profile search page (@fehmer) (#7132) (0a4043de4)
- practice-words: Add option to practice missed and slow words from commandline (@Leonabcd123) (#7125) (f54c8a8cd)
- quotes: add quotes in various languages (@NeraShi, @28Zapper) (#7152, #7113) (54e660da6, c2691b334, 31e07e28a)
Fixes
- friends: change "max streak" tooltip to "longest streak" (@ashiqr-dev) (#7165) (6475b4213)
- weird input behavior on some android keyboards (b64db65e5)
- backspacing causing desync on some platforms (ad3b7b37d)
- ts issues (how did this get past ci?) (12f206eec)
- friends: proper display of pending requests on small screens (@fehmer) (#7148) (aafabeb78)
- language: replace oe with œ where relevant (@bersace) (#7130) (b7ddb2600)
- keymap: prevent tilde key from highlighting entire keymap (@LodunCoombs) (#7128) (c99f504f3)
- language: add missing ligatures in french_10k (@Arkanosis) (#7111) (ddd5eb40d)
- layout: pine v4 (#7110) (dcc4e4052)
- composition update not making sounds (60d1aac72)
- ellipsis not working correctly (f63972a63)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- fix(ci): use install instead of add (2cef523c3)
- fix(ci): use -D for prettier install (94b3bb135)
- fix(ci): pretty check using wrong version, missing plugin (4b34854d3)
- refactor: cache often used elements (741ab7cb0)
- refactor: Use class for validateWithIndicator (@fehmer) (#7151) (71b5d2215)
- refactor: use modern api for toggle fullscreen (@fehmer) (#7150) (227a52202)
- ci: allow dependabot node version (@fehmer) (#7184) (445be8875)
- build(deps): bump express from 5.1.0 to 5.2.0 in /backend (#7175) (6cfb88090)
- build(deps): bump nodemailer from 7.0.7 to 7.0.11 in /backend (#7176) (71c0f43d9)
- chore: rename pretty to format (@Miodec) (#7183) (883d21fac)
- chore: make sure to use production env when building for production (2fcc86ddd)
- chore: add disable slow timer button to dev options (ad8e4f65b)
- chore: remove duplicated debug log (8c035c168)
- chore: update timer style schema (a9e0db4f8)
- chore: animate also accepts strings (be73085b2)
- chore: add guards to composition (62ef8564a)
- chore: add guards to before delete (34e971bc4)
- chore: remove oxc prettier plugin (3b01090e5)
- chore: use oxc plugin for prettier (066192c28)
- chore: upgrade to prettier 3.7 (5f305735d)
- chore: prettier upgrade (@Miodec) (#7159) (f910c8a56)
- chore: add more words to hinglish language(hinglish.json) (@GreenvillSSnick) (#7138) (14895f64a)
v25.48.0
Thank you to all the contributors who made this release possible!
This release features input v3, which completely reworks the input system and makes it much easier to work with. You as the user shouldn't notice anything different - but if you do, make sure to report any issues!
Features
- add show personal best (032844d02)
You can now view your PB for the current test settings right above the test words, before starting the test. - test: add indicate typos both (@Leonabcd123) (#7072) (13b75f46b)
- theme: add Vesper Light (@SameerJS6) (#7040) (bb6e0d982)
Improvements
- add monkey caret style (36574b409)
- handle backend unavailable in remote validations (@fehmer) (#7105) (0e4b9c468)
- leaderboard: fix icons on friend xp leaderboards (@fehmer) (#7106) (05afcc51f)
Fixes
- skill issue fix not fitting on mobile screens (a552272cd)
- unable to enter fullscreen on result page (337541902)
- backspace always playing error sound (0d9a1d9da)
- arrows funbox not working (54b9220a2)
- nospace not working (e3135550d)
- set korean status based on generated words (aad3912ee)
- zen mode: newline not working (f4f4057dd)
- test: restart not working in long tests (@Leonabcd123) (#7143) (dfa716a41)
- alt space highlighting correct word as incorrect (eab1737ea)
- input: broken accents in safari (4e7bda023)
- non-breaking space behaving like a character (f86f25356)
- custom-theme: Remove duplicate .customTheme selectors (@Leonabcd123) (#7120) (595ff2776)
- double caret on webkit devices (a5f2a5be9)
- animation modal: animations stacking unnecessairly (3454da18e)
- custom theme color pickers not working (fa669fb27)
- test: don't ignore caps lock in layout emulator (@fehmer) (#7107) (e1e1bfb30)
- leaderboards: show correct rank in friends weekly leaderboard (@fehmer) (#7104) (8ee7e94d4)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- refactor: move data normalization to a function (68266101d)
- refactor: move const inside an if (43e0bc783)
- refactor: input rewrite v3 (@Miodec) (#7119) (ea84adfb4)
- refactor: use animejs instead of jquery (@Miodec) (#7101) (253608727)
- refactor: remove lodash from backend (@fehmer) (#6953) (100979191)
- perf: optimize friend queries (@fehmer) (#7080) (949e2baa4)
- build: extract vite plugins (@fehmer) (#7103) (81f09b9b9)
- chore: upgrade typescript (3dfea100d)
- chore: reorder folders (cc9eee198)
- chore: add comment (d617513fc)
- chore: add command to fix skill issue (13d7752c6)
- chore: add initial value (04d9ed241)
- chore: lower min fps to 15 (bd5b91e66)
- chore: upgrade oxlint (2107c87fd)
- chore: add protection against all custom theme colors being the same (8e9379203)
- chore: change from type assertion to type definition for stronger type checking (6c3adc0e9)
- chore: move code (5a9038cfe)
- chore: move files (4cc1c0956)
v25.46.0
Thank you to all the contributors who made this release possible!
Features
- leaderboard: add friends filter to daily/weekly leaderboard (@fehmer) (#7084) (d74051e87)
- theme: added pale_nimbus (@conner-mcnicholas) (#7055) (9cb19e3ea)
- leaderboard: add friends filter to all-time leaderboard (@fehmer) (#7061) (9d64a57da)
- add custom character generator to custom text modal (@imrajyavardhan12) (#7037) (ffd55c532)
Improvements
- languages: fixed the default hungarian word list, and also added hungarian_1k list (@dotleon) (#7087) (05e1b828a)
- randomize themes based on system theme (@fehmer) (#7075) (946f41835)
- leaderboard: fix icons on friend leaderboards (@fehmer) (#7086) (35be4bdfd)
- friends: remember sorting of friends list (@fehmer) (#7062) (08165adc2)
- friends: validate username on add friend (@fehmer) (#7059) (1cf316a77)
- quotes: add quotes in various languages (@Tekkermester, @notfpt, @theFaustus, @thesomewhatyou, @prathampt) (#7071, #7098, #7100, #7076, #7048) (556208efa, d502f67aa, b1b57dcc9, 318da6e61, 12e3d65f9)
Fixes
- quote: fix run-on sentence in quote 5580 (@mak448a) (#7092) (013f710e1)
- ae/oe chars being registered as two mistakes when mistyped (@thedev0ps) (#7090) (027e57261)
- add input validation for new filter preset modal (@AmanDevelops) (#7073) (c76f8dc66)
- wpm sometimes goes negative in zen mode (8aa1f51c2)
- partially correct last words counting towards final wpm in non timed modes (a3765b9b5)
- 404 page not working (bf37029f6)
- xp leaderboards missing first column (2f5cb164c)
- unable to delete a preset in some cases (e930d0c3f)
- friends: not able to sort by 'friends for' column (@fehmer) (#7057) (caae0d404)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- style: add space between connected sentences in security policy (@thedev0ps) (#7078) (feb91bdb6)
- docs: Add author name requirement to PR titles (@fehmer) (#7089) (478836bbf)
- refactor: use virtual module for env-config (@fehmer) (#7095) (6adfcb092)
- refactor: rework keypress tracking (df06b6263)
- refactor(accounts): use sortedTable for history (@fehmer) (#6747) (78b0eb25a)
- ci: fix generate version plugin hiding previous errors (@fehmer) (#7060) (b5755faa3)
- chore(language): update code_jule (@adamperkowski) (#7097) (f44e491c5)
- chore: update vitest to 4.0.8 (@fehmer) (#7096) (8db114004)
- chore: fix typo (33880b384)
- chore: disable sentry replays for now (52b7d963b)
- chore: language integrity check (@fehmer) (#7074) (70dfd2aa6)
- chore: bump node version (c0191da00)
- chore: upgrade oxlint (586a19ad3)
v25.44.0
Thank you to all the contributors who made this release possible!
Features
- add friends (@fehmer) (#6658) (d885e7023)
You can now add other users as friends. This will allow you to quickly compare your stats and personal bests against your friends. - layout: add Gallium-NL layout (@Ririshi) (#7029) (e4afca1ff)
- language: add Erlang programming language support (@Ryrden) (#7013) (154b88eec)
- language: add Clojure programming language support (@Ryrden) (#7012) (260c3a94c)
- languages: add code ocaml language (@informal-stripes-condo) (#7000) (820ac7148)
- layout: add gust layout (@MasterRon) (#6991) (a15d84e0c)
- layout: add pine v4 layout (@verdant23) (#6958) (74e4dd7b2)
Improvements
- apply reduced motion to live stats (d77169ae2)
- british english: replace double quotes with single quotes (015252120)
- funbox: proper per-language handling in polyglot mode (@byseif21, @fehmer) (#6666) (acbd1de11)
- quotes: fix italian quote punctuation (@gablilli) (#7019) (b455d4994)
- save custom text modal: add validation for custom text name input (f025b121c)
- add validation for preset names (@fehmer) (#6969) (18c465e82)
- quotes: Add English quotes (@TheFrenchTechMan) (#6961) (c08572bd8)
- add custom error codes to contracts and api doc (@fehmer) (#6976) (5026f4195)
- modals: missing/invalid inputs disable submit button (@fehmer) (#6973) (fa03afe30)
- language: add 15 new code go words (@bmarse) (#6936) (81ea9e689)
- prevent space from scrolling the page when on the result page (ed9aa8769)
- result: add tag pb button to chart legend buttons (892b7d020)
- quotes: add quotes in various languages (@Flatbread231, @DaanGrob05, @Flatbread231, @ixnoahlive, @OM3X4, @Eric-Zhang-Developer, @Legonard, @eduardopaul, @thesomewhatyou, @Aluriak, @Aluriak) (#7031, #7042, #7023, #7009, #7017, #7005, #6997, #6985, #6964, #6934, #6935) (b85f13553, be59c4066, c42217c37, 06a20e7b8, 0311da26d, 9e4814249, 00552366b, a846d192d, a56107667, 3d819115e, df81d7ce9)
Fixes
- run without firebase-config (@fehmer) (#7030) (6902b407e)
- Advanced filters does not contain tags after first tag was added (@Rowan441) (#7025) (42d6dc8a7)
- wrapper height not updated when tape is turned off mid-test (@nadalaba) (#7043) (05123e8dd)
- caret: caret not resetting position on quick restart (@nadalaba) (#7038) (a0c9decc3)
- quotes: remove backspace character from kotlin quote (42227666a)
- pace caret: stopping at the end of the word in blind mode (1cf4b079c)
- caret: incorrect position in blind mode (da01d294c)
- pace caret: go back to using self-correcting timing (22922004d)
- caret: invisible caret when quick restarting (c4ffa5feb)
- caret: incorrect underline positioning (79b79e051)
- caret disappearing when changing font size through commandline (552608814)
- false positive typo for gmx.de email domain (fa9c50cab)
- discord avatars not loading (@fehmer) (#6999) (d9d375d05)
- local typing stats not updated on result save (be106b8f1)
- additional accents not applied correctly (8699351be)
- Set result chart burst Y axis max after adding PB line (@Ed-k) (#6980) (5275947f1)
- words input positioning in tape mode (8629779a7)
- funbox: caret/tape/ui issues in backwards funbox (@nadalaba) (#6956) (431860179)
- password validation rules (@fehmer) (#6967) ([344e467](https://github.com/monkeytypegame/monkey...
v25.36.0
Thank you to all the contributors who made this release possible!
Features
- result: rename raw to burst, add raw line to result graph, add ability to hide chart data (@Miodec) (#6907) (8627235be)
- layout: add handsdown neu, and neu inverted (@aleksiye) (#6921) (12f78e18c)
- layout: add kuntem-jq layout (@junnnaaaaaa) (#6920) (58e6a91fd)
Improvements
Fixes
- practice slow words: too many words being passed into practice mode in timed tests (8a3fa8738)
- commandline: prevent false theme apply during perview (@byseif21) (#6930) (64473e4e6)
- custom text modal: reset practise words on submit (@Quiggleson) (#6927) (3bac28601)
- profile: prevent profile XP updates on other user profile (@Majestic-Fire) (#6897) (177eb590f)
- testSettings: link with custom limit not applied correctly (@fehmer) (#6917) (984cb3cd9)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- docs(readme): shields link to their respective websites rather than to the images source (@matthew-wright07) (#6931) (661feaaf7)
- refactor: result migration and tests cleanup (@Miodec) (#6929) (7487e53c6)
- refactor: use findOne instead of limit(1) (@fehmer) (#6924) (d9887cf37)
- refactor: optimise fetching last result timestamp when adding a result (c8cf1eae5)
- test: refactor controller tests (@fehmer) (#6925) (01f981cd0)
- build: rename json-validation to check-assets, improve error messages (@fehmer) (#6933) (56b25f30b)
- chore: bump compatibility header (5a3904903)
- chore(eslint): add rule to protect against accessing __testing outside of test files (4d46c6298)
- chore: bump oxlint version (88bb7a081)
- chore: fixing zeor's insanity (667748ad2)
v25.35.0
Thank you to all the contributors who made this release possible!
Features
- layout: add ergo_split46 layout (@viviengarcia) (#6914) (02f17eec6)
- add icelandic 200 (072006277)
- language: add hawaiian 200 1k (@SirObby) (#6883) (7018b83e2)
- profile: optionally include test activity on users public profile (@fehmer) (#6824) (c5d43dd67)
- language: Update persian_20k.json (@MajidShajari) (#6880) (c18900904)
Improvements
- sign up: add temporary email detection to registration form (@copilot) (#6912) (44ceb7137)
- custom text: replace control character improvements (@Leonabcd123) (#6909) (7a6a54c3c)
- always count correct partially completed words for wpm (c2cee8bde)
- validate username on google signup (@fehmer) (#6895) (7d04637f7)
- settings: Allow webp format for background images (@fehmer) (#6896) (76597e6a0)
- screenshot: switch to modern-screenshot for enhancements (@byseif21) (#6884) (e6519b166)
- loading page improvements (@Miodec) (#6893) (725fde1ae)
- add share buttons to desktop and mobile test config (aac60fe48)
- validation: don't debounce if delay is zero (@fehmer, @Miodec) (#6878) (a3764460e)
- settings-page: responsive local font button style (@byseif21) (#6855) (68d2370d9)
- misc: reject nested objects in sanitize (@fehmer) (#6850) (792a222ad)
- keymap: optimize config event listener on full config load (@fehmer) (#6856) (18267c737)
- quotes: add quotes in various languages (@dilem, @dilem, @JeffKochuk) (#6898, #6892, #6852) (263984f57, 6f50752b6, 52f293e29)
Fixes
- theme: problems with theme preview (@fehmer) (#6881) (d264fce32)
- test: lazy mode set via command line does not restart test (@fehmer) (#6908) (576b35f4d)
- language: split merged words in turkish 1k (9f1dacd22)
- download screenshot button was not shown (@byseif21) (#6900) (a1af28bb5)
- add comma and period to specials funbox (#6870) (@radouane-tamouss) (#6887) (b6959552a)
- custom min speed mode setting not saving between sessions (14ce65727)
- account menu being shown under the test config (7c27898d0)
- layout: correct persian_farsi and persian_standard layouts, also add persian colemak layouts (@MajidShajari) (#6876) (d2f85c972)
- test: immediately reposition caret and tape on tapeMargin change (@byseif21) (#6860) (5fcf964eb)
- 8008 theme duplicate sub-alt-color (@tboex) (#6879) (e6dc6d16c)
- account: error while loading old filter presets (@fehmer) (#6873) (d52af936f)
- email handler using dev firebase config (36556c61b)
- mouseover labels not working on static pages (@fehmer) (#6869) (39bc6706c)
- email handler not working (bc0a0aed5)
- authentication issues when using multiple tabs (@fehmer) (#6790) (e838f71c7)
- shift enter not inserting a newline character (541f29ce9)
- tooltips: prevent hover pop-up reappearance on click (@byseif21) (#6831) (42609e21d)
- zen-mode: restore input history and watch replay (@byseif21) (#6863) (1048e0488)
- test config: applying preset doesnt show punctuation and numbers (59a6004de)
- presets: preset with minWpmCustom should not activate minWpm (@fehmer, @Miodec) (#6857) (568012af6)
- config: fix array not getting verified after sanitize (@fehmer) (#6849) (100050fd1)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr: add alpha support to colors utils (258a437c9)
- fix: sentry lint issues (cc08930de)
- fix: unclosed word tags in words history (f52f262f7)
- style: use horizontalPadding to calculate right property (3879e58f9)
- refactor: move file (9752e481e)
- refactor: rename file ([ac05fd9](https://github.com/monke...
v25.32.0
Thank you to all the contributors who made this release possible!
Features
- layout: add Rulemak layout (@poli0iq) (#6835) (821c64088)
- settings: allow user to pick a local font (@fehmer, @Miodec) (#6794) (f759b0ce8)
Just like with the local background file, you can now just select the desired font file directly. Much easier!
Improvements
- commandline: add local background/font commands (@byseif21) (#6816) (356ca1909)
- config: validation on layoutFluid and polyglot (@fehmer) (#6844) (ced5dc192)
- quotes: add quotes in various languages (@Kr1tX12) (#6819) (7b9a2eb93)
Fixes
- font file type check for better browser compatibility (@byseif21) (#6836) (af0f23c94)
- quote-mode: broken all selection and visual highlighting issues (@byseif21) (#6818) (31585bd0b)
- test config: sometimes showing too many elements at once (3f72e31df)
- move time setting before mode (7519931b1)
- config: numbers and punctuation always reset to false (@fehmer) (#6830) (1a07ffc5f)
- style: fix visual problems (@fehmer) (#6827) (df8cb077b)
- Misspelt items in League of Legends language (@kiriDevs) (#6822) (34001e7fb)
- font: 0xProto not working in screenshot (@byseif21) (#6817) (2b43a5f82)
- funbox: fix animations for choo_choo and earthquake funboxes in custom mode (@ShizukoV) (#6815) (15feb8a74)
- presets: move migration to Config.apply (@fehmer) (#6814) (6f6af5e62)
- commandline: use correct schema on inputs with secondKey (@fehmer) (#6813) (7eeb9fd08)
- roboto and roboto mono being swapped (686a73069)
- keymap always enabled (266c56440)
- minwpm, minacc, minburst, pacecaret auto enabling themselves (1a50b207e)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- docs(SELF_HOSTING.md): add Firebase domain whitelisting instructions (@tobilobasalawu) (#6832) (c4353f637)
- test: add WeeklyXpLeaderboards integration tests (@fehmer) (#6843) (cd99d5af1)
- test: fix flaky user tests (@fehmer) (#6837) (c8a91ede5)
- test: update to vitest3 (@fehmer) (#6811) (01ed9322e)
- test: add unit tests for daily leaderboards (@fehmer) (#6802) (9c41fd5d0)
- test: use mongodb testcontainer (@fehmer) (#6808) (d9009e51c)
- chore: remove unused dependencies (@fehmer) (#6841) (f9b22ade5)
- chore: move knip to project root (@fehmer) (#6842) (bec5606c7)
- chore: add post checkout git hook (5af3a8146)
- chore: add motivational messages when wpm is 0 (b63b07354)
- chore: rename some commands, reorder (81a497b7b)
v25.31.0
Thank you to all the contributors who made this release possible!
Features
- allow user to use local file as background (@fehmer, @byseif21, @Miodec) (#6663) (f2b34a541)
You can now use a local image as a custom background, which will take priorty over the URL background. Note that this will NOT persist across devices. - language: add ABAP programming language (@hottek) (#6784) (21230abaa)
- language: add moroccan arabic (@Soufi-ane) (#6743) (da720ac13)
- language: add Gleam coding language (@binajmen) (#6771) (3757744b2)
- sound: add play time warning (@Miodec) (#6759) (6dad5415c)
You can now play a short time warning sound when you are close to the end of a timed test. - font: add 0xProto font (@0x7375) (#6750) (5b9f7be35)
Improvements
- add validations to settings input (@fehmer) (#6751) (e32155edb)
- quotes: polish quotes and law of physics for polish language (@sobczaktm) (#6772) (fc438ec45)
- modes-notice: make average wpm and accuracy show decimal places when appropriate (@blru) (#6749) (dc7c94f6c)
- quotes: 15 polish proverbs and other quotes for polish language (@sobczaktm) (#6760) (fb82a5288)
- quotes: add quotes in various languages (@Eric-Zhang-Developer) (#6773) (b6a7662fa)
Fixes
- cursor not changing to pointer on button hover (@nadalaba) (#6801) (dd55a7257)
- filter section doesn't toggle using local image (@byseif21) (#6796) (d8fd64182)
- settings: dismiss tooltips on funbox buttons after click (@byseif21) (#6803) (d48ddcaac)
- commandline: missing initialize input validation handler for commandOverride (@byseif21) (#6788) (926b36940)
- test not reacting to font size change (bf9e53355)
- custom background not working (b024e8ea4)
- settings: ensure themes UI is always up-to-date when renavigating (@byseif21) (#6581) (e5b0978d4)
- login: clear data on logout (@fehmer) (#6791) (32ff95a2a)
- partially completed last words not being counted in custom timed mode (28c1cccd5)
- settings: skip update settings page if not active (@fehmer) (#6783) (0ee4b2960)
- themes: clipped logo letters in some themes (@byseif21) (#6745) (2fc7aa598)
- account-settings: prevent unauthorized error on ape keys after logout (@hussain-alsayedali) (#6746) (4a14ae45e)
- quotes: code_java compilation fixes (@nafets-st) (#6778) (2af1f7901)
- commandline: tags not showing active state correctly (363e21b54)
- account-history: highlight animation is not working on result selection (@byseif21) (#6744) (27019d189)
- quotes: code_rust compilation and whitespace (@nafets-st) (#6755) (231cd2ecb)
- german_250k.json: remove non-german accents (@8e3) (#6756) (62a5145f0)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- fix: config applying issues (@Miodec, @fehmer) (#6812) (4ec51a2d2)
- docs(example.env): improve clarity of docker/example.env config for self-hosting (@nitin-is-me) (#6777) (2df72cc69)
- docs(self-hosting): improve grammar and structure of setup guide (@nitin-is-me) (#6774) (e5f8cb398)
- refactor(config): cleanup handling for fontSize, tapeMargin and maxLineWidth (@fehmer) (#6775) (3ddb3c68c)
- refactor(commandline): rework commandline to use metadata approach (@Miodec, @fehmer) (#6779) (4dd8755aa)
- refactor(schema): move font config to schema (@fehmer) (#6780) (060a753be)
- refactor(config): split config and config-metadata tests (@fehmer) (#6770) (4f57418b6)
- refactor(config meta): split into its own file (@Miodec) (#6769) (9567e07dc)
- refactor(contracts / schemas): move schemas into their own package (@Miodec) (#6754) (69cbbe4ab)
- refactor(config): config metadata (@Miodec) (#6753) (92790f368)
- test: split integration tests (@fehmer) (#6807) (c1a681c17)
- chore: update nodejs to 20.19.4 (@fehmer) (#6805) (aa94a8afe)
- chore: correct usage of font family (@fehmer) ([#6793](https://github.com/monkeytypegame/m...
v25.30.0
Thank you to all the contributors who made this release possible!
Features
- funbox: add no quit (@Miodec) (#6741) (5e4478c97)
- settings: add deep links to specific sections (@fehmer) (#6661) (e50d5e9cd)
- font: add iosevka (@leana8959) (#6674) (1ace28da4)
Improvements
- settings: clarified 'reset settings' wording (@SamLonneman) (#6717) (06f6d0ab5)
- leaderboard: daily mode/language buttons based on backend configuration (@fehmer) (#6713) (a4de8dfda)
- quotes: 15 polish movie quotes for polish language (@sobczaktm) (#6727) (0b8ee9c8e)
- quotes: Add 4 english quotes from Better Call Saul (@Soufi-ane) (#6720) (0c5cb1b94)
- commandline: validate input for polyglot and layoutfluid (@fehmer) (#6709) (83cc7590f)
- commandline: allow validation for text inputs (@fehmer) (#6692) (b9cff9e50)
- add perfection badge (178033c2e)
- layout: adjust the Romak layout according to the latest changes (@rafaelromao) (#6708) (f13094777)
- ligatures: always enable in Zen and Custom modes for always correct script rendering (@byseif21) (#6694) (06ca8c238)
- account: add url params / deep links to account settings (@fehmer) (#6660) (de447c2ca)
- test-screenshot: Show download screenshot button when holding shift on result page (@raaid3) (#6673) (3724389a8)
- quotes: add quotes in various languages (@Papweer, @AntikoreDev, @RKPYI) (#6662, #6676, #6680) (bd35c46d1, 14d5a728d, b9bb113de)
Fixes
- leaderboard: fix accuracy table header missing on small screens (@fehmer) (#6739) (8d5d27d31)
- leaderboards: content overflow on smaller screens (@byseif21, @Miodec) (#6733) (3f678932f)
- docker: use frontend url for firebase admin (@fehmer) (#6730) (5aec2c9a1)
- profile: remove previous error message on page load (@fehmer) (#6731) (c6dcfa1cb)
- caret: incorrect vertical position if word wrapped to the next line (02fcad4a8)
- zen: remove input length check to prevent jump to hidden line (@byseif21, @nadalaba) (#6714) (2908331bf)
- wordsInput: prevent automatic scrolling when focusing #wordsInput (@nadalaba) (#6724) (ee02bee5d)
- settings: fix highlight not visible with reduced-motion (@fehmer) (#6719) (477dc4867)
- test: line not jumping when word overflows to the next line (9a6fe31a6)
- account settings: ape keys table not displaying correctly (ed47e2ff9)
- leaderboard: use minTimeTyping from configuration (@fehmer) (#6710) (8be3a3cc9)
- settings: remove highlight if not set (@fehmer) (#6711) (0c1e1f2bd)
- test: funbox does not remember settings (@fehmer) (#6701) (07a04d1e5)
- pin implementation (@fehmer) (#6699) (6b1bbfb43)
- indicate typos: input sometimes being blocked in the middle of a word (8d15d6b18)
- funbox: remove difficulty xp bonus from instant messaging funbox (ee6a9293c)
- caret: misalignment issue when switching between carets (@byseif21) (#6642) (ce737e35b)
- theme-picker: ensure color input is updated correctly in updateColors function (@raaid3) (#6678) (313519747)
- input-controller: update keymap UI on backspace in layout emulator (@47th) (#6675) (0f4d311c7)
- docker: Allow to self-host without firebase config (@fehmer) (#6685) (afbff1bcf)
- commandline: prevent duplicate entries in Polyglot and Layoutfluid funbox modes (@byseif21) (#6684) (64322a2ed)
- quotes: replace long dash with short one in some quotes (@WormholeDragon) (#6686) (4fffc645f)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
v25.27.0
Thank you to all the contributors who made this release possible!
Features
Improvements
- results: allow PBs with stop on letter if accuracy is 100% (@byseif21) (#6611) (e4a102ac6)
- nav: avoid duplicate browser history entries when re-clicking same nav button (@byseif21) (#6624) (7be7fbe8f)
- lazy mode: support replacing 2 characters with one (ced4b6e16)
- tape mode: support RTL languages (@nadalaba) (#5748) (5ca47e116)
- quotes: ad 60 Chinese Simplified Quotes (@derekyuan1000) (#6620) (e8cbe3ba1)
- quotes: Add English quotes from Andor S1 (@j5155) (#6585) (bf4f1e08a)
- account: add restarts per test and highest wpm to activity graph (8843c50d7)
- add words to Odin, remove non-existing complex_* (@dayllenger) (#6607) (502f1c52b)
- add quick theme favorite indicator to the commandline & footer (@byseif21, @Miodec) (#6460) (0bf76e899)
- quotes: add quotes in various languages (@AlexiusOL, @WormholeDragon) (#6643, #6632) (b0e7e2eaa, 896c0651e)
Fixes
- theme-constroller: fix theme flashing behavior when switching custom themes in apply() (@raaid3) (#6670) (fdead53ba)
- cursor disappearing when hovering over buttons (83a34c64d)
- inbox: size indicator not updating on item deletion (@byseif21) (#6649) (836345c57)
- xp-bar: don't show attribute if it's 0 (@jackrosenberg) (#6664) (cfff7120e)
- focus mode: remove cursor when in hovering over links and buttons (@jaydent, @Miodec) (#6651) (a327882b8)
- word generation: test sometimes stopping in a repeated practice words test (0bc380f8e)
- caret: prevent misalignment on initial load and resize (@byseif21, @nadalaba) (#6641) (10aa8941e)
- wordsInput: clamp #wordsInput from the left to #wordsWrapper (@nadalaba) (#6637) (217981ee3)
- input-controller: prevent default behavior for Arrow keys and ctrl+a in #wordsInput (@raaid3) (#6635) (c851b00b0)
- language: Common Lisp Function Typo (@hikettei) (#6653) (fe71e0b5c)
- commandline: skip input recall on up arrow when it's opened with specific list (@byseif21) (#6627) (61766d3a8)
- theme: wrong theme application during preview (@byseif21) (#6617) (9cd312ddf)
- account: fix not all results shown if result has a funbox unknown to stored filter (@fehmer) (#6608) (79cc33085)
- docker: fix deeplinks and update documentation (@fehmer) (#6640) (85543ffa1)
- quotes: gladiator quote (@acdpsn) (#6626) (ebfa8bea6)
- commandline: prevent unwanted scrolling on initial mouse entry (@byseif21) (#6615) (26a39eb7c)
- wordsInput: prevent #wordsInput from overflowing the #wordsWrapper (@nadalaba) (#6610) (238a2c72e)
- settings page: ui not updating on favorite themes change via commandline (@byseif21) (#6567) (0600b25cd)
- commandline: improve caching to fix stale checkmark and UI state (@byseif21, @fehmer) (#6586) (2d878b870)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- style: align ad content to the center (af86a2d73)
- refactor: add url parameter handling to Page class (@fehmer) (#6668) (36dcfe2f7)
- refactor(caret): move active word element offset to test-state and remove .smoothScroller (@nadalaba) (#6541) (33a6bc09e)
- perf: fix account page getting slower with every load (@Miodec) (#6606) (4bb431b98)
- chore(language): remove word from english_450k (@fehmer) (#6672) (677c328be)
- chore: add insane badge (dabaa1434)
- chore(release script): remove validate-json step if only running in the backend (9891dac32)
- chore: update plugins overrides (63b63ffa9)
- chore: bump oxlint version (4c05dd832)
- chore: catch firebase internal errors when trying to auth (2d008461e)
- chore: remove non word (9d28a42c7)
- chore: fix typo in issue template (@byseif21) (#6613) (ec6e76b12)
- chore: bump oxlint ver...