Releases: monkeytypegame/monkeytype
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...
v25.22.0
Thank you to all the contributors who made this release possible!
Features
- profile: add Open Graph meta tags for social sharing (@TryOmar) (#6598) (07c581f5b)
- layout: add Tarmak layouts (@siily-g) (#6574) (182694888)
- language: add viossa (@Nginearing) (#6571) (e28aa9728)
- commandline: add download screenshot command (@torturado) (#6532) (44a67db9f)
- font: add Kanit and Sarabun (@JNX03) (#6500) (98ca81198)
- language: add Thai 1K, 5K, 10K, 50K, and 60K (@JNX03) (#6498) (69d9b3814)
Improvements
- account graph: round accuracy to nearest multiple of 5 instead of 10 for those accuracy freaks (485eb222d)
- config: handle invalid config values (@fehmer) (#6555) (bfb06a22e)
- settings: prevent customLayoutFluid and customPolyglot to be empty (@fehmer) (#6548) (48ed096ac)
- profile: validate inputs for twitter, github and website (@fehmer) (#6544) (f1f4d1793)
- add function to clearstreakhouroffset !nuf (8370de1fa)
- quotes: 50 new quotes for polish language from books (@sobczaktm) (#6496) (7bcad31d0)
- quotes: add quotes in various languages (@jay-tau, @siily-g, @w0ikid) (#6515, #6522, #6512) (e42e90b87, 6e4dd9ddb, c29bc5704)
Fixes
- compatability check header shown if client is using cached responses (@fehmer) (#6602) (d6ae7cf7c)
- sanitize result filters before storing in LS (@fehmer) (#6583) (1cada77ea)
- theme: dark note and reduced-motion not replacing letters with circles (@fehmer) (#6589) (4fe11acee)
- language: update Ukrainian Latin to national standard (@paiv) (#6584) (ea144996f)
- language: incorrect and non-standard words in kazakh_1K wordlist (@byseif21) (#6570) (16eda17eb)
- commandline: cannot use mouse to select first element (@fehmer) (#6563) (d3fa7c9be)
- smooth transition for theme palette icon in chaos_theory theme (@byseif21) (#6560) (b34c17911)
- wordsInput: adjust #wordsInput position to be on the active word for chinese (@NadAlaba) (#6545) (3aaf2f65d)
- remove some misspellings in english_450k (@byseif21) (#6546) (b402c3a1a)
- typo in malagasy (98f2b9cec)
- burst heatmap not being useful in words 10 mode (00525a087)
- settings: handle boolean values for indicateTypos (@fehmer) (#6554) (71fc96d6b)
- slow commandline when searching (ed24f7f45)
- settings: fix error when setting keymap layout (@fehmer) (#6537) (b4dcb2cad)
- theme-picker: don't use .toSorted (@fehmer) (#6531) (a8bec90cd)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr(commandline): improve performance (@fehmer) (#6559) (98f127339)
- docs: update PR template (@fehmer) (#6600) (19930a907)
- docs: update pull request template (@fehmer) (#6538) (be62681c3)
- refactor: cleanup schema and types for CustomText (@fehmer) (#6605) (47de0c8a4)
- refactor: dont allow nullable numbers (@Miodec) (#6564) (ea90e0a99)
- refactor: move languages to contracts (@fehmer) (#6497) (eb092cea1)
- perf: use cache in local-storage-with-schema (@fehmer) (#6596) (3b0cf16fa)
- perf(test): optimize test-timer checkIfTimeIsUp (@fehmer) (#6588) (a9fb72de7)
- chore: correct text in difficulty settings descriptions (@byseif21) (#6590) (b26e1d2db)
- chore: remove log (@fehmer) (#6601) (093a17b15)
- chore: remove anniversary elements (8f6e961b2)
- chore: disable rule (fc2d85a9e)
- chore: ls with schema debug logs (53bf826f0)
- chore: merch banner, anniversary (cde852cf2)
- chore: update privacy policy to mention sentry (@Miodec) (#6558) ([90b3d73](https://github.co...
v25.19.0
Thank you to all the contributors who made this release possible!
Improvements
- show loading bar when fetching language/quotes to indicate background activity (17c8f6d5d)
- settings: settings group performance (@fehmer, @Miodec) (#6509) (2506b4f88)
Fixes
- stop broken background images from displaying (@mattlau1) (#6526) (024e86e84)
- catch errors when google sign up failed (ac33789bd)
- errors during word generation when custom text was empty (b80617913)
- unhandled exception when cancelling google sign in (16f3da057)
- failed to fetch commandline when a version/hotfix is deployed (@fehmer) (#6507) (be2d83044)
- unable to link discord if user has no avatar (255c4b944)
- key elements being too close to surrounding text (ee378f35f)
- arabic egypt: remove offensive word (53ca12fbb)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr: add fallback and migrate to parsejsonwithschema (@Miodec) (#6518) (b257a52f4)
- impr: parse response from discord api with zod (c666d13c9)
- fix: compatibility banner blocked by ublock (@fehmer) (#6502) (72016eaab)
- fix(quote search): uncaught errors when closing modal right after search input (d02f41e2b)
- fix: client version potentially being different during build (4cca5809a)
- fix: very slow generation of tests in large languages (@fehmer, @Miodec) (#6506) (c2f6ec846)
- fix: remove double error message on failed release notes fetch (fee0b74ca)
- style: fix too big of a gap between tab buttons and theme buttons (d4d621e5a)
- refactor: move themes list to typescript (@fehmer) (#6489) (5ab7bfb43)
- refactor: rework theme picker button and tab approach (5ba39c633)
- refactor: handle cases when grecaptcha failed to load (fc2b05171)
- refactor: remove pointless rethrows causing loss of original error (141a84caa)
- refactor: add hotfix mode to release package (c8e964d0f)
- ci: fix missing dependencies when running pr-check-other-json (@fehmer) (#6529) (499754a93)
- ci: run layouts tests on pr-check-other-json (@fehmer) (#6520) (ca3389274)
- build(deps-dev): bump vite from 6.3.0 to 6.3.4 in /frontend (#6510) (79aa3a569)
- chore: block typing when test is not initialised correctly, show message (dc6d4518a)
- chore: stop update if element was not found (c7ac9ad6f)
- chore: dont set page transition when restartin the test (8ec109db8)
- chore: only save 50% of the error replays (2b292b042)
- chore: use vanilla js to try to fix weird stack size error (2c161e5ca)
- chore: optional chaining to avoid throwing errors (57ccfbb98)
- chore: add basic log when initializing test (3953d645b)
- chore: check if caches exists (949b61801)
- chore: try to use auto commit detection again (07f2d8667)
- chore: remove duplicated onerror listener (fb529ae53)
- chore: drop third party frames (2a95c2b6f)
- chore: always init sentry, dont send in dev mode, add debug logs to sentry (e5d8bd332)
- chore: remove duplicate console.error on rejection (33a90228f)
- chore: remove error logging to analytics (a99408a92)
- chore: remove console.error from notifications (76859670b)
- chore: fix repo name (0f211b2fb)
- chore: missing repo field (f4b9066bb)
- chore: set commits on sentry release also lower trace sample rate (827637c23)
- chore: dont sample random sessions without errors (c51acf39d)
- chore: temporairly try a different filtering behavior (9287e880d)
- chore: add a function to manually capture exceptions and send to sentry (055b7f0a8)
- chore: only add sentry plugin when building from release package (faffc78ab)
- chore: catch failed fetch requests to instatus api (bdaa3b16f)
- chore: dont use turbo cache in release script (5d4f44900)
- chore: register service worker manually, also catch errors (c6620aba7)
- chore: unmask notifications in sentry (c2f20290d)
- chore: remove analytics logging (bbd5cf2ba)
- chore: missing optional chain (93bcd3ca9)
- chore: ignore third party errors in sentry ([2fc4d42](https://g...
v25.18.0
Thank you to all the contributors who made this release possible!
Features
- funbox: add ASL (@fehmer) (#6485) (ac1d6f084)
- layout: add OPY (@robi-wan) (#6453) (d651f2825)
- theme: add sunset theme (@catdogdonkey) (#6467) (ff10baca5)
Improvements
- use rainbow effect on rgb badges for reduced-motion (@fehmer) (#6466) (c5d0f985e)
- funbox: notify user if polyglot languages are not valid (0bd49db8e)
Fixes
- keymap: dynamic legends not working correctly (d863e8d70)
- compatibility check for funboxes when switching test modes (@fehmer) (#6471) (74d54ac06)
- settings: fix dropdown not rendered correctly (@fehmer) (#6468) (e0d1ee4cf)
- fix content-type check in fetchJson (@fehmer) (#6465) (4d570d32b)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr: add type safety to the config event observable (2835a02bb)
- docs: order oxlint badge correctly (@fehmer) (#6470) (a9c2f52dd)
- refactor: make customLayoutfluid an array (@fehmer) (#6494) (c253d2fd1)
- refactor: make funbox settings an array (@fehmer) (#6487) (212b8d38c)
- refactor: move layout names to contracts (@fehmer) (#6495) (b36bc9f39)
- refactor: add trycatch util (@Miodec) (#6492) (e06f7f41c)
- refactor: protect against null, remove nullish coalescing (a59f99a53)
- refactor(backend): improve redis and json.parse type safety with zod (@byseif21, @Miodec) (#6481) (86383cf9e)
- refactor: remove unnecessary json parse (d3f3a834e)
- refactor: improve funbox-validation, add tests (@fehmer) (#6478) (0c4352ee5)
- chore: swap monkeyerror for error to not expose actual error message to the frontend (ab9cef010)
- chore: remove false positive (f60dd0ac3)
- chore: upgrade oxlint (a424f9648)
- chore: move word gen error definition to utils to fix circular dependency (a910ddab4)
v25.16.1
Thank you to all the contributors who made this release possible!
Features
- funbox: add polyglot (@fehmer) (#6454) (da671337c)
- language: add xhosa_3k (@aitchz) (#6464) (a8ce609f0)
- funbox: add layout mirror (@megalodon2710) (#6463) (bf002c02e)
- theme: add Vesper theme (@SameerJS6) (#6443) (6acaeb41f)
Improvements
- settings: use dropdown for custom layoutfluid (@fehmer) (#6445) (e1c8e4a22)
- quotes: add quotes in various languages (@aitchz) (#6441) (fd75dd8ac)
Fixes
- theme: inconsistent/unreadable styling on settings page when using phantom theme (@fehmer) (#6446) (644c59cd9)
- settings: Update layoutfluid on config change (@fehmer) (#6462) (312813c1b)
- test config: punctuation and numbers disappearing when selected language doesnt have any quotes (2391bc520)
- tape mode: indicate typos: below being cut off (9a4ac3095)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr(frontend): reduce json minification logs on build (33857d400)
- impr: optimize getFirstDayOfWeek (@fehmer) (#6457) (92d97c1fe)
- impr: split keymap layouts into seperate files (@fehmer) (#6452) (4abcc8c5c)
- fix: lint issues (bf0ce6607)
- docs: add layouts (@fehmer) (#6461) (55e7de742)
- refactor: enable ban-ts-comment rule (0b05b3c2f)
- refactor: enable eqeqeq rule (158226629)
- refactor: reduce indentation by extracting code to a function (3207a2082)
- chore: bump vite and vite plugins versions (8bec7da61)
- chore: throw error when response in fetchJson() is not json (@NadAlaba) (#6459) (2d33e1da4)
- chore: add oxlint (@Miodec) (#6455) (cac8835c7)
v25.16.0
Thank you to all the contributors who made this release possible!
Features
- language: add bosnian 4k (@aitchz) (#6432) (b5720e3bd)
- layout: Adds Hands Down Promethium layout (@andre-krueger) (#6419) (d02288a24)
- layout: add alt layer support to Ergopti (@adrienm7) (#6410) (d042b748e)
Improvements
- tape mode: add multiline support for tape mode (@NadAlaba, @Miodec) (#5868) (9a0fee205)
- account page: add average accuracy and average consistency to the activity graph (2c6bc47d8)
- lazy load chartData on results (@fehmer) (#6428) (f6d9b7c3e)
- keymap: dynamic legends now show alt layer if supported by the layout (cfc810a7d)
- quotes: add quotes in various languages (@Kurbamit, @WormholeDragon, @scarcekoi, @aitchz, @ElAmogusSus, @scarcekoi) (#6440, #6437, #6429, #6427, #6426, #6422) (248de12f6, 54a45b60c, cd4d72bd4, 784e72137, 94d024a68, c57d62d69)
-
- layout: update Bepo and optimot, add bepo afnor (@GuckicheLorraine) (#6384) (6513e6481)
Fixes
- unhelpful error messages when custom background image was not a valid url (a7f4dcf9e)
- language: update spanish 1k (@CarloskHard) (#6407) (3e72c4dd1)
- quotes: correct sources and text in some English quotes (@byseif21) (#6418) (8434c1739)
- offline banner not hidden when going online (4d9871921)
- custom text: generating not enough words in some cases when using pipe delimiter (a1e0da8ed)
- language: misspelled word in malagasy (a5dc0d608)
- caret: incorrect width calculation in zen mode (d29e792e9)
- tape mode: tape jumping around when words were removed off screen (2059e88b9)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr: add promiseWithResolvers util (e436671a4)
- impr: pass lboptout to bot linking command (115b0d729)
- impr: pass lboptout to bot linking command (2c1328452)
- fix: make sure to consider activeWordElementOffset when backspacing (bda99ca91)
- fix: incorrect string when invalid config schema (8a9ff65e7)
- fix: zen mode jumping when first word has no letters (75236f1d5)
- refactor: rename property, add optional property (bc6777f94)
- refactor: updateWordsWrapperHeight (7a887dfa9)
- refactor: zen mode empty word appending (c55901efe)
- refactor: empty word appending in zen mode (f7666ab8e)
- refactor: split updateWordsHeight() and move some style changes to .scss files (@NadAlaba) (#5920) (bd22d8f70)
- refactor: convert ui element index to offset (6aeab4d3f)
- build(deps-dev): bump vite from 6.0.12 to 6.0.14 in /frontend (#6423) (454624332)
- chore: update string (d9173a5b8)
- chore(deps-dev): bump vitest's vite fom 5.2.14 to 5.4.17 (@NadAlaba) (#6415) (cb2844728)
- chore: rename function, better log (e52df8836)
- chore: minify html for production build (@fehmer) (#6413) (f7be839e7)