✨ feat(vscode): 提交代码按钮实时显示进度并预检 git 身份

- spawnClaude 新增 onProgress 回调,给了回调就改走 stream-json 逐行输出,按行解析出工具调用 / 回复文本
- 新增 claudeProgress 把每行 NDJSON 压成可读进度短语
- 提交前先读 git user.name / user.email,缺失直接提示,不再让 claude 白跑
- 运行期间用带转圈的 toast 滚动显示进度,完成后带上 claude 的结果摘要

Claude-Session: https://claude.ai/code/session_01HTMgwaE3woqM5yvsHiuSAa
This commit is contained in:
cruldra committed 2026-08-31 22:11:09 +08:00
1 parent 443a8e472a
commit 73a0c46f9f
6 files changed
+322 -25

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
import { describe, expect, it } from 'vitest'
import { missingGitIdentityKeys } from './identity'
describe('missingGitIdentityKeys', () => {
it('两项都有时返回空', () => {
expect(missingGitIdentityKeys({ name: 'cruldra', email: 'a@b.c' })).toEqual([])
})
it('缺 name', () => {
expect(missingGitIdentityKeys({ name: '', email: 'a@b.c' })).toEqual(['user.name'])
})
it('缺 email', () => {
expect(missingGitIdentityKeys({ name: 'cruldra', email: '' })).toEqual(['user.email'])
})
it('两项都缺,顺序固定', () => {
expect(missingGitIdentityKeys({ name: '', email: '' })).toEqual(['user.name', 'user.email'])
})
it('只有空白也算缺失', () => {
expect(missingGitIdentityKeys({ name: ' \n', email: '\t' })).toEqual(['user.name', 'user.email'])
})
})