Skip to content

fix(export): 保持增量 HTML 导出的联系人顺序 - #179

Merged
2977094657 merged 1 commit into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/stable-export-contact-order
Oct 7, 2026
Merged

2977094657 merged 1 commit into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/stable-export-contact-order

Conversation

@xiaoshengbao

@xiaoshengbao xiaoshengbao commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

增量导出 HTML 后,内页联系人列表和首页目录会发生重排:更新既有会话时先删除再追加,且基线 JSON 使用 sort_keys=True 保存,下一轮读取时会按会话哈希键排列。

本次修改保留既有联系人的位置,新增联系人追加到末尾;用基线中的 conversationOrder 数组独立保存展示顺序,使反向选择、只更新部分联系人和追加消息都不会改变既有顺序。隐私模式同时保留已分配的匿名会话名称。

桌面端和浏览器端会从旧目录的 assets/chat-sessions.js 恢复当前可见顺序,并在没有新增消息时也保存排序迁移。目录脚本按 JSON 读取,不执行 JavaScript;无法读取旧目录脚本时仍可继续导出。已经丢失的首次顺序无法仅凭旧版哈希排序基线还原。

验证:

  • 后端相关测试:test_chat_incremental_export.py、test_chat_export_index_updates.py、test_chat_export_targets.py、test_chat_export_cancel_responsiveness.py、test_chat_export_panel_frontend.py,38 passed,12 subtests passed。覆盖正常/隐私导出、实际追加消息、反向选择、部分更新、新联系人追加、旧目录迁移及浏览器增量补丁。
  • cd frontend && npm test:76 项 Node 测试和 390 项 Vitest 测试全部通过。
  • cd frontend && npm run build:生产构建通过。
  • 使用模拟 SQLite 数据实际执行首次导出与增量导出,在浏览器打开更新后的内页以及未重写的旧内页,均显示原三位联系人顺序不变、第四位新联系人追加末尾。
  • git diff --check 通过。

@2977094657
2977094657 merged commit 9ff7aae into LifeArchiveProject:main Oct 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants