Commit graph

231 commits

Author SHA1 Message Date
Miodec
96e30b141e chore: bump oxc packages 2025-12-19 09:56:37 +01:00
Christian Fehmer
8a2a3e4d23
impr: add copy details to notification history (@fehmer) (#7262)
Add details to notifications.

If details are available show share icon on hover in the notification
history. On click the full content is copied to the clipboard. With this
is easier for an user to share the full details of an error on github or
discord.

<img width="377" height="107" alt="image"
src="https://github.com/user-attachments/assets/f22638a1-bafd-4708-8d8a-0ec48db10f1d"
/>

<img width="377" height="107" alt="image"
src="https://github.com/user-attachments/assets/d4a66860-f99f-4ac1-992c-81e31ab13eba"
/>



```json
{
    "title": "Error",
    "message": "Failed to save config",
    "details": {
        "status": 422,
        "validationErrors": [
            "Unrecognized key(s) in object: 'invalid'"
        ]
    }
}
```

---------

Co-authored-by: Jack <jack@monkeytype.com>
2025-12-18 19:27:24 +01:00
100daysummer
74bafad7d5
impr(language): add bulgarian 1k (@100daysummer) (#7232)
### Description

This commit expands the two bulgarian wordlists - bulgarian.json and
bulgarian_latin.json

### Checks

- [ ] Adding/modifying Typescript code?
  - [ ] I have used `qs`,`qsa` or `qsr` instead of JQuery selectors.
- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [x] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [x] Add language to `packages/schemas/src/languages.ts`
- [x] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [x] 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
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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.
- [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.

---------

Co-authored-by: Jack <jack@monkeytype.com>
2025-12-17 19:32:49 +01:00
Christian Fehmer
3f21023fc1
chore: update vitest/testcontainer versions, try to fix container teardown on macos (@fehmer) (#7248)
Co-authored-by: Miodec <jack@monkeytype.com>
2025-12-16 18:11:55 +01:00
Jack
a067a32b7a
chore: move main linting to oxlint (@miodec) (#7144)
- main linting is now done by oxlint. eslint remains for linting json
files in the frontend (until oxlint adds support)
 - move type checking to the lint step (with --type-check)
this improves performance by removing a duplicated typescript parse task
(instead of parsing for linting then again for type checking, it parses
once for both)
- add a `lint-fast` npm script to get some fast fail behavior. it simply
lints with no type information
- oxc plugins are still in preview, so the custom plugin that checks for
`__testing` usage outside of tests runs outside the main linting job
until performance is improved
- fixes some type issues (and config issues) that were not visible due
to a missing type check on some files. now type checking will run on
every file that is linted
 - split up oxc config for easier management

waiting https://github.com/oxc-project/tsgolint/pull/494

seeing around 3x improvement in type aware linting
2025-12-15 22:16:16 +01:00
Jack
660668c530
chore: use oxfmt for formatting (@miodec) (#7187)
8 times faster formatting,
calls prettier internally for unsupported files

waiting on https://github.com/oxc-project/oxc/issues/16637
https://github.com/oxc-project/oxc/issues/16598
https://github.com/oxc-project/oxc/issues/16621

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-12-15 16:53:50 +01:00
Asif Malik
91d64dc920
feat(theme): add spiderman theme (@asifMalik78) (#7240)
### Description

<!-- Please describe the change(s) made in your PR -->

### Checks

- [ ] Adding/modifying Typescript code?
  - [ ] I have used `qs`,`qsa` or `qsr` instead of JQuery selectors.
- [ ] 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` 
- [x] Adding a theme?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/THEMES.md)
  - [x] Add theme to `packages/schemas/src/themes.ts`
  - [x] Add theme to `frontend/src/ts/constants/themes.ts`
  - [x] Add theme css file to `frontend/static/themes`
- [x] Add some screenshot of the theme, especially with different test
settings (colorful, flip colors) to your pull request
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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.
- [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.

<!-- 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 #

Theme Screenshots : 
<img width="1484" height="766" alt="2025-12-14_23-51-42"
src="https://github.com/user-attachments/assets/94d9d9dd-37b9-42f0-8930-b75aeb35c913"
/>

<img width="1484" height="766" alt="2025-12-14_23-53-11"
src="https://github.com/user-attachments/assets/995532d3-b6dc-4f19-b9a1-4b8704d8330b"
/>


<!-- 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! :) -->

Co-authored-by: Asif Malik <aasifmalik22789@gmail.com>
Co-authored-by: Christian Fehmer <fehmer@users.noreply.github.com>
2025-12-14 22:07:22 +01:00
Christian Fehmer
92533e2bdd
refactor: move configGroup to config-metadata (@fehmer) (#7222) 2025-12-12 10:18:15 +01:00
ALAMO276
38cc8e12da
feat(layout): add colemak_angle layout (@ALAMO276) (#7200)
### Description

I added the Colemak with the angle mod

### 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-12-10 22:51:46 +01:00
Miodec
443e27fbf8 feat: add composition display setting 2025-12-10 17:19:52 +01:00
Miodec
4f8d8c557c chore: dont check for uncommited changes when deploying to preview 2025-12-10 14:37:08 +01:00
Miodec
d997ae8746 chore: add script to deploy preview frontend 2025-12-10 14:35:22 +01:00
Miodec
2ee582a597 chore: configure eslint/curly rule 2025-12-09 22:41:45 +01:00
Jack
b5a03e0040
chore(linting): enable prefer-nullish-coalescing (@miodec) (#7209) 2025-12-09 20:37:04 +01:00
Miodec
2fcc86dddf chore: make sure to use production env when building for production 2025-12-02 23:33:51 +01:00
Miodec
a9e0db4f88 chore: update timer style schema
also update config and commandline metadata
2025-11-28 21:55:38 +01:00
Gian Peña
d18408700b
impr(timer/progress style): add flashing timer style (@gianpena) (#7139)
### Description

This copies the existing `text` timerstyle except on timed modes, where
it will only show the remaining progress (seconds) on every 15th second
(shows on 1:00, 45, 30, 15 and 0).

The motivation for this addition was that I wanted a middle ground
between the `text` timerstyle (in my opinion just a _little_ too
distracting) and no live progress indicator at all (I lose track of how
much time remains in the test), and I believe this achieves that middle
ground.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-11-27 11:50:16 +01:00
Jack
f910c8a567
chore: prettier upgrade (@miodec) (#7159) 2025-11-27 00:20:09 +01:00
Leonabcd123
e8339f0a1f
feat(funbox): Add rot13 funbox (@Leonabcd123) (#7116)
### Description

Added a new funbox mode that implements the rot13 cipher, shifting each
character over by 13 places.

I'm not really sure which properties fit best with this...

Implements #6565
2025-11-26 22:40:10 +01:00
Miodec
3dfea100d1 chore: upgrade typescript
also disables declaration file generation since we dont use them anyway
2025-11-24 13:33:49 +01:00
Miodec
032844d023 feat: add show personal best
you can now view the pb for
current test settings right above
the test words, before starting the test
2025-11-23 19:30:30 +01:00
Jack
ea84adfb42
refactor: input rewrite v3 (@miodec) (#7119)
input goes brr
2025-11-23 15:52:52 +01:00
Miodec
2107c87fdb chore: upgrade oxlint
also enables prefer-includes
2025-11-20 12:22:58 +01:00
Miodec
36574b4096 impr: add monkey caret style
also moves caret images to a folder
2025-11-19 11:08:36 +01:00
Christian Fehmer
1009791915
refactor: remove lodash from backend (@fehmer) (#6953) 2025-11-17 12:51:40 +01:00
Leonabcd123
13b75f46bf
feat(test): add indicate typos both (@Leonabcd123) (#7072)
### Description

Added a "both" option to indicate typos that keeps the replace
functionality, and makes the below functionality show the correct
instead of the incorrect letters. We just check whether the mode is
`both` when deciding whether to pass `input` to `createHintsHtml` or to
pass `currentWord`. All functionality of replace and below is kept by
just adding or operators to check whether indicateTypos is `both` OR
replace/below.

Implementing #7024

---------

Co-authored-by: Jack <jack@monkeytype.com>
2025-11-15 10:46:31 +01:00
Sameer Singh
bb6e0d9824
feat(theme): add Vesper Light (@SameerJS6) (#7040)
### Description

Adds Vesper Light and Oscura themes. Oscura by
[Fey](https://github.com/narative/oscura).

<!-- Please describe the change(s) made in your PR -->

### 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` 
- [x] Adding a theme?
- Make sure to follow the [themes
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/THEMES.md)
  - [x] Add theme to `packages/schemas/src/themes.ts`
  - [x] Add theme to `frontend/src/ts/constants/themes.ts`
  - [x] Add theme css file to `frontend/static/themes`
- [x] Add some screenshot of the theme, especially with different test
settings (colorful, flip colors) to your pull request
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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`
- [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.

<!-- 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! :) -->


## Preview

### Vesper Light

#### Home Route
<img width="1920" height="1440" alt="vesper-light"
src="https://github.com/user-attachments/assets/f2f43ecf-ee63-4797-a8e0-781c6879551f"
/>

#### Settings Route
<img width="1200" height="676" alt="80_1x_shots_so"
src="https://github.com/user-attachments/assets/e595faa9-9731-4aef-bc0e-95f882391289"
/>

#### Result Route
<img width="1200" height="676" alt="908_1x_shots_so"
src="https://github.com/user-attachments/assets/b86a7bae-dacf-4eba-b987-0620ee533d33"
/>

### Oscura

#### Home Route
<img width="1920" height="1440" alt="789_1x_shots_so"
src="https://github.com/user-attachments/assets/80c3f950-ef60-4ef1-aa35-9cc1c436b426"
/>

#### Settings Route
<img width="1920" height="1440" alt="194_1x_shots_so"
src="https://github.com/user-attachments/assets/08bf81d9-6a6f-4edc-89f2-ed9106a465b0"
/>

#### Result Route
<img width="1920" height="1440" alt="95_1x_shots_so"
src="https://github.com/user-attachments/assets/0d1ee6a5-78e6-4c66-a5e0-b2ab422ffe4e"
/>

### Toasts Theme For Vesper Light & Oscura
<img width="1920" height="1440" alt="585_1x_shots_so"
src="https://github.com/user-attachments/assets/b658811d-3303-4079-9e30-57d465093d04"
/>
2025-11-13 15:34:51 +01:00
Christian Fehmer
d74051e878
feat(leaderboard): add friends filter to daily/weekly leaderboard (@fehmer) (#7084) 2025-11-12 14:41:22 +01:00
Christian Fehmer
8db1140040
chore: update vitest to 4.0.8 (@fehmer) (#7096) 2025-11-12 12:42:30 +01:00
dotleon
05e1b828ae
impr(languages): fixed the default hungarian word list, and also added hungarian_1k list (@dotleon) (#7087)
### Description

Fixed the default hungarian word list (it had less than 200 words and
the words were really weird and rare ones).

Added hungarian 1k. 

The word list is from here:
https://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Hungarian_webcorpus_frequency_list
, but I removed some words that did not make sense for type test, like
"kft." and "-e" and also removed names

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [X] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [X] Add language to `packages/schemas/src/languages.ts`
- [X] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [X] 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
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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`
- [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.

<!-- 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 #
2025-11-12 12:33:46 +01:00
Christian Fehmer
946f41835f
impr: randomize themes based on system theme (@fehmer) (#7075)
closes #7069
2025-11-12 12:31:50 +01:00
connermcnicholas
9cb19e3ea9
feat(theme): added pale_nimbus (@conner-mcnicholas) (#7055)
# Description

Created a new theme "pale_nimbus" per instructions.

## Screenshots
 
####  ------Normal Test------
<img width="1244" height="1170" alt="test"
src="https://github.com/user-attachments/assets/9b74bf69-6202-4dde-b011-fa8cea48168a"
/>

####  ------Flipped Test------
<img width="1242" height="1172" alt="flip"
src="https://github.com/user-attachments/assets/589ee12a-ce34-4688-beb3-9f43fe147450"
/>

####  ------Colorful Test------
<img width="1244" height="1170" alt="colorful"
src="https://github.com/user-attachments/assets/7079fc55-461d-4355-a9c8-eeede747f4f8"
/>

####  ------Flipped and Colorful Test------
<img width="1240" height="1166" alt="flip_colorful"
src="https://github.com/user-attachments/assets/30ac5c08-b2cb-4481-99ff-65f6dc4ab77f"
/>

####  ------Settings------
<img width="1238" height="1170" alt="menu"
src="https://github.com/user-attachments/assets/d7818bf0-02af-4433-b6ba-487a426dace1"
/>

####  ------Stats------
<img width="928" height="1156" alt="stats"
src="https://github.com/user-attachments/assets/cef260af-858b-45b3-837b-121c538d450c"
/>
2025-11-12 12:11:00 +01:00
Christian Fehmer
9d64a57daf
feat(leaderboard): add friends filter to all-time leaderboard (@fehmer) (#7061) 2025-10-31 18:57:42 +01:00
Miodec
586a19ad3e chore: upgrade oxlint 2025-10-31 14:18:59 +01:00
Christian Fehmer
d885e70232
feat: add friend requests and list (@fehmer) (#6658)
make some friends on monkeytype

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-10-28 12:36:16 +01:00
Jack
7e6a73aac2
chore: upgrade to vite 7 (@miodec) (#7051) 2025-10-27 17:17:21 +01:00
Andele Swierstra
e4afca1ff1
feat(layout): add Gallium-NL layout (@ririshi) (#7029)
### Description
I recently created a modded version of Gallium that is more suited for
typing a mix of English and Dutch, rather than just being optimized for
English. I'd love to start learning the layout, so having a visual guide
would be very useful. I think others in my situation (who type a mix of
English and Dutch) could also benefit from having this layout added.
<!-- Please describe the change(s) made in your PR -->

### Checks

- [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` 

<!-- 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.-->

<!-- 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-10-21 13:24:18 +02:00
Christian Fehmer
4268572be4
build: fix scope of dependency @monkeytype/schemas (@fehmer) (#7033) 2025-10-21 13:05:07 +02:00
Ryan Souza
154b88eecf
feat(language): add Erlang programming language support (@Ryrden) (#7013)
### Description

This PR adds support for the Erlang programming language to Monkeytype,
providing developers with a comprehensive set of essential Erlang
keywords, OTP behaviors, and standard library functions for typing
practice.

**Changes made:**
- Add `code_erlang` to language schema
(`packages/schemas/src/languages.ts`)
- Add `code_erlang` to frontend constants in the `code` language group
(`frontend/src/ts/constants/languages.ts`)
- Create `code_erlang.json` with 245 essential Erlang keywords and
functions
- Includes core language constructs (after, and, case, receive, spawn),
OTP behaviors (gen_server, supervisor, application), built-in functions
(spawn_link, monitor, register), and standard library modules (lists,
string, ets, mnesia, file, io)

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [x] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [x] Add language to `packages/schemas/src/languages.ts`
- [x] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [x] 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
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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`
- [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.

<!-- No related issues found -->

Note: Please, is it possible to add the label `hacktoberfest-accepted`
to this PR?

Co-authored-by: Jack <jack@monkeytype.com>
2025-10-15 10:44:50 +02:00
Ryan Souza
260c3a94c3
feat(language): add Clojure programming language support (@Ryrden) (#7012)
### Description

This PR adds support for the Clojure programming language to Monkeytype,
providing developers with a comprehensive set of essential Clojure
keywords and constructs for typing practice.

**Changes made:**
- Add `code_clojure` to language schema
(`packages/schemas/src/languages.ts`)
- Add `code_clojure` to frontend constants in the `code` language group
(`frontend/src/ts/constants/languages.ts`)
- Create `code_clojure.json` with 212 essential Clojure keywords and
functions
- Includes core language constructs (def, defn, let, fn), control flow
(if, when, cond), data manipulation (map, filter, reduce), concurrency
primitives (atom, ref, agent), and utility functions

### Checks

- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [x] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [x] Add language to `packages/schemas/src/languages.ts`
- [x] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [x] 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
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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`
- [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.

<!-- No related issues found -->

Note: Please, is it possible to add the label `hacktoberfest-accepted`
to this PR?
2025-10-15 10:43:14 +02:00
informal-stripes-condo
820ac7148e
feat(languages): add code ocaml language (@informal-stripes-condo) (#7000)
### Description

Add Code OCaml Language

### Checks

- [x] Adding a language?
- Make sure to follow the [languages
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LANGUAGES.md)
  - [x] Add language to `packages/schemas/src/languages.ts`
- [x] Add language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [x] Add language json file to `frontend/static/languages` 
- [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.

<!-- 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.-->

<!-- 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-10-15 10:38:03 +02:00
MasterRon
a15d84e0ce
feat(layout): add gust layout (@MasterRon) (#6991)
### Description

<!-- Please describe the change(s) made in your PR -->

### 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
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/schemas/src/layouts.ts`
  - [ ] 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-09-25 13:47:17 +02:00
Nad Alaba
4318601799
fix(funbox): caret/tape/ui issues in backwards funbox (@NadAlaba) (#6956)
### Description

1. refactor:
- store (language direction / state of direction reversing funbox) in
test-state.ts, and set them on `TestLogic.init()` which is called on
each restart which happens on each change of Config.language or funbox.
- use these new direction variables in (caret.ts / test-ui.ts /
pace-caret.ts /result-word-highlight.ts) instead of calling `await
JSONData.getCurrentLanguage(Config.language)`.

2. css changes:
- add `unicode-bidi: bidi-override;` to .words with ligatures in
backwards to fix the direction of LTR words on LTR languages in custom
tests (which now have `.withLigatures` class regardless of language).
- remove `direction: rtl;` from right to left .word and keep it on right
to left #words. This was done because after adding the above
`bidi-override`, (.word)s directioin was being forced to rtl on tests
with RTL language and RTL words (custom and none custom tests), which is
wrong (should be ltr on those tests because of the backwards funbox).
- P.S., removing this from .word does not affect normal tests, because
.word direction is inherited from #words directtion on non
.withLigatures tests (e.g, non custom tests in non withLigatures
languages), and it is calculated using internal browser algorithm based
on characters used in .withLigatures tests (tests in languages with
ligatures and all custom tests).

3. add the property "reverseDirection" to backwards funbox, which
signifies that the direction of the test should be the reverse of the
direction of Config.language, and the direction of a word should be the
reverse of `Strings.isWordRightToLeft()`.

4. allow backwards funbox to work on languages with ligatures.

5. move `void Caret.updatePosition()` call to after the call of
`TestUI.lineJump()` in `input-controller.ts:handleSpace()`.

6. change name of `Strings.getWordDirection()` to
`Strings.isWordRightToLeft()` which explains what does the returned
boolean mean, and add a parameter `reverseDirection` that flips the
final result if true.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-09-19 22:15:03 +02:00
Christian Fehmer
5026f41954
impr: add custom error codes to contracts and api doc (@fehmer) (#6976) 2025-09-19 18:59:46 +02:00
verdant23
74e4dd7b2a
feat(layout): add pine v4 layout (@verdant23) (#6958)
Adding in pine v4 from https://layouts.wiki/layouts/2021/pine/

### Description

<!-- Please describe the change(s) made in your PR -->

### 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-09-19 18:18:22 +02:00
Christian Fehmer
344e467f87
fix: password validation rules (@fehmer) (#6967)
fixes #6966 , #6965
2025-09-19 18:14:27 +02:00
Miodec
a33b464511 chore: change oxlint config to jsonc
also disable one rule
2025-09-11 22:04:48 +02:00
Miodec
1fa473744a chore: bump oxlint 2025-09-11 22:04:48 +02:00
Miodec
5a39049035 chore: bump compatibility header 2025-09-04 19:38:26 +02:00
Christian Fehmer
56b25f30bc
build: rename json-validation to check-assets, improve error messages (@fehmer) (#6933)
- **improve error messages**
- **rename json-validation to check-assets**
2025-09-03 18:10:34 +02:00