From 9fc5a8fbf88e9a7847d955c88692afa60c0ad170 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 23 Sep 2026 06:04:50 +0000 Subject: [PATCH 1/4] Initial plan From dba2c6712cf79dd94edcde17afdb5b34ad839c1e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 23 Sep 2026 06:08:26 +0000 Subject: [PATCH 2/4] Fix H@H translated client list font alignment Co-authored-by: OpportunityLiu <13471233+OpportunityLiu@users.noreply.github.com> --- src/plugin/syringe/index.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/plugin/syringe/index.ts b/src/plugin/syringe/index.ts index ff73fba9f..7aef51795 100644 --- a/src/plugin/syringe/index.ts +++ b/src/plugin/syringe/index.ts @@ -37,6 +37,7 @@ function childNodes(node: Node): Node[] { const skipNodeName = new Set(['TITLE', 'LINK', 'META', 'HEAD', 'SCRIPT', 'BR', 'HR', 'STYLE', 'MARK']); const ignoreClassName = `eh-syringe-ignore`; const skipElementMatcher = `.${ignoreClassName}, .${ignoreClassName} *, [translate=no], [translate=no] :not([translate=yes])`; +const hAthFontStyleId = 'ehs-hath-font-style'; declare global { interface Window { @@ -259,6 +260,7 @@ export class Syringe { this.config = config; this.storage.set('config', config); this.setRootAttrs(); + this.setPageStyles(); this.translateTags(); } @@ -304,6 +306,7 @@ export class Syringe { this.documentEnd = true; }); this.setRootAttrs(); + this.setPageStyles(); const { body } = document; if (body) { const nodes = childNodes(body); @@ -363,6 +366,7 @@ export class Syringe { readonly isEh = isEh(location.hostname); readonly isRepo = isRepo(location.hostname); readonly isWiki = isWiki(location.hostname); + readonly isHentaiAtHome = location.pathname === '/hentaiathome.php'; setRootAttrs(): void { const node = document.documentElement; if (!node) return; @@ -399,6 +403,19 @@ export class Syringe { node.classList.add(`ehs-image-level-${this.config.introduceImageLevel}`); } + private setPageStyles(): void { + const style = document.getElementById(hAthFontStyleId); + if (!this.isHentaiAtHome || !this.config.translateUi) { + style?.remove(); + return; + } + if (style) return; + const nextStyle = document.createElement('style'); + nextStyle.id = hAthFontStyleId; + nextStyle.textContent = ':root { font-family: sans-serif; }'; + (document.head ?? document.documentElement)?.append(nextStyle); + } + translateNode(node: Node): void { const { nodeName } = node; if (!nodeName || skipNodeName.has(nodeName)) return; From 9943cd042962828500366c17326fdf0ba07236e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 23 Sep 2026 06:10:51 +0000 Subject: [PATCH 3/4] Scope H@H font fix to client list Co-authored-by: OpportunityLiu <13471233+OpportunityLiu@users.noreply.github.com> --- src/plugin/syringe/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugin/syringe/index.ts b/src/plugin/syringe/index.ts index 7aef51795..5cd77a1a8 100644 --- a/src/plugin/syringe/index.ts +++ b/src/plugin/syringe/index.ts @@ -412,7 +412,7 @@ export class Syringe { if (style) return; const nextStyle = document.createElement('style'); nextStyle.id = hAthFontStyleId; - nextStyle.textContent = ':root { font-family: sans-serif; }'; + nextStyle.textContent = '#hct { font-family: sans-serif; }'; (document.head ?? document.documentElement)?.append(nextStyle); } From d64382dc3466eed6ccf848d1f4db549817f85ac9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 23 Sep 2026 06:11:57 +0000 Subject: [PATCH 4/4] Polish H@H font fix formatting Co-authored-by: OpportunityLiu <13471233+OpportunityLiu@users.noreply.github.com> --- src/plugin/syringe/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugin/syringe/index.ts b/src/plugin/syringe/index.ts index 5cd77a1a8..da50df0e1 100644 --- a/src/plugin/syringe/index.ts +++ b/src/plugin/syringe/index.ts @@ -367,6 +367,7 @@ export class Syringe { readonly isRepo = isRepo(location.hostname); readonly isWiki = isWiki(location.hostname); readonly isHentaiAtHome = location.pathname === '/hentaiathome.php'; + setRootAttrs(): void { const node = document.documentElement; if (!node) return;