chore: bump version to 0.3.8

Code audit fixes:
- CRITICAL: reorder Markdown pipeline (fixImages before sanitize)
- CRITICAL: fix path prefix separator check
- BLOCKING: remove duplicate useEffect in Editor
- BLOCKING: skip onChange when content unchanged
- BLOCKING: optimize Sidebar re-render with useMemo
- HIGH: cleanup FileWatcher polling intervals
- HIGH: improve validatePath segment check
- HIGH: fix isExternalUpdate race with counter
- HIGH: add will-navigate / setWindowOpenHandler
- HIGH: explicit strip in sanitize schema
- MEDIUM: random temp file suffix instead of Date.now()
- MEDIUM/LOW: add IndexedDB error boundaries
- LOW: support UTF-16 BOM detection
This commit is contained in:
thzxx
2026-06-18 21:28:35 +08:00
parent dd78ff15a9
commit 7f070eb11d
13 changed files with 165 additions and 63 deletions
+32 -9
View File
@@ -1,27 +1,50 @@
import { db, type TabSnapshot } from './schema'
import { logError } from '../lib/errorHandler'
export const tabRepository = {
async saveAll(tabs: TabSnapshot[]): Promise<void> {
await db.transaction('rw', db.tabSnapshots, async () => {
await db.tabSnapshots.clear()
await db.tabSnapshots.bulkAdd(tabs)
})
try {
await db.transaction('rw', db.tabSnapshots, async () => {
await db.tabSnapshots.clear()
await db.tabSnapshots.bulkAdd(tabs)
})
} catch (error) {
logError('保存标签快照失败', error)
}
},
async loadAll(): Promise<TabSnapshot[]> {
return db.tabSnapshots.orderBy('updatedAt').toArray()
try {
return await db.tabSnapshots.orderBy('updatedAt').toArray()
} catch (error) {
logError('加载标签快照失败', error)
return []
}
},
async clearAll(): Promise<void> {
await db.tabSnapshots.clear()
try {
await db.tabSnapshots.clear()
} catch (error) {
logError('清空标签快照失败', error)
}
},
async saveActiveTabId(tabId: string | null): Promise<void> {
await db.activeTab.put({ id: 'current', activeTabId: tabId })
try {
await db.activeTab.put({ id: 'current', activeTabId: tabId })
} catch (error) {
logError('保存活动标签ID失败', error)
}
},
async loadActiveTabId(): Promise<string | null> {
const record = await db.activeTab.get('current')
return record?.activeTabId ?? null
try {
const record = await db.activeTab.get('current')
return record?.activeTabId ?? null
} catch (error) {
logError('加载活动标签ID失败', error)
return null
}
}
}