Little bit overdue, here's 4 weeks of changes. Thank you to all the contributors who made this release possible!
Features
- add Kinyarwanda language (@cedrick13bienvenue) (#7400) (c59f121e1)
- add setting to display typed words differently (@fehmer) (#7360) (fe4b85ee3)
Improvements
- language: update Swiss German language files (@egemasta) (#7329) (3057d9162)
- test result: recalculate min max chart values when toggling a dataset (5e70e3398)
- result: add button to quickly toggle chart scale (c1c6c7dac)
- quotes: add quotes in various languages (@m-spitfire) (#7315) (2e959e592)
Fixes
- monkey not typing in layout emulator (3d34ed599)
- screenshots not supporting css @layers (@Miodec, @fehmer) (#7453) (2bd669afa)
- account: remove badges if user has none (@fehmer) (#7467) (39c95c63b)
- progress always visible in zen mode (475388447)
- theme: incorrect button highlight color (399402156)
- bulgarian 1k: use cyryllic 'a' instead of latin (d6128ce8b)
- fa component breaking font-subset (@Miodec) (#7446) (a9ad61847)
- screenshots not supporting css @layers (@Miodec) (#7450) (2635d12f8)
- fontawesome icon visibility styles (@MirruK) (#7436) (9a76dbdb6)
- screenshot: qs warning for multiple highlightContainer (@byseif21) (#7426) (2f9cdb2d9)
- blur slider being visually blurred (@byseif21) (#7425) (8c40ca557)
- some screenshot issues (@byseif21) (#7416) (4d4ffb7b9)
- unable to load saved custom texts (190f8830c)
- result: graph scale button not working (e0bd4b026)
- favorite-quote: can't favorite a quote (@Leonabcd123) (#7423) (d84d0c549)
- quote-search: Fix qsa warning in quote search modal (@Leonabcd123) (#7418) (f0ae3b3b6)
- broken screenshots (0ca914f44)
- scroll animations not working (39245bc92)
- key tips not updating and not hiding (2f0a523c5)
- account: buttons not updating history chart (@fehmer) (#7407) (355c25e57)
- breakpoints signal should always have xxs true (@fehmer) (#7408) (f40e9f5f2)
- profile: load user without personalBests (@fehmer) (#7399) (26dd5c464)
- missing theme on standalone pages (@fehmer) (#7404) (e35182d81)
- css layers in the wrong order in prod (7ddaa4c49)
- sellout ad positioning on the about page (0599f5fd6)
- misaligned friends button (54df529c5)
- discord linking broken (d63cd5d7b)
- return 404 on missing assets (@fehmer) (#7379) (6699a8ba6)
- importing a file that doesnt exist (49c828abd)
- 404 page not working (a40d1903c)
- tags: Update tags after deletion (@Leonabcd123) (#7338) (ea3a545f7)
- single list commandline not working on initial show (a856b7659)
- incorrect path (e04d6e88f)
- correct streak offset validation to allow .5 decrements (@Chaitanya-Keyal) (#7363) (c31dd1e05)
- caret: positioning for mixed language directions in zen (@byseif21) (#7281) (e37b44799)
- show correct local reset time if streak offset has 30minute offset (@fehmer) (#7362) (ae45d8e1f)
- theme: fix button roundness in dark_note theme (@fehmer) (#7358) (3534f8fc3)
- analytics not loading (@fehmer) (#7354) (3e899b11f)
- result page: long tests showing with graphs from previous tests (ad5136ef3)
- activivity graph sometimes overflowing the container (504bad446)
- tamil-old: set ligatures to true in tamil old (@Leonabcd123) (#7349) (6af2c2dca)
- disable oxlint-overlay on production (@fehmer) (#7348) (50a469203)
- component mounting not working in prod (2829864ae)
- tags: update tag pbs after adding/removing tags from result (@Leonabcd123) (#7337) (21b097506)
- polyglot: use per-word language for lowercasing (@mpodhaisky) (#7335) (ac3435b89)
- clear-tag-pb: update snapshot after clearing tag pb (@Leonabcd123, @fehmer) (#7332) (405b0ef12)
- auth: fix typo in auth error message (@Leonabcd123) (#7340) (701af8fc6)
- event-handlers: commandOverride not working due to incorrect check (@byseif21) (#7330) (69cc227c8)
- skip if annotation has display false (e2d9b7933)
- remove type annotation from js code (a7d8bd23d)
Nerd stuff
These changes will not be visible to users, but are included for completeness and to credit contributors.
- impr(dom utils): add slideUp and slideDown utils (@Miodec) (#7323) (2949cd901)
- fix: use qsa to grab all elements (10845c3eb)
- fix: warning banner not showing if qs got more than 1 element (41d506316)
- fix: incorrect hover color (54dff131e)
- fix: use onDOMReady for skeleton calls (@fehmer) (#7355) (9fadc4a49)
- fix: move result hashing (c3b5863aa)
- style(scroll to top button): fix icon placement (3e02ae838)
- docs(jquery): Remove dom utils check (@Leonabcd123) (#7411) (0d089241c)
- docs: Fix double whitespace in privacy-policy.html (@ChopChopp) (#7327) (f3fa9646d)
- refactor: add fa component with typesafety (@Miodec) (#7439) (b4e795da7)
- refactor: add config store (@fehmer) (#7382) (ba8275699)
- refactor: remove jQuery from test directory (@Leonabcd123) (#7325) (81829edde)
- refactor: remove jq from theme-picker (ddf905679)
- refactor: remove jq from result batches (b50c6d37a)
- refactor: move scroll to top and mobile commandline to overlays (af801335e)
- refactor: rework media query debugger, remove old debugger (5c22ffdfa)
- refactor: remove jq (b8d9de048)
- refactor: remove jq from profile (36670114c)
- refactor: remove jq from word highlight (3d2190e3f)
- refactor: remove jq (5a53b1bad)
- refactor: remove jq from blocked users (58d424249)
- refactor: remove jq from ape key table (744ea2d2b)
- refactor: remove jquery from result-filters (a6fd38909)
- refactor: remove jq from sorted table (@Miodec) (#7406) (f4a756dcf)
- refactor: add breakpoints signal based on tailwind (@fehmer) (#7403) (22d028249)
- refactor: remove jq (86dac9290)
- refactor: rework solid component mounting (@Miodec) (#7402) (dfe74968f)
- refactor(theme): add theme component, remove duplicate color definitions (@fehmer) (#7366) (e26630aa5)
- refactor: convert banners and psas to solidjs (@Miodec) (#7395) (6ed7cf301)
- refactor: create a common overlays component (5f8a1c347)
- refactor: convert background loader to solid (@Miodec) (#7387) (089989f4d)
- refactor: convert focus state to a signal (@Miodec) (#7380) (3aaf8e0e3)
- refactor: move event handlers from simple-modals to respective files (@biplavbarua) (#7333) (9896c1816)
- refactor(modals): remove jquery in ts/modals (@fcasibu) (#7292) (a6cd53caf)
- refactor: restructure the components folder (d2fd5c0cf)
- refactor: convert about page to a component (@fehmer, @Miodec) (#7350) (a795b9dab)
- refactor: convert footer to a component (@fehmer, @Miodec) (#7346) (6c92206ac)
- refactor: rewrite onDOMReady to be closer to jquery ready implementation (@fehmer) (#7356) (50dfe5f6f)
- refactor: replace custom key with semantic kbd element (12e0035bf)
- refactor: covert version button and version history modal to a component (@Miodec, @fehmer) (#7343) (3163f1e80)
- refactor: convert active page to a signal (@Miodec) (#7342) (9799c3869)
- refactor(popups): Remove jQuery from popups (@thanoskn) (#7321) (33d560587)
- perf: use local cache for configurations and psas (@fehmer) (#7429) (2b6c50c49)
- chore: bump oxc (35d3f08c4)
- chore: add ai instructions file (ef3454415)
- chore: add plugin support to oxlint checker (0bf1c739b)
- chore: disable not recommended rule (28652738a)
- chore: missing import (860c0b8f6)
- chore: use signal instead of modifying the dom directly (a1279127b)
- chore: update comment (76473c7e2)
- chore: implement indexOf override (48f2a0c2c)
- chore: remove last bits of jquery (@Miodec) (#7410) (11212962e)
- chore: use vanilla (635687c6d)
- chore: rewrite expensive tests (23aa55c66)
- chore: move firebase rewrite rule comment (@fehmer) (#7398) (ece90183c)
- chore: upgrade oxc (1b1746bbc)
- chore(readme): update shields to use official colors (@fehmer) (#7393) (60fadf27b)
- chore: move file (42b52a09c)
- chore: only show if in dev environment (491ef8bdb)
- chore(readme): update shields to use official colors (@fehmer) (2f215df5b)
- chore(readme): update technology stack (@fehmer) (#7392) (bcab0cea5)
- chore(readme): update technology stack (@fehmer) (a836dc588)
- chore: add tailwind (@Miodec) (#7390) (f858cbf3a)
- chore: explicitly define formatter (b8e25a5d5)
- chore: temporairly disable no-cycle on backend (ca91f6e7f)
- chore: lowercase strings (60c342004)
- chore(linting): enable no-cycle (6e956fe87)
- chore: clear chart data if result has no data (5ebbc8eec)
- chore: dont check github version in dev (68fe2caf8)
- chore: remove unused code (560768eb3)
- chore: extract media queries to sass mixin (@fehmer) (#7351) (68dfc5c3a)
- chore: update testcontainers to v11.11.0 (@fehmer) (#7352) (7e4ab3a09)
- chore: upgrade oxc (2beb0534b)
- chore: add minimal solidjs integration (@fehmer, @Miodec) (#7341) (6dc254dc4)
- add DataTable component (@fehmer) (#7397) (8ab345dda)
- use tanstack/query on AboutPage (@fehmer) (#7466) (3dc783fdf)
- optimise standalone pages (@fehmer) (#7409) (e1ece9bfc)
- language: check language integrity only once (@fehmer) (#7417) (1be66e604)
- dom utils: consider padding in slide functions (dc5974103)