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>
### 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>
### 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.
### 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>
### 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>
### 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
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>
### 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.
### 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
### 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.
### Description
Improved grammar, structure, and tone of the `docs/self_hosting.md` file
for better clarity and consistency. Changes include fixing typos,
rewording vague instructions, improving formatting, and aligning with
the overall documentation tone.
### Checks
- [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.
### Other notes
This PR does not add any quotes, languages, themes, or layouts.
---
Closes # (none)
### 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>
### 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.
### 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! :) -->
### 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>
### Description
fix the highlight animation for the account history table (when clicking
a chart dot) was not visible or only worked inconsistently. This was
because the animation was applied to the <tr> element, but the
background color for table rows is set on the <td> elements. As a
result, the animation was hidden by the static background color of the
table cells.
Closes #
---------
Co-authored-by: Miodec <jack@monkeytype.com>
### Description
Makes it so that the average wpm and accuracy indicators shown above the
typing area have their decimals visible when the
`alwaysShowDecimalPlaces` config option is set to true.
### 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.
### Description
- added [0xProto](https://github.com/0xType/0xProto) font file to
webfonts
- updated `frontend/static/{fonts/_list.json,styles/fonts.scss}` files
- tried it locally, here's a screenshot:
<img width="1920" height="1080" alt="Screenshot-18-07-2025-0414"
src="https://github.com/user-attachments/assets/597837b0-ce8c-4a32-8e08-52ded6c01901"
/>
### 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.
- [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! :) -->
### Description
* Fixes various compile errors in the Rust quotes.
* Removes trailing whitespace.
* Converts leading whitespace to tabs.
Note: This does not fix out of date issues (such as the rand API), or
the likely unnecessary uses of `extern crate` (since rust 2018).
Removed non-German accents / untypable loanwords
### Description
Since the German qwertz layout doesn't support certain accents, used in
some loanwords in this list, typing them is impossible, without changing
your keyboard layout mid-session. Using an automated script, I decided
to remove them, enhancing playability.
---------
Co-authored-by: fehmer <3728838+fehmer@users.noreply.github.com>
Description
15 polish proverbs and other quotes for polish language
Checks
Translations:
Agreement is reached when one party pretends to believe the nonsense
told by the other. - "id":216
Only six people in the Galaxy knew that the president's job was not to
wield power, but to distract from it. - "id":217
I have become death, the destroyer of worlds. - "id":218
If something is impossible to do, let the Poles do it.- "id":219
It's not how long you live, but how wisely you live. It's never too late
to learn and grow. Wisdom is priceless, regardless of age. - "id":220
Don't waste time, for it is the stuff life is made of. - "id":221
You praise others, you do not know your own, you do not know what you
have. - "id":222
Don't argue with a fool because he will drag you down to his level and
beat you with experience. - "id":223
It is better to remain silent and be thought a fool than to open your
mouth and remove all doubt. - "id":224
Clothes do not make the man, clothes are for the man, not man for
clothes. -"id":225
He who digs holes for another will fall into them himself. Therefore, do
not do to others what you would not want done to you. - "id":226
Don't judge a man by his clothes, but by the friends he has. For a man
is what he associates with. - "id":227
What goes around comes around. Don't put off until tomorrow what you can
do today. - "id":228
First a person learns to walk, then to run, then to speak, then to be
silent. It's crucial to do certain things in the right order. - "id":229
Don't praise the day before sunset, you're not sure what the end of the
day may bring.- "id":230
---------
Co-authored-by: Tomasz.Sobczak <Tomasz.Sobczak@fujitsu.com>
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>
### Description
Added 24 English quotes from the Pragmatic Programmer (2nd Edition)
### Checks
- [x] Adding quotes?
- [x] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [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.
### 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`.
### Description
* when the table got wider than the screen, it broke the layout and
pushed other elements out of view.
fixed it by `overflow-x: hidden`
* making the table itself more responsive, so it adapts across screen
sizes
* video ;
https://github.com/user-attachments/assets/c84272d1-4c77-4e59-980e-aab09c18d6a1Closes#6732
---------
Co-authored-by: Miodec <jack@monkeytype.com>
Description
15 polish movie quotes
Checks
Translations:
Grzegorz Brzęczyszczykiewicz. Chrząszczyrzewoszczyce, Łękołody County.-
"id":201
I am reporting obediently, Colonel, I caused this war completely
unintentionally. - "id":202
Everyone can help their luck, everyone can win today. Black loses, red
wins. One, two, three... - "id":203
He died on the way, certainly from his wounds. - It wasn't from his
wounds, sir! The plum brandy!- "id":204
You, come here. Where are you going? Come here to the master. How good!
What a pretty lady he has! Only she's so serious... And why is she so
serious, huh? Fat... Well, come on. What, some good peppers? Eat, eat.
If you don't eat, the lady will lock you up in a hole like us here. -
"id":205
Darkness, I see darkness, I see darkness. - "id":206
Saved! We're saved! The stork! Look! The stork! If he's alive, that
means we can too. Stork, stork!- "id":207
The league defends, the league advises, the league will never betray
you! - "id":208
In a few days, sir, it will only begin: interviews, autographs, visits
to workplaces. - "id":209
I, Prince Jeremi Wiśniowiecki, Voivode of Ruthenia, Lord of Łubnie and
Wiśniowiec, swear to you, living God, one in the Holy Trinity, that I
will not lay down this saber when I raise it against the scoundrels
until I have pacified Ukraine and drowned the peasant rebellions in
blood! So help me God! -"id":210
Maybe you want to wait until the drizzle stops. It's a shame to die in
such rain. - They'll bury the colonel, so the sky is crying. - "id":211
You're swinging like a flail! - Stop it, spare the shame. - "id":212
Lithuania! My homeland! You are like health. How much you must be
valued, only he who has lost you will know. Today I see and describe
your beauty in all its splendor, because I miss you. - "id":213
I always told you – abandon the trials. I always told you – invade,
invade! - "id":214
I have nothing, you have nothing, he has nothing... Together we have
enough to set up a large factory.- "id":215
Co-authored-by: Tomasz.Sobczak <Tomasz.Sobczak@fujitsu.com>