fix: reduce redundant work during chat and note startup
Avoid hidden activity renders, no-op message saves and attachment scans when pinning conversations. Reuse note body inspection and skip unchanged attachment reference writes while preserving recovery and cleanup behavior. Skip unnecessary Markdown normalization and memoize subagent lookups without delaying live rich text. Add storage operation counts and real Electron rendering equivalence benchmarks; full-render speedup remains unproven. Validation: 5397 tests passed, 84 skipped; typecheck passed. Lint passed excluding two existing untracked sidebar probe files. Release note: Reduce repeated rendering and disk work during chat, conversation pinning and note startup while preserving existing content and interactions.
This commit is contained in:
@@ -117,7 +117,17 @@ export class ConversationAttachmentStorage {
|
||||
}
|
||||
|
||||
reference(conversationId: string, kind: 'draft' | 'message' | 'queue' | 'parsing', ownerId: string, ids: string[]): void {
|
||||
const assets = ids.filter((id) => this.has(id)).map((id) => this.row(id))
|
||||
const assets: AssetRow[] = []
|
||||
for (const id of new Set(ids)) {
|
||||
const asset = this.database.prepare('SELECT * FROM attachments WHERE id = ?').get(id) as AssetRow | undefined
|
||||
if (asset) assets.push(asset)
|
||||
}
|
||||
const refs = this.database.prepare(`SELECT attachment_id, conversation_id FROM attachment_refs
|
||||
WHERE kind = ? AND owner_id = ? ORDER BY rowid`).all(kind, ownerId) as { attachment_id: string; conversation_id: string }[]
|
||||
// Draft order is visible, and matching references can still point to temporary files.
|
||||
if (refs.length === assets.length && assets.every((asset, index) =>
|
||||
refs[index]?.attachment_id === asset.id && refs[index]?.conversation_id === conversationId && !asset.path.startsWith('temp')
|
||||
)) return
|
||||
for (const asset of assets) {
|
||||
if (!asset.path.startsWith(`temp`)) continue
|
||||
const context = JSON.parse(asset.metadata) as ContextAttachment
|
||||
|
||||
Reference in New Issue
Block a user