claude-code-kr 0.1.22 โ†’ 0.1.31

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/bin/cc-kr.js CHANGED
@@ -56,6 +56,18 @@ switch (cmd) {
56
56
  const result = patcher.apply();
57
57
  if (result.ok) {
58
58
  console.log(`๐ŸŽ‰ ${result.count}๊ฐœ ์ปค๋งจ๋“œ ํ•œ๊ธ€ํ™” ์™„๋ฃŒ`);
59
+ console.log(`๐Ÿ“ UI ํŒจ์น˜: ${result.ui.applied}/${result.ui.total}`);
60
+ console.log(`๐Ÿ”ง ๊ตฌ์กฐ ํŒจ์น˜: ${result.structural.applied}/${result.structural.total}`);
61
+ const totalSkipped = result.ui.skipped.length + result.structural.skipped.length;
62
+ if (totalSkipped > 0) {
63
+ console.log(`โš ๏ธ ${totalSkipped}๊ฐœ ์Šคํ‚ต (CC ๋ฒ„์ „ ์ฐจ์ด ๊ฐ€๋Šฅ)`);
64
+ if (process.argv.includes('--verbose') || process.argv.includes('-v')) {
65
+ for (const s of result.structural.skipped) console.log(` ๐Ÿ”ง ${s}`);
66
+ for (const s of result.ui.skipped) console.log(` ๐Ÿ“ ${s}`);
67
+ } else {
68
+ console.log(' cckr apply -v ๋กœ ์ƒ์„ธ ํ™•์ธ');
69
+ }
70
+ }
59
71
  console.log(' ์ƒˆ ์„ธ์…˜์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค');
60
72
  } else {
61
73
  console.error(`โŒ ${result.error}`);
@@ -123,15 +135,23 @@ switch (cmd) {
123
135
  console.log(pkg.version);
124
136
  break;
125
137
 
138
+ case '--help':
139
+ case '-h':
140
+ case 'help':
126
141
  default:
127
142
  console.log(`cckr (claude-code-kr) v${pkg.version} โ€” Claude Code ํ•œ๊ธ€ ํŒจ์น˜ CLI
128
143
 
129
144
  ์‚ฌ์šฉ๋ฒ•:
130
- cckr status ํŒจ์น˜ ์ƒํƒœ ํ™•์ธ
131
- cckr apply ํ•œ๊ธ€ ํŒจ์น˜ ์ ์šฉ
132
- cckr restore ์›๋ณธ ๋ณต์›
133
- cckr list ํ•œ๊ธ€ ๋งคํ•‘ ๋ชฉ๋ก
134
- cckr -v ๋ฒ„์ „ ํ™•์ธ`);
145
+ cckr status ํŒจ์น˜ ์ƒํƒœ ํ™•์ธ
146
+ cckr apply ํ•œ๊ธ€ ํŒจ์น˜ ์ ์šฉ
147
+ cckr apply -v ์ ์šฉ + ์Šคํ‚ต๋œ ํŒจ์น˜ ์ƒ์„ธ ๋ณด๊ธฐ
148
+ cckr restore ์›๋ณธ ๋ณต์›
149
+ cckr list ํ•œ๊ธ€ ๋งคํ•‘ ๋ชฉ๋ก
150
+ cckr -v ๋ฒ„์ „ ํ™•์ธ
151
+
152
+ sudo ํ™˜๊ฒฝ:
153
+ sudo cckr apply ์‹œ์Šคํ…œ Node.js๋กœ CC ์„ค์น˜ํ•œ ๊ฒฝ์šฐ
154
+ sudo cckr restore ์‹œ์Šคํ…œ Node.js๋กœ CC ์„ค์น˜ํ•œ ๊ฒฝ์šฐ`);
135
155
  }
136
156
 
137
157
  // ๋ชจ๋“  ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ
package/lib/patcher.js CHANGED
@@ -125,23 +125,28 @@ function apply(cliJs) {
125
125
  // Bash
126
126
  ['return"Running command"', 'return"๋ช…๋ น์–ด ์‹คํ–‰ ์ค‘"'],
127
127
  ['return O??"Running in the background"', 'return O??"๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ์ค‘"'],
128
- // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ (Searching for 3 patterns, reading 1 fileโ€ฆ)
129
- // ํ•œ๊ตญ์–ด๋Š” ๋‹จ๋ณต์ˆ˜ ๊ตฌ๋ถ„ ์—†์œผ๋ฏ€๋กœ ๋‹จ์ˆœํ™”
130
- ['q===1?"pattern":"patterns"', 'q===1?"ํŒจํ„ด":"ํŒจํ„ด"'],
131
- ['K===1?"file":"files"', 'K===1?"ํŒŒ์ผ":"ํŒŒ์ผ"'],
128
+ // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ โ€” ํ…œํ”Œ๋ฆฟ ํ†ต์งธ ๊ต์ฒด (์–ด์ˆœ: ํ•œ๊ตญ์–ด)
129
+ // "Searching for 3 patterns" โ†’ "3๊ฐœ ํŒจํ„ด ๊ฒ€์ƒ‰"
130
+ ['O.push(`${$} ${q} ${q===1?"pattern":"patterns"}`)', 'O.push(`${q}๊ฐœ ํŒจํ„ด ${$}`)'],
131
+ ['O.push(`${$} ${K} ${K===1?"file":"files"}`)', 'O.push(`${K}๊ฐœ ํŒŒ์ผ ${$}`)'],
132
+ ['O.push(`${$} ${A} ${A===1?"directory":"directories"}`)', 'O.push(`${A}๊ฐœ ํด๋” ${$}`)'],
133
+ // ๋™์‚ฌ ํ•œ๊ธ€ํ™” (์œ„ ํ…œํ”Œ๋ฆฟ์—์„œ ${$}๋กœ ๋“ค์–ด๊ฐ)
132
134
  ['"Searching for":"searching for"', '"๊ฒ€์ƒ‰":"๊ฒ€์ƒ‰"'],
133
135
  ['"Searched for":"searched for"', '"๊ฒ€์ƒ‰ ์™„๋ฃŒ":"๊ฒ€์ƒ‰ ์™„๋ฃŒ"'],
134
136
  ['O.length===0?"Reading":"reading":O.length===0?"Read":"read"', 'O.length===0?"์ฝ๋Š” ์ค‘":"์ฝ๋Š” ์ค‘":O.length===0?"์ฝ๊ธฐ ์™„๋ฃŒ":"์ฝ๊ธฐ ์™„๋ฃŒ"'],
135
137
  ['O.length===0?"Listing":"listing":O.length===0?"Listed":"listed"', 'O.length===0?"๋ชฉ๋ก":"๋ชฉ๋ก":O.length===0?"๋ชฉ๋ก ์™„๋ฃŒ":"๋ชฉ๋ก ์™„๋ฃŒ"'],
136
- ['A===1?"directory":"directories"', 'A===1?"ํด๋”":"ํด๋”"'],
138
+ // directory ๋‹จ๋… ์‚ฌ์šฉ (๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ)
137
139
  ['g===1?"directory":"directories"', 'g===1?"ํด๋”":"ํด๋”"'],
138
- // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ โ€” JSX ์ฝ”๋“œ๊ฒฝ๋กœ (2๋ฒˆ์งธ)
140
+ // ๋„๊ตฌ ์š”์•ฝ ๋ฉ”์‹œ์ง€ โ€” JSX ์ฝ”๋“œ๊ฒฝ๋กœ (์–ด์ˆœ + ๋ฒˆ์—ญ)
139
141
  ['z6?"Searching for":"searching for":z6?"Searched for":"searched for"', 'z6?"๊ฒ€์ƒ‰":"๊ฒ€์ƒ‰":z6?"๊ฒ€์ƒ‰ ์™„๋ฃŒ":"๊ฒ€์ƒ‰ ์™„๋ฃŒ"'],
140
- ['U===1?"pattern":"patterns"', 'U===1?"ํŒจํ„ด":"ํŒจํ„ด"'],
141
142
  ['z6?"Reading":"reading":z6?"Read":"read"', 'z6?"์ฝ๋Š” ์ค‘":"์ฝ๋Š” ์ค‘":z6?"์ฝ๊ธฐ ์™„๋ฃŒ":"์ฝ๊ธฐ ์™„๋ฃŒ"'],
142
143
  ['z6?"Listing":"listing":z6?"Listed":"listed"', 'z6?"๋ชฉ๋ก":"๋ชฉ๋ก":z6?"๋ชฉ๋ก ์™„๋ฃŒ":"๋ชฉ๋ก ์™„๋ฃŒ"'],
144
+ // JSX ์–ด์ˆœ ๋ณ€๊ฒฝ: "verb count noun" โ†’ "count๊ฐœ noun verb"
145
+ ['key:"search"},r," ",pq.default.createElement(V,{bold:!0},U)," ",U===1?"pattern":"patterns"', 'key:"search"},pq.default.createElement(V,{bold:!0},U),"๊ฐœ ํŒจํ„ด ",r'],
146
+ ['key:"read"},r," ",pq.default.createElement(V,{bold:!0},p)," ",p===1?"file":"files"', 'key:"read"},pq.default.createElement(V,{bold:!0},p),"๊ฐœ ํŒŒ์ผ ",r'],
147
+ ['key:"list"},r," ",pq.default.createElement(V,{bold:!0},g)," ",g===1?"ํด๋”":"ํด๋”"', 'key:"list"},pq.default.createElement(V,{bold:!0},g),"๊ฐœ ํด๋” ",r'],
143
148
  // ๊ถŒํ•œ ๋ชจ๋“œ
144
- ['title:"Bypass Permissions",shortTitle:"Bypass"', 'title:"๊ถŒํ•œ ๋ฌด์‹œ",shortTitle:"๋ฌด์‹œ"'],
149
+ ['title:"Bypass Permissions",shortTitle:"Bypass"', 'title:"ํ™•์ธ ์ƒ๋žต",shortTitle:"์ƒ๋žต"'],
145
150
  ['title:"Accept edits",shortTitle:"Accept"', 'title:"์ˆ˜์ • ํ—ˆ์šฉ",shortTitle:"ํ—ˆ์šฉ"'],
146
151
  ['title:"Don\'t Ask",shortTitle:"DontAsk"', 'title:"๋ฌป์ง€ ์•Š๊ธฐ",shortTitle:"์ž๋™"'],
147
152
  ['title:"Auto mode",shortTitle:"Auto"', 'title:"์ž๋™ ๋ชจ๋“œ",shortTitle:"์ž๋™"'],
@@ -153,8 +158,24 @@ function apply(cliJs) {
153
158
  // ๊ถŒํ•œ ๋ชจ๋“œ label (ํ™”๋ฉด์— ์ง์ ‘ ํ‘œ์‹œ)
154
159
  ['label:"accept edits on"', 'label:"์ˆ˜์ • ํ—ˆ์šฉ ๋ชจ๋“œ"'],
155
160
  ['label:"auto mode on"', 'label:"์ž๋™ ๋ชจ๋“œ"'],
156
- // ์ƒํƒœ๋ฐ”
161
+ // ๊ถŒํ•œ ๋ชจ๋“œ footer ํ‘œ์‹œ (title.toLowerCase() + " on")
162
+ ['.toLowerCase()," on"', '.toLowerCase()," ์ค‘"'],
163
+ ['action:"cycle"', 'action:"์ „ํ™˜ํ•˜๊ธฐ"'],
164
+ // KeyboardShortcutHint โ€” "to" โ†’ "์œผ๋กœ"
165
+ ['"(",X," to ",z,")"', '"(",X,"์œผ๋กœ ",z,")"'],
166
+ ['X," to ",z)', 'X," ",z)'],
167
+ ['action:"expand"', 'action:"ํŽผ์ณ๋ณด๊ธฐ"'],
168
+ // ์ƒํƒœ๋ฐ” โ€” tokens, thinking
157
169
  [' ยท /effort`', ' ยท /๋…ธ๋ ฅ`'],
170
+ ['`${Z6} tokens`:`${s6.arrowDown} ${Z6} tokens`', '`${Z6} ํ† ํฐ`:`${s6.arrowDown} ${Z6} ํ† ํฐ`'],
171
+ ['UK(H)+" tokens"', 'UK(H)+" ํ† ํฐ"'],
172
+ ['`thinking${G}`:typeof f==="number"?`thought for ${Math.max(1,Math.round(f/1000))}s`', '`์ƒ๊ฐ์ค‘${G}`:typeof f==="number"?`${Math.max(1,Math.round(f/1000))}์ดˆ๊ฐ„ ์ƒ๊ฐํ•จ`'],
173
+ // ํ„ด ์™„๋ฃŒ ๋ฉ”์‹œ์ง€ โ€” "Crunched for 2๋ถ„ 27์ดˆ" โ†’ "2๋ถ„ 27์ดˆ์— ๊ฑธ์ณ ์ฒ˜๋ฆฌ ์™„๋ฃŒ"
174
+ ['`${A} for ${X}`', '`${X}์— ๊ฑธ์ณ ${A}`'],
175
+ ['"Baked","Brewed","Churned","Cogitated","Cooked","Crunched","Sautรฉed","Worked"', '"์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ","์ฒ˜๋ฆฌ ์™„๋ฃŒ"'],
176
+ // formatDuration โ€” ์‹œ๊ฐ„ ํ‘œ์‹œ ํ•œ๊ธ€ํ™”
177
+ ['return`${_}d ${z}h`;return`${_}d ${z}h ${Y}m`}if(z>0){if(O&&Y===0&&A===0)return`${z}h`;if(O&&A===0)return`${z}h ${Y}m`;return`${z}h ${Y}m ${A}s`}if(Y>0){if(O&&A===0)return`${Y}m`;return`${Y}m ${A}s`}return`${A}s`',
178
+ 'return`${_}์ผ ${z}์‹œ๊ฐ„`;return`${_}์ผ ${z}์‹œ๊ฐ„ ${Y}๋ถ„`}if(z>0){if(O&&Y===0&&A===0)return`${z}์‹œ๊ฐ„`;if(O&&A===0)return`${z}์‹œ๊ฐ„ ${Y}๋ถ„`;return`${z}์‹œ๊ฐ„ ${Y}๋ถ„ ${A}์ดˆ`}if(Y>0){if(O&&A===0)return`${Y}๋ถ„`;return`${Y}๋ถ„ ${A}์ดˆ`}return`${A}์ดˆ`'],
158
179
  // ๋„์›€๋ง ํ™”๋ฉด (shortcuts)
159
180
  ['"! for bash mode"', '"! bash ๋ชจ๋“œ"'],
160
181
  ['"/ for commands"', '"/ ์ปค๋งจ๋“œ"'],
@@ -185,8 +206,6 @@ function apply(cliJs) {
185
206
  ['"Conversation compacted"', '"๋Œ€ํ™” ์••์ถ• ์™„๋ฃŒ"'],
186
207
  // ๋„๊ตฌ ์™„๋ฃŒ (Done)
187
208
  ['j===1?"1 tool use":`${j} tool uses`', 'j===1?"๋„๊ตฌ 1ํšŒ":`๋„๊ตฌ ${j}ํšŒ`'],
188
- // thinking ํ‘œ์‹œ
189
- ['`thinking${G}`:typeof f==="number"?`thought for ${Math.max(1,Math.round(f/1000))}s`', '`์‚ฌ๊ณ  ์ค‘${G}`:typeof f==="number"?`${Math.max(1,Math.round(f/1000))}์ดˆ ์‚ฌ๊ณ `'],
190
209
  // hook says
191
210
  ['" says: "', '": "'],
192
211
  // Advisor
@@ -200,6 +219,25 @@ function apply(cliJs) {
200
219
  ['"Initializingโ€ฆ"', '"์ดˆ๊ธฐํ™” ์ค‘โ€ฆ"'],
201
220
  ['"Shortcuts"', '"๋‹จ์ถ•ํ‚ค"'],
202
221
  // ๊ถŒํ•œ ๋Œ€ํ™”์ƒ์ž
222
+ ['"Do you want to proceed?"', '"์‹คํ–‰ํ• ๊นŒ์š”?"'],
223
+ ['label:"Yes",value:"yes"', 'label:"๋„ค",value:"yes"'],
224
+ ['label:"No",value:"no"', 'label:"์•„๋‹ˆ์š”",value:"no"'],
225
+ ['"Yes, and don\'t ask again for "', '"๋„ค, ๋‹ค์‹œ ๋ฌป์ง€ ์•Š๊ธฐ: "'],
226
+ ['" commands in"', '" ๋ช…๋ น์–ด"'],
227
+ ['"commands in "', '"๋ช…๋ น์–ด "'],
228
+ ['label:"Yes, and bypass permissions"', 'label:"๋„ค, ํ™•์ธ ์ƒ๋žต"'],
229
+ ['label:"Yes, and use auto mode"', 'label:"๋„ค, ์ž๋™ ๋ชจ๋“œ ์‚ฌ์šฉ"'],
230
+ ['label:"Yes, auto-accept edits"', 'label:"๋„ค, ์ˆ˜์ • ์ž๋™ ํ—ˆ์šฉ"'],
231
+ ['label:"Yes, enable auto mode"', 'label:"๋„ค, ์ž๋™ ๋ชจ๋“œ ํ™œ์„ฑํ™”"'],
232
+ ['label:"Yes, enter plan mode"', 'label:"๋„ค, ๊ณ„ํš ๋ชจ๋“œ ์ง„์ž…"'],
233
+ ['label:"Yes, and make it my default mode"', 'label:"๋„ค, ๊ธฐ๋ณธ ๋ชจ๋“œ๋กœ ์„ค์ •"'],
234
+ ['label:"Yes, for this session"', 'label:"๋„ค, ์ด ์„ธ์…˜์—์„œ"'],
235
+ ['label:"Yes, delete"', 'label:"๋„ค, ์‚ญ์ œ"'],
236
+ ['label:"No, cancel"', 'label:"์•„๋‹ˆ์š”, ์ทจ์†Œ"'],
237
+ ['label:"No, exit"', 'label:"์•„๋‹ˆ์š”, ์ข…๋ฃŒ"'],
238
+ ['label:"No, exit Claude Code"', 'label:"์•„๋‹ˆ์š”, Claude Code ์ข…๋ฃŒ"'],
239
+ ['label:"Not now"', 'label:"๋‚˜์ค‘์—"'],
240
+ ['label:"No, not now"', 'label:"์•„๋‹ˆ์š”, ๋‚˜์ค‘์—"'],
203
241
  ['"tell Claude what to do next"', '"๋‹ค์Œ์— ํ•  ์ผ์„ ์•Œ๋ ค์ฃผ์„ธ์š”"'],
204
242
  ['"tell Claude what to do differently"', '"๋‹ค๋ฅด๊ฒŒ ํ•  ์ผ์„ ์•Œ๋ ค์ฃผ์„ธ์š”"'],
205
243
  ['"What would you like to do?"', '"๋ฌด์—‡์„ ํ• ๊นŒ์š”?"'],
@@ -212,16 +250,85 @@ function apply(cliJs) {
212
250
  ['progressMessage:"creating commit and PR"', 'progressMessage:"์ปค๋ฐ‹ ๋ฐ PR ์ƒ์„ฑ ์ค‘"'],
213
251
  ['progressMessage:"reviewing pull request"', 'progressMessage:"ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ฆฌ๋ทฐ ์ค‘"'],
214
252
  ['progressMessage:"analyzing your sessions"', 'progressMessage:"์„ธ์…˜ ๋ถ„์„ ์ค‘"'],
253
+ // ํŒ ๋ฉ”์‹œ์ง€ (์Šคํ”ผ๋„ˆ ํ‘œ์‹œ)
254
+ ['"Start with small features or bug fixes, tell Claude to propose a plan, and verify its suggested edits"', '"์ž‘์€ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ , Claude์—๊ฒŒ ๊ณ„ํš์„ ์ œ์•ˆํ•˜๊ฒŒ ํ•œ ๋’ค ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”"'],
255
+ ['"Use /config to change your default permission mode (including Plan Mode)"', '"/config๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ณ„ํš ๋ชจ๋“œ ํฌํ•จ)"'],
256
+ ['"Use git worktrees to run multiple Claude sessions in parallel."', '"git worktree๋กœ ์—ฌ๋Ÿฌ Claude ์„ธ์…˜์„ ๋ณ‘๋ ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."'],
257
+ ['"Running multiple Claude sessions? Use /color and /rename to tell them apart at a glance."', '"์—ฌ๋Ÿฌ Claude ์„ธ์…˜ ์‹คํ–‰ ์ค‘? /color์™€ /rename์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์„ธ์š”."'],
258
+ ['"Use /memory to view and manage Claude memory"', '"/memory๋กœ Claude ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์„ธ์š”"'],
259
+ ['"Use /theme to change the color theme"', '"/theme์œผ๋กœ ์ƒ‰์ƒ ํ…Œ๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜์„ธ์š”"'],
260
+ ['"Try setting environment variable COLORTERM=truecolor for richer colors"', '"ํ™˜๊ฒฝ๋ณ€์ˆ˜ COLORTERM=truecolor๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋” ํ’๋ถ€ํ•œ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
261
+ ['"Use /statusline to set up a custom status line that will display beneath the input box"', '"/statusline์œผ๋กœ ์ž…๋ ฅ์ฐฝ ์•„๋ž˜์— ์ปค์Šคํ…€ ์ƒํƒœ์ค„์„ ์„ค์ •ํ•˜์„ธ์š”"'],
262
+ ['"Hit Enter to queue up additional messages while Claude is working."', '"Claude ์ž‘์—… ์ค‘ Enter๋ฅผ ๋ˆŒ๋Ÿฌ ์ถ”๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์œผ์„ธ์š”."'],
263
+ ['"Send messages to Claude while it works to steer Claude in real-time"', '"Claude ์ž‘์—… ์ค‘ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐฉํ–ฅ์„ ์กฐ์ •ํ•˜์„ธ์š”"'],
264
+ ['"Ask Claude to create a todo list when working on complex tasks to track progress and remain on track"', '"๋ณต์žกํ•œ ์ž‘์—… ์‹œ Claude์—๊ฒŒ ํ•  ์ผ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ฒŒ ํ•˜๋ฉด ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
265
+ ['"Connect Claude to your IDE ยท /ide"', '"Claude๋ฅผ IDE์— ์—ฐ๊ฒฐํ•˜์„ธ์š” ยท /ide"'],
266
+ ['"Run /install-github-app to tag @claude right from your Github issues and PRs"', '"/install-github-app์œผ๋กœ GitHub ์ด์Šˆ์™€ PR์—์„œ @claude๋ฅผ ํƒœ๊ทธํ•˜์„ธ์š”"'],
267
+ ['"Run /install-slack-app to use Claude in Slack"', '"/install-slack-app์œผ๋กœ Slack์—์„œ Claude๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”"'],
268
+ ['"Use /permissions to pre-approve and pre-deny bash, edit, and MCP tools"', '"/permissions๋กœ bash, edit, MCP ๋„๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ํ—ˆ์šฉ/๊ฑฐ๋ถ€ํ•˜์„ธ์š”"'],
269
+ ['"Did you know you can drag and drop image files into your terminal?"', '"ํ„ฐ๋ฏธ๋„์— ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
270
+ ['"Paste images into Claude Code using control+v (not cmd+v!)"', '"control+v๋กœ Claude Code์— ์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š” (cmd+v ์•„๋‹˜!)"'],
271
+ ['"Double-tap esc to rewind the conversation to a previous point in time"', '"esc ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ๋Œ€ํ™”๋ฅผ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ์„ธ์š”"'],
272
+ ['"Double-tap esc to rewind the code and/or conversation to a previous point in time"', '"esc ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ์ฝ”๋“œ์™€ ๋Œ€ํ™”๋ฅผ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆฌ์„ธ์š”"'],
273
+ ['"Run claude --continue or claude --resume to resume a conversation"', '"claude --continue ๋˜๋Š” --resume์œผ๋กœ ๋Œ€ํ™”๋ฅผ ์ด์–ด์„œ ํ•˜์„ธ์š”"'],
274
+ ['"Name your conversations with /rename to find them easily in /resume later"', '"/rename์œผ๋กœ ๋Œ€ํ™” ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ฉด /resume์—์„œ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"'],
275
+ ['"Create skills by adding .md files to .claude/skills/ in your project or ~/.claude/skills/ for skills that work in any project"', '".claude/skills/์— .md ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด ์Šคํ‚ฌ์„ ๋งŒ๋“œ์„ธ์š”. ~/.claude/skills/๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ"'],
276
+ ['"Use /agents to optimize specific tasks. Eg. Software Architect, Code Writer, Code Reviewer"', '"/agents๋กœ ํŠน์ • ์ž‘์—…์„ ์ตœ์ ํ™”ํ•˜์„ธ์š”. ์˜ˆ: Software Architect, Code Writer, Code Reviewer"'],
277
+ ['"Use --agent <agent_name> to directly start a conversation with a subagent"', '"--agent <์—์ด์ „ํŠธ๋ช…>์œผ๋กœ ์„œ๋ธŒ์—์ด์ „ํŠธ์™€ ์ง์ ‘ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”"'],
278
+ ['"Run Claude Code locally or remotely using the Claude desktop app: clau.de/desktop"', '"Claude ๋ฐ์Šคํฌํ†ฑ ์•ฑ์œผ๋กœ ๋กœ์ปฌ/์›๊ฒฉ์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”: clau.de/desktop"'],
279
+ ['"Run tasks in the cloud while you keep coding locally ยท clau.de/web"', '"๋กœ์ปฌ์—์„œ ์ฝ”๋”ฉํ•˜๋ฉด์„œ ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘์—… ์‹คํ–‰ ยท clau.de/web"'],
280
+ ['"/mobile to use Claude Code from the Claude app on your phone"', '"/mobile๋กœ ํœด๋Œ€ํฐ Claude ์•ฑ์—์„œ Claude Code ์‚ฌ์šฉ"'],
281
+ ['"Use /feedback to help us improve!"', '"/feedback์œผ๋กœ ๊ฐœ์„ ์— ๋„์›€์„ ์ฃผ์„ธ์š”!"'],
282
+ // ๋™์  ํŒ โ€” ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์˜ ์ •์  ๋ถ€๋ถ„
283
+ ['"chat:imagePaste","Chat","ctrl+v")} to paste images from your clipboard', '"chat:imagePaste","Chat","ctrl+v")}๋กœ ํด๋ฆฝ๋ณด๋“œ ์ด๋ฏธ์ง€๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”'],
284
+ ['Use Plan Mode to prepare for a complex request before making changes. Press ${', '๋ณต์žกํ•œ ์š”์ฒญ ์ „ ๊ณ„ํš ๋ชจ๋“œ๋กœ ์ค€๋น„ํ•˜์„ธ์š”. ${'],
285
+ ['"chat:cycleMode","Chat","shift+tab")} twice to enable.', '"chat:cycleMode","Chat","shift+tab")}๋ฅผ ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.'],
286
+ ['"chat:cycleMode","Chat","shift+tab")} to cycle between default mode, auto-accept edit mode, and plan mode', '"chat:cycleMode","Chat","shift+tab")}๋กœ ๊ธฐ๋ณธ ๋ชจ๋“œ, ์ˆ˜์ • ํ—ˆ์šฉ, ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”'],
287
+ ['"chat:cycleMode","Chat","shift+tab")} twice to activate Plan Mode and plan with Claude Opus.', '"chat:cycleMode","Chat","shift+tab")}๋ฅผ ๋‘ ๋ฒˆ ๋ˆŒ๋Ÿฌ ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.'],
288
+ ['Your default model setting is Opus Plan Mode. Press ${', '๊ธฐ๋ณธ ๋ชจ๋ธ์ด Opus ๊ณ„ํš ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ${'],
289
+ ['Continue your session in Claude Code Desktop with ${', 'Claude Code Desktop์—์„œ ์„ธ์…˜ ์ด์–ด๊ฐ€๊ธฐ: ${'],
290
+ // ๋™์  ํŒ โ€” ์กฐ๊ฑด๋ถ„๊ธฐ (ternary) ์ •์  ๋ฌธ์ž์—ด
291
+ ['"Run /terminal-setup to enable convenient terminal integration like Option + Enter for new line and more"', '"/terminal-setup์œผ๋กœ Option+Enter ์ค„๋ฐ”๊ฟˆ ๋“ฑ ํ„ฐ๋ฏธ๋„ ์—ฐ๋™์„ ์„ค์ •ํ•˜์„ธ์š”"'],
292
+ ['"Run /terminal-setup to enable convenient terminal integration like Shift + Enter for new line and more"', '"/terminal-setup์œผ๋กœ Shift+Enter ์ค„๋ฐ”๊ฟˆ ๋“ฑ ํ„ฐ๋ฏธ๋„ ์—ฐ๋™์„ ์„ค์ •ํ•˜์„ธ์š”"'],
293
+ ['"Press Option+Enter to send a multi-line message"', '"Option+Enter๋กœ ์—ฌ๋Ÿฌ ์ค„ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„ธ์š”"'],
294
+ ['"Press Shift+Enter to send a multi-line message"', '"Shift+Enter๋กœ ์—ฌ๋Ÿฌ ์ค„ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„ธ์š”"'],
295
+ ['"Run /terminal-setup to enable Option+Enter for new lines"', '"/terminal-setup์œผ๋กœ Option+Enter ์ค„๋ฐ”๊ฟˆ์„ ์„ค์ •ํ•˜์„ธ์š”"'],
296
+ ['"Run /terminal-setup to enable Shift+Enter for new lines"', '"/terminal-setup์œผ๋กœ Shift+Enter ์ค„๋ฐ”๊ฟˆ์„ ์„ค์ •ํ•˜์„ธ์š”"'],
215
297
  ];
216
298
 
299
+ let uiApplied = 0;
300
+ const uiSkipped = [];
301
+
217
302
  for (const [old, rep] of toolPatches) {
218
303
  if (content.includes(old)) {
219
304
  content = content.replaceAll(old, rep);
305
+ uiApplied++;
306
+ } else {
307
+ uiSkipped.push(old.length > 50 ? old.slice(0, 50) + 'โ€ฆ' : old);
220
308
  }
221
309
  }
222
310
 
311
+ // ๊ตฌ์กฐ์  ํŒจ์น˜ ์ถ”์ 
312
+ const structuralPatches = [
313
+ ['tab completion', tabOld],
314
+ ['autocomplete display', displayOld],
315
+ ['autocomplete regex 1', acOld],
316
+ ['autocomplete regex 2', acOld2],
317
+ ];
318
+ const structSkipped = [];
319
+ for (const [name, pattern] of structuralPatches) {
320
+ // ์ด๋ฏธ ์œ„์—์„œ replace ํ–ˆ์œผ๋ฏ€๋กœ new ๋ฒ„์ „์ด ์žˆ๋Š”์ง€ ์ฒดํฌ
321
+ const applied = !content.includes(pattern);
322
+ if (!applied) structSkipped.push(name);
323
+ }
324
+
223
325
  fs.writeFileSync(cliJs, content);
224
- return { ok: true, count };
326
+ return {
327
+ ok: true,
328
+ count,
329
+ ui: { applied: uiApplied, total: toolPatches.length, skipped: uiSkipped },
330
+ structural: { applied: structuralPatches.length - structSkipped.length, total: structuralPatches.length, skipped: structSkipped },
331
+ };
225
332
  }
226
333
 
227
334
  function restore(cliJs) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-kr",
3
- "version": "0.1.22",
3
+ "version": "0.1.31",
4
4
  "description": "Claude Code ํ•œ๊ธ€ ํŒจ์น˜ CLI โ€” /btw โ†’ /๊ทผ๋ฐ, /help โ†’ /๋„์›€, /compact โ†’ /์••์ถ•",
5
5
  "main": "./index.js",
6
6
  "bin": {