diff --git a/webui/src/components/layout/ab-notification-center.vue b/webui/src/components/layout/ab-notification-center.vue index 1c069b8d..47dc0588 100644 --- a/webui/src/components/layout/ab-notification-center.vue +++ b/webui/src/components/layout/ab-notification-center.vue @@ -181,6 +181,7 @@ function onClearClick() { { display: flex; align-items: center; gap: 4px; + list-style: none; min-height: var(--touch-target); cursor: pointer; font-size: 13px; @@ -389,6 +390,10 @@ onActivated(async () => { flex-shrink: 0; transition: transform var(--transition-normal); } + + &::-webkit-details-marker { + display: none; + } } .plugin__options[open] > summary { diff --git a/webui/src/pages/index/market/[[id]].vue b/webui/src/pages/index/market/[[id]].vue index e6a96566..b12e26f8 100644 --- a/webui/src/pages/index/market/[[id]].vue +++ b/webui/src/pages/index/market/[[id]].vue @@ -507,6 +507,14 @@ function permissionLabel(id: string) { max-width: 100%; overflow-x: auto; scrollbar-width: none; + // overflow-x 让 overflow-y 也成了 auto,裁剪到 padding 盒:盒外的边框盖不到 + // 选中下划线(margin-bottom:-1px),焦点框也被裁。上下留 4px 并用背景线画边框, + // 负 margin 抵消留白,布局与边线位置不变。 + padding-block: 4px; + margin-block: -4px -3px; + border-bottom: none; + background: linear-gradient(var(--color-border), var(--color-border)) + left bottom 3px / 100% 1px no-repeat; &::-webkit-scrollbar { display: none; diff --git a/webui/src/store/__tests__/downloader.test.ts b/webui/src/store/__tests__/downloader.test.ts index fb34587f..5562e877 100644 --- a/webui/src/store/__tests__/downloader.test.ts +++ b/webui/src/store/__tests__/downloader.test.ts @@ -153,6 +153,7 @@ describe('downloader store', () => { it.each([ ['/downloads/Bangumi/Frieren/Season 1/', 'Frieren / Season 1'], ['D:\\Downloads\\Bangumi\\Frieren\\Season 1\\', 'Frieren / Season 1'], + ['/downloads/Fate\\Zero/Season 1/', 'Fate\\Zero / Season 1'], ])( 'should label the group with the last folders when save_path is %s', (savePath, expected) => { diff --git a/webui/src/store/downloader.ts b/webui/src/store/downloader.ts index 0cb6b6eb..a3c2c870 100644 --- a/webui/src/store/downloader.ts +++ b/webui/src/store/downloader.ts @@ -44,7 +44,9 @@ export const useDownloaderStore = defineStore('downloader', () => { const seasonOnlyRegex = /^(Season\s*\d+|S\d+|第\d+季)$/i; for (const [savePath, items] of map) { - const parts = savePath.split(/[\\/]/).filter(Boolean); + // 仅 Windows 路径(盘符或 UNC)按反斜杠分割;POSIX 文件夹名可含反斜杠 + const isWindows = /^([a-z]:|\\\\)/i.test(savePath); + const parts = savePath.split(isWindows ? /[\\/]/ : '/').filter(Boolean); let name = parts[parts.length - 1] || savePath; // If the last part is just a season folder, include the parent folder too if (parts.length >= 2 && seasonOnlyRegex.test(name)) {