- **build: replace dotenv with vite env variables (@fehmer)**
- **build: combine vite config into a single file (@fehmer)**
---------
Co-authored-by: Miodec <jack@monkeytype.com>
Together with #7119, input handling is 3x faster. Achieved by:
- deferring all UI updates to when the browser is ready and debouncing
ui calls.
- using vanilla js where needed
- caching dom elements
- disabling expensive checks if the timer is slow
- switching to a timer that uses RAF instead of setTimeout
- moving some code around
This should make the site smother on slower devices and fix lag spikes
causing weird test data.
### Description
Changed friends tooltip message from "max streak" to "longest streak".
Please close the PR if this was intentional wording.
### 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`
- [ ] 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 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.
Closes#7127
Co-authored-by: Ashiq Renju <ashiqrdev@gmail.com>
### Description
Added a new filter option in the quotes search page that allows the user
to search for quotes by a minimum and a maximum length.
Implementing #1323
---------
Co-authored-by: Jack <jack@monkeytype.com>
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.7
to 7.0.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nodemailer/nodemailer/releases">nodemailer's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.11</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.10...v7.0.11">7.0.11</a>
(2025-11-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>prevent stack overflow DoS in addressparser with deeply nested
groups (<a
href="b61b9c0cfd">b61b9c0</a>)</li>
</ul>
<h2>v7.0.10</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.9...v7.0.10">7.0.10</a>
(2025-10-23)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Increase data URI size limit from 100KB to 50MB and preserve content
type (<a
href="28dbf3fe12">28dbf3f</a>)</li>
</ul>
<h2>v7.0.9</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.8...v7.0.9">7.0.9</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>release:</strong> Trying to fix release proecess by
upgrading Node version in runner (<a
href="579fce4683">579fce4</a>)</li>
</ul>
<h2>v7.0.8</h2>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.7...v7.0.8">7.0.8</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>addressparser:</strong> flatten nested groups per RFC 5322
(<a
href="8f8a77c67f">8f8a77c</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md">nodemailer's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.10...v7.0.11">7.0.11</a>
(2025-11-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>prevent stack overflow DoS in addressparser with deeply nested
groups (<a
href="b61b9c0cfd">b61b9c0</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.9...v7.0.10">7.0.10</a>
(2025-10-23)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>Increase data URI size limit from 100KB to 50MB and preserve content
type (<a
href="28dbf3fe12">28dbf3f</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.8...v7.0.9">7.0.9</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>release:</strong> Trying to fix release proecess by
upgrading Node version in runner (<a
href="579fce4683">579fce4</a>)</li>
</ul>
<h2><a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.7...v7.0.8">7.0.8</a>
(2025-10-07)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>addressparser:</strong> flatten nested groups per RFC 5322
(<a
href="8f8a77c67f">8f8a77c</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3d17dbec49"><code>3d17dbe</code></a>
chore(master): release 7.0.11 (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1783">#1783</a>)</li>
<li><a
href="15879f8bd5"><code>15879f8</code></a>
Bumped dev dependencies</li>
<li><a
href="b61b9c0cfd"><code>b61b9c0</code></a>
fix: prevent stack overflow DoS in addressparser with deeply nested
groups</li>
<li><a
href="4175e4baf9"><code>4175e4b</code></a>
chore(master): release 7.0.10 (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1776">#1776</a>)</li>
<li><a
href="d882ccfe8d"><code>d882ccf</code></a>
Merge branch 'master' of github.com:nodemailer/nodemailer</li>
<li><a
href="1d7e4f786b"><code>1d7e4f7</code></a>
Bumped deps</li>
<li><a
href="10bd871656"><code>10bd871</code></a>
chore: correct typo in variable name (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1773">#1773</a>)</li>
<li><a
href="28dbf3fe12"><code>28dbf3f</code></a>
fix: Increase data URI size limit from 100KB to 50MB and preserve
content type</li>
<li><a
href="92ae1c49e3"><code>92ae1c4</code></a>
chore(master): release 7.0.9 (<a
href="https://redirect.github.com/nodemailer/nodemailer/issues/1769">#1769</a>)</li>
<li><a
href="c675d9e7e5"><code>c675d9e</code></a>
Merge branch 'master' of github.com:nodemailer/nodemailer</li>
<li>Additional commits viewable in <a
href="https://github.com/nodemailer/nodemailer/compare/v7.0.7...v7.0.11">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by [GitHub Actions](<a
href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a>
Actions), a new releaser for nodemailer since your current version.</p>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/monkeytypegame/monkeytype/network/alerts).
</details>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Miodec <jack@monkeytype.com>
### Description
Added a checkbox in the words filter modal that allows the user to make
all characters not in the include list be excluded.
Implements #5970
---------
Co-authored-by: Miodec <jack@monkeytype.com>
### Description
Added a new style named "incomplete" that mirrors the error style, but
uses yellow for the color. Words are marked in this style when they
don't match the correct word exactly, but share the same prefix.
Implements #6690
---------
Co-authored-by: Jack <jack@monkeytype.com>
### Description
This copies the existing `text` timerstyle except on timed modes, where
it will only show the remaining progress (seconds) on every 15th second
(shows on 1:00, 45, 30, 15 and 0).
The motivation for this addition was that I wanted a middle ground
between the `text` timerstyle (in my opinion just a _little_ too
distracting) and no live progress indicator at all (I lose track of how
much time remains in the test), and I believe this achieves that middle
ground.
---------
Co-authored-by: Miodec <jack@monkeytype.com>