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) (344e467f8)
- testActivity: timezone edge case causing tests to appear on incorrect day (@fehmer) (#6968) (8810b1c51)
- fonts: add Vazirmatn src to css font-face (@nadalaba) (#6971) (5fb5890c5)
- language: fix typo (10130d734)
- navigation: level up animation showing wrong level (@Miodec) (#6946) (e529f1e17)
- theme-controller: flashing issue when switching between custom & preset (@byseif21) (#6943) (634f7911a)
- input: issues with typing accented characters in certain linux distros (01d09cef0)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr(input): extract visual equivalence check to a util function (c95b6bd36)
- impr(modes-notice): escape custom text name for safe HTML rendering (42f6a16c6)
- impr(input-validation): add trigger validation function (9e5e4831a)
- impr: add debounced animation frame util (02e92d0f3)
- fix: config glob pattern, string replace (7f8e20572)
- fix: typo (0b67868d5)
- fix(workspace): frontend debugging not working (31a7a2de0)
- style(quotes): standardise number of tabs for rust quotes (@nyxmeowmeow) (#7001) (79f557f5d)
- docs: update link to redis install guide (@fehmer) (#6984) (37418d0cf)
- docs: fixed links on contributing.md not working from the main page (@Leonabcd123) (#6982) (a277bdd0d)
- docs: fix email link in security.md (@fehmer) (#6974) (81e2f93a9)
- docs: fix typos (@Leonabcd123) (#6945) (afbf6872b)
- refactor: rework html/css of custom theme edit section (9aa30a2a4)
- refactor: caret rewrite (@Miodec) (#6955) (9ae232925)
- refactor(input validation): rework getting current validation status (@Miodec) (#6988) (de847fc31)
- refactor: use new util function (1bf03e8dc)
- refactor: move resultVisible state to TestState (1479a2692)
- refactor: move testRestarting state to TestState (2fc2c7bbe)
- refactor: test word centering behavior, words input position update (@miodc) (#6962) (16ad0e285)
- refactor: page loadingOptions rework (@Miodec, @fehmer) (#6949) (d1e118a01)
- refactor: remove removedUIWordCount, add wordIndex to word dom elements (@Miodec) (#6932) (6c10c1372)
- perf: speed up escapeHTML by ~3x (5da071320)
- perf(quote search): optimize highlighting search matches (@nadalaba) (#6944) (05c1b9e53)
- perf: speed up focus.set by ~22x (bfebb36b9)
- ci: improve error messages for check-assets (@fehmer) (#6994) (d6439f045)
- ci: run asset validation on any changes not just json files (@fehmer) (#6992) (b6ef5c0d8)
- test: add unit tests for escapeHTML (0d7d68f8b)
- test: fix presets test using fixed uids (@fehmer) (#6947) (f9a946353)
- build(docker): fix firebase config update (@fehmer) (#7034) (46fa005fe)
- build: fix scope of dependency @monkeytype/schemas (@fehmer) (#7033) (4268572be)
- build(deps-dev): bump happy-dom from 20.0.0 to 20.0.2 in /frontend (#7022) (c17abc9dc)
- build(deps-dev): bump happy-dom from 15.10.2 to 20.0.0 in /frontend (#7018) (865631db1)
- build(deps): bump nodemailer from 6.9.14 to 7.0.7 in /backend (#7011) (4e5ba24a3)
- build(deps-dev): bump vite from 6.3.4 to 6.3.6 in /frontend (#6948) (b25bcb13e)
- chore: upgrade to vite 7 (@Miodec) (#7051) (7e6a73aac)
- chore: update nodejs to 24.10.0 (@fehmer) (#7035) (cd8ebd143)
- chore: update version of supertest (@fehmer) (#6839) (85671a32b)
- chore: remove search link not working in issue template (@fehmer) (#6993) (42dcf16ad)
- chore: add search links to bug report template (@fehmer) (#6990) (b903abd86)
- chore(about): escape supporters and contributors (505049338)
- chore: add reminder (94006b7e1)
- chore: change oxlint config to jsonc (a33b46451)
- chore: bump oxlint (1fa473744)
- chore: update debug function (1512e46df)
- chore: remove dead leaderboards code (29fb54797)
- chore: fix snapshotresult type (ec14538c3)
- chore: add debug module to analyse function execution time (29e770039)