Commit Graph
909 Commits
Author SHA1 Message Date
digua 6ae32e8b57 feat(http): report incompatible data directories 2026-06-08 10:14:42 +08:00
digua ad8181d6f4 feat(desktop): enforce data directory compatibility 2026-06-08 10:14:42 +08:00
digua 84b42a68f7 feat(cli): block incompatible data directories at startup 2026-06-08 10:14:42 +08:00
digua c518a4d968 feat(runtime): gate database access by data dir compatibility 2026-06-08 10:14:42 +08:00
digua c0885ba053 feat(runtime): add data directory compatibility gate 2026-06-08 10:14:42 +08:00
digua 2111abae5f docs: refine test maintenance guidance 2026-06-08 10:14:42 +08:00
digua 6b29c07326 test(routes,tools): cover high-risk analysis paths 2026-06-08 10:14:42 +08:00
digua 187268d8a5 test(core,import): rebalance database coverage 2026-06-08 10:14:42 +08:00
digua 2887f1cb73 test(parser,config): cover representative fixtures and migrations 2026-06-08 10:14:42 +08:00
digua 2d88215d63 test: add default test runner 2026-06-08 10:14:42 +08:00
diguaandClaude Sonnet 4.6 33353be9e2 docs(agents): expand development guidelines in AGENTS.md
Add review/judgment principles, project map, test strategy,
commands/validation guide, code conventions, architecture boundaries,
compatibility/migration rules, and security/release checklist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:27:27 +08:00
diguaandClaude Sonnet 4.6 62ad3c6248 fix: normalize legacy tool names and harden cli chat command
- Add normalizeBuiltinToolNames() to map old session-based tool names
  (search_sessions, get_session_messages, get_session_summaries) to
  current segment names; applied in assistant parser, agent-stream-runner,
  and desktop tool-filter so existing assistant configs keep working
- Propagate agent stream error chunks as thrown Errors in CLI chat command
- Pass assistantId through ResolvedAIChatTarget to agent stream
- Preserve legacy chat_session rows in v6 migration when segment table
  already exists (INSERT OR IGNORE + DROP); revert v3/v5 DDL to chat_session
- Rename session_id alias to segment_id in relationship query
- Add tests: assistant-parser normalization, tool-filter legacy names,
  agent-stream-runner legacy allowlist, REPL error resilience, migration paths

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:27:27 +08:00
digua 9b17b09354 feat: add cli ai chat command 2026-06-07 20:27:27 +08:00
digua c2295e317f refactor: align ai chat and segment identifiers 2026-06-07 20:27:27 +08:00
digua 82bad3a23a release: v0.25.0 v0.25.0 2026-06-07 15:21:12 +08:00
digua 093fdd1f2d chore(skills): remove maintainer skills from public repo 2026-06-07 14:38:50 +08:00
digua 4347c596ca docs: update iMessage export guide 2026-06-05 11:12:42 +08:00
digua 31f3c610ce fix(ai): increase default tool rounds 2026-06-05 11:12:42 +08:00
digua 9b1f359699 fix(ai): register chart tool for electron auto skills 2026-06-05 11:12:42 +08:00
digua f825c0734b refactor(ai): deduplicate skill menu and manager 2026-06-05 11:12:42 +08:00
digua 953471a514 fix(dev): clean up web backend lifecycle 2026-06-05 11:12:42 +08:00
digua 296573ed5c refactor(ai): centralize chart runtime policy 2026-06-05 11:12:42 +08:00
CEQ151 15470444e5 feat(ai): improve chart runtime UX 2026-06-05 11:12:42 +08:00
CEQ151 782f67ba63 feat(ai): add slash-activated chart runtime with EChart init fix
- Add ChartSpec validation and chart data normalization (bar/line/pie/heatmap)
- Add render_chart analysis tool with SQL safety (readonly check, outer LIMIT wrapper, CTE write rejection)
- Add chart content block type and ChartBlockRenderer for inline chart rendering
- Add slash menu chart capability activation (single-use per message)
- Add chart payload transport through Electron and CLI Web tool adapters
- Add error block handling for render-only chart tool failures
- Add chart payload persistence through content_blocks JSON storage
- Fix EChart.vue init timing: defer initChart() to nextTick so container
  layout completes before ECharts reads width (was rendering 92px canvases)
- Add comprehensive test coverage: core, integration, agent flow, frontend, smoke
- Add i18n for render_chart and get_schema in 4 locales
- Add project handoff documentation
2026-06-05 11:12:42 +08:00
digua dbc377854a fix(desktop): reset titlebar overlay cache on theme change 2026-06-05 11:12:42 +08:00
CEQ151 8f785ee0a8 fix(desktop): smooth Windows title bar overlay 2026-06-05 11:12:42 +08:00
digua 0bd4d31dd2 fix(ui): adjust preset chip stacking 2026-06-05 11:12:42 +08:00
digua 483907f1ac release: v0.24.1 v0.24.1 2026-06-04 14:44:48 +08:00
digua 5144c8070a fix(update): suppress cli dev update badge 2026-06-04 14:37:12 +08:00
digua 8b2e6de479 fix: harden preferences and update notice checks 2026-06-04 14:37:12 +08:00
digua f4580c55f1 fix(ai): ensure builtin masking rules before preprocessing 2026-06-04 14:37:12 +08:00
digua cd9f297124 fix(update): harden update notice checks 2026-06-04 14:37:12 +08:00
digua 2a44f8b69e fix(preferences): preserve legacy builtin masking overrides 2026-06-04 14:37:12 +08:00
digua 9030d6b0c3 feat(update): add in-app update notice 2026-06-04 14:37:12 +08:00
digua 218c3c9ee9 feat(ai): group desensitize rules 2026-06-04 14:37:12 +08:00
digua 0c82a300e8 feat(ai): enable preprocess defaults 2026-06-04 14:37:12 +08:00
digua a780517539 docs: add contributor development guide 2026-06-04 14:37:12 +08:00
digua a42c23af15 ci(release): link markdown changelog 2026-06-04 14:37:12 +08:00
digua fbfe635838 release: v0.24.0 v0.24.0 2026-06-03 13:37:02 +08:00
CEQ151andClaude Opus 4.8 185e88ba3e fix(import): refresh sidebar message count after incremental import
After incremental import via Electron IPC, the sidebar session list
showed stale message counts. Three contributing gaps:

1. The chat:incrementalImport IPC handler did not notify the renderer
   to refresh the session list (unlike the API route which calls
   notifySessionListChanged). Added win.webContents.send('api:importCompleted')
   to trigger the Sidebar's existing onImportCompleted listener.

2. The postImportHook in worker adapters was async (due to dynamic
   import()) but the caller did not await it, causing a race condition
   where loadSessions() could read stale overview cache before
   computeAndSetOverviewCache() finished. Converted to static import
   making the hook synchronous, and updated the type to void | Promise<void>
   with await at call sites in both incremental-importer and
   streaming-importer.

3. The @imported handlers on group-chat and private-chat pages only
   refreshed local analysis data without calling sessionStore.loadSessions().
   Added the call so the sidebar updates immediately on the client side.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 10:20:28 +08:00
digua 6e016837bc fix(data): harden directory and database migrations 2026-06-03 00:46:34 +08:00
digua f234a25ff6 fix(storage): require legacy data before showing migrate hint 2026-06-03 00:46:34 +08:00
digua 42837278fa fix(data): migrate legacy chat database columns before reads 2026-06-03 00:46:34 +08:00
digua bb4986d703 fix(storage): reset legacy data hint after directory changes 2026-06-03 00:46:34 +08:00
digua e68ce77266 feat(data): support CLI web data directory migration 2026-06-03 00:46:34 +08:00
digua a94986f117 feat(storage): allow ignoring legacy data prompt 2026-06-03 00:46:34 +08:00
digua 04c97ca9cf fix(data): defer data directory migration until restart 2026-06-03 00:46:34 +08:00
diguaandClaude Sonnet 4.6 f978845dde fix(layout): migrate isSidebarCollapsed persistence from sessionStorage to localStorage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-03 00:46:34 +08:00
diguaandClaude Opus 4.8 f09d40f436 feat(changelog): generate per-language markdown from JSON
Add scripts/changelog-to-markdown.mjs that renders changelogs/{cn,en,tw,ja}.json
into readable Markdown files. Runs idempotently; output passes Prettier without
changes.

Wire the script into the sync-changelog skill (step 4, before the release commit)
and update commit_release_changelogs.sh to include the four .md files in the
release: v<version> commit, with a preflight guard that errors if the md files
are missing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 00:46:34 +08:00
diguaandClaude Opus 4.8 2f8591fb8c perf(build): minify main process and lazy-load tiktoken rank table
Enable esbuild minification for main/preload (was renderer-only by default),
reducing main process bundle by ~55%. Extract cl100k_base BPE rank table out
of the synchronous startup path via dynamic import — it now lands in its own
chunk and is loaded on first agent run instead of at app startup.

Also fix Windows CI step to use PowerShell syntax for version injection.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 00:46:34 +08:00