claude-code-kr 0.3.11 → 0.3.13
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/lib/cckr-command.md +7 -1
- package/lib/hooks.js +11 -10
- package/lib/locales/ko.json +4 -0
- package/lib/patcher.js +31 -0
- package/package.json +1 -1
package/lib/cckr-command.md
CHANGED
|
@@ -3,4 +3,10 @@ description: cckr 한글 패치 버전 확인
|
|
|
3
3
|
---
|
|
4
4
|
<!-- managed-by: claude-code-kr -->
|
|
5
5
|
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
entry.hooks?.some(h =>
|
|
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:
|
|
39
|
+
command: expectedCommand
|
|
39
40
|
}]
|
|
40
41
|
});
|
|
41
42
|
|
package/lib/locales/ko.json
CHANGED
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"\"GitHub CLI not authenticated\"": "\"GitHub CLI 인증되지 않음\"",
|
|
85
85
|
"\"GitHub CLI not found\"": "\"GitHub CLI를 찾을 수 없음\"",
|
|
86
86
|
"\"Got it, thanks!\"": "\"알겠습니다!\"",
|
|
87
|
+
"\"Hang tight… really working through this one…\"": "\"잠시만요… 이거 정말 꼼꼼히 보는 중…\"",
|
|
87
88
|
"\"Hit Enter to queue up additional messages while Claude is working.\"": "\"Claude 작업 중 Enter를 눌러 추가 메시지를 대기열에 넣으세요.\"",
|
|
88
89
|
"\"Hooks\"": "\"훅\"",
|
|
89
90
|
"\"Initializing…\"": "\"초기화 중…\"",
|
|
@@ -182,14 +183,17 @@
|
|
|
182
183
|
"\"Skills\"": "\"스킬\"",
|
|
183
184
|
"\"Start new session\"": "\"새 세션 시작\"",
|
|
184
185
|
"\"Start with small features or bug fixes, tell Claude to propose a plan, and verify its suggested edits\"": "\"작은 기능이나 버그 수정부터 시작하고, Claude에게 계획을 제안하게 한 뒤 수정 사항을 확인하세요\"",
|
|
186
|
+
"\"Still going… thanks for hanging in there…\"": "\"계속 진행 중… 기다려 주셔서 감사해요…\"",
|
|
185
187
|
"\"Stop hook error occurred\"": "\"중단 훅 오류 발생\"",
|
|
186
188
|
"\"Submit Feedback / Bug Report\"": "\"피드백/버그 리포트 제출\"",
|
|
187
189
|
"\"Submit answers\"": "\"답변 제출\"",
|
|
188
190
|
"\"System prompt\"": "\"시스템 프롬프트\"",
|
|
189
191
|
"\"Tab ID to identify which tab group this operation applies to\"": "\"이 작업이 적용될 탭 그룹을 식별하기 위한 탭 ID\"",
|
|
192
|
+
"\"Taking the time to get this right… thanks for your patience…\"": "\"제대로 하려고 시간을 들이는 중… 인내해 주셔서 감사해요…\"",
|
|
190
193
|
"\"Theme\"": "\"테마\"",
|
|
191
194
|
"\"Thinking a bit longer… still working on it…\"": "\"조금 더 생각하는 중… 계속 진행 중…\"",
|
|
192
195
|
"\"Thinking mode\"": "\"사고 모드\"",
|
|
196
|
+
"\"This is a harder one… it might take another minute…\"": "\"이건 좀 어려운 거네요… 1분 정도 더 걸릴 수 있어요…\"",
|
|
193
197
|
"\"Tips for getting started\"": "\"시작 가이드\"",
|
|
194
198
|
"\"Try again\"": "\"다시 시도\"",
|
|
195
199
|
"\"Try setting environment variable COLORTERM=truecolor for richer colors\"": "\"환경변수 COLORTERM=truecolor를 설정하면 더 풍부한 색상을 사용할 수 있습니다\"",
|
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
|
// 백업 생성 또는 백업에서 복원 (중복 패치 방지)
|