Thank you to all the contributors who made this release possible!
Features
- layout: add the romak layout (@rafaelromao) (#5741) (ff8464eef)
Improvements
- commandline: preview error sound on hover (@Bretis2019) (#5769) (38a852980)
- update filipino word list (@Killer8Hyper) (#5768) (2ae398cda)
- deep copy constant objects when retrieving them (692d3f592)
- update filipino word list (@Killer8Hyper) (#5761) (6d000aec6)
- notify user that captcha api failed to respond instead of throwing a server error (316bbd33a)
- quote: add quotes in various languages (@neinja007) (#5767) (d5b243cf5)
Fixes
- language: add one thousandth word to english 1k (@avick-saha) (#5757) (474ef2e53)
- save custom text modal: save button not being enabled (@brenob6) (#5759) (d7a40c8d5)
- server: incorrect apekeys permission check (77c9cc423)
- caret: not working in zen mode (002ef8f6b)
- documentation link in settings (@fehmer) (#5755) (a9caf2442)
- don't send authentication if user is not authenticated (#@fehmer (5747 (0d7e3cf91)
- caret: jumping in word tape mode and RTL position issues (@NadAlaba) (#5726) (657d305ab)
- quote: update or remove quotes reported by users (e1a2020b0)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr(ls with schema): verify schema after migration (13457cf6c)
- impr(server): log unknown validation errors (@fehmer) (#5777) (6458b248d)
- impr: add req.method to dev slowdown log (19cef8b4a)
- impr: add local storage with schema class to improve type safety (@Miodec) (#5763) (55e183e7b)
- impr: use tsrest for leaderboard endpoints (@fehmer) (#5717) (c6e8f413f)
- impr: use tsrest for public endpoints (@fehmer) (#5716) (c50535cd0)
- impr: use authentication state instead of the dom (6c9148624)
- impr: export cf purge script (c2d08096e)
- impr: use tsrest for psa endpoints (@fehmer) (#5712) (f6ec00650)
- impr: use tsrest for admin endpoint (@fehmer) (#5713) (460f803bc)
- fix: default result filters not passing schema (38aa79a35)
- fix(dev): mark dev tasks as persistent (12cd29c12)
- fix: remove tailing slashes from new endpoint urls (@fehmer) (#5745) (2d24fc323)
- fix: sh scripts sometimes not finding .env file (d57e318cf)
- fix: incorrect paths (cdfcc9e66)
- fix(ci): errors when running on push (749f2af10)
- style: only apply error underline when moving to the next word (24e94479d)
- style: sliiiightly increase the horizontal word margin (142b51cc2)
- style(settings page): fix pace caret buttons text overflow (41638dd14)
- refactor: use single client for whole contract on frontend (@fehmer) (#5752) (cfea8eef1)
- refactor: implement recordClientVersion as middleware (@fehmer) (#5750) (02505750a)
- refactor: getLocalPb returns pb object instead of just wpm (f32846de3)
- refactor: move psa check to after auth was initialised (90e3ad495)
- refactor: move release code to a package (@Miodec) (#5743) (1eebf748b)
- refactor: change hideExtraLetters from being html based to css based (a558a59a5)
- ci: fix backend vitest.config (@fehmer) (#5780) (6fdfb5849)
- ci: skip semantic pr title for dependabot (@fehmer) (#5776) (f92c1023b)
- ci: fix prettier failing on removed files (@fehmer) (#5742) (b484d1545)
- ci: skip full checkout on pre-ci on pull requests (@fehmer) (#5738) (6c18504c8)
- ci: skip cache download on prime-cache job (@fehmer) (#5737) (ffacc0a5f)
- chore(deps-dev): bump @types/string-similarity from 4.0.0 to 4.0.2 (#5772) (704679931)
- chore(deps): bump axios from 1.6.4 to 1.7.4 in /frontend (@dependabot) (#5779) (5694dacbd)
- chore: set dependabot to use pnpm (4ccbdb16f)
- chore(deps-dev): bump turbo from 2.0.9 to 2.0.12 (#5775) (37706da29)
- chore(deps-dev): bump madge from 6.1.0 to 8.0.0 (@dependabot) (#5774) (68efbcec2)
- chore(deps): bump nodemailer and @types/nodemailer (@dependabot) (#5773) (52e17d3b5)
- chore(deps-dev): bump firebase-tools from 13.13.3 to 13.15.1 (@dependabot) (#5771) (92e270ae9)
- chore: add icloud typos (a46872847)
- chore: update vitest to 2.0.5 (@fehmer) (#5770) (1c9dbccfa)
- chore: allow expressions in explicit-function-return-type rule (ed47fb73a)
- chore: fix test coverage not working with vitest workspaces (@fehmer) (#5764) (092d513f0)
- chore: add test case for apekey permission bug (@fehmer) (#5762) (ef8dfe227)
- chore: add vitest workspace configuration file (61c913403)
- chore: fix eslint in dev script (4995f042a)
- chore: add more recommended extensions (3eca42218)
- chore: rebuild all files instead of just what changed (295e47638)
- chore: replace all eslint warnings with errors (8e343bc39)
- chore: remove some unnecessary root dependencies, move to correct packages (@Miodec) (#5751) (782eea643)
- chore: move example.env to release package (d27c62294)
- chore: add ts-check script (24f9a6c07)
- chore: remove word from profanities list (690dee125)
- chore: add test for recordClientVersion (@fehmer) (#5746) (45d27b5e0)
- chore: export deploy backend script (0a0f17529)
- chore: quote lengths script (c33a08716)
- chore: add more badges to readme (@fehmer) (#5744) (f929d65a6)
- chore: run anticheat for banned accounts (27e66f7f8)
- chore(deps-dev): bump typescript from 5.3.3 to 5.5.4 (@dependabot) (#5734) (dfdf3fc6c)
- chore: fix tests using machine timezone (@fehmer) (#5740) (9f9663682)
- chore(deps): bump nodemon from 3.0.1 to 3.1.4 (@dependabot) (#5733) (c413cbd36)
- chore(deps): bump uuid and @types/uuid (@dependabot) (#5735) (35379383a)
- chore(deps-dev): bump autoprefixer from 10.4.14 to 10.4.20 (@dependabot) (#5732) (613687cbf)
- chore(deps-dev): bump rimraf from 5.0.9 to 6.0.1 (@dependabot) (#5731) (aac2ef131)
- chore: add search ignore paths (6ad433094)
- release package: incorrect path (8c6be2cca)