[gstack-context] Decisions: 预览分类在比较扩展名之前移除前导点,并对 MIME 匹配忽略大小写。 Remaining: 对最终 HEAD 重跑 Vitest 和完整 Playwright。 Skill: /investigate [/gstack-context]
@@ -245,11 +245,11 @@ export function roomToUi(room: GroupRoomDetail): UiRoom {
}
export function fileToUi(item: FileLibraryItem): UiLibraryItem {
- const extension = (item.extension || item.name.split('.').at(-1) || '').toLocaleLowerCase()
+ const extension = (item.extension || item.name.split('.').at(-1) || '').replace(/^\./, '').toLocaleLowerCase()
const isTextFile = ['md', 'markdown', 'txt', 'json', 'yaml', 'yml', 'csv', 'js', 'ts', 'py', 'sh', 'css', 'html', 'xml'].includes(extension)
const kind: UiLibraryItem['kind'] = item.mimeType === 'application/pdf' || extension === 'pdf'
? 'pdf'
- : isTextFile || /text|json|xml|javascript|typescript|css|html/.test(item.mimeType)
+ : isTextFile || /text|json|xml|javascript|typescript|css|html/i.test(item.mimeType)
? 'text'
: item.kind === 'document' ? 'document' : item.kind === 'other' ? 'file' : item.kind
const origin = item.origins.at(-1)
@@ -106,7 +106,7 @@ test('previews an octet-stream Markdown file from the file library', async ({ pa
id: 'markdown-file',
path: '/tmp/版本说明.md',
name: '版本说明.md',
- extension: 'md',
+ extension: '.md',
mimeType: 'application/octet-stream',
size: 48,
modifiedAt: Date.now() / 1000,