Commit graph

12079 commits

Author SHA1 Message Date
Miodec
a387d8269d chore: update hooks
use nvm install, quiet exit in post checkout if nvm is not available
2025-08-10 13:18:21 +02:00
Miodec
436fafcc60 chore(account): add note about activity using utc time 2025-08-10 13:18:21 +02:00
Christian Fehmer
792a222adc
impr(misc): reject nested objects in sanitize (@fehmer) (#6850) 2025-08-09 20:01:21 +02:00
Christian Fehmer
18267c737c
impr(keymap): optimize config event listener on full config load (@fehmer) (#6856) 2025-08-09 19:55:08 +02:00
Christian Fehmer
100050fd1e
fix(config): fix array not getting verified after sanitize (@fehmer) (#6849) 2025-08-08 12:17:27 +02:00
Miodec
3b17e9e998 test: make sure sanitize throws a readable error 2025-08-08 11:31:16 +02:00
Miodec
0535652acc chore: release v25.32.0 2025-08-07 15:15:49 +02:00
Seif Soliman
356ca1909b
impr(commandline): add local background/font commands (@byseif21) (#6816)
* add commands for adding and removing custom local background and font.
* fix the url image input not updating when changing the background from
the commandline while in the settings page.
2025-08-07 15:11:46 +02:00
Christian Fehmer
f9b22ade56
chore: remove unused dependencies (@fehmer) (#6841)
- **remove chokidar**
- **remove path, node-fetch, ioredis-mock**
- **remove nodemon**
2025-08-07 15:02:19 +02:00
Christian Fehmer
bec5606c7a
chore: move knip to project root (@fehmer) (#6842) 2025-08-07 15:00:43 +02:00
Christian Fehmer
ced5dc1920
impr(config): validation on layoutFluid and polyglot (@fehmer) (#6844) 2025-08-07 14:48:48 +02:00
Christian Fehmer
cd99d5af16
test: add WeeklyXpLeaderboards integration tests (@fehmer) (#6843) 2025-08-07 14:48:14 +02:00
Christian Fehmer
c8a91ede52
test: fix flaky user tests (@fehmer) (#6837) 2025-08-07 14:47:35 +02:00
Polina
821c640888
feat(layout): add Rulemak layout (@poli0iq) (#6835)
### Description

Add Rulemak Cyrillic layout, as found in
23fec5367a/symbols/ru (L722).

It's primarily designed for Russian, but can also be used for Ukrainian,
Serbian, Bulgarian, Belarusian and Macedonian, thanks to its layer 3-4
symbols.

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [ ] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [ ] Add language to `packages/schemas/src/languages.ts`
- [ ] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [ ] Add language json file to `frontend/static/languages` 
- [ ] Adding a theme?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/THEMES.md)
  - [ ] Add theme to `packages/schemas/src/themes.ts`
  - [ ] Add theme to `frontend/src/ts/constants/themes.ts`
  - [ ] Add theme css file to `frontend/static/themes`
- [ ] Add some screenshot of the theme, especially with different test
settings (colorful, flip colors) to your pull request
- [x] Adding a layout?
- [x] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [x] Add layout to `packages/schemas/src/layouts.ts`
  - [x] Add layout json file to `frontend/static/layouts` 
- [ ] Adding a font?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/FONTS.md)
  - [ ] Add font file  to `frontend/static/webfonts`
  - [ ] Add font to `packages/schemas/src/fonts.ts`
  - [ ] Add font to `frontend/src/ts/constants/fonts.ts`
- [ ] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [ ] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [ ] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.

<!-- label(optional scope): pull request title (@your_github_username)
-->

<!-- I know I know they seem boring but please do them, they help us and
you will find out it also helps you.-->

Closes #

<!-- the issue(s) your PR resolves if any (delete if that is not the
case) -->
<!-- please also reference any issues and or PRs related to your pull
request -->
<!-- Also remove it if you are not following any issues. -->

<!-- pro tip: you can mention an issue, PR, or discussion on GitHub by
referencing its hash number e.g:
[#1234](https://github.com/monkeytypegame/monkeytype/pull/1234) -->

<!-- pro tip: you can press . (dot or period) in the code tab of any
GitHub repo to get access to GitHub's VS Code web editor Enjoy! :) -->
2025-08-05 14:22:00 +02:00
Seif Soliman
af0f23c940
fix: font file type check for better browser compatibility (@byseif21) (#6836)
### Description

* browsers don't provide accurate MIME types for font files , I couldn't
even reuse the site fonts as local fonts.
* Validation now checks both MIME type and file extension to ensure
valid fonts aren't mistakenly rejected.
2025-08-05 13:57:26 +02:00
Seif Soliman
31585bd0b2
fix(quote-mode): broken all selection and visual highlighting issues (@byseif21) (#6818)
### Description

* fixed UI click handler to consistently map "all" quote mode selection
(all) to [0, 1, 2, 3] `setQuoteLengthAll();`.
* fix the mobile model to highlight the all selection when length is [0,
1, 2, 3].
* fix quote length options were not visually highlighted when refreshing
from other mode then back to quote mode.
2025-08-05 13:57:09 +02:00
Miodec
3f72e31df9 fix(test config): sometimes showing too many elements at once 2025-08-04 19:59:23 +02:00
Miodec
7519931b1b fix: move time setting before mode 2025-08-04 19:59:23 +02:00
Christian Fehmer
01ed9322ec
test: update to vitest3 (@fehmer) (#6811)
- **test: use mongodb testcontainer (@fehmer)**
- **don't run integration tests in parallel**
- **fix premium test**
- **refactor, cleanup**
- **refactor, cleanup**
- **test: add integration tests for daily leaderboards (@fehmer)**
- **trigger**
- **trigger**
- **test: update to vitest3 (@fehmer)**
2025-08-04 15:55:10 +02:00
Christian Fehmer
f759b0ce89
feat(settings): allow user to pick a local font (@fehmer, @miodec) (#6794) 2025-08-04 15:50:02 +02:00
Christian Fehmer
9c41fd5d04
test: add unit tests for daily leaderboards (@fehmer) (#6802)
- **refactor existing test to use it.for**
- **use testcontainers**
2025-08-04 15:28:55 +02:00
Tobi
c4353f6371
docs(SELF_HOSTING.md): add Firebase domain whitelisting instructions (@tobilobasalawu) (#6832)
### Description

Improved the `SELF_HOSTING.md` documentation by adding clear
instructions for whitelisting domains in Firebase Authentication.

#### Changes:
- Explained the purpose of Firebase's authorized domains
- Provided a step-by-step guide on how to whitelist your domain(s)

---

### Checks

- [x] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [x] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [x] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.

---

###  Issue Reference

Closes [#6809](https://github.com/monkeytypegame/monkeytype/issues/6809)
2025-08-04 15:21:43 +02:00
Christian Fehmer
1a07ffc5f7
fix(config): numbers and punctuation always reset to false (@fehmer) (#6830) 2025-08-04 15:19:37 +02:00
Christian Fehmer
df8cb077b0
fix(style): fix visual problems (@fehmer) (#6827)
On the settings page

- theme -> custom add a margin to the left of the color picker
- buttons/input on the right side align with the top of the text on the
left side
2025-08-04 15:19:17 +02:00
Kiri
34001e7fb0
fix: Misspelt items in League of Legends language (@kiriDevs) (#6822) 2025-08-04 15:18:40 +02:00
Kr1tX12
7b9a2eb93a
feat(language): add code_yoptascript language and quotes (@Kr1tX12) (#6819)
### Description

I added a new language: code_yoptascript. Also added 3 quotes for
code_yoptascript

### Translations of the quotes:
1: 'use client';\nip {SessionProvider} Remove from 'next-auth/react'
to\nip {ReactNode } Remove from 'react' to\n\nproduction of the option
Providers(JY children is: JY children: ReactNode is) JY\n\t reply
(\n\t\t<SessionProvider>\n\t\t\t{children}\n\t\t</SessionProvider>\n\t)\nest


2: yopta stalinSort(arr) yY\n\t step result outside [arr[0]]\n\t th
(precinct i outside 1 nah i <arr.length nah i++) yY\n\t\t right eye
(arr[i] > result[result.length - 1]) yY\n\t\t\tresult.navel(arr[i])
nah\n\t\test\n\test\n\tresponse result nah\nest


3: The red-eyed one(\"Dad got up, the neighborhood woke up\")

### Checks

- [yes] Adding quotes?
- [yes ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [yes ] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [ yes] Add language to `packages/schemas/src/languages.ts`
- [yes ] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [ yes] Add language json file to `frontend/static/languages`
2025-08-04 15:18:13 +02:00
Seif Soliman
2b43a5f82e
fix(font): 0xProto not working in screenshot (@byseif21) (#6817)
### Description
starting with number seem to cuzes issue, did some hacking idk

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-08-04 15:12:38 +02:00
Shizuko
15feb8a74a
fix(funbox): fix animations for choo_choo and earthquake funboxes in custom mode (@ShizukoV) (#6815)
Fixed an issue where the `choo_choo` and `earthquake` funboxes did not
"work" in custom mode.

Previously, these funboxes did not "work" in custom mode. When they were
turned on, *no animations were played*. This change allows the
animations to run regardless of the mode, so users can now experience
the funboxes in custom mode as well. This change also makes sure they
work on the other modes.

### Here is a video example of the bugs and the new changes in action:


[![funboxesFixedVideo](https://img.youtube.com/vi/oF1zuqWGYnQ/0.jpg)](https://www.youtube.com/watch?v=oF1zuqWGYnQ)
2025-08-04 15:11:28 +02:00
Christian Fehmer
d9009e51cc
test: use mongodb testcontainer (@fehmer) (#6808) 2025-08-04 15:10:41 +02:00
Miodec
5af3a81467 chore: add post checkout git hook 2025-08-04 15:01:11 +02:00
Christian Fehmer
6f6af5e622
fix(presets): move migration to Config.apply (@fehmer) (#6814) 2025-07-31 22:17:24 +02:00
Miodec
b63b07354b chore: add motivational messages when wpm is 0 2025-07-31 16:16:59 +02:00
Christian Fehmer
7eeb9fd086
fix(commandline): use correct schema on inputs with secondKey (@fehmer) (#6813) 2025-07-31 16:16:38 +02:00
Miodec
81a497b7b9 chore: rename some commands, reorder 2025-07-31 12:58:12 +02:00
Miodec
686a73069d fix: roboto and roboto mono being swapped 2025-07-31 12:54:05 +02:00
Miodec
266c564400 fix: keymap always enabled 2025-07-31 12:34:28 +02:00
Miodec
1a50b207e4 fix: minwpm, minacc, minburst, pacecaret auto enabling themselves 2025-07-31 12:27:40 +02:00
Miodec
7af4812b3e chore: release v25.31.0 2025-07-31 12:21:33 +02:00
Jack
4ec51a2d21
fix: config applying issues (@miodec, @fehmer) (#6812)
!nuf
2025-07-31 12:10:58 +02:00
Christian Fehmer
c1a681c17f
test: split integration tests (@fehmer) (#6807)
- **trigger**
- **test: split integration tests (@fehmer)**
2025-07-30 13:22:40 +02:00
Nad Alaba
dd55a7257b
fix: cursor not changing to pointer on button hover (@NadAlaba) (#6801)
<img width="600" height="111" alt="button"
src="https://github.com/user-attachments/assets/ec401e00-bc12-4ff3-89c5-c41753b22566"
/>

- bug was introduced in
[#6651](https://github.com/monkeytypegame/monkeytype/pull/6651) by
changing the inline style `cursor` to `default` when focus mode is
disabled instead of removing the `cursor: none` inline style.
- add a `.clickable` class to clickable banners/PSAs instead of relying
on `cursor: pointer` inline style which may be cleared by
`.css("cursor", "")` in the previous commit.
- make the test for clickable banners/PSAs case insensitive and allow
`<a>` elements in the test.
2025-07-30 12:50:36 +02:00
Seif Soliman
d8fd641825
fix: filter section doesn't toggle using local image (@byseif21) (#6796) 2025-07-30 11:17:03 +02:00
Seif Soliman
d48ddcaac7
fix(settings): dismiss tooltips on funbox buttons after click (@byseif21) (#6803)
close #6800
2025-07-30 11:12:44 +02:00
Christian Fehmer
aa94a8afed
chore: update nodejs to 20.19.4 (@fehmer) (#6805) 2025-07-30 10:06:04 +02:00
Seif Soliman
926b369402
fix(commandline): missing initialize input validation handler for commandOverride (@byseif21) (#6788)
### Description

commands opened directly via `commandOverride` (e.g.,
`changeCustomPolyglot` when triggered by a text button after a page
refresh) were not correctly initializing their input validation
handlers.

---------

Co-authored-by: Christian Fehmer <fehmer@users.noreply.github.com>
Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-07-28 16:40:08 +02:00
Christian Fehmer
a9a99947a1
chore: correct usage of font family (@fehmer) (#6793) 2025-07-28 15:45:34 +02:00
Christian Fehmer
3ddb3c68c1
refactor(config): cleanup handling for fontSize, tapeMargin and maxLineWidth (@fehmer) (#6775)
merge this after #6751 and the command builder pr

- remove configOverride
- add handling to config migration
2025-07-28 15:42:18 +02:00
Miodec
be1774e219 chore: remove duplicates 2025-07-28 15:27:42 +02:00
Miodec
f12369eb90 chore: update contributors list 2025-07-28 15:22:42 +02:00
Miodec
bf9e53355f fix: test not reacting to font size change
closes #6792
2025-07-28 13:26:26 +02:00