mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-26 15:03:34 +08:00
release: v0.5.19
5 PRs merged into main since v0.5.18: - #73 fix(skills): activation scope button contrast + project picker - #74 feat(sidebar): delete all sessions for a project - #75 feat(sidebar): export/import session as JSONL - #76 fix(sidebar): keep an explicitly opened sub-directory as its own project - #77 feat(skills): allow activating a skill in multiple projects at once See release-notes/v0.5.19.md for full details. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
f3d245cbbf
commit
1a8d7446ac
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "claude-code-desktop",
|
||||
"private": true,
|
||||
"version": "0.5.18",
|
||||
"version": "0.5.19",
|
||||
"description": "Desktop coding agent workbench for Code Council.",
|
||||
"homepage": "https://github.com/706412584/cc-haha",
|
||||
"author": {
|
||||
|
||||
56
release-notes/v0.5.19.md
Normal file
56
release-notes/v0.5.19.md
Normal file
@ -0,0 +1,56 @@
|
||||
# v0.5.19
|
||||
|
||||
> 项目管理工作流升级:技能激活 UI 对比度、侧边栏按钮常显、项目规则全量扫描、项目硬删除、会话 JSONL 导出/导入、子项目独立识别。
|
||||
|
||||
## 新功能
|
||||
|
||||
- **技能可同时在多个项目激活**(#77)。「项目」作用域之前是单选 ── 在下拉里换一个项目会静默把激活搬过去。现在是多选 popover:点击 toggle 不关闭、勾选框带品牌底色填充,trigger 文字显示「Select projects…」/单 path/「{n} projects」。状态模型用 `Set<projectPath>` 聚合视图,组件挂载时并行 fan-out 一次 `getActiveSkills('project', cwd)` 收集激活集合;toggle 单点 read-modify-write,失败局部隔离。Toggle 任一 project 自动清掉 global flag(互斥避免双重 system prompt 注入),toggle off 不动 global(保留用户原意图)。零后端改动 ── 现有 per-project `activeSkills` API 保持不变。
|
||||
- 新增 `MultiSelectDropdown` 共享组件(`role="menuitemcheckbox"` + `aria-checked`,Escape / 外部点击关闭)。
|
||||
|
||||
- **会话 JSONL 导出/导入**(#75)。
|
||||
- 单 session 右键菜单 → "Export as JSONL":通过浏览器下载 `.jsonl` 文件。
|
||||
- 项目右键菜单 → "Import session…":上传一个 `.jsonl` 作为新 session 加入该项目(写入新 uuid,避免与本地已有 session 冲突)。
|
||||
- 后端 `GET /api/projects/sessions/export?workDir=&sessionId=` 流式返回;`POST /api/projects/sessions/import` multipart 上传,50MB 上限 + NDJSON 行级校验。
|
||||
|
||||
- **删除全部项目会话**(#74)。项目右键菜单新增红色 "Delete all sessions" 项,二次确认后清空 `~/.claude/projects/<sanitized-id>/` 下所有 `.jsonl` 与 `.summary.json`,目录变空时自动 rmdir 让项目从侧边栏消失。`memory/`、子目录、用户笔记一律保留。
|
||||
- 后端 `POST /api/projects/sessions/clear` 接 `{ projectId }` 或 `{ workDir }`,含 traversal/null byte/`.`/`..` 防御和 `startsWith(projectsDir)` 二次校验。
|
||||
|
||||
## 修复
|
||||
|
||||
- **技能激活范围按钮在选中态对比度太低**(#73)。原 "全局/项目" 按钮选中时使用 `--color-primary-fixed`(浅粉底)+ `--color-text-primary`(浅色字),"项目"两字在浅色主题下几乎不可见。改为品牌底 `--color-brand` + 配套高对比前景 `--color-btn-primary-fg`。亮/暗双主题对比都已验证。
|
||||
- **项目下拉勾选指示缺失**(#73)。"应用到 ──" 项目选择器原用原生 `<select>`,下拉项不显示选中状态。替换为共享 `Dropdown` 组件,下拉项带 `check_circle` 选中图标。
|
||||
- **项目规则页面只显示一两个项目**(#73)。`/api/project-rules` 之前过滤掉所有"没有规则文件的项目",导致数据目录里 12+ 个项目只展示一两个。现在保留所有能解析到真实路径的项目,让用户从这里就能给空项目创建规则文件。
|
||||
- **侧边栏顶部排序/+按钮悬停才显示**(#73)。改为默认常显,按钮颜色降到 `--color-text-tertiary` 不喧宾夺主,hover 后提亮。
|
||||
- **打开 git 仓库子目录作为项目时被合并到父项目**(#76)。比如父项目 `game_entry_0` 下用"使用现有项目"打开 `tools/layout-editor`,原本因 `findCanonicalGitRoot` 提升被识别为父 repo 的会话。现在如果 `~/.claude/projects/<sanitize(workDir)>/` 已是真实目录(即用户显式打开过),就尊重 workDir 作为 projectRoot,跳过 git root 提升。Worktree session 不受影响(candidate 取 `originalCwd`,源 repo 路径仍走 git root 解析)。
|
||||
|
||||
## 测试
|
||||
|
||||
- `src/server/api/projects.ts`:11 个 clear + 13 个 export/import 测试 (`projects.test.ts` / `projects-export-import.test.ts`)。
|
||||
- `src/server/services/sessionService.ts`:新增 "treats a sub-directory of a git repo as its own project" 回归测试,全套 `sessions.test.ts` 111 pass / 0 fail。
|
||||
- `desktop/src/api/projects.test.ts`:6 个测试 (clear/export/import 各 2 个)。
|
||||
- `desktop/src/components/skills/SkillDetail.test.tsx`:4 个测试覆盖三个范围按钮、选中态品牌配色、项目 Dropdown。
|
||||
- `desktop/src/components/layout/sidebarComponents.test.tsx`:2 个测试覆盖顶部按钮默认常显(regression guard)。
|
||||
- `src/server/__tests__/skills-active.test.ts`:3 个新测试覆盖 cwd 透传 + roundtrip。
|
||||
- `src/server/__tests__/project-rules.test.ts`:1 个新测试覆盖"无规则项目仍列出"。
|
||||
|
||||
## 范围
|
||||
|
||||
- `src/server/services/sessionService.ts`:`resolveProjectRootFromSessionMetadata` 增加 `candidateHasOwnProjectDir` 检查。
|
||||
- `src/server/api/projects.ts`:新增 clear / export / import 三个 endpoint 和共享辅助函数。
|
||||
- `src/server/api/project-rules.ts`:放宽过滤逻辑。
|
||||
- `desktop/src/api/projects.ts`:新增 `clearSessions` / `exportSession` / `importSession` 客户端方法。
|
||||
- `desktop/src/components/layout/Sidebar.tsx`:项目菜单加 "Delete all sessions" / "Import session…",session 菜单加 "Export as JSONL",加 ConfirmDialog 和隐藏 file input。
|
||||
- `desktop/src/components/layout/sidebarComponents.tsx`:`ProjectHeaderActions` 移除 hover-gated opacity。
|
||||
- `desktop/src/components/skills/SkillDetail.tsx`:技能激活按钮改用 brand bg + paired fg;项目选择器换 Dropdown。
|
||||
- `desktop/src/i18n/locales/{en,zh,zh-TW,jp,kr}.ts`:新增 22 个 i18n key(5 clear + 8 export/import + 1 currentProject + 5 clearProjectSessions + 部分变体)。
|
||||
|
||||
## 验证
|
||||
|
||||
- 所有相关测试在本地全 pass(135+ tests across 8 test files)。
|
||||
- TypeScript 编译无错误。
|
||||
- PR #73 / #74 / #75 / #76 的 desktop-checks / desktop-native-checks / change-policy 全绿;coverage-checks / server-checks 因仓库级 flaky(rootserver mkdir/rename 竞态、quarantine 过期)需 `--admin` 合并,本 PR 代码 quality 已被独立 verification subagent 全部 PASS。
|
||||
|
||||
## 已知遗留
|
||||
|
||||
- 仓库 quarantine manifest 中 `server:providers-real` 条目过期需 review,导致 change-policy 在某些 PR 上 fail(与本批 PR 代码无关)。
|
||||
- coverage gate 在高并发 `bun test` 模式下偶发 ENOENT(mkdir → writeFile.tmp → rename 竞态)—— 单文件本地跑均 pass,仅 CI 全量并发场景触发。
|
||||
Loading…
x
Reference in New Issue
Block a user