597 Commits
Author SHA1 Message Date
digua 4155386676 fix(import): generate session index once 2026-07-31 17:22:05 +08:00
digua 8c4689b304 perf(import): optimize write and FTS batches 2026-07-31 17:04:56 +08:00
digua b67a85b5db fix(import): account for transaction phase timings
Measure message transaction boundaries separately so final commits are included in message write diagnostics without double counting callback work. Accumulate intermediate and final WAL checkpoint durations in the checkpoint phase.
2026-07-31 16:49:27 +08:00
digua bd7c838c3f fix(import): make performance baselines trustworthy
Run benchmarks in isolated GC-enabled workers, report sparse RSS samples accurately, and hash canonical imported output. Require the Rust Native WeFlow kernel and reject any measured import that falls back to TypeScript so timing and memory baselines remain comparable.
2026-07-31 16:37:40 +08:00
digua bbbd0bb3c6 perf(import): establish end-to-end import baseline 2026-07-31 16:37:40 +08:00
digua dab38f1b1c perf(parser): optimize WhatsApp text parsing 2026-07-30 22:35:26 +08:00
digua f0bdba63fb perf(parser): optimize browser parsing hot paths 2026-07-30 22:15:13 +08:00
digua 2e8ca2bebd fix(parser): preprocess large native fallbacks
Retry strict native fallback through the slim QQ export path so compatible large imports retain the existing memory safeguard.
2026-07-30 21:01:20 +08:00
digua 5d943ab0b3 feat(parser): add shuakami/qq-chat-exporter native parser 2026-07-30 21:01:20 +08:00
digua 860bf52d62 feat(analytics): add privacy-safe product telemetry
Add self-hosted Umami reporting alongside existing telemetry across Desktop and CLI Web.

Track normalized startup, import, feature, and AI usage with a stable anonymous ID and strict privacy allowlists. Keep incremental usage platform-independent and preserve accurate failure classifications and platform metadata across import paths.
2026-07-29 14:28:48 +08:00
digua faedaa852a fix(parser): verify QQ manifest fallbacks
Require the chunked marker before a manifest filename can override normal format detection.
2026-07-27 23:21:03 +08:00
digua 9847e30855 fix(parser): detect large QQ chunked manifests
Use the manifest entry filename when sender statistics push the chunk metadata beyond the sniffer head.
2026-07-27 23:21:03 +08:00
digua eb2d1ea3bf fix(parser): support current QQ chunked exports 2026-07-27 23:21:03 +08:00
digua 4777ca9f63 fix(web-ai): harden Web WASM AI chat
Stabilize browser model setup, tool execution, retries, cancellation, and error reporting.
2026-07-27 00:09:33 +08:00
digua 7dcf5d9070 feat(web): add Web WASM AI chat 2026-07-27 00:09:33 +08:00
digua 964221537f feat(demo): reduce example sessions 2026-07-26 12:12:47 +08:00
digua 1f0528ebd0 refactor(import): simplify demo import implementation 2026-07-26 01:43:43 +08:00
digua cf3fd2ab85 fix(import): enforce reserved system sender contract
Restrict the ChatLab SYSTEM sender to system and recall events, keep bundled validators synchronized, and canonicalize its identity consistently in Node and Browser runtimes. Preserve ordinary participants named SYSTEM in non-ChatLab formats.
2026-07-26 01:43:43 +08:00
digua dc20320041 fix(demo): harden cross-platform demo imports
Rebase official Demo timelines against the browser timezone, bound stalled downloads, and roll back partial batches across Desktop, CLI Web, and Web WASM. Document the platform cleanup hook's established best-effort boundary.
2026-07-26 01:43:43 +08:00
digua 9e7c76fb89 feat(demo): add rolling cross-platform imports 2026-07-26 01:43:43 +08:00
digua e9004ca71f fix(database): support early segment schema migrations 2026-07-25 19:54:03 +08:00
digua 088d3ee54d fix(web): harden multi-tab workspace leases
Cancel queued Web Locks promptly, keep import parsing outside the workspace lease, and defer cancellation until active SAH pools can pause before lock release.

Add regression coverage for queued cancellation, scoped imports, and pool activation cleanup.
2026-07-24 09:35:08 +08:00
digua ce603bdc52 fix(web): support multi-tab workspace access 2026-07-24 09:35:08 +08:00
digua 99de252081 fix(relationships): scope friend search results
Limit friends-mode search results to nodes in the friend graph so selecting an off-scope groupmate cannot replace the canvas with an empty neighborhood.
2026-07-23 22:05:18 +08:00
digua c6676e68a5 fix(relationships): enforce friends-only galaxy scope 2026-07-23 22:05:18 +08:00
digua 7bf7768c03 refactor(ai): unify LLM configuration storage 2026-07-23 19:46:22 +08:00
digua cac8c22d4f feat(insight): add monthly direct contact trend 2026-07-23 16:50:05 +08:00
digua 651e9c1935 feat(analysis): add private chat journey insight 2026-07-22 23:26:57 +08:00
digua ce5dfe08e9 feat(relationship): redesign interaction timeline 2026-07-22 21:39:49 +08:00
digua 53bd6750af feat(analysis): merge session overview into insights 2026-07-22 19:00:39 +08:00
digua d5582f456c fix(analysis): align browser word frequency totals
Compute total and unique word counts after the minimum-frequency filter while keeping them independent from the displayed top-N limit.
2026-07-22 09:44:17 +08:00
digua 83bbc06366 feat(web): add insight query capabilities 2026-07-22 09:44:17 +08:00
digua 985ce4276d feat(web): add session overview 2026-07-20 23:23:49 +08:00
digua 73c6de364e chore(web): add Web WASM development workflow 2026-07-20 17:24:55 +08:00
digua 8ca8b4f623 fix(web): prevent concurrent OPFS access 2026-07-20 17:24:55 +08:00
digua 5f92d953c0 feat(web): add Web WASM application shell 2026-07-20 11:51:17 +08:00
digua d888771670 feat(parser): add wasm-bindgen browser parser 2026-07-20 00:14:51 +08:00
digua cc104cd07c feat(web): add browser SQLite import runtime 2026-07-20 00:14:51 +08:00
digua 6bd288a2cd refactor(parser): expose browser-safe parsers 2026-07-19 21:27:23 +08:00
digua 344bd0b12f refactor(import): share parsed message writer 2026-07-19 21:27:23 +08:00
digua 1d183cbe6a fix(parser): align ChatLab JSONL validation
Keep automatic format detection consistent with accepted JSONL syntax and reject unresolved owner metadata. Regenerate the standalone skill validators from the canonical implementation.
2026-07-19 15:16:29 +08:00
digua 1049f79800 feat(skills): add chat record conversion skills 2026-07-19 15:16:29 +08:00
digua 3a995f6491 feat(cli): add ChatLab format validator 2026-07-19 15:16:29 +08:00
digua e5ec60aaaf refactor(format): centralize ChatLab format version 2026-07-19 15:16:29 +08:00
digua 5d30254c17 fix(parser): preserve JSONL member metadata
Emit explicit members before the first streamed message batch so merge previews do not retain metadata-free member stubs. Add parser ordering and temporary database regression coverage.
2026-07-18 17:38:12 +08:00
digua c0942a72f0 fix(import): stabilize large and multi-file imports 2026-07-18 17:38:12 +08:00
digua 4518a3aaa9 docs(data): explain skipped-file cleanup policy
Clarify that skipped files can leave unique data on either side, so cleanup records intentionally remain unchanged and deletion performs the final active-path safety check.
2026-07-18 16:15:19 +08:00
digua d4c837b367 fix(data): keep retry sources out of cleanup
A retried migration can skip stale files already copied to the target. Keep the source directory outside manual cleanup whenever any files were skipped so newer source data cannot be deleted.
2026-07-18 16:15:19 +08:00
digua 1f3069f359 fix(data): harden migration cleanup flow
Show the pending cleanup notice in CLI Web after initialization while excluding the browser-only runtime.\n\nStub config persistence in the cleanup test so it cannot overwrite the user's real data directory settings.
2026-07-18 16:15:19 +08:00
digua 739f8c7522 fix(data): preserve old directory after migration 2026-07-18 16:15:19 +08:00