claude-code-kr 0.3.11 → 0.3.12

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.
@@ -3,4 +3,10 @@ description: cckr 한글 패치 버전 확인
3
3
  ---
4
4
  <!-- managed-by: claude-code-kr -->
5
5
 
6
- `cckr status` 명령을 실행해서 출력을 그대로 보여줘. 해석하거나 추가 설명하지 마.
6
+ 이 세션에 적용된 cckr 버전과 디스크 상태를 함께 보여줘. 다음 bash 번만 실행하고 결과를 그대로 출력:
7
+
8
+ ```bash
9
+ echo "=== 이 세션 ==="; cat /tmp/cckr-session-$PPID.json 2>/dev/null || echo "(세션 정보 없음 — 새 세션을 시작하세요)"; echo ""; echo "=== 디스크 (현재 cli.js) ==="; cckr status
10
+ ```
11
+
12
+ 추가 해석/요약 없이 출력만 그대로.
package/lib/hooks.js CHANGED
@@ -3,7 +3,7 @@ const path = require('path');
3
3
  const os = require('os');
4
4
 
5
5
  const SETTINGS_PATH = path.join(os.homedir(), '.claude', 'settings.json');
6
- const HOOK_COMMAND = 'cckr apply 2>/dev/null || true';
6
+ const HOOK_COMMAND = 'CCKR_SESSION_PPID=$PPID cckr apply 2>/dev/null || true';
7
7
  const HOOK_ID = 'cckr-auto-patch';
8
8
 
9
9
  function readSettings() {
@@ -20,22 +20,23 @@ function install() {
20
20
  if (!settings.hooks) settings.hooks = {};
21
21
  if (!settings.hooks.SessionStart) settings.hooks.SessionStart = [];
22
22
 
23
- // 옛날 cc-kr hook 제거
24
- settings.hooks.SessionStart = settings.hooks.SessionStart.filter(entry =>
25
- !entry.hooks?.some(h => h.command?.includes('cc-kr-auto-patch') || (h.command?.includes('cc-kr') && !h.command?.includes('claude-code-kr')))
26
- );
23
+ const expectedCommand = `bash -c '# ${HOOK_ID}\n${HOOK_COMMAND}'`;
27
24
 
28
- // 이미 등록되어 있으면 스킵
29
- const exists = settings.hooks.SessionStart.some(entry =>
30
- entry.hooks?.some(h => h.command?.includes(HOOK_ID) || h.command?.includes('claude-code-kr'))
25
+ // 옛날 cc-kr hook 제거 + 기존 cckr hook도 제거 (커맨드 갱신을 위해)
26
+ settings.hooks.SessionStart = settings.hooks.SessionStart.filter(entry =>
27
+ !entry.hooks?.some(h =>
28
+ h.command?.includes('cc-kr-auto-patch') ||
29
+ (h.command?.includes('cc-kr') && !h.command?.includes('claude-code-kr')) ||
30
+ h.command?.includes(HOOK_ID)
31
+ )
31
32
  );
32
- if (exists) return { ok: true, skipped: true };
33
33
 
34
+ // 새로 등록 (항상 최신 커맨드로)
34
35
  settings.hooks.SessionStart.push({
35
36
  matcher: '.*',
36
37
  hooks: [{
37
38
  type: 'command',
38
- command: `bash -c '# ${HOOK_ID}\n${HOOK_COMMAND}'`
39
+ command: expectedCommand
39
40
  }]
40
41
  });
41
42
 
package/lib/patcher.js CHANGED
@@ -130,6 +130,37 @@ function apply(cliJs, { force = false } = {}) {
130
130
  } catch {}
131
131
  }
132
132
 
133
+ // 세션 시작 시점 캡처 — SessionStart hook이 CCKR_SESSION_PPID env로 호출
134
+ // 패치 직전의 marker = 이 세션이 메모리에 로드한 cli.js 버전
135
+ const sessionPpid = process.env.CCKR_SESSION_PPID;
136
+ if (sessionPpid && /^\d+$/.test(sessionPpid)) {
137
+ let preMarker = null;
138
+ try {
139
+ preMarker = JSON.parse(fs.readFileSync(markerPath, 'utf8'));
140
+ } catch {}
141
+ const sessionInfo = {
142
+ capturedAt: new Date().toISOString(),
143
+ claudePid: sessionPpid,
144
+ ccVersion: ccVersion,
145
+ // 이 세션이 로드한 cli.js의 cckr 버전 (패치 직전)
146
+ // marker 없으면 cli.js가 unpatched 상태였음
147
+ sessionCckrVersion: preMarker?.cckrVersion || 'unpatched',
148
+ installedCckrVersion: pkg.version,
149
+ };
150
+ try {
151
+ fs.writeFileSync(`/tmp/cckr-session-${sessionPpid}.json`, JSON.stringify(sessionInfo, null, 2));
152
+ // 7일 이상 된 세션 파일 정리
153
+ const tmpFiles = fs.readdirSync('/tmp').filter(f => /^cckr-session-\d+\.json$/.test(f));
154
+ const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
155
+ for (const f of tmpFiles) {
156
+ try {
157
+ const stat = fs.statSync(`/tmp/${f}`);
158
+ if (stat.mtimeMs < sevenDaysAgo) fs.unlinkSync(`/tmp/${f}`);
159
+ } catch {}
160
+ }
161
+ } catch {}
162
+ }
163
+
133
164
  const bakPath = cliJs + '.bak';
134
165
 
135
166
  // 백업 생성 또는 백업에서 복원 (중복 패치 방지)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-kr",
3
- "version": "0.3.11",
3
+ "version": "0.3.12",
4
4
  "description": "Claude Code 한글 패치 CLI — /btw → /근데, /help → /도움, /compact → /압축",
5
5
  "main": "./index.js",
6
6
  "bin": {