nexrall-code 0.5.83 → 0.5.84

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.
Files changed (2) hide show
  1. package/dist/index.js +37 -27
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -55882,6 +55882,12 @@ function stopRowCount() {
55882
55882
  rowCounter = null;
55883
55883
  return rows;
55884
55884
  }
55885
+ function addRowCount(text) {
55886
+ if (!rowCounter)
55887
+ return;
55888
+ const columns = process.stdout.columns || 80;
55889
+ rowCounter.rows += rowsOccupied(text, columns);
55890
+ }
55885
55891
  var NEX_LOGO = [
55886
55892
  "\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557",
55887
55893
  "\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2588\u2588\u2557\u2588\u2588\u2554\u255D",
@@ -65193,34 +65199,36 @@ function startInkTerminal() {
65193
65199
  }
65194
65200
  ),
65195
65201
  {
65196
- exitOnCtrlC: false,
65197
- // Opt into the Kitty keyboard protocol so `key.shift` is actually
65198
- // populated for Enter (see the Shift+Enter handling in useInput
65199
- // above) instead of always being false/undefined.
65202
+ exitOnCtrlC: false
65203
+ // `kittyKeyboard` is deliberately OMITTED no option object at all,
65204
+ // matching the real `claude` binary exactly (verified: capturing
65205
+ // claude's raw startup bytes in a pty shows no `\x1b[>1u` enable
65206
+ // sequence and no `\x1b[?u` query anywhere in its output; it relies
65207
+ // purely on ordinary UTF-8 keystrokes). Ink's own opt-in check
65208
+ // (`if (!this.options.kittyKeyboard) return;` in ink.js) then does
65209
+ // nothing at all: no enable sequence is ever written to the terminal.
65200
65210
  //
65201
- // MUST be 'enabled', not 'auto'. 'auto' has Ink send a CSI `?u` query
65202
- // to the terminal and then listen on `stdin`'s 'data' event for the
65203
- // reply (see ink/build/ink.js confirmKittySupport). That listener
65204
- // races Ink's own input pipeline, which reads stdin via 'readable' +
65205
- // `.read()` (paused mode) for its normal keystroke handling Node
65206
- // streams do not support mixing 'data' (flowing) and 'readable'
65207
- // (paused) consumers safely, and in practice the 'readable' consumer
65208
- // wins the terminal's query response. The reply itself (`\x1b[?1u`)
65209
- // then gets fed through Ink's normal key parser, which doesn't
65210
- // recognise it as any special key and inserts it as literal text —
65211
- // this is exactly the "[?1u" that appears in the input box right
65212
- // after Ink mounts (e.g. right after confirming the trust prompt).
65211
+ // This used to be `{ mode: 'enabled', flags: [...] }`, to populate
65212
+ // `key.shift` on Enter for Shift+Enter detection. That traded away
65213
+ // more than the tradeoff docs here previously accounted for: the
65214
+ // protocol doesn't just risk an inert unrecognised escape sequence on
65215
+ // unsupporting terminals on a REAL Mac Terminal.app with the
65216
+ // system's built-in Vietnamese Telex input source active, enabling it
65217
+ // broke typing accented characters entirely (reported: chào/việt
65218
+ // could be typed in `claude` but not in `nex`, same machine, same
65219
+ // input source, only the enable sequence differed between the two
65220
+ // binaries confirmed by pty-capturing both). The Kitty protocol
65221
+ // shifts key delivery from "already-composed UTF-8 text" to
65222
+ // raw keycodes, which is exactly the layer an IME's composition
65223
+ // depends on; some terminals that don't fully implement the protocol
65224
+ // still react to the enable sequence by changing how they hand off
65225
+ // composed IME text, rather than silently ignoring it as intended.
65213
65226
  //
65214
- // 'enabled' skips the query/response dance entirely: Ink just writes
65215
- // the enable sequence once (`\x1b[>1u`) and never listens for a
65216
- // reply, so there is nothing to leak into the input box. Terminals
65217
- // that don't support the protocol silently ignore the unrecognised
65218
- // escape sequence (the same way they ignore bracketed-paste mode),
65219
- // so Shift+Enter still safely falls back to the '\' continuation
65220
- // there — this trades "verify support first" for "assume support,
65221
- // no-op if absent", which is safe here because the only visible
65222
- // effect of enabling on an unsupporting terminal is nothing at all.
65223
- kittyKeyboard: { mode: "enabled", flags: ["disambiguateEscapeCodes"] }
65227
+ // Shift+Enter therefore no longer gets a distinguishable `key.shift`
65228
+ // on any terminal it always submits, same as plain Enter, exactly
65229
+ // matching claude's own behavior. The existing "\" continuation for
65230
+ // multi-line input (chat.ts) remains the way to enter a literal
65231
+ // newline, unchanged.
65224
65232
  }
65225
65233
  );
65226
65234
  });
@@ -66020,8 +66028,10 @@ Set ${TRUST_ENV_VAR}=1 to confirm non-interactively, or run \`nex\` interactivel
66020
66028
  tips
66021
66029
  };
66022
66030
  if (interactive) {
66023
- getInkTerminal().print(renderBanner({ ...bannerInfo, columns: process.stdout.columns ?? 80 }), { isBanner: true });
66031
+ const bannerCard = renderBanner({ ...bannerInfo, columns: process.stdout.columns ?? 80 });
66032
+ getInkTerminal().print(bannerCard, { isBanner: true });
66024
66033
  getInkTerminal().setBannerRegenerator((columns) => renderBanner({ ...bannerInfo, columns }));
66034
+ addRowCount(bannerCard);
66025
66035
  } else {
66026
66036
  console.log(renderBanner({ ...bannerInfo, columns: process.stdout.columns ?? 80 }));
66027
66037
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexrall-code",
3
- "version": "0.5.83",
3
+ "version": "0.5.84",
4
4
  "description": "Nexrall Code — AI coding assistant for your terminal (headless agent for scripts, CI and automation)",
5
5
  "keywords": [
6
6
  "ai",