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 (ac05fd997)
- refactor: loading page rework (@Miodec) (#6885) (ac4a15135)
- refactor: rework change page function (1402b3add)
- refactor: add auth event to reduce number of dependencies in account controller (@Miodec) (#6865) (6bd5240e1)
- refactor: replace deepClone with structuredClone (@fehmer) (#6882) (91f64d211)
- refactor(login): use inputValidation on login page (@fehmer) (#6866) (33e3acc70)
- refactor: rewrite sanitize to support nested objects (@fehmer) (#6875) (8fe0e6504)
- refactor: reduce indentation, update oxlint rule (e74ed0e4c)
- ci(assets): use zod in json-validation (@fehmer) (#6902) (456025711)
- ci(assets): Refactor json-validator (@fehmer) (#6901) (5937f4924)
- ci: convert json-validation to typescript (@fehmer) (#6899) (d2c627fcc)
- test: don't use globals for vitest (@fehmer) (#6871) (119649bc9)
- test: support to run/watch all tests in vscode (@fehmer) (#6868) (3447907d0)
- test: remove duplicate config tests (@fehmer) (#6861) (74f2d060f)
- test: make sure sanitize throws a readable error (3b17e9e99)
- chore: add joshu badge (a00546710)
- chore(linting): enable restrict-plus-operands (b9feaf538)
- chore: move rule to the list of unused rules (10557c9db)
- chore: bump eslint typescript plugin (@Miodec) (#6915) (e4c0c2815)
- chore: remove duplicate (cb68421d7)
- chore(oxlint): enable alwys-return with ignoreLastCallback (3496768ee)
- chore: bump oxlint version (b54052913)
- chore(about page): fix punctuation (@Leonabcd123) (#6911) (c30453e2d)
- chore: remove opacity (55bbedbcc)
- chore: update grid and ticks colors for all charts for consistency (d4b3d1489)
- chore: make failed blend hot pink to make it more obvious something went wrong (1da6fbd35)
- chore: implement manual chunks, make sentry a dynamic import (4aeadb9a8)
- chore: update browserslist (71821e31a)
- chore: update full-check script (a5d0a3e96)
- chore: remove gulp dependency (@NadAlaba) (#6889) (a1293e79a)
- chore: log high wpm results (2a6bfbeef)
- chore: bump oxlint version (057fdf3fe)
- chore: stronger easing method type, add default easing method (2b4c3d2ef)
- chore: return if element is null to avoid errors (3e1c8f2f5)
- chore: bump turbo version (ab4e1e8ce)
- chore: remove test code, disable debounce on login (a070911fd)
- chore: update redocly to 2.0.5 (@fehmer) (#6874) (7a91b4e08)
- chore: upgrade oxlint (5183caf91)
- chore: update hooks (a387d8269)
- chore(account): add note about activity using utc time (436fafcc6)