From d84d0c549b080e09276c8e0076af86a7fc7d24f7 Mon Sep 17 00:00:00 2001 From: Leonabcd123 <156839416+Leonabcd123@users.noreply.github.com> Date: Thu, 22 Jan 2026 19:02:29 +0200 Subject: [PATCH 1/8] fix(favorite-quote): can't favorite a quote (@Leonabcd123) (#7423) --- frontend/src/ts/modals/quote-search.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/ts/modals/quote-search.ts b/frontend/src/ts/modals/quote-search.ts index f9442110d618..b70941e4470b 100644 --- a/frontend/src/ts/modals/quote-search.ts +++ b/frontend/src/ts/modals/quote-search.ts @@ -472,9 +472,9 @@ async function toggleFavoriteForQuote(quoteId: string): Promise { const alreadyFavorited = QuotesController.isQuoteFavorite(quote); - const $button = modal + const button = modal .getModal() - .qsr(`.searchResult[data-quote-id=${quoteId}] .textButton.favorite i`); + .qsr(`.searchResult[data-quote-id="${quoteId}"] .textButton.favorite i`); const dbSnapshot = DB.getSnapshot(); if (!dbSnapshot) return; @@ -483,7 +483,7 @@ async function toggleFavoriteForQuote(quoteId: string): Promise { showLoaderBar(); await QuotesController.setQuoteFavorite(quote, false); hideLoaderBar(); - $button.removeClass("fas").addClass("far"); + button.removeClass("fas").addClass("far"); } catch (e) { hideLoaderBar(); const message = createErrorMessage( @@ -497,7 +497,7 @@ async function toggleFavoriteForQuote(quoteId: string): Promise { showLoaderBar(); await QuotesController.setQuoteFavorite(quote, true); hideLoaderBar(); - $button.removeClass("far").addClass("fas"); + button.removeClass("far").addClass("fas"); } catch (e) { hideLoaderBar(); const message = createErrorMessage(e, "Failed to add quote to favorites"); From e0bd4b026534a2641291394ec63b30b694a33b17 Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 22 Jan 2026 15:08:56 +0100 Subject: [PATCH 2/8] fix(result): graph scale button not working --- frontend/src/ts/test/result.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/ts/test/result.ts b/frontend/src/ts/test/result.ts index 8da4653d464f..d30d136573c1 100644 --- a/frontend/src/ts/test/result.ts +++ b/frontend/src/ts/test/result.ts @@ -1409,6 +1409,7 @@ ConfigEvent.subscribe(async ({ key }) => { ((ChartController.result.options as PluginChartOptions<"line" | "scatter">) .plugins.annotation.annotations as AnnotationOptions<"line">[]) = resultAnnotation; + ChartController.result.update(); ChartController.result.resize(); } }); From 190f8830cd01b83109c7d63b5542360463433b0b Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 22 Jan 2026 18:04:39 +0100 Subject: [PATCH 3/8] fix: unable to load saved custom texts --- frontend/src/ts/modals/saved-texts.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/ts/modals/saved-texts.ts b/frontend/src/ts/modals/saved-texts.ts index 051b3fb816ec..5f924bb5e40c 100644 --- a/frontend/src/ts/modals/saved-texts.ts +++ b/frontend/src/ts/modals/saved-texts.ts @@ -47,7 +47,7 @@ async function fill(): Promise { } longListEl.setHtml(longList); - modalEl.qs(".list .savedText .button.delete")?.on("click", (e) => { + modalEl.qsa(".list .savedText .button.delete")?.on("click", (e) => { const name = (e.target as HTMLElement) .closest(".savedText") ?.getAttribute("data-name"); @@ -60,7 +60,7 @@ async function fill(): Promise { }); }); - modalEl.qs(".listLong .savedLongText .button.delete")?.on("click", (e) => { + modalEl.qsa(".listLong .savedLongText .button.delete")?.on("click", (e) => { const name = (e.target as HTMLElement) .closest(".savedLongText") ?.getAttribute("data-name"); @@ -74,7 +74,7 @@ async function fill(): Promise { }); modalEl - .qs(".listLong .savedLongText .button.resetProgress") + .qsa(".listLong .savedLongText .button.resetProgress") ?.on("click", (e) => { const name = (e.target as HTMLElement) .closest(".savedLongText") @@ -88,14 +88,14 @@ async function fill(): Promise { }); }); - modalEl.qs(".list .savedText .button.name")?.on("click", (e) => { + modalEl.qsa(".list .savedText .button.name")?.on("click", (e) => { const name = (e.target as HTMLElement).textContent; CustomTextState.setCustomTextName(name, false); const text = getSavedText(name, false); hide({ modalChainData: { text, long: false } }); }); - modalEl.qs(".listLong .savedLongText .button.name")?.on("click", (e) => { + modalEl.qsa(".listLong .savedLongText .button.name")?.on("click", (e) => { const name = (e.target as HTMLElement).textContent; CustomTextState.setCustomTextName(name, true); const text = getSavedText(name, true); From 4d4ffb7b98c2a4a28b80c08c2020deb6f3012aef Mon Sep 17 00:00:00 2001 From: Seif Soliman Date: Thu, 22 Jan 2026 19:16:16 +0200 Subject: [PATCH 4/8] fix: some screenshot issues (@byseif21) (#7416) Co-authored-by: Miodec --- frontend/src/styles/index.scss | 5 ++++- frontend/src/styles/vendor.scss | 4 ++-- frontend/src/ts/components/layout/overlays/Overlays.tsx | 9 ++++++++- frontend/src/ts/signals/core.ts | 1 + frontend/src/ts/test/test-screenshot.ts | 9 ++++----- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/frontend/src/styles/index.scss b/frontend/src/styles/index.scss index 6a81fb596d29..9d1b742572ce 100644 --- a/frontend/src/styles/index.scss +++ b/frontend/src/styles/index.scss @@ -15,8 +15,11 @@ } } +// the screenshotting library has some issues with css layers +@import "fonts"; + @layer custom-styles { - @import "buttons", "fonts", "404", "ads", "account", "animations", "caret", + @import "buttons", "404", "ads", "account", "animations", "caret", "commandline", "core", "inputs", "keymap", "login", "monkey", "nav", "notifications", "popups", "profile", "scroll", "settings", "account-settings", "leaderboards", "test", "loading", "friends", diff --git a/frontend/src/styles/vendor.scss b/frontend/src/styles/vendor.scss index a97b0842ab56..8ce1826bcdb2 100644 --- a/frontend/src/styles/vendor.scss +++ b/frontend/src/styles/vendor.scss @@ -1,7 +1,7 @@ -@import "normalize.css" layer(normalize); +@import "fontawesome-5"; // the screenshotting library has some issues with css layers +@import "normalize.css" layer(normalize); @layer vendor { - @import "fontawesome-5"; @import "slim-select/styles"; @import "balloon-css/src/balloon"; } diff --git a/frontend/src/ts/components/layout/overlays/Overlays.tsx b/frontend/src/ts/components/layout/overlays/Overlays.tsx index 88aa2b82649c..f57b236c0c3f 100644 --- a/frontend/src/ts/components/layout/overlays/Overlays.tsx +++ b/frontend/src/ts/components/layout/overlays/Overlays.tsx @@ -1,6 +1,8 @@ import { JSXElement } from "solid-js"; +import { getIsScreenshotting } from "../../../signals/core"; import { showModal } from "../../../stores/modals"; +import { cn } from "../../../utils/cn"; import { ScrollToTop } from "../footer/ScrollToTop"; import { Banners } from "./Banners"; @@ -15,7 +17,12 @@ export function Overlays(): JSXElement {