Commit graph

12539 commits

Author SHA1 Message Date
Y. Meyer-Norwood
31aa70a509
impr(quotes): add Esperanto (X-Sistemo) quotes (@norwd) (#7294)
This copies the original quotes, which still need to be converted to
x-sistemo notation.

### 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.
- [x] Adding quotes?
- [x] 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 screenshots 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)
-->
2026-01-06 15:44:37 +01:00
Leonabcd123
f8ec9da435
fix(custom-mode): chart problems in custom mode (@Leonabcd123) (#7293)
### Description

Round when user is in custom mode with limit mode being time.

Bug fixed:

- Switch to custom mode
- Set limit to some time
- Do tests until you get a finishing time of x.99
- Notice the last value in the chart is less than the value that came
before it, and is the value that came before it -0.01
2026-01-06 15:42:40 +01:00
Leonabcd123
ace96b3a61
impr(burst-history): Use end time when calculating burst if test ended (@Leonabcd123) (#7302)
### Description

Use the time when test ended to calculate burst instead of current time,
so that burst history matches more closely actual wpm .

Example bug fixed:

When typing a single letter, wpm will be infinity but burst history will
be ~90.

---------

Co-authored-by: Jack <jack@monkeytype.com>
2026-01-06 15:30:37 +01:00
Christian Fehmer
d2c93792ff
test: fix dom-utils mock (@fehmer) (#7319)
- parital mock dom-utils module, prevents errors like [no "onWindowLoad"
export is
defined](https://github.com/monkeytypegame/monkeytype/actions/runs/20730640347/job/59517489709#step:11:616)
- return empty `ElementsWithUtils` on `qsa` to prevent errors like
`.hide is not a function`
2026-01-06 11:14:46 +01:00
wRadion
2dc99e9e70
fix(friendlist): handle legacy pbs in friendlist frontend (show less details) (@wradion) (#7296)
### Description

Show less details for legacy PBs in the friendlist.

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

---------

Co-authored-by: Miodec <13181393+Miodec@users.noreply.github.com>
Co-authored-by: Miodec <jack@monkeytype.com>
2026-01-05 18:00:13 +01:00
Rizwan Mustafa Khan
785619c5e2
fix: tiny bug of using wrong port for creating app (@rizwanmustafa) (#7309)
### Description

Fix a tiny bug of not using the local variable passed to the function.
2026-01-05 17:54:22 +01:00
Leonabcd123
d09969f1ec
fix(tags): selected tags not being highlighted in test result (@Leonabcd123) (#7312)
### Description

Update `data-active-tag-ids` instead of `active-tag-ids`, extract
updating part from if statement. Fixes the following bug:

- Create a tag
- Complete a test
- Click on the edit tags button
- Click on the newly created tag
- Click on the edit tags button again
- The tag won't be highlighted in yellow

Co-authored-by: Jack <jack@monkeytype.com>
2026-01-05 17:54:06 +01:00
Martin
be4649c900
docs: fix typo in funbox JSDoc (@mpodhaisky) (#7306)
Fixes a minor typo in a JSDoc comment. No functional changes.
2026-01-05 17:50:46 +01:00
Christian Fehmer
7f499f0632
refactor(cmdline): change getList to support commands for configKeys (@fehmer) (#7288)
Co-authored-by: Jack <jack@monkeytype.com>
2026-01-05 15:10:32 +01:00
Leonabcd123
332b908330
fix(caret): caret problems when typing ltr characters in rtl word (@Leonabcd123) (#7287)
### Description

Use `unicode-bidi: bidi-override` so if a user tries to type in an ltr
language when the current word is in an rtl language, the ltr characters
will behave like rtl characters, mirroring the current behavior when you
type rtl characters in an ltr test.

Fixes some caret bugs, for example:

- Switch to rtl language
- Type the first word and some extra letters
- Caret isn't in the correct position
2026-01-05 15:08:26 +01:00
Miodec
38771f652d fix: missing backend schema update 2026-01-05 15:05:19 +01:00
large_r0dent
090dd0152e
impr(streak hour offset): support 30 min offsets (@large-r0dent) (#7269)
### Description
add 30 minute streak offsets as described in #7204 

i looked at the backend and i'm pretty sure that no changes are needed
there since there's nothing that works with it that wouldn't work with
floats.

---------

Co-authored-by: Jack <jack@monkeytype.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Miodec <13181393+Miodec@users.noreply.github.com>
2026-01-05 15:02:33 +01:00
Emma
03e306f3bd
feat(sound): add fart (@EmmaQWE) (#7245)
### Description

Added Fart sound effect for "sound > Play sound on click" category
I will need some help - this is my first pull for the repo - how would I
give it sound (and also that it appears in the play sound on click
menu)? The sound is in "frontend/static/sound/click16/fart-83471.mp3"

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2026-01-05 14:30:35 +01:00
Miodec
d3d4d14e20 refactor: move navbar to display flex
also remove old unused code
2026-01-03 22:43:10 +01:00
Miodec
5b0cc3c76d chore: format files 2026-01-03 22:37:20 +01:00
Miodec
f5054e65d3 refactor: move custom text schema to shared package 2026-01-03 22:31:51 +01:00
Jack
a51424a058
refactor: remove jq from simple-modals (@miodec) (#7307)
Also fixes bugs added in #7303
2026-01-02 20:25:16 +01:00
Jack
8fb18d61bb
refactor: use dom utils in animated-modal (@miodec) (#7303)
Refactor
2026-01-02 18:06:09 +01:00
Miodec
a7715fd054 chore: upgrade oxc 2026-01-01 11:45:54 +01:00
Miodec
d6233f3405 refactor: move result html into its own file 2025-12-26 21:26:43 +01:00
Miodec
765ca9569f refactor: use loadingOptions for leaderboards page 2025-12-22 22:44:52 +01:00
Leonabcd123
5d169e933a
refactor: remove JQuery from pages directory (@Leonabcd123) (#7237)
- [x] 404
- [x] about
- [x] account-settings
- [x] account
- [x] friends
- [x] leaderboards
- [x] loading
- [x] login
- [x] page
- [x] profile-search
- [x] profile
- [x] settings
- [x] test

Before merging make sure to load every changed page to check for the qsa
notification.

---------

Co-authored-by: Christian Fehmer <fehmer@users.noreply.github.com>
2025-12-21 16:24:07 +01:00
Seif Soliman
fd177c9ed4
chore: TypeError when deleting in zen (@byseif21) (#7282)
* fix error from race condition `Cannot read properties of null (reading
'remove')` when deletion in zen mode, added null check.

The active word could already be removed when the debounced update runs,
which caused a null error

---------

Co-authored-by: Jack <jack@monkeytype.com>
2025-12-21 11:50:10 +01:00
Miodec
a1240d3d7e refactor: clean up zen mode element removal 2025-12-21 11:28:26 +01:00
Jack
16b4ec88af
impr: add reset function to promiseWithResolvers (@miodec) (#7280)
Actual AI slop but if it works ?????

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-21 10:56:50 +01:00
Christian Fehmer
ef5ef0c427
feat(commandline): add sign out (@fehmer) (#7283) 2025-12-21 10:54:24 +01:00
Miodec
d11bdaa710 refactor: result saving code flow 2025-12-20 18:09:49 +01:00
Miodec
58b6162b11 chore: missing setInvalid calls 2025-12-20 18:09:49 +01:00
Miodec
11c2bff300 chore: reorder 2025-12-20 18:09:49 +01:00
Miodec
4fae28c0f6 chore: move result code to result file 2025-12-20 18:09:49 +01:00
Miodec
5f50628110 chore: remove unnecessary code 2025-12-20 18:09:49 +01:00
Miodec
2cba7576bd chore: move ui code to result 2025-12-20 18:09:49 +01:00
Miodec
1f4e616d74 refactor: move code around 2025-12-20 18:09:49 +01:00
Miodec
10f4a13c1f chore: move ui code out of the test-logic file 2025-12-20 18:09:49 +01:00
Christian Fehmer
dd2ec8c6b9
fix: dom-utils onChild calling handler for elements outside the parent (@fehmer) (#7279) 2025-12-20 17:17:09 +01:00
Christian Fehmer
bd3cd75c94
refactor: add currentTarget back to regular listeners, add childTarget to onChild listeners (@fehmer) (#7273)
rework `onChild` to behave mostly like jQuery `.on` with selector.

- we remove `currentTarget` from the `onChild` event handler because
native events and jQuery events have different values for it
- the jQuery `currentTarget` is available with `childTarget` in our
events

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2025-12-20 13:41:11 +01:00
Miodec
86ed9c2570 chore: ignore pnpm-lock 2025-12-20 11:05:27 +01:00
Arjun
1e2109bf60
impr(quotes): Add English quotes from XCOM: EU (@Zeden19) (#7264)
### 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.
- [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/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 screenshots 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! :) -->
2025-12-20 11:04:34 +01:00
Alex Rusbridge
5093dbe128
fix(british-english): adds british english spelling for english-medical.json (@AlexRusbridge) (#7278)
### Description

Adds British English spelling for words found in the english-medical
word list.

- Hematology terms (`hemo-`/`hema-` -> `haemo-`/`haema-`)
- Blood condition suffixes (`-emia` -> `-aemia`)
- White blood cell terms (`leuko-` -> `leuco-`)
- Respiratory terms (`-pnea` -> `-pnoea`)
- Other notable conversions (common patterns like `-ize` and other
cases)

### Checks

- [ ] ~Adding/modifying Typescript code?~
- [ ] ~Adding quotes?comment) so we can verify their content.~
- [ ] ~Adding a language?~
- [ ] ~Adding a theme?~
- [ ] ~Adding a layout?~
- [ ] ~Adding a font?~
- [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: Jack <jack@monkeytype.com>
2025-12-20 10:15:55 +01:00
Leonabcd123
8148b05dd6
fix(preset): Fix qsa warning on preset modal (@Leonabcd123) (#7277)
### Description

Use a more specific selector.
2025-12-19 23:40:48 +01:00
Jack
eb92e1af0d
impr: replace vite-plugin-checker with ~~vibe~~ (@miodec) (#7271)
vite plugin checker seems to happily spawn a new linting process per
file save, causing issues. This vibe coded solution kills the previously
running process. It also splits linting into two steps to get some fast
fail behavior.

I (AI) tried to merge it into one file but the overlay refused to show
that way.

!nuf
---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-19 22:29:56 +01:00
Leonabcd123
47712857f9
fix(blind-mode): make blind mode "on" text invisible (@Leonabcd123) (#7274)
### Description

Use `&ensp;` instead of the current, visible character.
2025-12-19 19:42:51 +01:00
Christian Fehmer
65e490c961
chore: use innerText on generate data modal (@fehmer) (#7276) 2025-12-19 19:42:34 +01:00
Leonabcd123
805c7ae7d9
fix(hide-extra-letters): extra letters with hideExtraLetters enabled causing caret problems (@Leonabcd123) (#7272)
### Description

Same solution as  #7254
2025-12-19 17:00:02 +01:00
Christian Fehmer
ca9dac17a7
refactor: remove currentTarget from dom-utils event handlers (@fehmer) (#7270) 2025-12-19 12:55:16 +01:00
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
Miodec
484ab1bd5f chore: remove jquery from toggleSettingsGroup 2025-12-18 19:21:40 +01:00
Leonabcd123
9d709c7c7c
impr(quote search): add exact search quotes (@Leonabcd123) (#7261)
### Description

Make text wrapped in `""` required when searching for quotes (meaning
only quotes that contain this exact text will appear in the results).
This allows case insensitivity (so "hello" will match "Hello").
2025-12-18 17:22:44 +01:00
Miodec
8d1eefc5ba fix: account icon alignment when not using an avatar 2025-12-18 16:36:12 +01:00