Commit Graph
100 Commits
Author SHA1 Message Date
digua 2d69e836ea refactor(import): share JSON push protocol 2026-07-16 20:09:18 +08:00
digua e563183e62 refactor(http): share system and session routes 2026-07-16 20:09:18 +08:00
digua f949c7a8f9 refactor(http): unify API error model 2026-07-16 20:09:18 +08:00
digua a14de9fc10 refactor(electron): organize desktop runtime modules 2026-07-16 20:09:18 +08:00
digua 45d9813d05 refactor(electron): split desktop startup and window modules 2026-07-16 20:09:18 +08:00
digua c6ae5d4cfa refactor(electron): modularize path management 2026-07-16 20:09:18 +08:00
digua 68e33cd0b0 refactor(electron): formalize runtime import boundaries 2026-07-16 20:09:18 +08:00
digua fdd2a943f2 feat(members): support batch deletion 2026-07-16 20:09:18 +08:00
digua 5a5fae880a refactor: remove redundant re-export proxies 2026-07-16 20:09:18 +08:00
digua 35c696b1a4 release: v0.31.2 2026-07-16 11:30:01 +08:00
digua b893cf27ca chore(vscode): update recommended extensions 2026-07-16 11:23:39 +08:00
digua f5f7596822 feat(members): unify private member management 2026-07-16 11:23:39 +08:00
digua 15d0158a40 feat(members): align member table interactions 2026-07-16 11:23:39 +08:00
digua 3275591c11 fix(capture): remove unsupported snapdom option 2026-07-16 11:23:39 +08:00
digua d2cd841168 fix(members): stabilize member management table 2026-07-16 11:23:39 +08:00
digua b2da72ac6f fix(analysis): wrap section filters by content width 2026-07-16 00:35:19 +08:00
digua 9438cb2a23 fix(capture): preserve inline padding after screenshots
Restore only the padding properties changed by each capture mode so partial inline padding is not cleared after cleanup.
2026-07-16 00:34:16 +08:00
digua 142f2f03b1 fix(web): support image clipboard copy 2026-07-16 00:34:16 +08:00
digua 3c8b83d571 fix(capture): restore AI screenshot framing 2026-07-16 00:34:16 +08:00
digua 1b940143fd style(ai): refine chat message backgrounds 2026-07-16 00:23:47 +08:00
digua 774eeb2ce2 feat(import): add home auto-import hint 2026-07-16 00:23:47 +08:00
digua e2d4ef9831 chore(deps): upgrade TypeScript and Nuxt UI 2026-07-15 23:23:52 +08:00
digua 8ae3e42e4f chore(workspace): refine editor and formatting setup 2026-07-15 23:23:52 +08:00
digua 6e4af0a798 fix(capture): keep word clouds stable during screenshots 2026-07-15 22:12:44 +08:00
digua 03af25e238 fix(capture): limit progressive narrowing to AI chat 2026-07-15 22:03:13 +08:00
digua 0aafed0f60 fix(sidebar): limit titlebar inset to macOS 2026-07-15 22:00:35 +08:00
digua 61cfc0a51e release: v0.31.1 2026-07-15 20:32:19 +08:00
diguaandClaude Opus 4.8 3dc86cf0d2 docs(ai): reorganize AI guides into /ai section and refresh nav
- Move AI config/CLI guides under /ai with redirect stubs at old /usage paths
- Rewrite why-chatlab: lead with value, drop table for a two-item list
- Rename nav items ("为什么选择 ChatLab", "对接 ChatLab") for clarity

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 19:09:05 +08:00
digua fcf30853e9 feat(home): reorganize import options 2026-07-15 19:09:05 +08:00
digua 7067c3f1c8 feat(skills): add localized import and analysis workflows 2026-07-15 19:09:05 +08:00
digua 8360cd182f fix(parser): validate QCE private chat type
Treat more than two real senders as stronger evidence than a conflicting private marker while preserving genuine private chats with system placeholders.
2026-07-15 10:22:28 +08:00
digua 710b21f2ae fix(records): order backfilled messages by timestamp
Use timestamp and message ID as the stable viewer cursor so historical messages imported later remain in chronological order. Resolve timeline anchors by message time and cover out-of-order IDs with SQLite regressions.
2026-07-14 11:56:09 +08:00
digua 82710e2d5a fix(import): keep dry-run database access read-only
Use non-migrating session enumeration during import analysis so previews cannot mutate legacy schemas or raise data-directory compatibility gates.
2026-07-14 11:32:22 +08:00
digua 53406f4c6d feat(import): add dry-run preview
Share auto-import planning between preview and write paths, expose a machine-readable CLI result envelope, and preserve explicit parser options during analysis.
2026-07-14 11:32:22 +08:00
digua 1271c16f17 fix(sidebar): preserve titlebar safe area
Keep the sidebar header below the fixed 32px title bar after removing the outer margin. This prevents header controls from being covered on non-macOS platforms.
2026-07-14 10:13:31 +08:00
digua c118026038 style(sidebar): align layout with macOS titlebar 2026-07-14 10:13:31 +08:00
digua 16ee4d8348 refactor(ai): unify desktop tool adapters 2026-07-13 20:42:27 +08:00
digua 9123bd8476 refactor(import): simplify shared push import analysis 2026-07-13 18:33:23 +08:00
digua 859b4a79ed fix(import): align JSON dry-run with push semantics
Route Desktop JSON dry-runs through a shared read-only push analyzer so validation, deduplication, and member inference match actual writes. Keep JSONL on the file analyzer path and cover new and incremental predictions without database mutations.
2026-07-13 17:56:47 +08:00
digua db26950d4b fix(import): harden desktop shared imports
Use the long-running worker timeout and refresh Desktop caches after successful push imports.

Align auto-created member metadata and counts across initial and incremental imports, exclude SYSTEM from member updates, and keep existing-session writes validated and atomic.
2026-07-13 17:56:47 +08:00
digua 5b35cb1d71 feat(api): honor idempotency keys on shared imports 2026-07-13 17:56:47 +08:00
digua e8f7ed9e4e refactor(import): route desktop imports through shared services 2026-07-13 17:56:47 +08:00
digua 8f8a19f96e fix(import): align shared push import semantics 2026-07-13 17:56:47 +08:00
digua a5e11d2fc8 release: v0.31.0 2026-07-13 10:17:25 +08:00
digua 5be001fea5 fix(sync): preserve pull cursor on lock conflict
Propagate retryable import lock conflicts through CLI and Desktop pull adapters so scheduled pulls defer without advancing past unimported messages.
2026-07-13 01:01:42 +08:00
digua 8bee0fab4a fix(api): align new import dry runs
Reuse create-path validation and deduplication during new-session analysis so dry-run counts match the subsequent import.
2026-07-13 01:01:42 +08:00
digua 381cfd05fd fix(api): preserve import result contracts
Map data-directory import lock conflicts to HTTP 409 across REST import paths and report stream duplicate counts from the dedicated diagnostics field.
2026-07-13 01:01:42 +08:00
digua ec822cb1b0 fix(import): deduplicate mixed message identities
Track unmatched fallback-only keys separately so messages with and without platform IDs bridge safely without collapsing distinct stable IDs.
2026-07-13 01:01:42 +08:00
digua 61d42b2500 fix(import): harden automatic incremental imports 2026-07-13 01:01:42 +08:00
digua 6dc35722c0 fix(import): disambiguate ChatLab reimports 2026-07-13 01:01:42 +08:00
digua af78be00db feat(import): surface automatic import results 2026-07-13 01:01:42 +08:00
digua 5823797256 feat(web): enable automatic incremental imports 2026-07-13 01:01:42 +08:00
digua 3e6f036826 feat(electron): enable automatic incremental imports 2026-07-13 01:01:42 +08:00
digua 0606d5f5f7 feat(cli): enable automatic incremental imports 2026-07-13 01:01:42 +08:00
digua 6cf4c063fc feat(import): orchestrate automatic imports 2026-07-13 01:01:42 +08:00
digua 27f46dfcb6 feat(import): add automatic session matcher 2026-07-13 01:01:42 +08:00
digua a9a1557867 fix(import): preserve ChatLab owner and aliases
Thread ownerId and member aliases through the TS and native parsers. Persist aliases across full and incremental imports so exported ChatLab JSON retains user identity metadata.
2026-07-12 21:27:39 +08:00
digua 37c446c751 fix(parser): preserve ChatLab members in TS fallback
Stream members and messages in one pass so nested member metadata is parsed structurally. Cover exports whose complete member list exceeds the filtered messages.
2026-07-12 21:27:39 +08:00
digua 96235915b8 fix(export): generate importable ChatLab JSON 2026-07-12 21:27:39 +08:00
digua e1288c3cc7 fix(insight): invalidate snapshots on session deletion
Remove persisted annual summary snapshots whenever a session is deleted through shared or desktop cleanup paths. Drop cached in-memory snapshots when their backing files disappear so stale responses cannot expose deleted session data.
2026-07-12 15:29:09 +08:00
digua b15f38c4a5 fix(insight): address annual summary review findings 2026-07-12 15:29:09 +08:00
digua 1713e0d577 fix(insight): remove session facts on deletion 2026-07-12 15:29:09 +08:00
digua f198b41bdb feat(settings): manage session owner identities 2026-07-12 15:29:09 +08:00
digua abf4a015cc style(sidebar): reduce brand title size 2026-07-12 15:29:09 +08:00
digua 85a447b9af feat(insight): refine annual activity overview 2026-07-12 15:29:09 +08:00
digua 02e5807ec3 refactor(navigation): rename session insight tab to analysis 2026-07-12 15:29:09 +08:00
digua afbd27a477 feat(insight): add annual summary interface 2026-07-12 15:29:09 +08:00
digua 38206716b7 feat(insight): add top-level insight navigation 2026-07-12 15:29:09 +08:00
digua 618af4b5b9 feat(api): expose global insight endpoint 2026-07-12 15:29:09 +08:00
digua d7692b5bfc feat(runtime): add global insight service and worker 2026-07-12 15:29:09 +08:00
digua 81be26b68e feat(runtime): add global insight cache pipeline 2026-07-12 15:29:09 +08:00
digua a85e9897a9 feat(core): add global insight queries and contracts 2026-07-12 15:29:09 +08:00
digua 740c410d7b refactor(core): centralize contact identity resolution 2026-07-12 15:29:09 +08:00
digua 84f033efe4 refactor(debug): mount quick tools globally 2026-07-12 11:05:23 +08:00
digua 558426cc06 style(filter): refine time mode selector 2026-07-12 11:05:23 +08:00
digua f99222bd79 style(navigation): align sidebar and tab states 2026-07-12 11:05:23 +08:00
digua ea941e3083 style(ui): refine sidebar and input surfaces 2026-07-12 09:19:50 +08:00
digua ddae10c617 style(analysis): compact session time filters 2026-07-12 01:44:52 +08:00
digua 3e3f099ff5 style(settings): unify automation section tabs 2026-07-12 01:44:52 +08:00
digua 8f1f9a56ac style(debug): unify lab workspace card surfaces 2026-07-12 01:44:52 +08:00
digua 12c7fc2105 refactor(navigation): separate page section and compact tabs 2026-07-12 01:44:52 +08:00
digua 7120d56851 style(ai): refine conversation sidebar layout 2026-07-12 01:44:52 +08:00
digua 1b6bf8f3f5 refactor(charts): share expandable list card 2026-07-12 01:44:52 +08:00
digua bc3a48f877 refactor(ui): share report card composition 2026-07-12 01:44:52 +08:00
digua a2bebab9d6 refactor(ui): centralize card clipping 2026-07-12 01:44:52 +08:00
digua 8486955b79 refactor(navigation): simplify primary page tabs 2026-07-12 01:44:52 +08:00
digua 6d9fcb97a6 refactor(ui): unify navigation and card surfaces 2026-07-12 01:44:52 +08:00
digua 2aeb912dec test(ai): type legacy auth profile fixtures 2026-07-12 01:22:43 +08:00
digua 9d1bb191fb perf(settings): virtualize data management sessions 2026-07-12 01:00:50 +08:00
digua f6a861c128 fix(parser): parse dotted WhatsApp AM/PM markers 2026-07-11 11:09:29 +08:00
digua fba575660d release: v0.30.2 2026-07-10 20:26:40 +08:00
digua e00c9a4503 fix(release): package Windows sqlite binding 2026-07-10 20:25:53 +08:00
digua a50c263232 test(release): verify packaged sqlite runtime 2026-07-10 20:25:53 +08:00
digua 6283281bd8 fix(desktop): resolve packaged sqlite binding 2026-07-10 20:25:53 +08:00
diguaandCursor 39530e2f76 ci(release): use v-prefixed tag in GitHub release titles
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 16:04:24 +08:00
diguaandCursor 36a221e644 fix(cli): pin prebuild-install runtime to system Node
An ambient npm_config_runtime=electron (common in Electron dev shells
and CI) makes bare prebuild-install "succeed" with an Electron-ABI
binding, bypassing the source-build fallbacks and leaving the CLI
unable to start. Pin -r node -t to the current system Node instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 15:51:19 +08:00
diguaandCursor 18946bb765 ci(release): fix Windows bash shadowing and mac x64 cross-build target
Prepending all of System32 to PATH made WSL bash.EXE shadow Git Bash,
breaking every later shell: bash step (first hit: dtolnay/rust-toolchain);
now only tar.exe is exposed. Passing --target after -- hid the triple
from napi, which then emitted a host-named darwin-arm64 artifact for the
x64 build; pass --target to napi directly instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 15:51:19 +08:00
diguaandCursor 9503fc18cb fix(cli): download official prebuilds when preparing better-sqlite3
prebuild-install was invoked with -r napi, but better-sqlite3 only
publishes per-ABI node/electron prebuilds, so the download branch always
failed and every run fell back to a ~1.5min node-gyp source build.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 15:51:19 +08:00
diguaandCursor 74971c624a fix(semantic-index): only clamp sender names when over shared budget
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 15:11:51 +08:00
digua b2f20a15bd fix(semantic-index): harden embedding input guards 2026-07-10 15:11:51 +08:00