@amirtechai/xclaude 0.2.3 → 0.2.5

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/cli.mjs +52 -20
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -120358,7 +120358,7 @@ function printStartupScreen() {
120358
120358
  const sLen = ` ● ${sL} Ready — type /help to begin`.length;
120359
120359
  out.push(boxRow(sRow, W2, sLen));
120360
120360
  out.push(`${rgb(...BORDER)}╚${"═".repeat(W2 - 2)}╝${RESET}`);
120361
- out.push(` ${DIM}${rgb(...DIMCOL)}xclaude ${RESET}${rgb(...ACCENT)}v${"0.2.3"}${RESET}`);
120361
+ out.push(` ${DIM}${rgb(...DIMCOL)}xclaude ${RESET}${rgb(...ACCENT)}v${"0.2.5"}${RESET}`);
120362
120362
  out.push("");
120363
120363
  process.stdout.write(out.join(`
120364
120364
  `) + `
@@ -140024,11 +140024,13 @@ $ npm install --save-dev react-devtools-core
140024
140024
  cleanupYogaNode(removeNode);
140025
140025
  getFocusManager(node).handleNodeRemoved(removeNode, node);
140026
140026
  },
140027
- commitUpdate(node, updatePayload, _type, _oldProps, _newProps) {
140028
- if (!updatePayload) {
140027
+ commitUpdate(node, _type, oldProps, newProps) {
140028
+ const props = diff(oldProps, newProps);
140029
+ const style = diff(oldProps["style"], newProps["style"]);
140030
+ const nextStyle = newProps["style"];
140031
+ if (!props && !style) {
140029
140032
  return;
140030
140033
  }
140031
- const { props, style, nextStyle } = updatePayload;
140032
140034
  if (props) {
140033
140035
  for (const [key, value] of Object.entries(props)) {
140034
140036
  if (key === "style") {
@@ -144381,6 +144383,13 @@ var init_TerminalSizeContext = __esm(() => {
144381
144383
  });
144382
144384
 
144383
144385
  // src/ink/components/App.tsx
144386
+ import { appendFileSync as appendFileSync4 } from "fs";
144387
+ function xclaudeDebug(msg) {
144388
+ try {
144389
+ appendFileSync4("/tmp/xclaude-debug.log", `[${new Date().toISOString()}] ${msg}
144390
+ `);
144391
+ } catch {}
144392
+ }
144384
144393
  function processKeysInBatch(app, items, _unused1, _unused2) {
144385
144394
  if (items.some((i2) => i2.kind === "key" || i2.kind === "mouse" && !((i2.button & 32) !== 0 && (i2.button & 3) === 3))) {
144386
144395
  updateLastInteractionTime();
@@ -144631,6 +144640,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
144631
144640
  stdin.setEncoding("utf8");
144632
144641
  if (isEnabled) {
144633
144642
  if (this.rawModeEnabledCount === 0) {
144643
+ xclaudeDebug(`handleSetRawMode(true): isTTY=${stdin.isTTY} rawModeCount=${this.rawModeEnabledCount} stdinMode=${this.stdinMode}`);
144634
144644
  stopCapturingEarlyInput();
144635
144645
  stdin.ref();
144636
144646
  stdin.setRawMode(true);
@@ -144696,6 +144706,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
144696
144706
  }
144697
144707
  };
144698
144708
  handleReadable = () => {
144709
+ xclaudeDebug("handleReadable: event fired");
144699
144710
  const now2 = Date.now();
144700
144711
  if (now2 - this.lastStdinTime > STDIN_RESUME_GAP_MS) {
144701
144712
  this.props.onStdinResume?.();
@@ -370543,7 +370554,7 @@ function getAnthropicEnvMetadata() {
370543
370554
  function getBuildAgeMinutes() {
370544
370555
  if (false)
370545
370556
  ;
370546
- const buildTime = new Date("2026-04-12T10:32:18.586Z").getTime();
370557
+ const buildTime = new Date("2026-04-12T10:55:35.876Z").getTime();
370547
370558
  if (isNaN(buildTime))
370548
370559
  return;
370549
370560
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -397301,7 +397312,7 @@ function buildPrimarySection() {
397301
397312
  }, undefined, false, undefined, this);
397302
397313
  return [{
397303
397314
  label: "Version",
397304
- value: "0.2.3"
397315
+ value: "0.2.5"
397305
397316
  }, {
397306
397317
  label: "Session name",
397307
397318
  value: nameValue
@@ -462408,7 +462419,7 @@ var init_bridge_kick = __esm(() => {
462408
462419
  var call58 = async () => {
462409
462420
  return {
462410
462421
  type: "text",
462411
- value: `${"99.0.0"} (built ${"2026-04-12T10:32:18.586Z"})`
462422
+ value: `${"99.0.0"} (built ${"2026-04-12T10:55:35.876Z"})`
462412
462423
  };
462413
462424
  }, version2, version_default;
462414
462425
  var init_version = __esm(() => {
@@ -514279,10 +514290,18 @@ function PromptInput({
514279
514290
  });
514280
514291
  const [cursorOffset, setCursorOffset] = import_react256.useState(input.length);
514281
514292
  const lastInternalInputRef = React144.useRef(input);
514282
- if (input !== lastInternalInputRef.current) {
514283
- setCursorOffset(input.length);
514293
+ const lastPropInputRef = React144.useRef(input);
514294
+ React144.useLayoutEffect(() => {
514295
+ if (input === lastPropInputRef.current) {
514296
+ return;
514297
+ }
514298
+ lastPropInputRef.current = input;
514299
+ if (input === lastInternalInputRef.current) {
514300
+ return;
514301
+ }
514284
514302
  lastInternalInputRef.current = input;
514285
- }
514303
+ setCursorOffset((prev) => prev === input.length ? prev : input.length);
514304
+ }, [input]);
514286
514305
  const trackAndSetInput = React144.useCallback((value) => {
514287
514306
  lastInternalInputRef.current = value;
514288
514307
  onInputChange(value);
@@ -515701,7 +515720,7 @@ function PromptInput({
515701
515720
  multiline: true,
515702
515721
  onSubmit,
515703
515722
  onChange,
515704
- value: historyMatch ? getValueFromInput(typeof historyMatch === "string" ? historyMatch : historyMatch.display) : input,
515723
+ value: isSearchingHistory && historyMatch ? getValueFromInput(typeof historyMatch === "string" ? historyMatch : historyMatch.display) : input,
515705
515724
  onHistoryUp: handleHistoryUp,
515706
515725
  onHistoryDown: handleHistoryDown,
515707
515726
  onHistoryReset: resetHistory,
@@ -535361,7 +535380,7 @@ function WelcomeV2() {
535361
535380
  dimColor: true,
535362
535381
  children: [
535363
535382
  "v",
535364
- "0.2.3",
535383
+ "0.2.5",
535365
535384
  " "
535366
535385
  ]
535367
535386
  }, undefined, true, undefined, this)
@@ -535561,7 +535580,7 @@ function WelcomeV2() {
535561
535580
  dimColor: true,
535562
535581
  children: [
535563
535582
  "v",
535564
- "0.2.3",
535583
+ "0.2.5",
535565
535584
  " "
535566
535585
  ]
535567
535586
  }, undefined, true, undefined, this)
@@ -535787,7 +535806,7 @@ function AppleTerminalWelcomeV2(t0) {
535787
535806
  dimColor: true,
535788
535807
  children: [
535789
535808
  "v",
535790
- "0.2.3",
535809
+ "0.2.5",
535791
535810
  " "
535792
535811
  ]
535793
535812
  }, undefined, true, undefined, this);
@@ -536041,7 +536060,7 @@ function AppleTerminalWelcomeV2(t0) {
536041
536060
  dimColor: true,
536042
536061
  children: [
536043
536062
  "v",
536044
- "0.2.3",
536063
+ "0.2.5",
536045
536064
  " "
536046
536065
  ]
536047
536066
  }, undefined, true, undefined, this);
@@ -537536,7 +537555,7 @@ var init_ClaudeInChromeOnboarding = __esm(() => {
537536
537555
  });
537537
537556
 
537538
537557
  // src/interactiveHelpers.tsx
537539
- import { appendFileSync as appendFileSync4 } from "fs";
537558
+ import { appendFileSync as appendFileSync5 } from "fs";
537540
537559
  function completeOnboarding() {
537541
537560
  saveGlobalConfig((current) => ({
537542
537561
  ...current,
@@ -537721,7 +537740,7 @@ function getRenderContext(exitOnCtrlC) {
537721
537740
  cpu: process.cpuUsage()
537722
537741
  }) + `
537723
537742
  `;
537724
- appendFileSync4(frameTimingLogPath, line);
537743
+ appendFileSync5(frameTimingLogPath, line);
537725
537744
  }
537726
537745
  if (isSynchronizedOutputSupported()) {
537727
537746
  return;
@@ -554652,6 +554671,7 @@ __export(exports_main, {
554652
554671
  });
554653
554672
  import { readFileSync as readFileSync12 } from "fs";
554654
554673
  import { resolve as resolve41 } from "path";
554674
+ import { appendFileSync as _dbgAppend } from "fs";
554655
554675
  function logManagedSettings() {
554656
554676
  try {
554657
554677
  const policySettings = getSettingsForSource("policySettings");
@@ -554870,7 +554890,14 @@ function initializeEntrypoint(isNonInteractive) {
554870
554890
  }
554871
554891
  process.env.CLAUDE_CODE_ENTRYPOINT = isNonInteractive ? "sdk-cli" : "cli";
554872
554892
  }
554893
+ function _xdbg(msg) {
554894
+ try {
554895
+ _dbgAppend("/tmp/xclaude-debug.log", `[${new Date().toISOString()}] MAIN: ${msg}
554896
+ `);
554897
+ } catch {}
554898
+ }
554873
554899
  async function main() {
554900
+ _xdbg(`main() called — stdout.isTTY=${process.stdout.isTTY} stdin.isTTY=${process.stdin.isTTY}`);
554874
554901
  profileCheckpoint("main_function_start");
554875
554902
  process.env.NoDefaultCurrentDirectoryInExePath = "1";
554876
554903
  initializeWarningHandler();
@@ -554897,6 +554924,7 @@ async function main() {
554897
554924
  stopCapturingEarlyInput();
554898
554925
  }
554899
554926
  const isInteractive = !isNonInteractive;
554927
+ _xdbg(`isNonInteractive=${isNonInteractive} isInteractive=${isInteractive} (hasPrintFlag=${hasPrintFlag} hasInitOnly=${hasInitOnlyFlag} stdout.isTTY=${process.stdout.isTTY})`);
554900
554928
  setIsInteractive(isInteractive);
554901
554929
  initializeEntrypoint(isNonInteractive);
554902
554930
  const clientType = (() => {
@@ -555674,12 +555702,15 @@ ${customInstructions}` : customInstructions;
555674
555702
  createRoot: createRoot3
555675
555703
  } = await Promise.resolve().then(() => (init_ink2(), exports_ink));
555676
555704
  root2 = await createRoot3(ctx.renderOptions);
555705
+ _xdbg("createRoot done");
555677
555706
  logEvent("tengu_timer", {
555678
555707
  event: "startup",
555679
555708
  durationMs: Math.round(process.uptime() * 1000)
555680
555709
  });
555681
555710
  const setupScreensStart = Date.now();
555711
+ _xdbg("calling showSetupScreens");
555682
555712
  const onboardingShown = await showSetupScreens(root2, permissionMode, allowDangerouslySkipPermissions, commands, enableClaudeInChrome, devChannels);
555713
+ _xdbg(`showSetupScreens done, onboardingShown=${onboardingShown}`);
555683
555714
  if (false) {}
555684
555715
  if (false) {}
555685
555716
  if (onboardingShown && prompt2?.trim().toLowerCase() === "/login") {
@@ -556598,6 +556629,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
556598
556629
  let deepLinkBanner = null;
556599
556630
  if (false) {}
556600
556631
  const initialMessages = deepLinkBanner ? [deepLinkBanner, ...hookMessages] : hookMessages.length > 0 ? hookMessages : undefined;
556632
+ _xdbg("calling launchRepl (main path)");
556601
556633
  await launchRepl(root2, {
556602
556634
  getFpsMetrics,
556603
556635
  stats: stats2,
@@ -556608,7 +556640,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
556608
556640
  pendingHookMessages
556609
556641
  }, renderAndRun);
556610
556642
  }
556611
- }).version("0.2.3 (Xclaude)", "-v, --version", "Output the version number");
556643
+ }).version("0.2.5 (Xclaude)", "-v, --version", "Output the version number");
556612
556644
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
556613
556645
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
556614
556646
  if (canUserConfigureAdvisor()) {
@@ -557178,7 +557210,7 @@ function validateProviderEnvOrExit() {
557178
557210
  async function main2() {
557179
557211
  const args = process.argv.slice(2);
557180
557212
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
557181
- console.log(`${"0.2.3"} (Xclaude)`);
557213
+ console.log(`${"0.2.5"} (Xclaude)`);
557182
557214
  return;
557183
557215
  }
557184
557216
  if (args.includes("--setup") || args[0] === "setup") {
@@ -557310,4 +557342,4 @@ async function main2() {
557310
557342
  }
557311
557343
  main2();
557312
557344
 
557313
- //# debugId=EA0AD9D6E2112D4664756E2164756E21
557345
+ //# debugId=80E4DAACD8D70EAA64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amirtechai/xclaude",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "Claude Code opened to any LLM — OpenAI, Gemini, DeepSeek, Groq, Ollama, and 200+ models",
5
5
  "type": "module",
6
6
  "bin": {