From 043225d0cdda38d3efb746cb7412f59bc2f79547 Mon Sep 17 00:00:00 2001 From: XangelMusic Date: Fri, 23 Jan 2026 15:35:30 +0800 Subject: [PATCH 1/4] fix: Settings Button moved to YouTube Chat menu --- src/assets/outline.svg | 18 ++++++++ src/components/HyperchatButton.svelte | 21 +-------- src/components/SettingsButton.svelte | 62 +++++++++++++++++++++++++++ src/scripts/chat-injector.ts | 23 ++++++++-- src/vite-env.d.ts | 6 +++ 5 files changed, 107 insertions(+), 23 deletions(-) create mode 100644 src/assets/outline.svg create mode 100644 src/components/SettingsButton.svelte create mode 100644 src/vite-env.d.ts diff --git a/src/assets/outline.svg b/src/assets/outline.svg new file mode 100644 index 00000000..2ccc0a80 --- /dev/null +++ b/src/assets/outline.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/components/HyperchatButton.svelte b/src/components/HyperchatButton.svelte index 881e185d..c2e0e675 100644 --- a/src/components/HyperchatButton.svelte +++ b/src/components/HyperchatButton.svelte @@ -1,8 +1,7 @@ + +
+
+
+ {@html outline} +
+
+
HyperChat Settings
+
+ + \ No newline at end of file diff --git a/src/scripts/chat-injector.ts b/src/scripts/chat-injector.ts index 3186a2c0..522275f8 100644 --- a/src/scripts/chat-injector.ts +++ b/src/scripts/chat-injector.ts @@ -1,4 +1,5 @@ import HcButton from '../components/HyperchatButton.svelte'; +import HcSettings from '../components/SettingsButton.svelte'; import { getFrameInfoAsync, isValidFrameInfo, frameIsReplay, checkInjected } from '../ts/chat-utils'; import { isLiveTL } from '../ts/chat-constants'; import { hcEnabled, autoLiveChat } from '../ts/storage'; @@ -75,7 +76,7 @@ const chatLoaded = async (): Promise => { setTheme(isDark); wasDark = isDark; }; - new MutationObserver(sendTheme).observe(html, { + new MutationObserver(sendTheme).observe(document.body, { attributes: true }); sendTheme(); @@ -89,11 +90,27 @@ const chatLoaded = async (): Promise => { console.error('Failed to find #primary-content'); return; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const hcButton = new HcButton({ + new HcButton({ target: ytcPrimaryContent }); + // Inject HC settings + const injectSettings = (): void => { + // Prevent duplicates + if (document.getElementById('hc-settings')) return; + const ytcItemMenu = document.querySelector('tp-yt-paper-listbox#items'); + if (!ytcItemMenu) return; + + new HcSettings({ + target: ytcItemMenu + }); + } + + new MutationObserver(injectSettings).observe(document.body, { + childList: true, + subtree: true + }); + // Everything past this point will only run if HC is enabled if (!hyperChatEnabled) return; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 00000000..79ebb242 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,6 @@ +/// + +declare module '*.svg?raw' { + const content: string; + export default content; +} From 72fc5a90a5ba52265647b313811dc4dfbf4213f8 Mon Sep 17 00:00:00 2001 From: XangelMusic Date: Sat, 24 Jan 2026 17:51:39 +0800 Subject: [PATCH 2/4] fix: ESLint fix --- src/components/SettingsButton.svelte | 122 +++++++++++++-------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/src/components/SettingsButton.svelte b/src/components/SettingsButton.svelte index ac7647ea..df017824 100644 --- a/src/components/SettingsButton.svelte +++ b/src/components/SettingsButton.svelte @@ -1,62 +1,62 @@ - - -
-
-
- {@html outline} -
-
-
HyperChat Settings
-
- - \ No newline at end of file From 766c92f1b03a90573cfbcfde48e22a31ff91a222 Mon Sep 17 00:00:00 2001 From: XangelMusic Date: Sun, 25 Jan 2026 03:28:01 +0800 Subject: [PATCH 3/4] fix: ESLint fix --- src/components/HyperchatButton.svelte | 9 +-------- src/components/SettingsButton.svelte | 18 +++++++----------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/components/HyperchatButton.svelte b/src/components/HyperchatButton.svelte index c2e0e675..6805697c 100644 --- a/src/components/HyperchatButton.svelte +++ b/src/components/HyperchatButton.svelte @@ -73,14 +73,7 @@ cursor: pointer; transition: box-shadow 0.2s; } - .toggleButton .floating-icon { - position: absolute; - bottom: 5px; - right: 3px; - width: 15px; - height: 15px; - } - + .toggleButton.disabled { color: var(--yt-live-chat-secondary-text-color); } diff --git a/src/components/SettingsButton.svelte b/src/components/SettingsButton.svelte index df017824..3869f9c1 100644 --- a/src/components/SettingsButton.svelte +++ b/src/components/SettingsButton.svelte @@ -10,15 +10,16 @@
-
-
+
+
{@html outline}
-
HyperChat Settings
+
HyperChat Settings