Commit graph

12061 commits

Author SHA1 Message Date
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
Jack
4dd8755aa0
refactor(commandline): rework commandline to use metadata approach (@miodec, @fehmer) (#6779)
Brr

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2025-07-28 13:08:38 +02:00
Christian Fehmer
f2b34a541f
feat: allow user to use local file as background (@fehmer, @byseif21, @miodec) (#6663)
Allow the user to use a local file as custom background without
uploading it to the server.

Based on @byseif21 work in #6630, thanks!

---------

Co-authored-by: Miodec <jack@monkeytype.com>
Co-authored-by: Lukas <dev@mardybum.de>
Co-authored-by: Seif Soliman <byseif21@gmail.com>
2025-07-28 12:52:07 +02:00
Miodec
b024e8ea46 fix: custom background not working 2025-07-27 20:02:54 +02:00
Seif Soliman
e5b0978d4e
fix(settings): ensure themes UI is always up-to-date when renavigating (@byseif21) (#6581)
### Description
When (changing / adding or removing themes from favorite ) via command
line or from the current theme button "in page e.g test page" and then
navigating to Settings > Themes, the UI does not immediately reflect the
current theme changes . The user has to manually refresh the page to see
these changes.

**Now**
 UI automatically refreshes
to reflect the current theme selection and favorites without requiring
a manual page refresh.

- Added refreshThemeUI function in theme-picker.ts that updates all
  theme-related UI components
- Called this refresh function in the settings page's beforeShow
lifecycle hook to ensure the theme UI is always up-to-date when the page
is displayed.


**FOR TESTING BEFORE & AFTER:**
keep changing themes then navigate to the settings and check and keep
doing those things again to verify that the active theme and favorites
update.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-27 19:43:43 +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
32ff95a2a7
fix(login): clear data on logout (@fehmer) (#6791)
fixes #6789
2025-07-27 19:36:19 +02:00
Miodec
28c1cccd57 fix: partially completed last words not being counted in custom timed mode 2025-07-27 18:33:44 +02:00
Christian Fehmer
0ee4b2960a
fix(settings): skip update settings page if not active (@fehmer) (#6783) 2025-07-26 19:10:42 +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
Christian Fehmer
e32155edbb
impr: add validations to settings input (@fehmer) (#6751)
Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-25 15:07:04 +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
Seif Soliman
2fc7aa5981
fix(themes): clipped logo letters in some themes (@byseif21) (#6745)
### Description

all themes that use `background-clip: text` should have the
`padding-bottom: 0.1em` to prevent the cut logo letters.

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-07-25 14:32:24 +02:00
Hussain Asim Al Sayed Ali
4a14ae45eb
fix(account-settings): prevent unauthorized error on ape keys after logout (@hussain-alsayedali) (#6746)
### Description

The getData function will check if the user is authenticated before
being called, as the issue seems with updateUI function begin called
some times when the user logs out
monkeytype\frontend\src\ts\pages\account-settings.ts

Tried to replicate the issue but it only happens once every while, don't
know why it don't happen everytime.




Issue : 
https://github.com/monkeytypegame/monkeytype/issues/6742
2025-07-25 14:17:56 +02:00
sobczaktm
fc438ec454
impr(quotes): polish quotes and law of physics for polish language (@sobczaktm) (#6772)
Description
polish quotes and law of physics for polish language

Checks
Translations:
I will never serve any king or emperor, only my homeland. - "id":231

Nothing in life is to be feared, it is only to be understood. - "id":232

Until I used the Internet, I didn't know there were so many idiots in
the world. - "id":233

Mathematics is the only field in which nothing can be hidden.- "id":234

It is not enough to speak to the point, you also need to speak to
people. - "id":235

Mathematics is the most beautiful language in the world. - "id":236

Science should serve humanity, not its destruction. - "id":237

If no force acts on a body or the forces acting on it are balanced, the
body remains at rest or continues in uniform rectilinear motion. -
"id":238

If a constant force acts on a body, it moves with uniform acceleration,
and the acceleration is directly proportional to the force acting on the
body and inversely proportional to the mass of the body. - "id":239

Any two bodies attract each other with a force that is proportional to
the product of their masses and inversely proportional to the square of
the distance between them. -"id":240

If body A exerts a force on body B, then body B exerts a force on body A
of equal magnitude but in the opposite direction. - "id":241

The current in a conductor is proportional to the voltage and inversely
proportional to the resistance. - "id":242

Energy cannot be created or destroyed - it can only change form. -
"id":243

A body immersed in a liquid is subjected to a buoyant force equal to the
weight of the displaced liquid. - "id":244

The electrostatic force between two charges is proportional to the
product of the magnitudes of these charges and inversely proportional to
the square of the distance between them.- "id":245

---------

Co-authored-by: Tomasz.Sobczak <Tomasz.Sobczak@fujitsu.com>
2025-07-25 14:17:12 +02:00
Eric Zhang
b6a7662fa3
impr(quotes): add quotes from Atomic Habits by James Clear (@Eric-Zhang-Developer) (#6773)
### Description

Added 6 of the most popular quotes on Goodreads from *Atomic Habits: An
Easy & Proven Way to Build Good Habits & Break Bad Ones* by James Clear.

### Checks

- [x] 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` 
- [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:16:30 +02:00
Nitin
2df72cc692
docs(example.env): improve clarity of docker/example.env config for self-hosting (@nitin-is-me) (#6777)
### Description

Improved the `docker/example.env` file to make it more beginner-friendly
and easier to configure for self-hosters.

Changes made:
- Added section headers for clarity (e.g. Required Config, Firebase
Config, etc.)
- Clarified which settings are optional (Firebase, email, ports)
- Added better inline comments explaining each env variable
- Improved formatting and spacing for better readability

---

### Checks

- [x] Make sure the PR title follows the Conventional Commits standard.
- [ ] Adding quotes? (N/A)
- [ ] Adding a language? (N/A)  
- [ ] Adding a theme? (N/A)  
- [ ] Adding a layout? (N/A)  
- [x] Check if any open issues are related – None that I found

---

### Closes

N/A
2025-07-25 14:15:33 +02:00
nafets-st
2af1f7901a
fix(quotes): code_java compilation fixes (@nafets-st) (#6778)
### Description

Fixes some compilation issues in the java quotes.
2025-07-25 14:14:55 +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