Big release today again because im lazy and haven't made one of these in a while. Oops.
Thank you to all the contributors who made this release possible!
Features
- Add 1,000 Irish word list (@aindriu80) (#7535) (c9e6f71ce)
- layout: add miligram layout (@kazeno-uta) (#7523) (9cd127516)
- layout: add vitrimak layout (@aoieop) (#7488) (8056eb5ee)
- add practice typing mode (no stats, xp, or pb) (@Vishal27alpha) (#7482) (b58b48adb)
- add Chinese Traditional 1k, 5k, 10k, and 50k word lists (@nota-noob) (#7479) (e23836f36)
- layout: add statica_3x5 layout, vestnik layout (@ShyPsy) (#7460) (5e78c9e43)
- layout: add Gralmak layout (@DreymaR) (#7457) (332d119f8)
- font: add Adwaita Mono (@poli0iq) (#7389) (c13d59f91)
- layout: add azerty_AFNOR layout (@JacquesHumule) (#7376) (7c66fd7ad)
Improvements
- use data-nav-item to address navigation items (@fehmer) (#7558) (17fc4be02)
- use tailwind for Button component (@fehmer) (#7536) (5c32e2b7f)
- languages: expand kinyarwanda word list (@cedrick13bienvenue) (#7529) (ff3b58bf6)
- sound: all sounds normalized to -10dB (@razorree) (#7515) (2eda3e113)
- remove connection guards (@fehmer) (#7508) (763b6002d)
- add details to speed histogram (@fehmer) (#7503) (a6c1e6b5d)
- enable dots typed effect for ligature languages (@byseif21) (#7458) (658390a2a)
- quote-search: use rtl direction when showing rtl text in quote search modal (@Leonabcd123) (#7431) (4d0b4cce4)
- add infinite scroll to version hisory (@fehmer) (#7490) (4052e21f3)
- quotes: add quotes in various languages (@Leonabcd123, @K87lk, @norwd, @damarpas, @lindseyp555, @HmonWutt, @szpeterr) (#7534, #7533, #7531, #7514, #7435, #7427, #7378) (a0551e99e, 29b2a0928, 3bda4e560, fb700f55d, 5b05b28af, 12d057544, 0f09ae33b)
Fixes
- profile: show additional user badges in one line (@fehmer) (#7568) (b05563d29)
- ui: disable UI interaction during loading state (@openvaibhav) (#7589) (ea18f496b)
- bad typecast converting null to object (8d5db5e1a)
- use has-focus-visible for account menu and remove redundant pointer-events (aca98384d)
- streamline variant handling in Button component (b6900b981)
- permissions to post comments (1f5255c3f)
- xp bar background (410e41aa9)
- error-messages: remove trailing periods (@fehmer, @Leonabcd123) (#7545) (576bb29ab)
- test: prioritize "too short" over AFK detection for very short tests (@openvaibhav) (#7519) (3fe1fdfc3)
- settings: quick nav fails to open hide elements & danger zone (@byseif21) (#7513) (751b715e5)
- theme: name still visible after test start in some themes (@Leonabcd123) (#7511) (0f3bc7a43)
- account: filter buttons not working (@fehmer) (#7505) (427e9de6c)
- presets: spaces not being replaced when editing preset with underscores in its name (@Leonabcd123) (#7501) (39d522abb)
- test-config: some layout and state issues (@byseif21) (#7500) (a5af40c47)
- merch banner image not visible on profile page (@fehmer) (#7487) (cb2d899cf)
- spanish_10k: correct spelling mistake in spanish_10k.json (@eswaldots) (#7489) (944f9c74a)
- caps-warning: caps state isn't always correct (@Leonabcd123, @fehmer) (#7478) (ba4d4e9f9)
- blind-mode: blind mode not working in 9009 theme (@fehmer) (#7474) (6e59ca30e)
- validation-indicator: punctuation when there are multiple errors (@Leonabcd123) (#7424) (6eceeb4cb)
- quotes: fixed some grammatical errors in spanish quotes (@GabiRP) (#7385) (26adcb3a9)
- streak-hour-offset: streak hour offset display isn't correct for some negative values (@Leonabcd123) (#7383) (041b15c57)
- edit-preset: error message when failing to add preset (@Leonabcd123) (#7375) (772210494)
- mistakes sometimes remaining after alt/opt + backspace (629c82e11)
- settings: update selects on config change (@fehmer) (#7476) (ac18f0f39)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- feat: add AnimeConditional, AnimeShow, AnimeSwitch, and AnimeMatch (d41ef5b0d)
- feat: implement createSignalWithSetters for enhanced signal management (9fcfb9505)
- feat: implement createEvent hook for reactive event handling (5f2bb9418)
- feat: anime solid component (@Miodec) (#7546) (baa268df9)
- fix: badge styling, avatar styling (cfc68acc0)
- fix: useLocalStorage not removing event listener (3230ee684)
- style: lower opacity for accuracy in PbTable component (36a9175f7)
- docs: update formatter info to oxc (@vinayaksodar) (#7492) (abf708f6c)
- docs: update programming languages order (@Leonabcd123) (#7542) (d94d1807b)
- refactor: solid alerts (@Miodec, @fehmer) (#7567) (04f759a63)
- refactor: solid leaderboards (@fehmer, @Miodec) (#7485) (c786538a5)
- refactor: solid notifications (@Miodec) (#7576) (91327e399)
- refactor: convert register captcha modal to solid (11fb8e5e9)
- refactor: dont * import (939b9f9e2)
- refactor: add Balloon component (c6b2d98a8)
- refactor: solid header (@Miodec, @fehmer) (#7564) (a465cc4d2)
- refactor: enhance Conditional component to support generic types (a82276be6)
- refactor: solid dev options modal (@Miodec) (#7561) (3eede8853)
- refactor: solid profile (@fehmer, @Miodec) (#7528) (35b4125cc)
- refactor: convert to hide and show (@Leonabcd123) (#7524) (0bf2ba319)
- refactor: auth unwrap (@Miodec) (#7553) (2fd6a6608)
- refactor(funbox): wikipedia getTLD cleanup (@Eric-Zhang-Developer) (#7401) (386101c0d)
- refactor(timer-progress): extract logic into helper functions in timer-progress (@Leonabcd123) (#7364) (bb4e4a8f2)
- refactor: use tanstack/query for serverConfiguration (@fehmer) (#7495) (799cbd54d)
- refactor: remove config from snapshot (@fehmer) (#7498) (6fbe7fba2)
- ci: less restrictive node version for dependabot (@fehmer) (#7419) (8b29ab6dd)
- chore: add frontend storybook (@Miodec) (#7591) (ef010c4f8)
- chore: also run test file if it exists (4f75e34b1)
- chore: update claude.md and edit hook (65dabdd08)
- chore: add claude commit skill (8edafe2ec)
- chore: add claude review skill (4a0deadd4)
- chore: fix throw on signout (c59520945)
- chore: add useRef hook (e1f74eaee)
- chore: change balloon position depending on width (25bebd13d)
- chore: add format-and-lint hook for code formatting and linting (8422457b7)
- chore: update claude.md (5af61151a)
- chore: update claude.md (adf1879b2)
- chore: update claude.md (7831d20ea)
- chore: enhance button styling (41d40d0ca)
- chore: add claude.md (c1a5b94c0)
- chore: reenable explicit-return-type for ts files (d132bd9f0)
- chore: add callback ref to Anime component for DOM access (620d2d47c)
- chore: add workflow to check for added todos in a pr (2f8e408fe)
- chore(deps-dev): bump @tailwindcss/vite from 4.1.18 to 4.2.1 (#7550) (9d95ad5bc)
- chore: disable quote length check for now (cbe5badaa)
- chore: remove outdated test (7c7a40cf7)
- chore(deps-dev): bump @eslint/json from 0.14.0 to 1.0.1 (#7549) (ab2941801)
- chore(deps): bump @leonabcd123/modern-caps-lock from 2.0.3 to 2.1.0 (#7548) (e6da5b1e4)
- chore(deps-dev): bump tsx from 4.16.2 to 4.21.0 (#7547) (2d5aa8030)
- chore(deps): bump rollup from 2.79.2 to 2.80.0 (#7544) (b8293fb0b)
- chore: do some todos (@Leonabcd123) (#7502) (17674eb15)
- chore: typo in parameter name (@Leonabcd123) (#7499) (baad1b877)
- chore: add no mixed nullish coalescing rule (970a1b175)
- chore: remove test code (6e3cc1f7f)
- chore: add lint rules for component structure and naming conventions (e79545d7c)
- chore: change custom lint from fixer to suggestion (0217730e9)
- chore: add custom lint rule to enforce arrow functions in components (e69d94316)
- chore: add SlimSelect component (@Miodec, @fehmer) (#7538) (8198903a2)
- chore: remove word (9b38d647e)
- chore: resolve selector warnings (@byseif21) (#7437) (483fc5080)
- chore(quotes-text): normalize the last character in quotes (@Leonabcd123) (#7430) (61a041607)
- chore: update turbo to 2.7.5 (@fehmer) (#7422) (bf6dc32a4)
- chore: update redocly-cli to 2.15.1 (@fehmer) (#7420) (57e6a2e3b)
- chore: update pnpm to 10.28.1 (@fehmer) (#7421) (0c1f9f10d)
- chore: move tab-specific refresh to updateTabs (@byseif21) (#7414) (d08ea0ef7)
- chore: caniuse db update (c6c2795d1)
- chore: add test for ValidatedInput (@fehmer) (#7543) (eaf129e58)
- chore: add localStorage backed store (@fehmer) (#7540) (3e700e35f)
- chore: add ValidatedInput component (@fehmer) (#7541) (fe24e91e9)
- chore: disable tailwind class sorting on save (8ad931506)
- chore: add signal for authentication state / user id (@fehmer) (#7539) (bc41e4fa5)
- chore: upgrade oxc and enable a bunch of new rules (@Miodec) (#7517) (837a09d5c)
- chore: TS6 (@Miodec) (#7516) (d257737d4)
- chore: support multiple queries, custom loader and ignoreErrors on AsyncContent (@fehmer) (#7496) (bcf1424b2)
- chore(components): add LoadingCycle, DiscordAvatar and User, improve Button (@fehmer) (#7463) (70754bc9c)
- chore: apply format to all source files (@fehmer) (#7471) (2b21667a1)