Commit Graph
1610 Commits
Author SHA1 Message Date
digua d844578bab release: v0.37.1 v0.37.1 2026-09-04 16:49:46 +08:00
digua a9ec32ad31 feat(changelog): add contributor attribution 2026-09-04 16:39:54 +08:00
digua 4392519d30 fix(analysis): omit members without repeated catchphrases
Voice transcription normalization can remove every phrase for a member while leaving an empty member entry. Filter those entries from the result so overview and selected-member views retain their empty states.

Add a regression test for single-use transcriptions alongside another member with valid catchphrases.
2026-09-04 00:27:29 +08:00
babybitter 8b7d62e248 fix(analysis): separate system messages from emoji phrases
区分抖音导出中的显式系统通知、分享占位和用户表情,避免系统提示进入口头禅及语言、词频统计。

新增统一的系统/分享前缀识别,覆盖 [系统]、[系统消息]、[分享内容] 及对应全角和英文形式;不误判 [强壮]、[躺平] 等表情标签。口头禅、语言偏好以及 Node/Browser 词频分析支持文本与表情消息,并在统计阶段排除系统通知和分享占位;原始聊天记录保持不变。

补充脱敏合成数据回归测试,覆盖系统通知、分享内容占位排除以及表情保留。
2026-09-04 00:19:21 +08:00
babybitter 0c34853066 feat(analysis): support voice transcriptions in ChatLab
适配导入文件中的语音转写内容,让 ChatLab 在语言分析、词频统计和口头禅分析中使用实际转写文字,而不是把语音时长标签当作文本。

识别并移除语音消息前的时长标签,保留转写内容;纯语音占位符继续从文本分析中排除。

统一桌面端、CLI Web 和 Web WASM 使用的文本清洗逻辑,并补充 ChatLab JSONL 导入、词频、语言偏好和口头禅分析测试。

测试使用脱敏后的合成消息,不包含个人聊天记录。
2026-09-04 00:19:21 +08:00
digua f8e482e2a9 fix(relationships): release session databases during graph compute 2026-08-29 09:25:54 +08:00
digua 1566cfcb2b refactor: prune dead compatibility surfaces 2026-08-28 23:56:25 +08:00
Sanssssssssssssssss 02b9ccb59f fix(ai): enforce the tool round limit
Stop after one final-answer turn and pin Pi 0.84.2 for the public stop hook.
到达工具轮次上限后只允许一轮终答,并锁定提供公开停止钩子的 Pi 0.84.2。
2026-08-28 22:33:10 +08:00
Sanssssssssssssssss e544392a83 fix(ai): preserve explicit tool errors
Promote resolved tool error flags through Pi's formal tool-result contract.
将工具返回的错误标记提升为 Pi 正式错误结果,避免错误被记为成功。
2026-08-28 22:33:10 +08:00
Sanssssssssssssssss 90bf3b6400 fix(ai): preserve active turn context ownership
Avoid aliasing Agent state into the Pi loop, which duplicated finalization messages.
避免将 Agent 状态数组交回 Pi 循环,防止终局消息被重复写入。
2026-08-28 22:33:10 +08:00
KokerZhou 758b0667fc feat(docker): preinstall default NLP dictionary 2026-08-28 22:24:13 +08:00
digua e2723cf751 refactor(web): remove Web WASM AI runtime 2026-08-28 14:34:59 +08:00
digua 3fe82e039d release: v0.37.0 v0.37.0 2026-08-28 10:50:43 +08:00
KokerZhou 2bbc3520b3 fix(records): keep resize bound to active pointer 2026-08-28 10:34:54 +08:00
KokerZhou 4446d99213 fix(records): finish resize outside window 2026-08-28 10:34:54 +08:00
KokerZhou 32e71d0f05 fix(records): clamp drawer width to viewport 2026-08-28 10:34:54 +08:00
KokerZhou 997598259c feat(records): make chat record drawer resizable 2026-08-28 10:34:54 +08:00
digua 9009edfeb9 docs(cli): fix Unix socket curl examples 2026-08-28 10:25:51 +08:00
KokerZhou bb36fc5221 docs(cli): secure Unix socket proxy setup 2026-08-28 10:21:39 +08:00
KokerZhou 16808e7403 fix(cli): clarify Unix socket server details 2026-08-28 10:21:39 +08:00
KokerZhou e3c2e8ec58 feat(cli): support Unix domain socket listener 2026-08-28 10:21:39 +08:00
digua b7c38fb228 fix(insight): bound graph look-ahead allocation
Clamp cluster look-ahead values at the shared core boundary so invalid inputs cannot create oversized candidate matrices. Add a regression test that keeps oversized values equivalent to the supported maximum.
2026-08-28 10:18:54 +08:00
digua 4a3a72e736 perf(insight): reduce session graph memory usage 2026-08-28 10:18:54 +08:00
digua 8867cc556e fix(insight): deduplicate remounted time ranges
Treat equivalent session time ranges as the same analytics scope so remounting the selector does not cancel requests or reload Insights, while preserving reloads for real range changes.
2026-08-28 00:20:02 +08:00
digua bc6e70448d fix(insight): invalidate analytics after data changes
Mark the in-memory analysis scope stale after imports and member mutations so returning to Insights reloads fresh statistics without giving up normal tab reuse.
2026-08-28 00:20:02 +08:00
digua 37628302c8 fix(ui): smooth session tab transitions 2026-08-28 00:20:02 +08:00
digua dcee433174 fix(import): preserve fallback message multiplicity
Preserve repeated same-second WeFlow and EchoTrace messages while consuming existing fallback occurrences one for one across overlapping imports and merged sources.
2026-08-27 17:19:06 +08:00
digua af68f13d09 fix(import): avoid deduplicating WeFlow local IDs 2026-08-27 17:19:06 +08:00
digua a50827f42a fix(analysis): preserve SQL Lab analytics
Track SQL Lab usage from the nested More tab after resolving its persisted selection. Remove the obsolete top-level lab mapping so Debug visits are not misclassified.
2026-08-27 16:28:42 +08:00
digua 5aa330147b feat(analysis): rename lab and move debug tools 2026-08-27 16:28:42 +08:00
digua e75bb1e556 fix(ai): handle stream failure follow-ups 2026-08-26 22:42:13 +08:00
Sanssssssssssssssss dc07519bc0 fix(ai): refresh conversations after stream errors
中文:模型失败回合落库后刷新会话列表,避免新会话只在重载后出现。

English: Refresh the conversation list after persisted stream errors so new chats appear without a reload.
2026-08-26 22:23:21 +08:00
Sanssssssssssssssss 702311cf96 fix(ai): preserve stream errors through completion
中文:错误流的 done 只终止传输,不再覆盖错误状态或误报发送成功。

English: Treat done as stream termination after an error, preserving the error phase and returning failed sends correctly.
2026-08-26 22:23:21 +08:00
digua cb7ba1f3cc fix(ai): refresh memory source parent after compression
Capture the conversation active message when the agent turn completes so an automatically persisted compression summary becomes the expected parent for the pending user message. Add an integration regression covering summary persistence, memory creation, message-pair persistence, and source linking.
2026-08-26 22:23:04 +08:00
digua 63c5cc2b46 fix(ai): keep memory provenance through long turns
Remove the wall-clock expiry from in-flight memory provenance so long agent investigations can still link memories to their source messages. Clean up completed turns without memory changes immediately and retain changed turns until the client consumes them.
2026-08-26 22:23:04 +08:00
digua f4017b0adf feat(ai): link memories to source messages 2026-08-26 22:23:04 +08:00
digua cc240c85f5 fix(ai): limit editing to latest turn
Keep compression summaries before the in-flight question and let the Node runtime validate and atomically replace only the terminal question-answer round.
2026-08-26 21:48:10 +08:00
digua f35e41ca70 test(ai): use supported module mock exports
Use Node's namedExports option so the optional Jieba regression test remains valid under the current node:test type definitions.
2026-08-26 21:48:10 +08:00
digua 9378029acb fix(ai): persist edited turns atomically
Replace the edited user message, old assistant response, and regenerated response in one SQLite transaction. This prevents a failed replacement insert from leaving a partially rewritten conversation.
2026-08-26 21:48:10 +08:00
Sanssssssssssssssss 893f1c05ec fix(ai): persist conversation turns atomically
中文:将用户与助手消息合并为单事务写入,失败时不再留下孤儿消息或误报成功。

English: Persist user and assistant messages in one transaction so failures leave no orphaned turn or false success.
2026-08-26 21:11:35 +08:00
Sanssssssssssssssss 0126b56648 fix(ai): keep equal-timestamp compression boundaries intact
中文:避免同秒消息跨摘要边界,防止已压缩内容重复回放或后续消息丢失。

English: Keep equal-timestamp messages on one boundary side so compressed content is not replayed and later messages remain visible.
2026-08-26 21:06:01 +08:00
digua 4d6acc97e5 fix(ai): harden global memory relevance ranking
Use dependency-independent Chinese tokenization, preserve prompt capacity for the highest relevance match, and handle short symbolic and numeric terms without distorting bounded recall.
2026-08-26 13:46:58 +08:00
digua 4b405b8114 feat(ai): rank global memories by relevance 2026-08-26 13:46:58 +08:00
Sanssssssssssssssss 333c913de0 fix(ai): isolate credentials for colliding config names / 隔离同名配置凭据
中文:同名 LLM 配置此前会覆盖同一 auth profile;现在按稳定 config ID 隔离,并保留旧 profile 恢复。

English: LLM configs with the same name previously overwrote one auth profile; new profiles are scoped by stable config ID while legacy restoration remains compatible.
2026-08-26 09:22:35 +08:00
digua c69a927615 fix(ai): keep global memory always enabled
Remove the proactive-memory preference and its cross-platform runtime plumbing so memory behavior has one clear contract. Normalize away the obsolete setting and keep source type limited to provenance.
2026-08-24 22:35:47 +08:00
digua 77c4dec9e6 fix(ai): enforce current-turn memory scopes
Share entities resolved during one Agent run so natural-language subject changes can safely use memory. Validate entity memory scope before permanent deletion to prevent stale IDs from deleting another subject's memory.
2026-08-24 22:35:47 +08:00
digua 85bf46b168 feat(ai): add self memory management 2026-08-24 22:35:47 +08:00
digua 2a4ab0d2ae feat(contacts): show AI memories in contact details 2026-08-24 22:35:47 +08:00
digua db582d852e feat(ai): preload selected entity memories 2026-08-24 22:35:47 +08:00
digua 04916041b4 fix(ai): bind memory tools to current entity selection 2026-08-24 22:35:47 +08:00