cc-viewer 0.2.1 → 1.0.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/README.md +6 -5
- package/cli.js +14 -12
- package/lib/assets/{index-DfxlBPQC.js → index-Cc1O-iKV.js} +149 -149
- package/lib/index.html +1 -1
- package/lib/server.js +58 -4
- package/locales/ar.json +13 -15
- package/locales/da.json +13 -15
- package/locales/de.json +13 -15
- package/locales/en.json +13 -15
- package/locales/es.json +13 -15
- package/locales/fr.json +13 -15
- package/locales/it.json +13 -15
- package/locales/ja.json +13 -15
- package/locales/ko.json +13 -15
- package/locales/no.json +13 -15
- package/locales/pl.json +13 -15
- package/locales/pt-BR.json +13 -15
- package/locales/ru.json +13 -15
- package/locales/th.json +13 -15
- package/locales/tr.json +13 -15
- package/locales/uk.json +13 -15
- package/locales/zh-TW.json +12 -14
- package/locales/zh.json +12 -9
- package/package.json +1 -1
package/lib/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Claude Code Viewer</title>
|
|
7
7
|
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-Cc1O-iKV.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-C7-c9XfU.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/lib/server.js
CHANGED
|
@@ -56,9 +56,29 @@ function checkPortAlive(port) {
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
function registerLogToServer(port, logFile) {
|
|
60
|
+
return new Promise((resolve) => {
|
|
61
|
+
const data = JSON.stringify({ logFile });
|
|
62
|
+
const req = httpRequest({
|
|
63
|
+
host: HOST, port, path: '/api/register-log', method: 'POST',
|
|
64
|
+
headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data) },
|
|
65
|
+
timeout: 2000,
|
|
66
|
+
}, (res) => {
|
|
67
|
+
res.resume();
|
|
68
|
+
resolve(true);
|
|
69
|
+
});
|
|
70
|
+
req.on('error', () => resolve(false));
|
|
71
|
+
req.on('timeout', () => { req.destroy(); resolve(false); });
|
|
72
|
+
req.write(data);
|
|
73
|
+
req.end();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
59
77
|
let clients = [];
|
|
60
78
|
let server;
|
|
61
79
|
let actualPort = START_PORT;
|
|
80
|
+
// 跟踪所有被 watch 的日志文件
|
|
81
|
+
const watchedFiles = new Map();
|
|
62
82
|
|
|
63
83
|
const MIME_TYPES = {
|
|
64
84
|
'.html': 'text/html; charset=utf-8',
|
|
@@ -103,11 +123,13 @@ function sendToClients(entry) {
|
|
|
103
123
|
});
|
|
104
124
|
}
|
|
105
125
|
|
|
106
|
-
function
|
|
126
|
+
function watchLogFile(logFile) {
|
|
127
|
+
if (watchedFiles.has(logFile)) return;
|
|
107
128
|
let lastSize = 0;
|
|
108
|
-
|
|
129
|
+
watchedFiles.set(logFile, true);
|
|
130
|
+
watchFile(logFile, { interval: 500 }, () => {
|
|
109
131
|
try {
|
|
110
|
-
const content = readFileSync(
|
|
132
|
+
const content = readFileSync(logFile, 'utf-8');
|
|
111
133
|
const newContent = content.slice(lastSize);
|
|
112
134
|
lastSize = content.length;
|
|
113
135
|
|
|
@@ -128,6 +150,10 @@ function startWatching() {
|
|
|
128
150
|
});
|
|
129
151
|
}
|
|
130
152
|
|
|
153
|
+
function startWatching() {
|
|
154
|
+
watchLogFile(LOG_FILE);
|
|
155
|
+
}
|
|
156
|
+
|
|
131
157
|
function handleRequest(req, res) {
|
|
132
158
|
const { url, method } = req;
|
|
133
159
|
|
|
@@ -142,6 +168,29 @@ function handleRequest(req, res) {
|
|
|
142
168
|
return;
|
|
143
169
|
}
|
|
144
170
|
|
|
171
|
+
// 注册新的日志文件进行 watch(供新进程复用旧服务时调用)
|
|
172
|
+
if (url === '/api/register-log' && method === 'POST') {
|
|
173
|
+
let body = '';
|
|
174
|
+
req.on('data', chunk => { body += chunk; });
|
|
175
|
+
req.on('end', () => {
|
|
176
|
+
try {
|
|
177
|
+
const { logFile } = JSON.parse(body);
|
|
178
|
+
if (logFile && typeof logFile === 'string' && logFile.startsWith(LOG_DIR) && existsSync(logFile)) {
|
|
179
|
+
watchLogFile(logFile);
|
|
180
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
181
|
+
res.end(JSON.stringify({ ok: true }));
|
|
182
|
+
} else {
|
|
183
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
184
|
+
res.end(JSON.stringify({ error: 'Invalid log file path' }));
|
|
185
|
+
}
|
|
186
|
+
} catch {
|
|
187
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
188
|
+
res.end(JSON.stringify({ error: 'Invalid request body' }));
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
|
|
145
194
|
// SSE endpoint
|
|
146
195
|
if (url === '/events' && method === 'GET') {
|
|
147
196
|
res.writeHead(200, {
|
|
@@ -308,6 +357,7 @@ export async function startViewer() {
|
|
|
308
357
|
const alive = await checkPortAlive(existingPort);
|
|
309
358
|
if (alive) {
|
|
310
359
|
actualPort = existingPort;
|
|
360
|
+
await registerLogToServer(existingPort, LOG_FILE);
|
|
311
361
|
return null;
|
|
312
362
|
}
|
|
313
363
|
}
|
|
@@ -326,6 +376,7 @@ export async function startViewer() {
|
|
|
326
376
|
const alive = await checkPortAlive(existingPort);
|
|
327
377
|
if (alive) {
|
|
328
378
|
actualPort = existingPort;
|
|
379
|
+
await registerLogToServer(existingPort, LOG_FILE);
|
|
329
380
|
releaseLock();
|
|
330
381
|
console.log(t('server.reuse', { host: HOST, port: existingPort }));
|
|
331
382
|
return null;
|
|
@@ -378,7 +429,10 @@ export async function startViewer() {
|
|
|
378
429
|
}
|
|
379
430
|
|
|
380
431
|
export function stopViewer() {
|
|
381
|
-
|
|
432
|
+
for (const logFile of watchedFiles.keys()) {
|
|
433
|
+
unwatchFile(logFile);
|
|
434
|
+
}
|
|
435
|
+
watchedFiles.clear();
|
|
382
436
|
clients.forEach(client => client.end());
|
|
383
437
|
clients = [];
|
|
384
438
|
if (server) {
|
package/locales/ar.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer يعمل بالفعل",
|
|
3
|
+
"cli.inject.success": "تم تثبيت CC Viewer بنجاح",
|
|
4
|
+
"cli.inject.exists": "CC Viewer مثبت بالفعل، لا حاجة لأي إجراء",
|
|
5
|
+
"cli.inject.fail": "❌ فشل التثبيت: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ لم يتم العثور على Claude Code cli.js: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " يرجى التأكد من تثبيت @anthropic-ai/claude-code",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "تم كتابة hook الإصلاح التلقائي في {path}",
|
|
9
|
+
"cli.hook.exists": "hook الإصلاح التلقائي موجود بالفعل في {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ فشل كتابة shell hook: {error}",
|
|
10
|
-
"cli.usage.hint": "\n
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅ تم تنظيف
|
|
11
|
+
"cli.usage.hint": "\nلإلغاء التثبيت، قم بتشغيل: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ تم تنظيف cli.js",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ لم يتم العثور على Claude Code cli.js، تم التخطي",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ فشل تنظيف
|
|
15
|
+
"cli.uninstall.cliFail": "❌ فشل تنظيف cli.js",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ تم إزالة shell hook من {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ لا حاجة للتنظيف في {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ فشل تنظيف shell hook: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ تم إلغاء تثبيت CC Viewer بالكامل",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 تم تشغيل CC Viewer: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer يعمل بالفعل: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ المنافذ {start}-{end} كلها مشغولة، لم يتم تشغيل خدمة المراقبة",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "الطلبات",
|
|
25
24
|
"ui.totalRequests": "الإجمالي: {count}",
|
|
26
25
|
"ui.waitingRequests": "في انتظار الطلبات...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "سياق النظام #{index}",
|
|
49
48
|
"ui.logCount": "{count} سجلات",
|
|
50
49
|
"ui.noLogs": "لا توجد ملفات سجلات",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "نتيجة الأداة",
|
|
53
51
|
"ui.toolReturnNamed": "نتيجة {name}",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "تم النسخ",
|
|
57
54
|
"ui.noHeaders": "لا يوجد Headers",
|
|
58
55
|
"ui.noBody": "لا يوجد Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ استجابة متدفقة — استخدم هذا الطلب بث SSE، لا يمكن التقاط محتوى الاستجابة بالكامل.",
|
|
60
57
|
"ui.responseNotCaptured": "لم يتم التقاط بيانات الاستجابة",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ توسيع",
|
|
63
59
|
"ui.collapse": "▼ طي",
|
|
64
|
-
"ui.noChat": "لا توجد بيانات محادثة MainAgent"
|
|
60
|
+
"ui.noChat": "لا توجد بيانات محادثة MainAgent",
|
|
61
|
+
"ui.diffWithPrev": "الفرق مع الطلب السابق",
|
|
62
|
+
"ui.diffSessionChanged": "حجم نص الطلب انخفض، ربما بسبب /clear أو /compact أو تغيير الجلسة"
|
|
65
63
|
}
|
package/locales/da.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer fungerer allerede",
|
|
3
|
+
"cli.inject.success": "CC Viewer installeret",
|
|
4
|
+
"cli.inject.exists": "CC Viewer allerede installeret, ingen handling nødvendig",
|
|
5
|
+
"cli.inject.fail": "❌ Installation mislykkedes: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js ikke fundet: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Sørg for at @anthropic-ai/claude-code er installeret",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Auto-reparations-hook skrevet til {path}",
|
|
9
|
+
"cli.hook.exists": "Auto-reparations-hook findes allerede i {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Kunne ikke skrive shell hook: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅ cli.js
|
|
11
|
+
"cli.usage.hint": "\nFor at afinstallere, kør: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js renset",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js ikke fundet, sprunget over",
|
|
14
|
-
"cli.uninstall.cliFail": "❌
|
|
15
|
+
"cli.uninstall.cliFail": "❌ Rensning af cli.js mislykkedes",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell hook fjernet fra {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ Ingen oprydning nødvendig i {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Kunne ikke rense shell hook: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer fuldstændigt afinstalleret",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer startet: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer kører allerede: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Porte {start}-{end} er alle i brug, overvågningstjeneste ikke startet",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Forespørgsler",
|
|
25
24
|
"ui.totalRequests": "Total: {count}",
|
|
26
25
|
"ui.waitingRequests": "Venter på forespørgsler...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "Systemkontekst #{index}",
|
|
49
48
|
"ui.logCount": "{count} logs",
|
|
50
49
|
"ui.noLogs": "Ingen logfiler",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Værktøjsresultat",
|
|
53
51
|
"ui.toolReturnNamed": "{name}-resultat",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Kopieret",
|
|
57
54
|
"ui.noHeaders": "Ingen Headers",
|
|
58
55
|
"ui.noBody": "Ingen Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Streaming-svar — Denne forespørgsel brugte SSE-streaming, svarindholdet kunne ikke fuldt indfanges.",
|
|
60
57
|
"ui.responseNotCaptured": "Svardata ikke indfanget",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Udvid",
|
|
63
59
|
"ui.collapse": "▼ Fold sammen",
|
|
64
|
-
"ui.noChat": "Ingen MainAgent samtaledata"
|
|
60
|
+
"ui.noChat": "Ingen MainAgent samtaledata",
|
|
61
|
+
"ui.diffWithPrev": "Diff med forrige anmodning",
|
|
62
|
+
"ui.diffSessionChanged": "Anmodningens størrelse er reduceret, muligvis på grund af /clear, /compact eller sessionsændring"
|
|
65
63
|
}
|
package/locales/de.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer funktioniert bereits",
|
|
3
|
+
"cli.inject.success": "CC Viewer erfolgreich installiert",
|
|
4
|
+
"cli.inject.exists": "CC Viewer bereits installiert, keine Aktion nötig",
|
|
5
|
+
"cli.inject.fail": "❌ Installation fehlgeschlagen: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js nicht gefunden: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Bitte stellen Sie sicher, dass @anthropic-ai/claude-code installiert ist",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Auto-Reparatur-Hook in {path} geschrieben",
|
|
9
|
+
"cli.hook.exists": "Auto-Reparatur-Hook existiert bereits in {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Shell-Hook konnte nicht geschrieben werden: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅ cli.js
|
|
11
|
+
"cli.usage.hint": "\nZum Deinstallieren: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js bereinigt",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js nicht gefunden, übersprungen",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ cli.js
|
|
15
|
+
"cli.uninstall.cliFail": "❌ cli.js Bereinigung fehlgeschlagen",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell-Hook aus {path} entfernt",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ Keine Bereinigung in {path} nötig",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Shell-Hook-Bereinigung fehlgeschlagen: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer vollständig deinstalliert",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer gestartet: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer läuft bereits: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Ports {start}-{end} sind alle belegt, Überwachungsdienst nicht gestartet",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Anfragen",
|
|
25
24
|
"ui.totalRequests": "Gesamt: {count}",
|
|
26
25
|
"ui.waitingRequests": "Warte auf Anfragen...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "Systemkontext #{index}",
|
|
49
48
|
"ui.logCount": "{count} Logs",
|
|
50
49
|
"ui.noLogs": "Keine Log-Dateien",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Tool-Ergebnis",
|
|
53
51
|
"ui.toolReturnNamed": "{name}-Ergebnis",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Kopiert",
|
|
57
54
|
"ui.noHeaders": "Keine Headers",
|
|
58
55
|
"ui.noBody": "Kein Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Streaming-Antwort — Diese Anfrage nutzte SSE-Streaming, der Antwortinhalt konnte nicht vollständig erfasst werden.",
|
|
60
57
|
"ui.responseNotCaptured": "Antwortdaten nicht erfasst",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Aufklappen",
|
|
63
59
|
"ui.collapse": "▼ Zuklappen",
|
|
64
|
-
"ui.noChat": "Keine MainAgent-Gesprächsdaten"
|
|
60
|
+
"ui.noChat": "Keine MainAgent-Gesprächsdaten",
|
|
61
|
+
"ui.diffWithPrev": "Diff zur vorherigen Anfrage",
|
|
62
|
+
"ui.diffSessionChanged": "Anfragekörper wurde kleiner, möglicherweise durch /clear, /compact oder Sitzungswechsel"
|
|
65
63
|
}
|
package/locales/en.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer is already working",
|
|
3
|
+
"cli.inject.success": "CC Viewer installed successfully",
|
|
4
|
+
"cli.inject.exists": "CC Viewer already installed, no action needed",
|
|
5
|
+
"cli.inject.fail": "❌ Installation failed: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js not found: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Please make sure @anthropic-ai/claude-code is installed",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Auto-repair hook written to {path}",
|
|
9
|
+
"cli.hook.exists": "Auto-repair hook already exists in {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Failed to write shell hook: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅ cli.js
|
|
11
|
+
"cli.usage.hint": "\nTo uninstall, run: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js cleaned",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js not found, skipped",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ Failed to clean cli.js
|
|
15
|
+
"cli.uninstall.cliFail": "❌ Failed to clean cli.js",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell hook removed from {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ No cleanup needed in {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Failed to clean shell hook: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer fully uninstalled",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer started: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer already running: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Ports {start}-{end} are all in use, monitoring service not started",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Requests",
|
|
25
24
|
"ui.totalRequests": "Total: {count}",
|
|
26
25
|
"ui.waitingRequests": "Waiting for requests...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "System context #{index}",
|
|
49
48
|
"ui.logCount": "{count} logs",
|
|
50
49
|
"ui.noLogs": "No log files",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Tool result",
|
|
53
51
|
"ui.toolReturnNamed": "{name} result",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Copied",
|
|
57
54
|
"ui.noHeaders": "No Headers",
|
|
58
55
|
"ui.noBody": "No Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Streaming response — This request used SSE streaming, response content cannot be fully captured.",
|
|
60
57
|
"ui.responseNotCaptured": "Response not captured",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Expand",
|
|
63
59
|
"ui.collapse": "▼ Collapse",
|
|
64
|
-
"ui.noChat": "No MainAgent conversation data"
|
|
60
|
+
"ui.noChat": "No MainAgent conversation data",
|
|
61
|
+
"ui.diffWithPrev": "Diff with previous request",
|
|
62
|
+
"ui.diffSessionChanged": "Request body size decreased, possibly due to /clear, /compact, or session change"
|
|
65
63
|
}
|
package/locales/es.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer ya está funcionando",
|
|
3
|
+
"cli.inject.success": "CC Viewer instalado correctamente",
|
|
4
|
+
"cli.inject.exists": "CC Viewer ya instalado, no se requiere acción",
|
|
5
|
+
"cli.inject.fail": "❌ Instalación fallida: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js no encontrado: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Asegúrese de que @anthropic-ai/claude-code esté instalado",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Hook de auto-reparación escrito en {path}",
|
|
9
|
+
"cli.hook.exists": "Hook de auto-reparación ya existe en {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Error al escribir el shell hook: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅
|
|
11
|
+
"cli.usage.hint": "\nPara desinstalar, ejecute: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js limpiado",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js no encontrado, omitido",
|
|
14
|
-
"cli.uninstall.cliFail": "❌
|
|
15
|
+
"cli.uninstall.cliFail": "❌ Fallo al limpiar cli.js",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell hook eliminado de {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ No se necesita limpieza en {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Error al limpiar el shell hook: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer desinstalado completamente",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer iniciado: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer ya en ejecución: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Puertos {start}-{end} están todos en uso, servicio de monitoreo no iniciado",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Solicitudes",
|
|
25
24
|
"ui.totalRequests": "Total: {count}",
|
|
26
25
|
"ui.waitingRequests": "Esperando solicitudes...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "Contexto del sistema #{index}",
|
|
49
48
|
"ui.logCount": "{count} logs",
|
|
50
49
|
"ui.noLogs": "Sin archivos de log",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Resultado de herramienta",
|
|
53
51
|
"ui.toolReturnNamed": "Resultado de {name}",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Copiado",
|
|
57
54
|
"ui.noHeaders": "Sin Headers",
|
|
58
55
|
"ui.noBody": "Sin Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Respuesta en streaming — Esta solicitud usó streaming SSE, el contenido de la respuesta no se pudo capturar completamente.",
|
|
60
57
|
"ui.responseNotCaptured": "Datos de respuesta no capturados",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Expandir",
|
|
63
59
|
"ui.collapse": "▼ Contraer",
|
|
64
|
-
"ui.noChat": "Sin datos de conversación de MainAgent"
|
|
60
|
+
"ui.noChat": "Sin datos de conversación de MainAgent",
|
|
61
|
+
"ui.diffWithPrev": "Diferencia con la solicitud anterior",
|
|
62
|
+
"ui.diffSessionChanged": "El tamaño del cuerpo de la solicitud disminuyó, posiblemente debido a /clear, /compact o cambio de sesión"
|
|
65
63
|
}
|
package/locales/fr.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer fonctionne déjà",
|
|
3
|
+
"cli.inject.success": "CC Viewer installé avec succès",
|
|
4
|
+
"cli.inject.exists": "CC Viewer déjà installé, aucune action nécessaire",
|
|
5
|
+
"cli.inject.fail": "❌ Échec de l'installation : {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js introuvable : {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Veuillez vérifier que @anthropic-ai/claude-code est installé",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Hook de réparation auto écrit dans {path}",
|
|
9
|
+
"cli.hook.exists": "Hook de réparation auto déjà présent dans {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Échec de l'écriture du shell hook : {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅
|
|
11
|
+
"cli.usage.hint": "\nPour désinstaller, exécutez : ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js nettoyé",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js introuvable, ignoré",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ Échec du nettoyage de
|
|
15
|
+
"cli.uninstall.cliFail": "❌ Échec du nettoyage de cli.js",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell hook supprimé de {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ Aucun nettoyage nécessaire dans {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Échec du nettoyage du shell hook : {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer entièrement désinstallé",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer démarré : http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer déjà en cours d'exécution : http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Ports {start}-{end} tous occupés, service de surveillance non démarré",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Requêtes",
|
|
25
24
|
"ui.totalRequests": "Total : {count}",
|
|
26
25
|
"ui.waitingRequests": "En attente de requêtes...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "Contexte système #{index}",
|
|
49
48
|
"ui.logCount": "{count} logs",
|
|
50
49
|
"ui.noLogs": "Aucun fichier de log",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Résultat d'outil",
|
|
53
51
|
"ui.toolReturnNamed": "Résultat de {name}",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Copié",
|
|
57
54
|
"ui.noHeaders": "Pas de Headers",
|
|
58
55
|
"ui.noBody": "Pas de Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Réponse en streaming — Cette requête a utilisé le streaming SSE, le contenu de la réponse n'a pas pu être entièrement capturé.",
|
|
60
57
|
"ui.responseNotCaptured": "Données de réponse non capturées",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Déplier",
|
|
63
59
|
"ui.collapse": "▼ Replier",
|
|
64
|
-
"ui.noChat": "Aucune donnée de conversation MainAgent"
|
|
60
|
+
"ui.noChat": "Aucune donnée de conversation MainAgent",
|
|
61
|
+
"ui.diffWithPrev": "Diff avec la requête précédente",
|
|
62
|
+
"ui.diffSessionChanged": "La taille du corps de la requête a diminué, possiblement dû à /clear, /compact ou un changement de session"
|
|
65
63
|
}
|
package/locales/it.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer è già funzionante",
|
|
3
|
+
"cli.inject.success": "CC Viewer installato con successo",
|
|
4
|
+
"cli.inject.exists": "CC Viewer già installato, nessuna azione necessaria",
|
|
5
|
+
"cli.inject.fail": "❌ Installazione fallita: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js non trovato: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " Assicurati che @anthropic-ai/claude-code sia installato",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "Hook di auto-riparazione scritto in {path}",
|
|
9
|
+
"cli.hook.exists": "Hook di auto-riparazione già presente in {path}",
|
|
9
10
|
"cli.hook.fail": "⚠️ Impossibile scrivere il shell hook: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅
|
|
11
|
+
"cli.usage.hint": "\nPer disinstallare, esegui: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js pulito",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js non trovato, saltato",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ Pulizia
|
|
15
|
+
"cli.uninstall.cliFail": "❌ Pulizia cli.js fallita",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ Shell hook rimosso da {path}",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ Nessuna pulizia necessaria in {path}",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ Pulizia shell hook fallita: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer completamente disinstallato",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer avviato: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer già in esecuzione: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ Porte {start}-{end} tutte in uso, servizio di monitoraggio non avviato",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "Richieste",
|
|
25
24
|
"ui.totalRequests": "Totale: {count}",
|
|
26
25
|
"ui.waitingRequests": "In attesa di richieste...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "Contesto di sistema #{index}",
|
|
49
48
|
"ui.logCount": "{count} log",
|
|
50
49
|
"ui.noLogs": "Nessun file di log",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "Risultato strumento",
|
|
53
51
|
"ui.toolReturnNamed": "Risultato di {name}",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "Copiato",
|
|
57
54
|
"ui.noHeaders": "Nessun Header",
|
|
58
55
|
"ui.noBody": "Nessun Body",
|
|
59
56
|
"ui.streamingResponse": "⚡ Risposta in streaming — Questa richiesta ha utilizzato lo streaming SSE, il contenuto della risposta non può essere catturato completamente.",
|
|
60
57
|
"ui.responseNotCaptured": "Dati di risposta non catturati",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ Espandi",
|
|
63
59
|
"ui.collapse": "▼ Comprimi",
|
|
64
|
-
"ui.noChat": "Nessun dato di conversazione MainAgent"
|
|
60
|
+
"ui.noChat": "Nessun dato di conversazione MainAgent",
|
|
61
|
+
"ui.diffWithPrev": "Diff con la richiesta precedente",
|
|
62
|
+
"ui.diffSessionChanged": "La dimensione del corpo della richiesta è diminuita, probabilmente a causa di /clear, /compact o cambio di sessione"
|
|
65
63
|
}
|
package/locales/ja.json
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cli.
|
|
3
|
-
"cli.inject.
|
|
4
|
-
"cli.inject.
|
|
2
|
+
"cli.alreadyWorking": "CC Viewer は既に動作しています",
|
|
3
|
+
"cli.inject.success": "CC Viewer インストール成功",
|
|
4
|
+
"cli.inject.exists": "CC Viewer は既にインストール済み、操作不要",
|
|
5
|
+
"cli.inject.fail": "❌ インストール失敗: {error}",
|
|
5
6
|
"cli.inject.notFound": "❌ Claude Code cli.js が見つかりません: {path}",
|
|
6
7
|
"cli.inject.notFoundHint": " @anthropic-ai/claude-code がインストールされていることを確認してください",
|
|
7
|
-
"cli.hook.installed": "
|
|
8
|
-
"cli.hook.exists": "
|
|
8
|
+
"cli.hook.installed": "自動修復 hook を {path} に書き込みました",
|
|
9
|
+
"cli.hook.exists": "自動修復 hook は既に {path} に存在します",
|
|
9
10
|
"cli.hook.fail": "⚠️ shell hook の書き込みに失敗: {error}",
|
|
10
|
-
"cli.usage.hint": "\
|
|
11
|
-
"cli.usage.uninstallHint": "
|
|
12
|
-
"cli.uninstall.cliCleaned": "✅ cli.js
|
|
11
|
+
"cli.usage.hint": "\nアンインストールするには: ccv --uninstall",
|
|
12
|
+
"cli.usage.uninstallHint": "",
|
|
13
|
+
"cli.uninstall.cliCleaned": "✅ cli.js をクリーンアップしました",
|
|
13
14
|
"cli.uninstall.cliNotFound": "⚠️ Claude Code cli.js が見つかりません、スキップ",
|
|
14
|
-
"cli.uninstall.cliFail": "❌ cli.js
|
|
15
|
+
"cli.uninstall.cliFail": "❌ cli.js のクリーンアップに失敗",
|
|
15
16
|
"cli.uninstall.hookRemoved": "✅ shell hook を {path} から削除しました",
|
|
16
17
|
"cli.uninstall.hookClean": "✅ {path} のクリーンアップは不要です",
|
|
17
18
|
"cli.uninstall.hookFail": "❌ shell hook のクリーンアップに失敗: {error}",
|
|
18
19
|
"cli.uninstall.done": "\n🗑️ CC Viewer を完全にアンインストールしました",
|
|
19
|
-
|
|
20
20
|
"server.started": "\n🔍 CC Viewer 起動: http://{host}:{port}\n",
|
|
21
21
|
"server.reuse": "\n🔍 CC Viewer は既に実行中: http://{host}:{port}\n",
|
|
22
22
|
"server.portsBusy": "⚠️ ポート {start}-{end} はすべて使用中、監視サービスは起動されませんでした",
|
|
23
|
-
|
|
24
23
|
"ui.requestList": "リクエスト一覧",
|
|
25
24
|
"ui.totalRequests": "合計: {count}",
|
|
26
25
|
"ui.waitingRequests": "リクエスト待機中...",
|
|
@@ -48,18 +47,17 @@
|
|
|
48
47
|
"ui.systemContext": "システムコンテキスト #{index}",
|
|
49
48
|
"ui.logCount": "{count} 件のログ",
|
|
50
49
|
"ui.noLogs": "ログファイルなし",
|
|
51
|
-
|
|
52
50
|
"ui.toolReturn": "ツール結果",
|
|
53
51
|
"ui.toolReturnNamed": "{name} 結果",
|
|
54
52
|
"ui.lastResponse": "Last Response",
|
|
55
|
-
|
|
56
53
|
"ui.copySuccess": "コピーしました",
|
|
57
54
|
"ui.noHeaders": "Headers なし",
|
|
58
55
|
"ui.noBody": "Body なし",
|
|
59
56
|
"ui.streamingResponse": "⚡ ストリーミングレスポンス — このリクエストは SSE ストリーミングを使用しており、レスポンス内容を完全にキャプチャできませんでした。",
|
|
60
57
|
"ui.responseNotCaptured": "レスポンスデータ未キャプチャ",
|
|
61
|
-
|
|
62
58
|
"ui.expand": "▶ 展開",
|
|
63
59
|
"ui.collapse": "▼ 折りたたむ",
|
|
64
|
-
"ui.noChat": "MainAgent の会話データがありません"
|
|
60
|
+
"ui.noChat": "MainAgent の会話データがありません",
|
|
61
|
+
"ui.diffWithPrev": "前回リクエストとの差分",
|
|
62
|
+
"ui.diffSessionChanged": "リクエストボディのサイズが減少しました。/clear、/compact、またはセッション変更の可能性があります"
|
|
65
63
|
}
|