Commit graph

12369 commits

Author SHA1 Message Date
Leonabcd123
f54c8a8cd8
impr(practice-words): Add option to practice missed and slow words from commandline (@Leonabcd123) (#7125)
### Description

Added an option to practice both missed and slow words from the command
line by doing esc -> Practice words -> both.

Implements #5753
2025-11-26 22:51:08 +01:00
28Zapper
31e07e28ab
impr(quotes): add quote to the english repository (@28Zapper) (#7113)
impr(quotes): Added a quote from UNDERTALE to
`./frontend/static/quotes/english.json`. (@28Zapper)

---------

Co-authored-by: Miodec <13181393+Miodec@users.noreply.github.com>
2025-11-26 22:40:56 +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
Jérémie Roquet
ddd5eb40d7
fix(language): add missing ligatures in french_10k (@Arkanosis) (#7111)
In some words, only the ligature was missing; in others, the letters
were too.

Missing ligature only:
 - cœur
 - œil
 - œuvre

Missing letters as well:
 - manœuvres
 - manœuvre
 - chœur
 - nœud
 - coup d'œil
 - blanc d'œuf
2025-11-26 22:32:51 +01:00
Aquaduckd
dcc4e40529
fix(layout): pine v4 (#7110)
the K key should be lowercase on the main layer
2025-11-26 22:32:07 +01:00
Miodec
60d1aac72e fix: composition update not making sounds 2025-11-26 17:52:24 +01:00
Miodec
f63972a63c fix: ellipsis not working correctly
closes #7156
closes #7149
2025-11-26 17:43:13 +01:00
Miodec
0faccf7cb1 chore: release v25.48.0 2025-11-26 13:17:33 +01:00
Miodec
a552272cd4 fix: skill issue fix not fitting on mobile screens 2025-11-26 10:45:24 +01:00
Miodec
3375419023 fix: unable to enter fullscreen on result page 2025-11-26 10:08:57 +01:00
Miodec
0d9a1d9da5 fix: backspace always playing error sound 2025-11-25 18:39:15 +01:00
Miodec
68266101d0 refactor: move data normalization to a function 2025-11-25 10:53:45 +01:00
Miodec
43e0bc783f refactor: move const inside an if 2025-11-25 10:37:54 +01:00
Miodec
54b9220a2f fix: arrows funbox not working 2025-11-25 10:36:44 +01:00
Miodec
e3135550d5 fix: nospace not working 2025-11-25 10:23:07 +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
aad3912eee fix: set korean status based on generated words 2025-11-23 22:46:57 +01:00
Miodec
cc9eee1986 chore: reorder folders 2025-11-23 22:21:02 +01:00
Miodec
f4f4057dd9 fix(zen mode): newline not working 2025-11-23 21:40:43 +01:00
Leonabcd123
dfa716a41a
fix(test): restart not working in long tests (@Leonabcd123) (#7143)
### Description

Fixed a bug where you can't use shift + quick restart key to restart
long tests. I didn't touch the enter one because it seemed to use a
different logic (double tapping shift + enter) and I'm not sure why it
does.
2025-11-23 21:39:59 +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
Miodec
eab1737ea9 fix: alt space highlighting correct word as incorrect
also updates tests to just use the implementation instead of mocking it
2025-11-23 19:24:35 +01:00
Miodec
d617513fcf chore: add comment 2025-11-23 19:24:35 +01:00
Miodec
4e7bda0238 fix(input): broken accents in safari
turns out safari uses a completely different event for composition ending
2025-11-23 19:24:35 +01:00
Miodec
f86f253561 fix: non-breaking space behaving like a character 2025-11-23 19:24:35 +01:00
Leonabcd123
595ff27766
fix(custom-theme): Remove duplicate .customTheme selectors (@Leonabcd123) (#7120)
### Description

Removed duplicate `.customTheme` selectors to make:

```
$(`.pageSettings .tabContent.customTheme #${color}[type='color']`).attr(
  "value"
)
```

Select the custom theme data inputs successfully.

Closes #7121
Closes #7122
2025-11-23 17:13:42 +01:00
Miodec
13d7752c6d chore: add command to fix skill issue 2025-11-23 16:04:35 +01:00
Jack
ea84adfb42
refactor: input rewrite v3 (@miodec) (#7119)
input goes brr
2025-11-23 15:52:52 +01:00
Miodec
04d9ed2418 chore: add initial value 2025-11-22 19:48:15 +01:00
Miodec
bd5b91e669 chore: lower min fps to 15 2025-11-21 19:08:04 +01:00
Miodec
a5f2a5be9f fix: double caret on webkit devices 2025-11-20 17:53:10 +01:00
Miodec
2107c87fdb chore: upgrade oxlint
also enables prefer-includes
2025-11-20 12:22:58 +01:00
Miodec
8e9379203e chore: add protection against all custom theme colors being the same 2025-11-19 19:00:17 +01:00
Miodec
6c3adc0e96 chore: change from type assertion to type definition for stronger type checking 2025-11-19 12:55:16 +01:00
Miodec
36574b4096 impr: add monkey caret style
also moves caret images to a folder
2025-11-19 11:08:36 +01:00
Miodec
5a9038cfef chore: move code 2025-11-18 20:01:55 +01:00
Miodec
3454da18e0 fix(animation modal): animations stacking unnecessairly 2025-11-18 17:23:44 +01:00
Miodec
fa669fb274 fix: custom theme color pickers not working 2025-11-18 16:35:18 +01:00
Miodec
4cc1c09561 chore: move files 2025-11-17 13:02:15 +01:00
Jack
2536087276
refactor: use animejs instead of jquery (@miodec) (#7101)
Also changes how slow timer is handled - now the animation frame rate is
reduced to 30fps instead of disabling them entirely.
2025-11-17 12:59:56 +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
Christian Fehmer
e1e1bfb306
fix(test): don't ignore caps lock in layout emulator (@fehmer) (#7107)
With layout emulation set to qwerty and caps-lock enabled keypresses are
registered as lowercase.
2025-11-14 13:41:07 +01:00
Christian Fehmer
0e4b9c4687
impr: handle backend unavailable in remote validations (@fehmer) (#7105) 2025-11-13 17:12:37 +01:00
Christian Fehmer
05afcc51f9
impr(leaderboard): fix icons on friend xp leaderboards (@fehmer) (#7106) 2025-11-13 15:40:10 +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
949e2baa48
perf: optimize friend queries (@fehmer) (#7080)
Combine two queries (first get all friend UIDs, then call leaderboard)
into one query to reduce db roundtrips.

Use the same approach for the friends list in user dal.

Note: when updating mongodb to 6+ we could use unionWith in case we
don't need the metadata (lb use-case)
2025-11-13 15:31:55 +01:00
Christian Fehmer
81f09b9b90
build: extract vite plugins (@fehmer) (#7103) 2025-11-12 16:54:56 +01:00
Christian Fehmer
8ee7e94d46
fix(leaderboards): show correct rank in friends weekly leaderboard (@fehmer) (#7104) 2025-11-12 15:33:32 +01:00
Miodec
60fffb15f8 chore: release v25.46.0 2025-11-12 14:44:52 +01:00