From 95962b4aa41af486d8acf800371e7062ce6fd84a Mon Sep 17 00:00:00 2001 From: noelorin Date: Sun, 27 Sep 2026 12:57:49 +0800 Subject: [PATCH] style: biome formatting wave + clear web lint (selector order, safe list keys) --- app/web/src/components/pages/WatchBody.tsx | 56 ++++++++++--------- app/web/src/styles/globals.css | 23 +++++--- packages/danmaku/src/client.ts | 4 +- packages/models/src/index.ts | 6 +- packages/trpc/src/services/scrape.service.ts | 6 +- .../trpc/src/services/settings.service.ts | 5 +- 6 files changed, 54 insertions(+), 46 deletions(-) diff --git a/app/web/src/components/pages/WatchBody.tsx b/app/web/src/components/pages/WatchBody.tsx index 221352c..c904542 100644 --- a/app/web/src/components/pages/WatchBody.tsx +++ b/app/web/src/components/pages/WatchBody.tsx @@ -730,10 +730,10 @@ function WatchInner(props: { locale: Locale; mediaItemId: string }) { const active = Math.abs(c.time - currentTime) < 0.5 || (c.time <= currentTime && - (i === listComments.length - 1 || - listComments[i + 1]!.time > currentTime)); + (listComments[i + 1]?.time ?? + Number.POSITIVE_INFINITY) > currentTime); return ( -
  • +
  • -
  • - ))} - - )} + + )} {sourceAnimeId != null && (
    diff --git a/app/web/src/styles/globals.css b/app/web/src/styles/globals.css index 61e08dd..aac5f66 100644 --- a/app/web/src/styles/globals.css +++ b/app/web/src/styles/globals.css @@ -186,6 +186,17 @@ select { font-variant-numeric: tabular-nums; } +/* 组件内 u-mono 调整:置于 .u-linelink:hover 等更高特异性规则之前 */ +.u-hud-strip .u-mono { + flex-shrink: 0; +} + +.side-rail__link .u-mono { + font-size: 10px; + letter-spacing: 0.14em; + color: var(--ink-3); +} + .u-label { font-family: var(--font-mono); font-size: 10px; @@ -246,7 +257,9 @@ html.has-reveal .u-reveal.is-in { opacity: 1; transform: none; } -/* island 内部不依赖 JS 加类:入场后直接显示,避免 hydration 冲突 */ +/* island 内部不依赖 JS 加类:入场后直接显示,避免 hydration 冲突。 + 两条规则需按源序覆盖上一条的初始隐藏态,故不做特异性排序。 */ +/* biome-ignore lint/style/noDescendingSpecificity: 源序覆盖是刻意的级联依赖 */ astro-island .u-reveal, html.has-reveal astro-island .u-reveal { opacity: 1; @@ -500,9 +513,6 @@ html.has-reveal astro-island .u-reveal { font-size: 10px; letter-spacing: 0.18em; } -.u-hud-strip .u-mono { - flex-shrink: 0; -} /* —— 左侧固定竖栏 —— */ .side-rail { @@ -572,11 +582,6 @@ html.has-reveal astro-island .u-reveal { color 0.2s ease, border-color 0.2s ease; } -.side-rail__link .u-mono { - font-size: 10px; - letter-spacing: 0.14em; - color: var(--ink-3); -} .side-rail__link:hover, .side-rail__link:focus-visible { background: color-mix(in srgb, var(--edge) 8%, transparent); diff --git a/packages/danmaku/src/client.ts b/packages/danmaku/src/client.ts index 5bc6b63..77d2aa1 100644 --- a/packages/danmaku/src/client.ts +++ b/packages/danmaku/src/client.ts @@ -164,7 +164,9 @@ function parseAnime(a: RawAnime): OpenAnimeBrief | null { type: a.type ?? null, typeDescription: a.typeDescription ?? null, imageUrl: a.imageUrl ?? null, - episodes: (a.episodes ?? []).map(parseEpisode).filter((x): x is OpenEpisodeBrief => x != null), + episodes: (a.episodes ?? []) + .map(parseEpisode) + .filter((x): x is OpenEpisodeBrief => x != null), }; } diff --git a/packages/models/src/index.ts b/packages/models/src/index.ts index 98117b2..ad533d1 100644 --- a/packages/models/src/index.ts +++ b/packages/models/src/index.ts @@ -17,5 +17,9 @@ export { danmakuPrefs } from "./danmaku-prefs.js"; export type { DanmakuPrefsRow, NewDanmakuPrefsRow } from "./danmaku-prefs.js"; export { danmakuDocs } from "./danmaku-docs.js"; export type { DanmakuDocRow, NewDanmakuDocRow } from "./danmaku-docs.js"; -export { appSettings, APP_SETTING_OPEN_DANMAKU_APP_ID, APP_SETTING_OPEN_DANMAKU_APP_SECRET } from "./app-settings.js"; +export { + appSettings, + APP_SETTING_OPEN_DANMAKU_APP_ID, + APP_SETTING_OPEN_DANMAKU_APP_SECRET, +} from "./app-settings.js"; export type { AppSettingRow, NewAppSettingRow } from "./app-settings.js"; diff --git a/packages/trpc/src/services/scrape.service.ts b/packages/trpc/src/services/scrape.service.ts index f57643a..7d15a07 100644 --- a/packages/trpc/src/services/scrape.service.ts +++ b/packages/trpc/src/services/scrape.service.ts @@ -7,11 +7,7 @@ import { openMatch, rankCandidates, } from "@app/danmaku"; -import { - parseEpisodeFromFilename, - type BatchResult, - type DanmakuMatchOutput, -} from "@app/types"; +import { parseEpisodeFromFilename, type BatchResult, type DanmakuMatchOutput } from "@app/types"; import { remoteFileHash } from "./danmaku.service.js"; /** 集数解析统一走 @app/types(前后端共用同一套正则);此处再导出保持旧入口可用 */ diff --git a/packages/trpc/src/services/settings.service.ts b/packages/trpc/src/services/settings.service.ts index 891b4d4..b357990 100644 --- a/packages/trpc/src/services/settings.service.ts +++ b/packages/trpc/src/services/settings.service.ts @@ -1,7 +1,4 @@ -import { - APP_SETTING_OPEN_DANMAKU_APP_ID, - APP_SETTING_OPEN_DANMAKU_APP_SECRET, -} from "@app/models"; +import { APP_SETTING_OPEN_DANMAKU_APP_ID, APP_SETTING_OPEN_DANMAKU_APP_SECRET } from "@app/models"; import { appSettingsDao } from "@app/dao"; import type { OpenNetworkSettingsOutput, SaveOpenNetworkSettingsInput } from "@app/types"; import { setOpenCredentials, type OpenCredentials } from "@app/danmaku";