Commit Graph
100 Commits
Author SHA1 Message Date
digua 795e9234d5 refactor(analysis): organize session insight components 2026-07-22 19:00:39 +08:00
digua 723831c04e docs: streamline onboarding documentation 2026-07-22 18:07:32 +08:00
digua a66d77f80f docs(docker): document shared data setup 2026-07-22 13:31:53 +08:00
digua 179b8c12c2 release: v0.33.0 2026-07-22 10:14:31 +08:00
digua 21b40358c2 fix(web): keep member filters out of proximity queries
Preserve time bounds for group proximity analysis without pre-filtering the message stream to a single sender.
2026-07-22 09:44:17 +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 915aa19a20 feat(web): add session insights 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 c42fefd227 fix(web): stabilize session overview interactions
Keep filter-only route changes on the current session page, prevent superseded analysis results from overwriting the latest time range, and hide unsupported capture controls in Web WASM.
2026-07-20 23:23:49 +08:00
digua 985ce4276d feat(web): add session overview 2026-07-20 23:23:49 +08:00
digua 8e6cd5c6e6 feat(web): refine import homepage 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 ff6a397d4f refactor(frontend): extract reusable browser services 2026-07-20 10:14:59 +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 b0380a6689 feat(skills): support conversion without ChatLab CLI 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 9c8210e18c docs(ai): clarify analysis and privacy benefits 2026-07-19 15:16:29 +08:00
digua 98ffd88670 fix(electron): block overlapping legacy migrations
Resolve legacy and active data directories through real paths and reject parent-child overlaps before any recursive deletion. Cover settings migration, parent paths, and path aliases in the desktop path regression test.
2026-07-19 00:24:50 +08:00
digua 23e145427c fix(electron): prevent active data directory deletion 2026-07-19 00:24:50 +08:00
digua dd6765baf3 release: v0.32.0 2026-07-18 17:44:15 +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 355d6cfd4d style(storage): refine local storage management 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
digua 058c3448ca fix(security): harden desktop app lock
Keep the renderer fail-closed until lock state is known, use native modal dialogs without unmounting business state, and coordinate overlapping dialogs while locked. Isolate desktop E2E data from real user settings and keep startup migration inspection read-only.
2026-07-18 11:49:09 +08:00
digua e7dd418642 fix(security): throttle app lock PIN attempts
Persist failed unlock attempts in the lock flag so restarting the desktop app cannot reset the limit. Block further attempts for 30 seconds after five failures and surface the remaining cooldown on the lock screen.
2026-07-18 11:49:09 +08:00
digua 10ead5a306 refactor(security): simplify desktop app lock 2026-07-18 11:49:09 +08:00
digua 32bd268af4 release: v0.31.3 2026-07-17 11:17:22 +08:00
digua e6059ffd75 fix(ai): enable all tools for default assistants 2026-07-17 10:29:59 +08:00
digua 79e2027b43 fix(ai): initialize and migrate default assistants
Load standalone CLI assistant configs through the shared manager so fresh data directories receive locale defaults. Back up custom assistants that occupy newly reserved default IDs before installing canonical templates.
2026-07-17 00:42:04 +08:00
digua 713776a7c4 refactor(ai): inline assistant upgrade skip check 2026-07-17 00:42:04 +08:00
digua c73d18208e feat(ai): safely upgrade customized default assistants 2026-07-17 00:42:04 +08:00
digua 3dc8fb3157 fix(ai): share default assistants across runtimes 2026-07-17 00:42:04 +08:00
digua e4eb7fa683 feat(ai): improve default assistant experience 2026-07-17 00:42:04 +08:00
digua 6d2ad097a3 fix(analysis): preserve catchphrase member filter 2026-07-16 23:28:17 +08:00
digua 4925fa0676 docs(analysis): clarify private lab scope
Document that private-chat Lab intentionally exposes SQL only and that keyword ranking remains limited to group chats.
2026-07-16 23:28:17 +08:00
digua d75793c5ca fix(ranking): show list counts in card headers 2026-07-16 23:28:17 +08:00
digua abd7027d38 feat(ranking): move keyword analysis into rankings 2026-07-16 23:28:17 +08:00
digua f762b2af35 feat(navigation): reorganize analysis and ranking views 2026-07-16 23:28:17 +08:00
digua 788793d096 feat(analysis): improve catchphrase insights 2026-07-16 23:28:17 +08:00
digua 6967779650 refactor(analysis): simplify ranking cards 2026-07-16 21:12:21 +08:00
digua 041d2191da fix(http): preserve batch delete client errors
Let status-coded 4xx errors reach the shared Fastify handler so missing sessions remain distinguishable from transaction failures. Add regression coverage for the missing-session response.
2026-07-16 20:09:18 +08:00
digua c4ad84cb7a fix(api): preserve REST member display name
Normalize member responses from both database and Desktop providers so the public REST endpoint keeps its legacy name field while retaining the newer detailed fields.
2026-07-16 20:09:18 +08:00
digua c64c7b29a0 docs(runtime): clarify temp workspace ownership
Document the single-OS-user product boundary beside the default private temp root so future reviews do not treat unsupported multi-UID sharing as a regression.
2026-07-16 20:09:18 +08:00
digua 47ca785779 fix(electron): resolve temp workspace source alias
Add an exact Vite alias before the workspace catch-all so Electron main-process imports resolve the exported temp-workspace source instead of a nonexistent package-root path.
2026-07-16 20:09:18 +08:00
digua 0227a8cc6b fix(migration): make Electron path test cross-platform
Resolve Electron userData fixtures for macOS, Windows, and Linux so the migration regression test exercises the path selected by the current runner.
2026-07-16 20:09:18 +08:00
digua 7d156040f8 fix(runtime): contain and clean temporary workspaces 2026-07-16 20:09:18 +08:00
digua c34f71ed2d chore(workspace): enforce dependency declarations 2026-07-16 20:09:18 +08:00
digua 756daf04bf refactor(http): split route contexts and registration 2026-07-16 20:09:18 +08:00
digua 4b52a7d2f8 refactor(http): organize shared route package 2026-07-16 20:09:18 +08:00
digua bf7004d0e0 refactor(http): share server infrastructure 2026-07-16 20:09:18 +08:00
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