wormclaude 1.0.25 → 1.0.26

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/dist/ansi.js CHANGED
@@ -72,9 +72,9 @@ const CLAUDE_ROWS = [
72
72
  ];
73
73
  /** Banner'ı ANSI olarak üretir (dar ekranda tek kelime, geniş ekranda yan yana). */
74
74
  export function bannerAnsi(cols) {
75
- if (cols < 46)
75
+ if (cols < 64)
76
76
  return paint('WORMCLAUDE', theme.red, true) + '\n' + paint(' ' + t('banner.subtitle'), theme.greyDim);
77
- const rows = cols >= 88 ? WORM_ROWS.map((w, i) => w + CLAUDE_ROWS[i]) : [...WORM_ROWS, ...CLAUDE_ROWS];
77
+ const rows = cols >= 100 ? WORM_ROWS.map((w, i) => w + CLAUDE_ROWS[i]) : [...WORM_ROWS, ...CLAUDE_ROWS];
78
78
  return rows.map((r) => paint(r, theme.red, true)).join('\n') + '\n' + paint(' ' + t('banner.subtitle'), theme.greyDim);
79
79
  }
80
80
  // ── Markdown bloğu → ANSI (kod blokları sözdizimi-vurgulu) ──
package/dist/cli.js CHANGED
@@ -254,9 +254,15 @@ function buildLines(items, cols) {
254
254
  for (const it of items) {
255
255
  lines.push([]); // üstte boşluk
256
256
  if (it.kind === 'banner') {
257
- const rows = cols >= 88 ? WORM_ROWS.map((w, i) => w + CLAUDE_ROWS[i]) : [...WORM_ROWS, ...CLAUDE_ROWS];
258
- for (const r of rows)
259
- lines.push([{ text: r, color: red, bold: true }]);
257
+ // Dar terminalde (<64) ASCII art sarıp bozulur temiz tek-kelime kullan.
258
+ if (cols < 64) {
259
+ lines.push([{ text: 'WORMCLAUDE', color: red, bold: true }]);
260
+ }
261
+ else {
262
+ const rows = cols >= 100 ? WORM_ROWS.map((w, i) => w + CLAUDE_ROWS[i]) : [...WORM_ROWS, ...CLAUDE_ROWS];
263
+ for (const r of rows)
264
+ lines.push([{ text: r, color: red, bold: true }]);
265
+ }
260
266
  lines.push([{ text: ' ' + t('banner.subtitle'), dim: true }]);
261
267
  }
262
268
  else if (it.kind === 'user') {
@@ -287,14 +293,14 @@ function buildLines(items, cols) {
287
293
  function Banner() {
288
294
  const { cols } = useDimensions();
289
295
  const RED = theme.red; // WORM + CLAUDE tek renk (kan kırmızısı)
290
- // Çok dar: temiz tek kelime (kırpılır, asla bozulmaz)
291
- if (cols < 46) {
296
+ // Dar terminal (<64): temiz tek kelime (ASCII art sarıp bozulmaz)
297
+ if (cols < 64) {
292
298
  return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
293
299
  React.createElement(Text, { color: RED, bold: true, wrap: "truncate" }, "WORMCLAUDE"),
294
300
  React.createElement(Text, { color: theme.greyDim, wrap: "truncate" }, t('banner.subtitle'))));
295
301
  }
296
302
  // Geniş ekran: tek satır WORMCLAUDE (WORM + CLAUDE yan yana, tek renk → düzgün kırpılır)
297
- if (cols >= 88) {
303
+ if (cols >= 100) {
298
304
  return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
299
305
  WORM_ROWS.map((w, i) => React.createElement(Text, { key: i, color: RED, bold: true, wrap: "truncate" }, w + CLAUDE_ROWS[i])),
300
306
  React.createElement(Text, { color: theme.greyDim, wrap: "truncate" }, ` ${t('banner.subtitle')}`)));
@@ -368,7 +374,8 @@ function StatusLine({ model, ctxTokens, trust = 0 }) {
368
374
  const barColor = pct > 85 ? theme.errorRed : pct > 60 ? theme.redBright : theme.grey;
369
375
  const cwd = path.basename(process.cwd()) || process.cwd();
370
376
  const badge = tier(trust).badge;
371
- return (React.createElement(Box, null,
377
+ // Tek satır + truncate → dar terminalde "WormClaud4" gibi taşma/wrap olmaz.
378
+ return (React.createElement(Text, { wrap: "truncate" },
372
379
  React.createElement(Text, { color: theme.greyDim },
373
380
  ' ',
374
381
  "WormClaude "),
package/dist/theme.js CHANGED
@@ -16,4 +16,4 @@ export const theme = {
16
16
  synType: '#a78bfa', // tip/sınıf adları, sabitler
17
17
  synProp: '#e0e0e0', // özellik/anahtar adları
18
18
  };
19
- export const VERSION = '1.0.25';
19
+ export const VERSION = '1.0.26';
package/dist/tui.js CHANGED
@@ -113,8 +113,27 @@ export async function runTui() {
113
113
  process.stdout.write(bannerAnsi(cols()) + '\n');
114
114
  process.stdout.write(paint(' uncensored security + code', theme.greyDim) + paint(' · WormClaude ', theme.greyDim) + paint('v' + VERSION, theme.red, true) + paint(' · özel renderer (deneysel)', theme.greyDim) + '\n\n');
115
115
  renderFooter();
116
+ let ctrlcAt = 0;
116
117
  process.stdin.on('keypress', (str, key) => {
118
+ // Ctrl+C tek başına ÇIKMAZ (Windows'ta seçimi Ctrl+C ile kopyalarken uygulama kapanmasın).
119
+ // Giriş varsa temizler; boşsa 2 sn içinde ikinci Ctrl+C ile çıkar.
117
120
  if (key && key.ctrl && key.name === 'c') {
121
+ if (inputBuf) {
122
+ inputBuf = '';
123
+ renderFooter();
124
+ return;
125
+ }
126
+ const now = Date.now();
127
+ if (now - ctrlcAt < 2000) {
128
+ logUpdate.clear();
129
+ process.stdout.write('\n');
130
+ process.exit(0);
131
+ }
132
+ ctrlcAt = now;
133
+ printItem({ kind: 'note', text: 'Çıkmak için tekrar Ctrl+C (veya /cikis). Kopyalama Ctrl+C\'yi etkilemez.' });
134
+ return;
135
+ }
136
+ if (key && key.ctrl && key.name === 'd') {
118
137
  logUpdate.clear();
119
138
  process.stdout.write('\n');
120
139
  process.exit(0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {