Commit graph

155 commits

Author SHA1 Message Date
Jack
4ec51a2d21
fix: config applying issues (@miodec, @fehmer) (#6812)
!nuf
2025-07-31 12:10:58 +02:00
Lukas
21230abaa4
feat(language): add ABAP programming language (@hottek) (#6784)
### Description

This PR adds language support for the ABAP programming language. It adds
code_abap with the 200 most used ABAP keywords and code_abap_1k with all
ABAP keywords from the current ABAP language version.

### 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.
2025-07-27 19:37:30 +02:00
Christian Fehmer
060a753be1
refactor(schema): move font config to schema (@fehmer) (#6780)
- **refactor(schema): move font config to schema (@fehmer)**
- **styles**
2025-07-26 13:34:03 +02:00
Soufiane
da720ac130
feat(language): add moroccan arabic (@Soufi-ane) (#6743)
### Description
Adds a dialect of arabic (moroccan) to monkeytype

### Checks

- [x] Adding a language?
  - [x] Add language to `packages/contracts/src/schemas/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.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-25 14:52:29 +02:00
Benjamin
3757744b28
feat(language): add Gleam coding language (@binajmen) (#6771)
### Description

Adding the Gleam language!

https://gleam.run/

### 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/contracts/src/schemas/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.
2025-07-25 14:14:21 +02:00
Cameron
2180e3b603
chore(deps): upgrade oxlint to 1.8.0, fix errors (@camc314) (#6776)
### Description

This PR updates oxlint to 1.8.0 and fixes the resulting errors in order
to keep oxlint's ecosystem CI green.

Thanks for using oxlint

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-24 14:32:12 +02:00
Shizuko
e357efc435
chore(funbox): increase layout_mirror difficulty to level 3 (@ShizukoV) (#6761)
### Description
I've changed the difficulty of the `layout_mirror` funbox from 1 to 3.

The `layout_mirror` funbox completely mirrors the keyboard layout,
significantly increasing difficulty compared to other funboxes currently
labeled as difficulty level 1, (`earthquake`, `capitals`, `gibberish`),
which are much less disruptive.

The `layout_mirror` funbox is also similar to the `mirror` funbox (which
mirrors the screen), currently rated at difficulty level 3. Since
`layout_mirror` alters the entire keyboard layout itself, making even
basic typing extremely challenging, it makes sense for it to also be
difficulty level 3.
2025-07-22 19:25:23 +02:00
Jack
6dad5415c2
feat(sound): add play time warning (@miodec) (#6759)
### 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/contracts/src/schemas/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/contracts/src/schemas/themes.ts`
  - [ ] Add theme to `frontend/src/ts/constants/themes.ts`
  - [ ] Add theme css file to `frontend/static/themes`
- Also please add a screenshot of the theme, it would be extra awesome
if you do so!
- [ ] Adding a layout?
- [ ] Make sure to follow the [layouts
documentation](https://github.com/monkeytypegame/monkeytype/blob/master/docs/LAYOUTS.md)
  - [ ] Add layout to `packages/contracts/src/schemas/layouts.ts`
  - [ ] Add layout json file to `frontend/static/layouts` 
- [ ] 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! :) -->

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-07-21 16:40:27 +02:00
Jack
69cbbe4ab2
refactor(contracts / schemas): move schemas into their own package (@miodec) (#6754) 2025-07-21 14:55:54 +02:00
Jack
92790f3682
refactor(config): config metadata (@miodec) (#6753)
Create config metadata object
Move all the special code on config change to config listeners
Create a generic set function which will work with the metadata object
to update any config key
Update all setters to use the generic set.
(Later probably only use the generic settter and remove all the specific
ones)
Also orders config groups and config schema.

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-07-21 13:50:33 +02:00
Miodec
41495981a8 chore: bump oxlint version 2025-07-19 15:02:14 +02:00
Jack
5e4478c97a
feat(funbox): add no quit (@miodec) (#6741)
Brrrr
2025-07-16 15:53:36 +02:00
Sam Lonneman
06f6d0ab53
impr(settings): clarified 'reset settings' wording (@SamLonneman) (#6717)
### Description

**`impr`** - Clarified description for "Reset Settings" feature,
emphasizing that in addition to tags, settings presets are also
preserved.

**`refactor`** - the unused type `PresetName` was misspelled as
`PresentName`.
2025-07-15 14:35:21 +02:00
Christian Fehmer
a4de8dfda6
impr(leaderboard): daily mode/language buttons based on backend configuration (@fehmer) (#6713)
Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-14 15:32:09 +02:00
Christian Fehmer
83cc7590fb
impr(commandline): validate input for polyglot and layoutfluid (@fehmer) (#6709) 2025-07-09 18:03:27 +02:00
Christian Fehmer
6b1bbfb432
fix: pin implementation (@fehmer) (#6699) 2025-07-09 12:05:18 +02:00
Christian Fehmer
9b26793a6d
chore: update express to 5.1.0 (@fehmer) (#6691) 2025-07-03 15:43:01 +02:00
Christian Fehmer
e50d5e9cdd
feat(settings): add deep links to specific sections (@fehmer) (#6661)
Allow to deep-link to  a specific config setting.

Users in discord often ask how to enable a specific setting. Instead of
guiding them manually to the correct settings we can use a deep-link:


https://github.com/user-attachments/assets/90b99660-13ae-49bf-8ff2-c5e6da290070

Added a link next to the group on mouse over to copy the deep link to
the clipboard:


![image](https://github.com/user-attachments/assets/d389754e-f43a-4638-b18f-729e818ef170)

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-01 20:46:43 +02:00
Miodec
ee6a9293c4 fix(funbox): remove difficulty xp bonus from instant messaging funbox 2025-07-01 19:14:11 +02:00
Khaÿtshi
4a4a6ab8bf
feat(language): add viossa njutro (@khautshi) (#6659)
### Description

This adds Njutro (An idiolect of Viossa) to Monkeytype. 

### Checks

- [X] Adding a language
  - [X] Added language to `packages/contracts/src/schemas/languages.ts`
- [X] Added language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [X] Added language json file to `frontend/static/languages` 
  
- [X] Checked if there are any open issues are related to this PR.
- [X] PR title follows Conventional Commits standard.
- [X] Included GitHub username prefixed with @ inside parentheses at the
end of the PR title.

---------

Co-authored-by: Nginearing <142851004+Nginearing@users.noreply.github.com>
2025-06-26 15:28:10 +02:00
Christian Fehmer
79cc330852
fix(account): fix not all results shown if result has a funbox unknown to stored filter (@fehmer) (#6608)
Merge with default filters to ensure all languages and funboxes are
present in the result filter.
2025-06-23 14:52:23 +02:00
Miodec
9891dac323 chore(release script): remove validate-json step if only running in the backend 2025-06-16 12:13:36 +02:00
Miodec
4c05dd8326 chore: bump oxlint version 2025-06-14 14:43:05 +02:00
Miodec
04fbd81c10 chore: bump oxlint version 2025-05-29 13:23:13 +02:00
Miodec
5695245c86 chore: release v25.22.0 2025-05-27 17:17:48 +02:00
Christian Fehmer
47de0c8a40
refactor: cleanup schema and types for CustomText (@fehmer) (#6605) 2025-05-27 16:30:49 +02:00
siilyg
1826948886
feat(layout): add Tarmak layouts (@siily-g) (#6574)
### Description

The tarmak layout(s) is a set of transition layouts for qwerty user
switching to colemak, it changes only about 3-4 keys for every stage.

[More about tarmak](https://dreymar.colemak.org/tarmak-intro.html)

### 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/contracts/src/schemas/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/contracts/src/schemas/themes.ts`
  - [ ] Add theme to `frontend/src/ts/constants/themes.ts`
  - [ ] Add theme css file to `frontend/static/themes` 
- [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/contracts/src/schemas/layouts.ts`
  - [x] Add layout json file to `frontend/static/layouts` 
  
- [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.
2025-05-26 16:03:25 +02:00
Nginearing
e28aa97285
feat(language): add viossa (@nginearing) (#6571)
### Description

This adds Viosssa as a language to Monkeytype. 
Viossa is a constructed language and has even been added to Minecraft
Java Edition, and has also been assigned an ISO-639-3 Code by the
ConLang Code Registry (https://www.kreativekorp.com/clcr/)

### Checks

- [X] Adding a language
  - [X] Added language to `packages/contracts/src/schemas/languages.ts`
- [X] Added language to exactly one group in
`frontend/src/ts/constants/languages.ts`
  - [X] Added language json file to `frontend/static/languages` 
  
- [X] Checked if there are any open issues are related to this PR.
- [X] PR title follows Conventional Commits standard.
- [X] Included GitHub username prefixed with @ inside parentheses at the
end of the PR title.
2025-05-26 15:44:57 +02:00
Miodec
fc2d85a9e5 chore: disable rule 2025-05-17 13:32:26 +02:00
Jack
ea90e0a99e
refactor: dont allow nullable numbers (@miodec) (#6564)
Enables strict boolean expressions rule for nullable numbers
2025-05-16 16:04:19 +02:00
Christian Fehmer
f1f4d17932
impr(profile): validate inputs for twitter, github and website (@fehmer) (#6544)
fixes #6543
2025-05-12 14:02:28 +02:00
Miodec
8370de1fa4 impr: add function to clearstreakhouroffset
!nuf
2025-05-12 13:52:37 +02:00
JN03
69d9b3814f
feat(language): add Thai 1K, 5K, 10K, 50K, and 60K (@jnx03) (#6498) 2025-05-07 15:30:26 +02:00
Christian Fehmer
eb092cea1c
refactor: move languages to contracts (@fehmer) (#6497) 2025-05-07 14:02:27 +02:00
Christian Fehmer
5ab7bfb438
refactor: move themes list to typescript (@fehmer) (#6489)
Co-authored-by: fehmer <3728838+fehmer@users.noreply.github.com>
2025-05-05 13:30:09 +02:00
Jack
b257a52f41
impr: add fallback and migrate to parsejsonwithschema (@miodec) (#6518)
!nuf
2025-05-03 12:14:35 +02:00
Miodec
faffc78abc chore: only add sentry plugin when building from release package 2025-04-30 14:13:51 +02:00
Miodec
5d4f449000 chore: dont use turbo cache in release script 2025-04-30 09:17:45 +02:00
Miodec
c8e964d0f6 refactor: add hotfix mode to release package 2025-04-30 08:25:04 +02:00
Miodec
e8c0fc08d0 chore: temporairly allow null discordIds 2025-04-29 13:51:53 +02:00
Miodec
f0f27f0733 chore: upgrade octokit/rest 2025-04-29 12:53:49 +02:00
Christian Fehmer
c253d2fd18
refactor: make customLayoutfluid an array (@fehmer) (#6494)
merge after #6487
2025-04-29 12:46:24 +02:00
Christian Fehmer
212b8d38cb
refactor: make funbox settings an array (@fehmer) (#6487)
change funbox from "hash separated values" to array.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-29 11:31:44 +02:00
Christian Fehmer
b36bc9f39e
refactor: move layout names to contracts (@fehmer) (#6495) 2025-04-28 11:29:52 +02:00
Jack
e06f7f41cf
refactor: add trycatch util (@miodec) (#6492)
Adds trycatch util to cleanup try catch code.
2025-04-26 21:24:39 +02:00
Miodec
f60dd0ac3c chore: remove false positive 2025-04-24 16:39:30 +02:00
Seif Soliman
86383cf9ef
refactor(backend): improve redis and json.parse type safety with zod (@byseif21, @miodec) (#6481)
### Description

refactored backend files to enhance type safety and reliability using
Zod validation and Redis instead of JSON.parse , I tried to avoid the
files that isn't necessary tho so I hope I don't miss any or included
unnecessary ones!! didn't fully test only verified code compilation and
partial tests without Redis!!.


Should Close #5881 
Related to #6207

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-24 16:25:43 +02:00
Miodec
a424f96480 chore: upgrade oxlint 2025-04-23 18:54:33 +02:00
Christian Fehmer
ac1d6f0847
feat(funbox): add ASL (@fehmer) (#6485) 2025-04-23 18:45:52 +02:00
Christian Fehmer
da671337c5
feat(funbox): add polyglot (@fehmer) (#6454)
Add polyglot funbox which let you practice on multiple languages at once
in a single test.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-04-18 16:48:35 +02:00