diff --git a/src/main/export-html-template.ts b/src/main/export-html-template.ts
index 7666dfd..b5e7c50 100644
--- a/src/main/export-html-template.ts
+++ b/src/main/export-html-template.ts
@@ -789,8 +789,8 @@ body {
overscroll-behavior-x: none;
touch-action: pan-y;
}
- .message:not(.system) .bubble { max-width: calc(100% - 50px); }
- .message:not(.system) .row.has-locate .bubble { max-width: calc(100% - 90px); }
+ .message:not(.system) .message-stack { max-width: calc(100% - 50px); }
+ .message:not(.system) .row.has-locate .message-stack { max-width: calc(100% - 90px); }
.audio-wrap { width: min(260px, 100%); }
}
`
@@ -1367,12 +1367,10 @@ const renderExportScript = (name: string): string => `
})
}
const updateCount = () => {
- const shown = Math.max(0, windowEnd - windowStart)
const scopeTotal = activeConversation === 'all'
? allMessages.length
: allMessages.filter((message) => message.exportConversationId === activeConversation).length
- const scopeLabel = activeConversation === 'all' ? '全部' : '当前聊天'
- count.textContent = '已显示 ' + shown + ' / 筛选 ' + filtered.length + ' / ' + scopeLabel + ' ' + scopeTotal
+ count.textContent = '筛选 ' + filtered.length + ' / 全部 ' + scopeTotal
}
const setScrollTop = (value) => {
scrollLoadSuppressed = true
diff --git a/tests/e2e/export-archive.spec.ts b/tests/e2e/export-archive.spec.ts
index ac2321a..b9ee47a 100644
--- a/tests/e2e/export-archive.spec.ts
+++ b/tests/e2e/export-archive.spec.ts
@@ -256,6 +256,21 @@ test('EXPORT-ARCHIVE-01 merged v2 archive is usable offline on desktop and mobil
).toBeLessThanOrEqual(1)
expect(compactControlBounds.searchWidth).toBeGreaterThan(compactControlBounds.conversationWidth)
expect(compactControlBounds.searchFontSize).toBe('16px')
+ const personalMessageContent = page
+ .locator('.message')
+ .filter({ hasText: '个人聊天消息' })
+ .locator('.content')
+ const expectPersonalMessageOnOneLine = async (): Promise => {
+ const metrics = await personalMessageContent.evaluate((element) => {
+ const styles = getComputedStyle(element)
+ return {
+ height: element.getBoundingClientRect().height,
+ lineHeight: Number.parseFloat(styles.lineHeight)
+ }
+ })
+ expect(metrics.height).toBeLessThanOrEqual(metrics.lineHeight + 1)
+ }
+ await expectPersonalMessageOnOneLine()
await expect(conversationTrigger.locator('.conversation-switch-icon')).toHaveCSS(
'width',
'13px'
@@ -276,6 +291,7 @@ test('EXPORT-ARCHIVE-01 merged v2 archive is usable offline on desktop and mobil
await expect(searchInput).toBeVisible()
await searchInput.fill('个人聊天消息')
await expect(page.locator('.search-highlight')).toHaveText('个人聊天消息')
+ await expectPersonalMessageOnOneLine()
const mobileSearchResult = page.locator('.message')
const mobileLocateButton = mobileSearchResult.getByRole('button', {
name: '定位到聊天位置'
diff --git a/tests/unit/export-media.test.ts b/tests/unit/export-media.test.ts
index 0df05ee..0cb7f50 100644
--- a/tests/unit/export-media.test.ts
+++ b/tests/unit/export-media.test.ts
@@ -73,9 +73,7 @@ describe('export media', () => {
dom.window.eval(inlineScriptOf(html))
expect(dom.window.document.querySelectorAll('.message')).toHaveLength(EXPORT_PAGE_SIZE)
- expect(dom.window.document.querySelector('#count')?.textContent).toBe(
- '已显示 240 / 筛选 500 / 全部 500'
- )
+ expect(dom.window.document.querySelector('#count')?.textContent).toBe('筛选 500 / 全部 500')
const list = dom.window.document.querySelector('#messages')!
expect(list.querySelector('.message')?.getAttribute('data-index')).toBe('260')
@@ -154,9 +152,7 @@ describe('export media', () => {
'https://example.com/xi'
)
expect(dom.window.document.querySelectorAll('.search-highlight')).toHaveLength(1)
- expect(dom.window.document.querySelector('#count')?.textContent).toBe(
- '已显示 1 / 筛选 1 / 全部 2'
- )
+ expect(dom.window.document.querySelector('#count')?.textContent).toBe('筛选 1 / 全部 2')
dom.window.close()
})
@@ -191,25 +187,19 @@ describe('export media', () => {
expect(trigger.textContent).toContain('全部聊天')
expect(menu.querySelectorAll('[data-conversation-id]')).toHaveLength(3)
expect(dom.window.document.querySelectorAll('.conversation-source')).toHaveLength(3)
- expect(dom.window.document.querySelector('#count')?.textContent).toBe(
- '已显示 3 / 筛选 3 / 全部 3'
- )
+ expect(dom.window.document.querySelector('#count')?.textContent).toBe('筛选 3 / 全部 3')
trigger.click()
;(menu.querySelector('[data-conversation-id="alpha"]') as HTMLButtonElement).click()
expect(dom.window.document.querySelectorAll('.message')).toHaveLength(2)
expect(dom.window.document.querySelectorAll('.conversation-source')).toHaveLength(0)
- expect(dom.window.document.querySelector('#count')?.textContent).toBe(
- '已显示 2 / 筛选 2 / 当前聊天 2'
- )
+ expect(dom.window.document.querySelector('#count')?.textContent).toBe('筛选 2 / 全部 2')
expect(dom.window.document.querySelectorAll('.timeline-month')).toHaveLength(2)
const search = dom.window.document.querySelector('#query') as HTMLInputElement
search.value = '共同关键词'
search.dispatchEvent(new dom.window.Event('input'))
expect(dom.window.document.querySelectorAll('.message')).toHaveLength(1)
- expect(dom.window.document.querySelector('#count')?.textContent).toBe(
- '已显示 1 / 筛选 1 / 当前聊天 2'
- )
+ expect(dom.window.document.querySelector('#count')?.textContent).toBe('筛选 1 / 全部 2')
dom.window.close()
})