kedovi 0.77.0 → 0.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  `kedovi upgrade` 가 올린 버전 사이의 항목을 표로 보여 준다. 배포할 때 이번 버전 항목을 맨 위에 더한다 (`## 버전` 아래 `| 구분 | 내용 |` 표, 한 줄씩 짧게).
4
4
 
5
+ ## 0.77.1
6
+
7
+ | 구분 | 내용 |
8
+ |---|---|
9
+ | 수정 | 임시 폴더(시스템 임시 폴더 · `/private/tmp` · `/var/folders` · `~/.claude/jobs`)의 워크스페이스를 이 PC 목록에 넣지 않음. 이미 있으면 `kedovi list` · `upgrade --all` 때 정리 |
10
+ | 수정 | 공개판 CI 의 GitHub action 을 Node 24 판으로 (Node 20 지원 종료 경고), setup-node 자동 캐시 끔 |
11
+
5
12
  ## 0.77.0
6
13
 
7
14
  | 구분 | 내용 |
package/bin/kedovi.js CHANGED
@@ -396,8 +396,21 @@ function writeRegistry(list) {
396
396
  function workspaceName(root) {
397
397
  try { return JSON.parse(read(path.join(root, 'workspace.json'))).project.name || path.basename(root); } catch { return path.basename(root); }
398
398
  }
399
- /** 목록에 올린다 (이미 있으면 이름만 갱신) — 받은 경로를 그대로 돌려준다 */
399
+ /**
400
+ * 임시 폴더의 워크스페이스인가 — 시험 · 에이전트 작업이 만든 것. 이 PC 목록(kedovi list · upgrade --all)에 올리지 않는다.
401
+ * 시스템 임시 폴더(os.tmpdir · /tmp · /private/tmp · /var/folders · Windows TEMP)와 ~/.claude/jobs
402
+ */
403
+ function isTempWorkspace(dir) {
404
+ const os = require('os');
405
+ const real = (x) => { try { return fs.realpathSync(x); } catch { return path.resolve(x); } };
406
+ const p = real(dir);
407
+ const roots = [os.tmpdir(), '/tmp', '/private/tmp', '/var/folders', '/private/var/folders', process.env.TEMP, process.env.TMP, path.join(os.homedir(), '.claude', 'jobs')]
408
+ .filter(Boolean).map(real);
409
+ return roots.some((r) => p === r || p.startsWith(r + path.sep));
410
+ }
411
+ /** 목록에 올린다 (이미 있으면 이름만 갱신) — 받은 경로를 그대로 돌려준다. 임시 폴더는 올리지 않는다 */
400
412
  function remember(root) {
413
+ if (isTempWorkspace(root) && !process.env.KEDOVI_HOME) { writeShim(root); return root; }
401
414
  const all = readRegistry();
402
415
  const name = workspaceName(root);
403
416
  const old = all.find((w) => w.path === root);
@@ -425,10 +438,10 @@ function writeShim(root) {
425
438
  }
426
439
  } catch { /* 편의 기능 — 못 만들어도 명령은 계속 */ }
427
440
  }
428
- /** 아직 워크스페이스로 남아 있는 것만 — 지웠거나 옮긴 폴더는 목록에서 뺀다 */
441
+ /** 아직 워크스페이스로 남아 있는 것만 — 지웠거나 옮긴 폴더 · 임시 폴더는 목록에서 뺀다 */
429
442
  function liveRegistry() {
430
443
  const all = readRegistry();
431
- const live = all.filter((w) => fs.existsSync(path.join(w.path, 'workspace.json')));
444
+ const live = all.filter((w) => fs.existsSync(path.join(w.path, 'workspace.json')) && (process.env.KEDOVI_HOME || !isTempWorkspace(w.path)));
432
445
  if (live.length !== all.length) writeRegistry(live);
433
446
  return live;
434
447
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kedovi",
3
- "version": "0.77.0",
3
+ "version": "0.77.1",
4
4
  "private": false,
5
5
  "description": "Claude Code · Codex 겸용 AI 협업 워크스페이스 킷",
6
6
  "license": "MIT",