wormclaude 1.0.27 → 1.0.28

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
@@ -142,11 +142,9 @@ export function itemAnsi(it, cols) {
142
142
  if (it.kind === 'banner')
143
143
  return '\n' + bannerAnsi(cols);
144
144
  if (it.kind === 'user') {
145
- const inner = W - 4;
146
- const top = paint('╭' + ''.repeat(W - 2) + '', theme.greyDim);
147
- const bot = paint('' + '─'.repeat(W - 2) + '', theme.greyDim);
148
- const body = wrap('› ' + (it.text || ''), inner).map((ln) => paint('│ ', theme.greyDim) + paint(ln.padEnd(inner), theme.white) + paint(' │', theme.greyDim));
149
- return '\n' + [top, ...body, bot].join('\n');
145
+ // Kenarlıksız (kutu, küçültünce bozuluyordu) — sadece "› metin", resize'da temiz sarılır.
146
+ const body = wrap(it.text || '', W - 2).map((ln, i) => (i === 0 ? paint('', theme.greyDim, true) : ' ') + paint(ln, theme.white));
147
+ return '\n' + body.join('\n');
150
148
  }
151
149
  if (it.kind === 'assistant') {
152
150
  const md = markdownAnsi(it.text || '', cols).split('\n');
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.27';
19
+ export const VERSION = '1.0.28';
package/dist/tui.js CHANGED
@@ -6,7 +6,7 @@ import readline from 'node:readline';
6
6
  import logUpdate from 'log-update';
7
7
  import stringWidth from 'string-width';
8
8
  import { loadConfig, streamChat } from './api.js';
9
- import { itemAnsi, bannerAnsi } from './ansi.js';
9
+ import { itemAnsi } from './ansi.js';
10
10
  import { theme, VERSION } from './theme.js';
11
11
  import { cleanModelText } from './textclean.js';
12
12
  const RESET = '\x1b[0m';
@@ -116,9 +116,13 @@ export async function runTui() {
116
116
  process.stdout.write('\x1b[?1000l\x1b[?1002l\x1b[?1003l\x1b[?1006l\x1b[?1015l\x1b[?1007l');
117
117
  }
118
118
  catch { }
119
- process.stdout.write(bannerAnsi(cols()) + '\n');
120
- 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');
119
+ // Temiz başlangıç: önceki terminal içeriğini ve scrollback'i temizle.
120
+ process.stdout.write('\x1b[2J\x1b[3J\x1b[H');
121
+ // KOMPAKT banner (tek satır) — büyük ASCII scrollback'te küçültünce bozuluyordu; bu bozulmaz.
122
+ process.stdout.write(paint(' ● WORMCLAUDE', theme.red, true) + paint(' · uncensored security + code', theme.greyDim) + '\n');
123
+ process.stdout.write(paint(` v${VERSION} · özel renderer (deneysel) · /help komutlar · /kopyala panoya`, theme.greyDim) + '\n\n');
121
124
  renderFooter();
125
+ const quit = () => { logUpdate.clear(); process.stdout.write('\x1b[2J\x1b[3J\x1b[H'); process.exit(0); };
122
126
  let ctrlcAt = 0;
123
127
  process.stdin.on('keypress', (str, key) => {
124
128
  // Ctrl+C tek başına ÇIKMAZ (Windows'ta seçimi Ctrl+C ile kopyalarken uygulama kapanmasın).
@@ -131,18 +135,14 @@ export async function runTui() {
131
135
  }
132
136
  const now = Date.now();
133
137
  if (now - ctrlcAt < 2000) {
134
- logUpdate.clear();
135
- process.stdout.write('\n');
136
- process.exit(0);
138
+ quit();
137
139
  }
138
140
  ctrlcAt = now;
139
141
  printItem({ kind: 'note', text: 'Çıkmak için tekrar Ctrl+C (veya /cikis). Kopyalama Ctrl+C\'yi etkilemez.' });
140
142
  return;
141
143
  }
142
144
  if (key && key.ctrl && key.name === 'd') {
143
- logUpdate.clear();
144
- process.stdout.write('\n');
145
- process.exit(0);
145
+ quit();
146
146
  }
147
147
  if (busy)
148
148
  return; // tur sırasında giriş kilitli (M1)
@@ -154,8 +154,7 @@ export async function runTui() {
154
154
  return;
155
155
  }
156
156
  if (v === '/cikis' || v === '/exit' || v === '/quit') {
157
- logUpdate.clear();
158
- process.exit(0);
157
+ quit();
159
158
  }
160
159
  // /kopyala — son yanıtı OSC52 ile panoya
161
160
  if (v === '/kopyala' || v === '/copy') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.27",
3
+ "version": "1.0.28",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {