@amirtechai/xclaude 0.2.2 → 0.2.4

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 +50 -21
  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.2"}${RESET}`);
120361
+ out.push(` ${DIM}${rgb(...DIMCOL)}xclaude ${RESET}${rgb(...ACCENT)}v${"0.2.4"}${RESET}`);
120362
120362
  out.push("");
120363
120363
  process.stdout.write(out.join(`
120364
120364
  `) + `
@@ -144381,6 +144381,13 @@ var init_TerminalSizeContext = __esm(() => {
144381
144381
  });
144382
144382
 
144383
144383
  // src/ink/components/App.tsx
144384
+ import { appendFileSync as appendFileSync4 } from "fs";
144385
+ function xclaudeDebug(msg) {
144386
+ try {
144387
+ appendFileSync4("/tmp/xclaude-debug.log", `[${new Date().toISOString()}] ${msg}
144388
+ `);
144389
+ } catch {}
144390
+ }
144384
144391
  function processKeysInBatch(app, items, _unused1, _unused2) {
144385
144392
  if (items.some((i2) => i2.kind === "key" || i2.kind === "mouse" && !((i2.button & 32) !== 0 && (i2.button & 3) === 3))) {
144386
144393
  updateLastInteractionTime();
@@ -144631,6 +144638,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
144631
144638
  stdin.setEncoding("utf8");
144632
144639
  if (isEnabled) {
144633
144640
  if (this.rawModeEnabledCount === 0) {
144641
+ xclaudeDebug(`handleSetRawMode(true): isTTY=${stdin.isTTY} rawModeCount=${this.rawModeEnabledCount} stdinMode=${this.stdinMode}`);
144634
144642
  stopCapturingEarlyInput();
144635
144643
  stdin.ref();
144636
144644
  stdin.setRawMode(true);
@@ -144696,6 +144704,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
144696
144704
  }
144697
144705
  };
144698
144706
  handleReadable = () => {
144707
+ xclaudeDebug("handleReadable: event fired");
144699
144708
  const now2 = Date.now();
144700
144709
  if (now2 - this.lastStdinTime > STDIN_RESUME_GAP_MS) {
144701
144710
  this.props.onStdinResume?.();
@@ -370543,7 +370552,7 @@ function getAnthropicEnvMetadata() {
370543
370552
  function getBuildAgeMinutes() {
370544
370553
  if (false)
370545
370554
  ;
370546
- const buildTime = new Date("2026-04-11T20:58:44.280Z").getTime();
370555
+ const buildTime = new Date("2026-04-12T10:40:01.484Z").getTime();
370547
370556
  if (isNaN(buildTime))
370548
370557
  return;
370549
370558
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -397301,7 +397310,7 @@ function buildPrimarySection() {
397301
397310
  }, undefined, false, undefined, this);
397302
397311
  return [{
397303
397312
  label: "Version",
397304
- value: "0.2.2"
397313
+ value: "0.2.4"
397305
397314
  }, {
397306
397315
  label: "Session name",
397307
397316
  value: nameValue
@@ -462408,7 +462417,7 @@ var init_bridge_kick = __esm(() => {
462408
462417
  var call58 = async () => {
462409
462418
  return {
462410
462419
  type: "text",
462411
- value: `${"99.0.0"} (built ${"2026-04-11T20:58:44.280Z"})`
462420
+ value: `${"99.0.0"} (built ${"2026-04-12T10:40:01.484Z"})`
462412
462421
  };
462413
462422
  }, version2, version_default;
462414
462423
  var init_version = __esm(() => {
@@ -531050,11 +531059,6 @@ function REPL({
531050
531059
  enabled: !isRemoteSession
531051
531060
  });
531052
531061
  const tasksV2 = useTasksV2WithCollapseEffect();
531053
- import_react314.useEffect(() => {
531054
- if (isRemoteSession)
531055
- return;
531056
- performStartupChecks(setAppState);
531057
- }, [setAppState, isRemoteSession]);
531058
531062
  usePromptsFromClaudeInChrome(isRemoteSession ? EMPTY_MCP_CLIENTS2 : mcpClients, toolPermissionContext.mode);
531059
531063
  useSwarmInitialization(setAppState, initialMessages, {
531060
531064
  enabled: !isRemoteSession
@@ -531366,6 +531370,18 @@ function REPL({
531366
531370
  const activeRemote = sshRemote.isRemoteMode ? sshRemote : directConnect.isRemoteMode ? directConnect : remoteSession;
531367
531371
  const [pastedContents, setPastedContents] = import_react314.useState({});
531368
531372
  const [submitCount, setSubmitCount] = import_react314.useState(0);
531373
+ const startupChecksStartedRef = import_react314.useRef(false);
531374
+ const hasHadFirstSubmission = (submitCount ?? 0) > 0;
531375
+ import_react314.useEffect(() => {
531376
+ if (isRemoteSession)
531377
+ return;
531378
+ if (startupChecksStartedRef.current)
531379
+ return;
531380
+ if (!hasHadFirstSubmission)
531381
+ return;
531382
+ startupChecksStartedRef.current = true;
531383
+ performStartupChecks(setAppState);
531384
+ }, [setAppState, isRemoteSession, hasHadFirstSubmission]);
531369
531385
  const responseLengthRef = import_react314.useRef(0);
531370
531386
  const apiMetricsRef2 = import_react314.useRef([]);
531371
531387
  const setResponseLength = import_react314.useCallback((f) => {
@@ -531711,11 +531727,11 @@ function REPL({
531711
531727
  return "effort-callout";
531712
531728
  if (allowDialogsWithAnimation && showRemoteCallout)
531713
531729
  return "remote-callout";
531714
- if (allowDialogsWithAnimation && lspRecommendation)
531730
+ if (allowDialogsWithAnimation && lspRecommendation && startupChecksStartedRef.current)
531715
531731
  return "lsp-recommendation";
531716
- if (allowDialogsWithAnimation && hintRecommendation)
531732
+ if (allowDialogsWithAnimation && hintRecommendation && startupChecksStartedRef.current)
531717
531733
  return "plugin-hint";
531718
- if (allowDialogsWithAnimation && showDesktopUpsellStartup)
531734
+ if (allowDialogsWithAnimation && showDesktopUpsellStartup && startupChecksStartedRef.current)
531719
531735
  return "desktop-upsell";
531720
531736
  return;
531721
531737
  }
@@ -535354,7 +535370,7 @@ function WelcomeV2() {
535354
535370
  dimColor: true,
535355
535371
  children: [
535356
535372
  "v",
535357
- "0.2.2",
535373
+ "0.2.4",
535358
535374
  " "
535359
535375
  ]
535360
535376
  }, undefined, true, undefined, this)
@@ -535554,7 +535570,7 @@ function WelcomeV2() {
535554
535570
  dimColor: true,
535555
535571
  children: [
535556
535572
  "v",
535557
- "0.2.2",
535573
+ "0.2.4",
535558
535574
  " "
535559
535575
  ]
535560
535576
  }, undefined, true, undefined, this)
@@ -535780,7 +535796,7 @@ function AppleTerminalWelcomeV2(t0) {
535780
535796
  dimColor: true,
535781
535797
  children: [
535782
535798
  "v",
535783
- "0.2.2",
535799
+ "0.2.4",
535784
535800
  " "
535785
535801
  ]
535786
535802
  }, undefined, true, undefined, this);
@@ -536034,7 +536050,7 @@ function AppleTerminalWelcomeV2(t0) {
536034
536050
  dimColor: true,
536035
536051
  children: [
536036
536052
  "v",
536037
- "0.2.2",
536053
+ "0.2.4",
536038
536054
  " "
536039
536055
  ]
536040
536056
  }, undefined, true, undefined, this);
@@ -537529,7 +537545,7 @@ var init_ClaudeInChromeOnboarding = __esm(() => {
537529
537545
  });
537530
537546
 
537531
537547
  // src/interactiveHelpers.tsx
537532
- import { appendFileSync as appendFileSync4 } from "fs";
537548
+ import { appendFileSync as appendFileSync5 } from "fs";
537533
537549
  function completeOnboarding() {
537534
537550
  saveGlobalConfig((current) => ({
537535
537551
  ...current,
@@ -537714,7 +537730,7 @@ function getRenderContext(exitOnCtrlC) {
537714
537730
  cpu: process.cpuUsage()
537715
537731
  }) + `
537716
537732
  `;
537717
- appendFileSync4(frameTimingLogPath, line);
537733
+ appendFileSync5(frameTimingLogPath, line);
537718
537734
  }
537719
537735
  if (isSynchronizedOutputSupported()) {
537720
537736
  return;
@@ -554645,6 +554661,7 @@ __export(exports_main, {
554645
554661
  });
554646
554662
  import { readFileSync as readFileSync12 } from "fs";
554647
554663
  import { resolve as resolve41 } from "path";
554664
+ import { appendFileSync as _dbgAppend } from "fs";
554648
554665
  function logManagedSettings() {
554649
554666
  try {
554650
554667
  const policySettings = getSettingsForSource("policySettings");
@@ -554863,7 +554880,14 @@ function initializeEntrypoint(isNonInteractive) {
554863
554880
  }
554864
554881
  process.env.CLAUDE_CODE_ENTRYPOINT = isNonInteractive ? "sdk-cli" : "cli";
554865
554882
  }
554883
+ function _xdbg(msg) {
554884
+ try {
554885
+ _dbgAppend("/tmp/xclaude-debug.log", `[${new Date().toISOString()}] MAIN: ${msg}
554886
+ `);
554887
+ } catch {}
554888
+ }
554866
554889
  async function main() {
554890
+ _xdbg(`main() called — stdout.isTTY=${process.stdout.isTTY} stdin.isTTY=${process.stdin.isTTY}`);
554867
554891
  profileCheckpoint("main_function_start");
554868
554892
  process.env.NoDefaultCurrentDirectoryInExePath = "1";
554869
554893
  initializeWarningHandler();
@@ -554890,6 +554914,7 @@ async function main() {
554890
554914
  stopCapturingEarlyInput();
554891
554915
  }
554892
554916
  const isInteractive = !isNonInteractive;
554917
+ _xdbg(`isNonInteractive=${isNonInteractive} isInteractive=${isInteractive} (hasPrintFlag=${hasPrintFlag} hasInitOnly=${hasInitOnlyFlag} stdout.isTTY=${process.stdout.isTTY})`);
554893
554918
  setIsInteractive(isInteractive);
554894
554919
  initializeEntrypoint(isNonInteractive);
554895
554920
  const clientType = (() => {
@@ -555667,12 +555692,15 @@ ${customInstructions}` : customInstructions;
555667
555692
  createRoot: createRoot3
555668
555693
  } = await Promise.resolve().then(() => (init_ink2(), exports_ink));
555669
555694
  root2 = await createRoot3(ctx.renderOptions);
555695
+ _xdbg("createRoot done");
555670
555696
  logEvent("tengu_timer", {
555671
555697
  event: "startup",
555672
555698
  durationMs: Math.round(process.uptime() * 1000)
555673
555699
  });
555674
555700
  const setupScreensStart = Date.now();
555701
+ _xdbg("calling showSetupScreens");
555675
555702
  const onboardingShown = await showSetupScreens(root2, permissionMode, allowDangerouslySkipPermissions, commands, enableClaudeInChrome, devChannels);
555703
+ _xdbg(`showSetupScreens done, onboardingShown=${onboardingShown}`);
555676
555704
  if (false) {}
555677
555705
  if (false) {}
555678
555706
  if (onboardingShown && prompt2?.trim().toLowerCase() === "/login") {
@@ -556591,6 +556619,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
556591
556619
  let deepLinkBanner = null;
556592
556620
  if (false) {}
556593
556621
  const initialMessages = deepLinkBanner ? [deepLinkBanner, ...hookMessages] : hookMessages.length > 0 ? hookMessages : undefined;
556622
+ _xdbg("calling launchRepl (main path)");
556594
556623
  await launchRepl(root2, {
556595
556624
  getFpsMetrics,
556596
556625
  stats: stats2,
@@ -556601,7 +556630,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
556601
556630
  pendingHookMessages
556602
556631
  }, renderAndRun);
556603
556632
  }
556604
- }).version("0.2.2 (Xclaude)", "-v, --version", "Output the version number");
556633
+ }).version("0.2.4 (Xclaude)", "-v, --version", "Output the version number");
556605
556634
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
556606
556635
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
556607
556636
  if (canUserConfigureAdvisor()) {
@@ -557171,7 +557200,7 @@ function validateProviderEnvOrExit() {
557171
557200
  async function main2() {
557172
557201
  const args = process.argv.slice(2);
557173
557202
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
557174
- console.log(`${"0.2.2"} (Xclaude)`);
557203
+ console.log(`${"0.2.4"} (Xclaude)`);
557175
557204
  return;
557176
557205
  }
557177
557206
  if (args.includes("--setup") || args[0] === "setup") {
@@ -557303,4 +557332,4 @@ async function main2() {
557303
557332
  }
557304
557333
  main2();
557305
557334
 
557306
- //# debugId=9754835AC65C039F64756E2164756E21
557335
+ //# debugId=750CCE499995432D64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amirtechai/xclaude",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Claude Code opened to any LLM — OpenAI, Gemini, DeepSeek, Groq, Ollama, and 200+ models",
5
5
  "type": "module",
6
6
  "bin": {