localclawd 1.1.2 → 1.1.3

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 +233 -175
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -89253,7 +89253,7 @@ var init_isEqual = __esm(() => {
89253
89253
 
89254
89254
  // src/utils/userAgent.ts
89255
89255
  function getClaudeCodeUserAgent() {
89256
- return `claude-code/${"1.1.2"}`;
89256
+ return `claude-code/${"1.1.3"}`;
89257
89257
  }
89258
89258
 
89259
89259
  // src/utils/workloadContext.ts
@@ -89275,7 +89275,7 @@ function getUserAgent() {
89275
89275
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
89276
89276
  const workload = getWorkload();
89277
89277
  const workloadSuffix = workload ? `, workload/${workload}` : "";
89278
- return `claude-cli/${"1.1.2"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89278
+ return `claude-cli/${"1.1.3"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89279
89279
  }
89280
89280
  function getMCPUserAgent() {
89281
89281
  const parts = [];
@@ -89289,7 +89289,7 @@ function getMCPUserAgent() {
89289
89289
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
89290
89290
  }
89291
89291
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
89292
- return `claude-code/${"1.1.2"}${suffix}`;
89292
+ return `claude-code/${"1.1.3"}${suffix}`;
89293
89293
  }
89294
89294
  function getWebFetchUserAgent() {
89295
89295
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -99110,7 +99110,7 @@ function getAttributionHeader(fingerprint) {
99110
99110
  if (!isAttributionHeaderEnabled()) {
99111
99111
  return "";
99112
99112
  }
99113
- const version = `${"1.1.2"}.${fingerprint}`;
99113
+ const version = `${"1.1.3"}.${fingerprint}`;
99114
99114
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
99115
99115
  const cch = "";
99116
99116
  const workload = getWorkload();
@@ -132657,7 +132657,7 @@ var init_metadata = __esm(() => {
132657
132657
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
132658
132658
  WHITESPACE_REGEX = /\s+/;
132659
132659
  getVersionBase = memoize_default(() => {
132660
- const match = "1.1.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132660
+ const match = "1.1.3".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132661
132661
  return match ? match[0] : undefined;
132662
132662
  });
132663
132663
  buildEnvContext = memoize_default(async () => {
@@ -132697,9 +132697,9 @@ var init_metadata = __esm(() => {
132697
132697
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
132698
132698
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
132699
132699
  isClaudeAiAuth: isClaudeAISubscriber(),
132700
- version: "1.1.2",
132700
+ version: "1.1.3",
132701
132701
  versionBase: getVersionBase(),
132702
- buildTime: "2026-04-06T01:21:54.657Z",
132702
+ buildTime: "2026-04-06T01:36:01.118Z",
132703
132703
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
132704
132704
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
132705
132705
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -197286,7 +197286,7 @@ function getTelemetryAttributes() {
197286
197286
  attributes["session.id"] = sessionId;
197287
197287
  }
197288
197288
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
197289
- attributes["app.version"] = "1.1.2";
197289
+ attributes["app.version"] = "1.1.3";
197290
197290
  }
197291
197291
  const oauthAccount = getOauthAccountInfo();
197292
197292
  if (oauthAccount) {
@@ -229347,7 +229347,7 @@ function getInstallationEnv() {
229347
229347
  return;
229348
229348
  }
229349
229349
  function getClaudeCodeVersion() {
229350
- return "1.1.2";
229350
+ return "1.1.3";
229351
229351
  }
229352
229352
  async function getInstalledVSCodeExtensionVersion(command) {
229353
229353
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -234949,7 +234949,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
234949
234949
  const client4 = new Client({
234950
234950
  name: "claude-code",
234951
234951
  title: "Claude Code",
234952
- version: "1.1.2",
234952
+ version: "1.1.3",
234953
234953
  description: "Anthropic's agentic coding tool",
234954
234954
  websiteUrl: PRODUCT_URL
234955
234955
  }, {
@@ -235302,7 +235302,7 @@ var init_client9 = __esm(() => {
235302
235302
  const client4 = new Client({
235303
235303
  name: "claude-code",
235304
235304
  title: "Claude Code",
235305
- version: "1.1.2",
235305
+ version: "1.1.3",
235306
235306
  description: "Anthropic's agentic coding tool",
235307
235307
  websiteUrl: PRODUCT_URL
235308
235308
  }, {
@@ -258493,7 +258493,7 @@ var init_user = __esm(() => {
258493
258493
  deviceId,
258494
258494
  sessionId: getSessionId(),
258495
258495
  email: getEmail(),
258496
- appVersion: "1.1.2",
258496
+ appVersion: "1.1.3",
258497
258497
  platform: getHostPlatformForAnalytics(),
258498
258498
  organizationUuid,
258499
258499
  accountUuid,
@@ -259817,7 +259817,7 @@ async function initializeBetaTracing(resource) {
259817
259817
  });
259818
259818
  logs.setGlobalLoggerProvider(loggerProvider);
259819
259819
  setLoggerProvider(loggerProvider);
259820
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.2");
259820
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.3");
259821
259821
  setEventLogger(eventLogger);
259822
259822
  process.on("beforeExit", async () => {
259823
259823
  await loggerProvider?.forceFlush();
@@ -259857,7 +259857,7 @@ async function initializeTelemetry() {
259857
259857
  const platform3 = getPlatform();
259858
259858
  const baseAttributes = {
259859
259859
  [ATTR_SERVICE_NAME5]: "claude-code",
259860
- [ATTR_SERVICE_VERSION5]: "1.1.2"
259860
+ [ATTR_SERVICE_VERSION5]: "1.1.3"
259861
259861
  };
259862
259862
  if (platform3 === "wsl") {
259863
259863
  const wslVersion = getWslVersion();
@@ -259902,7 +259902,7 @@ async function initializeTelemetry() {
259902
259902
  } catch {}
259903
259903
  };
259904
259904
  registerCleanup(shutdownTelemetry2);
259905
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.2");
259905
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.3");
259906
259906
  }
259907
259907
  const meterProvider = new MeterProvider5({
259908
259908
  resource,
@@ -259922,7 +259922,7 @@ async function initializeTelemetry() {
259922
259922
  });
259923
259923
  logs.setGlobalLoggerProvider(loggerProvider);
259924
259924
  setLoggerProvider(loggerProvider);
259925
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.2");
259925
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.3");
259926
259926
  setEventLogger(eventLogger);
259927
259927
  logForDebugging("[3P telemetry] Event logger set successfully");
259928
259928
  process.on("beforeExit", async () => {
@@ -259984,7 +259984,7 @@ Current timeout: ${timeoutMs}ms
259984
259984
  }
259985
259985
  };
259986
259986
  registerCleanup(shutdownTelemetry);
259987
- return meterProvider.getMeter("com.anthropic.claude_code", "1.1.2");
259987
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.3");
259988
259988
  }
259989
259989
  async function flushTelemetry() {
259990
259990
  const meterProvider = getMeterProvider();
@@ -261207,7 +261207,7 @@ function detectLinuxGlobPatternWarnings() {
261207
261207
  }
261208
261208
  async function getDoctorDiagnostic() {
261209
261209
  const installationType = await getCurrentInstallationType();
261210
- const version = typeof MACRO !== "undefined" ? "1.1.2" : "unknown";
261210
+ const version = typeof MACRO !== "undefined" ? "1.1.3" : "unknown";
261211
261211
  const installationPath = await getInstallationPath();
261212
261212
  const invokedBinary = getInvokedBinary();
261213
261213
  const multipleInstallations = await detectMultipleInstallations();
@@ -262148,8 +262148,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262148
262148
  const maxVersion = await getMaxVersion();
262149
262149
  if (maxVersion && gt(version, maxVersion)) {
262150
262150
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
262151
- if (gte("1.1.2", maxVersion)) {
262152
- logForDebugging(`Native installer: current version ${"1.1.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
262151
+ if (gte("1.1.3", maxVersion)) {
262152
+ logForDebugging(`Native installer: current version ${"1.1.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
262153
262153
  logEvent("tengu_native_update_skipped_max_version", {
262154
262154
  latency_ms: Date.now() - startTime,
262155
262155
  max_version: maxVersion,
@@ -262160,7 +262160,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262160
262160
  version = maxVersion;
262161
262161
  }
262162
262162
  }
262163
- if (!forceReinstall && version === "1.1.2" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262163
+ if (!forceReinstall && version === "1.1.3" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262164
262164
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
262165
262165
  logEvent("tengu_native_update_complete", {
262166
262166
  latency_ms: Date.now() - startTime,
@@ -333322,7 +333322,7 @@ function getAnthropicEnvMetadata() {
333322
333322
  function getBuildAgeMinutes() {
333323
333323
  if (false)
333324
333324
  ;
333325
- const buildTime = new Date("2026-04-06T01:21:54.657Z").getTime();
333325
+ const buildTime = new Date("2026-04-06T01:36:01.118Z").getTime();
333326
333326
  if (isNaN(buildTime))
333327
333327
  return;
333328
333328
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -357030,7 +357030,7 @@ function Feedback({
357030
357030
  platform: env4.platform,
357031
357031
  gitRepo: envInfo.isGit,
357032
357032
  terminal: env4.terminal,
357033
- version: "1.1.2",
357033
+ version: "1.1.3",
357034
357034
  transcript: normalizeMessagesForAPI(messages),
357035
357035
  errors: sanitizedErrors,
357036
357036
  lastApiRequest: getLastAPIRequest(),
@@ -357222,7 +357222,7 @@ function Feedback({
357222
357222
  ", ",
357223
357223
  env4.terminal,
357224
357224
  ", v",
357225
- "1.1.2"
357225
+ "1.1.3"
357226
357226
  ]
357227
357227
  }, undefined, true, undefined, this)
357228
357228
  ]
@@ -357328,7 +357328,7 @@ ${sanitizedDescription}
357328
357328
  ` + `**Environment Info**
357329
357329
  ` + `- Platform: ${env4.platform}
357330
357330
  ` + `- Terminal: ${env4.terminal}
357331
- ` + `- Version: ${"1.1.2"}
357331
+ ` + `- Version: ${"1.1.3"}
357332
357332
  ` + `- Feedback ID: ${feedbackId}
357333
357333
  ` + `
357334
357334
  **Errors**
@@ -360441,7 +360441,7 @@ function buildPrimarySection() {
360441
360441
  }, undefined, false, undefined, this);
360442
360442
  return [{
360443
360443
  label: "Version",
360444
- value: "1.1.2"
360444
+ value: "1.1.3"
360445
360445
  }, {
360446
360446
  label: "Session name",
360447
360447
  value: nameValue
@@ -362008,6 +362008,70 @@ var exports_LocalBackendSetup = {};
362008
362008
  __export(exports_LocalBackendSetup, {
362009
362009
  LocalBackendSetup: () => LocalBackendSetup
362010
362010
  });
362011
+ function SimpleMenu({ items, isActive, onSelect, onCancel }) {
362012
+ const VISIBLE = Math.min(7, items.length);
362013
+ const [focusIdx, setFocusIdx] = import_react100.useState(0);
362014
+ const [fromIdx, setFromIdx] = import_react100.useState(0);
362015
+ use_input_default((_input, key) => {
362016
+ if (!isActive)
362017
+ return;
362018
+ if (key.upArrow || _input === "k" && !key.ctrl) {
362019
+ setFocusIdx((prev) => {
362020
+ const next = Math.max(0, prev - 1);
362021
+ if (next < fromIdx)
362022
+ setFromIdx(next);
362023
+ return next;
362024
+ });
362025
+ } else if (key.downArrow || _input === "j" && !key.ctrl) {
362026
+ setFocusIdx((prev) => {
362027
+ const next = Math.min(items.length - 1, prev + 1);
362028
+ if (next >= fromIdx + VISIBLE)
362029
+ setFromIdx(next - VISIBLE + 1);
362030
+ return next;
362031
+ });
362032
+ } else if (key.return) {
362033
+ const item = items[focusIdx];
362034
+ if (item)
362035
+ onSelect(item.value);
362036
+ } else if (key.escape) {
362037
+ onCancel?.();
362038
+ }
362039
+ });
362040
+ const visible = items.slice(fromIdx, fromIdx + VISIBLE);
362041
+ const showScrollUp = fromIdx > 0;
362042
+ const showScrollDown = fromIdx + VISIBLE < items.length;
362043
+ return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
362044
+ flexDirection: "column",
362045
+ children: [
362046
+ showScrollUp && /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362047
+ dimColor: true,
362048
+ children: " ↑ more"
362049
+ }, undefined, false, undefined, this),
362050
+ visible.map((item, i2) => {
362051
+ const absIdx = fromIdx + i2;
362052
+ const focused = absIdx === focusIdx;
362053
+ return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
362054
+ gap: 1,
362055
+ children: [
362056
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362057
+ color: "#6366f1",
362058
+ children: focused ? "▶" : " "
362059
+ }, undefined, false, undefined, this),
362060
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362061
+ bold: focused,
362062
+ color: focused ? "#818cf8" : undefined,
362063
+ children: item.label
362064
+ }, undefined, false, undefined, this)
362065
+ ]
362066
+ }, String(item.value), true, undefined, this);
362067
+ }),
362068
+ showScrollDown && /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362069
+ dimColor: true,
362070
+ children: " ↓ more"
362071
+ }, undefined, false, undefined, this)
362072
+ ]
362073
+ }, undefined, true, undefined, this);
362074
+ }
362011
362075
  function getProviderGuidance(provider) {
362012
362076
  switch (provider) {
362013
362077
  case "vllm":
@@ -362123,11 +362187,10 @@ function LocalBackendSetup({
362123
362187
  setScanError(null);
362124
362188
  setAvailableModels([]);
362125
362189
  setDiscoveredEndpoints([]);
362126
- if (nextProvider === "vllm") {
362190
+ if (nextProvider === "vllm")
362127
362191
  startNetworkScan(defaults2.baseUrl);
362128
- } else {
362192
+ else
362129
362193
  setStep("baseUrl");
362130
- }
362131
362194
  }
362132
362195
  function startNetworkScan(defaultUrl) {
362133
362196
  networkAbortRef.current?.abort();
@@ -362178,11 +362241,10 @@ function LocalBackendSetup({
362178
362241
  }
362179
362242
  setBaseUrl(trimmed);
362180
362243
  setError(null);
362181
- if (provider === "vllm" || provider === "ollama") {
362244
+ if (provider === "vllm" || provider === "ollama")
362182
362245
  startModelScan(trimmed);
362183
- } else {
362246
+ else
362184
362247
  setStep("model");
362185
- }
362186
362248
  }
362187
362249
  function startModelScan(url3) {
362188
362250
  modelScanAbortRef.current?.abort();
@@ -362234,14 +362296,18 @@ function LocalBackendSetup({
362234
362296
  const baseUrlPlaceholder = getDefaultLocalLLMConfig(provider).baseUrl;
362235
362297
  const apiKeyPlaceholder = provider === "ollama" ? "ollama" : "Leave blank if your endpoint does not require auth";
362236
362298
  const guidance = getProviderGuidance(provider);
362237
- const modelSelectOptions = availableModels.map((m2) => ({ label: m2, value: m2 }));
362238
- const endpointSelectOptions = [
362299
+ const modelMenuItems = availableModels.map((m2) => ({ label: m2, value: m2 }));
362300
+ const endpointMenuItems = [
362239
362301
  ...discoveredEndpoints.map((ep) => ({
362240
362302
  label: `${ep.url} [${ep.models.slice(0, 2).join(", ")}${ep.models.length > 2 ? ", …" : ""}]`,
362241
362303
  value: ep.url
362242
362304
  })),
362243
362305
  { label: "Enter URL manually", value: "__manual__" }
362244
362306
  ];
362307
+ const saveScopeItems = [
362308
+ { label: "Save as global default (recommended)", value: "global" },
362309
+ { label: "Use only for this launch", value: "session" }
362310
+ ];
362245
362311
  return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
362246
362312
  flexDirection: "column",
362247
362313
  gap: 1,
@@ -362259,14 +362325,19 @@ function LocalBackendSetup({
362259
362325
  }, undefined, false, undefined, this),
362260
362326
  step === "provider" ? /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(jsx_dev_runtime172.Fragment, {
362261
362327
  children: [
362262
- /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(Select, {
362263
- options: PROVIDER_OPTIONS,
362264
- onChange: (value) => applyProvider(value),
362328
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362329
+ dimColor: true,
362330
+ children: "Choose a backend:"
362331
+ }, undefined, false, undefined, this),
362332
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
362333
+ items: PROVIDER_OPTIONS,
362334
+ isActive: step === "provider",
362335
+ onSelect: (value) => applyProvider(value),
362265
362336
  onCancel
362266
362337
  }, undefined, false, undefined, this),
362267
362338
  /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362268
362339
  dimColor: true,
362269
- children: "Enter to select · Esc exits setup"
362340
+ children: "↑↓ navigate · Enter select · Esc exit"
362270
362341
  }, undefined, false, undefined, this)
362271
362342
  ]
362272
362343
  }, undefined, true, undefined, this) : null,
@@ -362323,16 +362394,18 @@ function LocalBackendSetup({
362323
362394
  " on 192.168.1.0/24"
362324
362395
  ]
362325
362396
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362397
+ dimColor: true,
362326
362398
  children: "No vLLM endpoints found on 192.168.1.0/24 — enter the URL manually."
362327
362399
  }, undefined, false, undefined, this),
362328
- /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(Select, {
362329
- options: endpointSelectOptions,
362330
- onChange: (value) => selectEndpoint(value),
362400
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
362401
+ items: endpointMenuItems,
362402
+ isActive: step === "selectEndpoint",
362403
+ onSelect: (value) => selectEndpoint(value),
362331
362404
  onCancel: () => setStep("provider")
362332
362405
  }, undefined, false, undefined, this),
362333
362406
  /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362334
362407
  dimColor: true,
362335
- children: "Enter to select · Esc goes back to provider"
362408
+ children: "↑↓ navigate · Enter select · Esc back to provider"
362336
362409
  }, undefined, false, undefined, this)
362337
362410
  ]
362338
362411
  }, undefined, true, undefined, this) : null,
@@ -362411,14 +362484,15 @@ function LocalBackendSetup({
362411
362484
  dimColor: true,
362412
362485
  children: guidance.model
362413
362486
  }, undefined, false, undefined, this),
362414
- /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(Select, {
362415
- options: modelSelectOptions,
362416
- onChange: (value) => submitModel(value),
362487
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
362488
+ items: modelMenuItems,
362489
+ isActive: step === "model",
362490
+ onSelect: (value) => submitModel(value),
362417
362491
  onCancel: goBack
362418
362492
  }, undefined, false, undefined, this),
362419
362493
  /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362420
362494
  dimColor: true,
362421
- children: "Enter to select · Esc goes back to URL"
362495
+ children: "↑↓ navigate · Enter select · Esc back to URL"
362422
362496
  }, undefined, false, undefined, this)
362423
362497
  ]
362424
362498
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(jsx_dev_runtime172.Fragment, {
@@ -362466,7 +362540,7 @@ function LocalBackendSetup({
362466
362540
  }, undefined, false, undefined, this),
362467
362541
  /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362468
362542
  dimColor: true,
362469
- children: "Enter to confirm · Esc goes back to model"
362543
+ children: "Enter to confirm · Esc back to model"
362470
362544
  }, undefined, false, undefined, this)
362471
362545
  ]
362472
362546
  }, undefined, true, undefined, this) : null,
@@ -362480,24 +362554,22 @@ function LocalBackendSetup({
362480
362554
  wrap: "wrap",
362481
362555
  children: 'Save globally to make this the default every time localclawd starts. Choose "this launch only" for a temporary override.'
362482
362556
  }, undefined, false, undefined, this),
362483
- /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(Select, {
362484
- options: [
362485
- { label: "Save as global default (recommended)", value: "global" },
362486
- { label: "Use only for this launch", value: "session" }
362487
- ],
362488
- onChange: (value) => {
362557
+ /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
362558
+ items: saveScopeItems,
362559
+ isActive: step === "saveScope",
362560
+ onSelect: (value) => {
362489
362561
  onComplete({ provider, baseUrl, model, apiKey }, { saveGlobally: value === "global" });
362490
362562
  },
362491
362563
  onCancel: goBack
362492
362564
  }, undefined, false, undefined, this),
362493
362565
  /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362494
362566
  dimColor: true,
362495
- children: "Enter to confirm · Esc goes back to API key"
362567
+ children: "↑↓ navigate · Enter confirm · Esc back to API key"
362496
362568
  }, undefined, false, undefined, this)
362497
362569
  ]
362498
362570
  }, undefined, true, undefined, this) : null,
362499
362571
  error5 ? /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
362500
- color: "error",
362572
+ color: "red",
362501
362573
  children: error5
362502
362574
  }, undefined, false, undefined, this) : null
362503
362575
  ]
@@ -362510,7 +362582,6 @@ var init_LocalBackendSetup = __esm(() => {
362510
362582
  init_ink2();
362511
362583
  init_providers();
362512
362584
  init_scanModels();
362513
- init_select();
362514
362585
  init_TriangleSpinner();
362515
362586
  init_TextInput();
362516
362587
  import_react100 = __toESM(require_react(), 1);
@@ -364980,7 +365051,7 @@ function Config({
364980
365051
  }
364981
365052
  }, undefined, false, undefined, this)
364982
365053
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
364983
- currentVersion: "1.1.2",
365054
+ currentVersion: "1.1.3",
364984
365055
  onChoice: (choice) => {
364985
365056
  setShowSubmenu(null);
364986
365057
  setTabsHidden(false);
@@ -364992,7 +365063,7 @@ function Config({
364992
365063
  autoUpdatesChannel: "stable"
364993
365064
  };
364994
365065
  if (choice === "stay") {
364995
- newSettings.minimumVersion = "1.1.2";
365066
+ newSettings.minimumVersion = "1.1.3";
364996
365067
  }
364997
365068
  updateSettingsForSource("userSettings", newSettings);
364998
365069
  setSettingsData((prev_27) => ({
@@ -373875,7 +373946,7 @@ function HelpV2(t0) {
373875
373946
  let t6;
373876
373947
  if ($2[31] !== tabs) {
373877
373948
  t6 = /* @__PURE__ */ jsx_dev_runtime209.jsxDEV(Tabs, {
373878
- title: `localclawd v${"1.1.2"}`,
373949
+ title: `localclawd v${"1.1.3"}`,
373879
373950
  color: "professionalBlue",
373880
373951
  defaultTab: "general",
373881
373952
  children: tabs
@@ -398033,7 +398104,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
398033
398104
  return [];
398034
398105
  }
398035
398106
  }
398036
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.2") {
398107
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.3") {
398037
398108
  if (process.env.USER_TYPE === "ant") {
398038
398109
  const changelog = MACRO.VERSION_CHANGELOG;
398039
398110
  if (changelog) {
@@ -398060,7 +398131,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.2") {
398060
398131
  releaseNotes
398061
398132
  };
398062
398133
  }
398063
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.2") {
398134
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.3") {
398064
398135
  if (process.env.USER_TYPE === "ant") {
398065
398136
  const changelog = MACRO.VERSION_CHANGELOG;
398066
398137
  if (changelog) {
@@ -399227,7 +399298,7 @@ function getRecentActivitySync() {
399227
399298
  return cachedActivity;
399228
399299
  }
399229
399300
  function getLogoDisplayData() {
399230
- const version = process.env.DEMO_VERSION ?? "1.1.2";
399301
+ const version = process.env.DEMO_VERSION ?? "1.1.3";
399231
399302
  const serverUrl = getDirectConnectServerUrl();
399232
399303
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
399233
399304
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -400501,7 +400572,7 @@ function LogoV2() {
400501
400572
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
400502
400573
  t2 = () => {
400503
400574
  const currentConfig = getGlobalConfig();
400504
- if (currentConfig.lastReleaseNotesSeen === "1.1.2") {
400575
+ if (currentConfig.lastReleaseNotesSeen === "1.1.3") {
400505
400576
  return;
400506
400577
  }
400507
400578
  saveGlobalConfig(_temp327);
@@ -401177,12 +401248,12 @@ function LogoV2() {
401177
401248
  return t41;
401178
401249
  }
401179
401250
  function _temp327(current) {
401180
- if (current.lastReleaseNotesSeen === "1.1.2") {
401251
+ if (current.lastReleaseNotesSeen === "1.1.3") {
401181
401252
  return current;
401182
401253
  }
401183
401254
  return {
401184
401255
  ...current,
401185
- lastReleaseNotesSeen: "1.1.2"
401256
+ lastReleaseNotesSeen: "1.1.3"
401186
401257
  };
401187
401258
  }
401188
401259
  function _temp245(s_0) {
@@ -427384,7 +427455,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
427384
427455
  smapsRollup,
427385
427456
  platform: process.platform,
427386
427457
  nodeVersion: process.version,
427387
- ccVersion: "1.1.2"
427458
+ ccVersion: "1.1.3"
427388
427459
  };
427389
427460
  }
427390
427461
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -427969,7 +428040,7 @@ var init_bridge_kick = __esm(() => {
427969
428040
  var call59 = async () => {
427970
428041
  return {
427971
428042
  type: "text",
427972
- value: `${"1.1.2"} (built ${"2026-04-06T01:21:54.657Z"})`
428043
+ value: `${"1.1.3"} (built ${"2026-04-06T01:36:01.118Z"})`
427973
428044
  };
427974
428045
  }, version, version_default;
427975
428046
  var init_version = __esm(() => {
@@ -436905,7 +436976,7 @@ function generateHtmlReport(data, insights) {
436905
436976
  </html>`;
436906
436977
  }
436907
436978
  function buildExportData(data, insights, facets, remoteStats) {
436908
- const version2 = typeof MACRO !== "undefined" ? "1.1.2" : "unknown";
436979
+ const version2 = typeof MACRO !== "undefined" ? "1.1.3" : "unknown";
436909
436980
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
436910
436981
  const facets_summary = {
436911
436982
  total: facets.size,
@@ -441062,7 +441133,7 @@ var init_sessionStorage = __esm(() => {
441062
441133
  init_settings2();
441063
441134
  init_slowOperations();
441064
441135
  init_uuid();
441065
- VERSION5 = typeof MACRO !== "undefined" ? "1.1.2" : "unknown";
441136
+ VERSION5 = typeof MACRO !== "undefined" ? "1.1.3" : "unknown";
441066
441137
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
441067
441138
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
441068
441139
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -442264,7 +442335,7 @@ var init_filesystem = __esm(() => {
442264
442335
  });
442265
442336
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
442266
442337
  const nonce = randomBytes18(16).toString("hex");
442267
- return join128(getClaudeTempDir(), "bundled-skills", "1.1.2", nonce);
442338
+ return join128(getClaudeTempDir(), "bundled-skills", "1.1.3", nonce);
442268
442339
  });
442269
442340
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
442270
442341
  });
@@ -448262,7 +448333,7 @@ function computeFingerprint(messageText, version2) {
448262
448333
  }
448263
448334
  function computeFingerprintFromMessages(messages) {
448264
448335
  const firstMessageText = extractFirstMessageText(messages);
448265
- return computeFingerprint(firstMessageText, "1.1.2");
448336
+ return computeFingerprint(firstMessageText, "1.1.3");
448266
448337
  }
448267
448338
  var FINGERPRINT_SALT = "59cf53e54c78";
448268
448339
  var init_fingerprint = () => {};
@@ -450117,7 +450188,7 @@ async function sideQuery(opts) {
450117
450188
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
450118
450189
  }
450119
450190
  const messageText = extractFirstUserMessageText(messages);
450120
- const fingerprint = computeFingerprint(messageText, "1.1.2");
450191
+ const fingerprint = computeFingerprint(messageText, "1.1.3");
450121
450192
  const attributionHeader = getAttributionHeader(fingerprint);
450122
450193
  const systemBlocks = [
450123
450194
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -454915,7 +454986,7 @@ function buildSystemInitMessage(inputs) {
454915
454986
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
454916
454987
  apiKeySource: getAnthropicApiKeyWithSource().source,
454917
454988
  betas: getSdkBetas(),
454918
- claude_code_version: "1.1.2",
454989
+ claude_code_version: "1.1.3",
454919
454990
  output_style: outputStyle2,
454920
454991
  agents: inputs.agents.map((agent) => agent.agentType),
454921
454992
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -469494,7 +469565,7 @@ var init_useVoiceEnabled = __esm(() => {
469494
469565
  function getSemverPart(version2) {
469495
469566
  return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
469496
469567
  }
469497
- function useUpdateNotification(updatedVersion, initialVersion = "1.1.2") {
469568
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.3") {
469498
469569
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
469499
469570
  if (!updatedVersion) {
469500
469571
  return null;
@@ -469534,7 +469605,7 @@ function AutoUpdater({
469534
469605
  return;
469535
469606
  }
469536
469607
  if (false) {}
469537
- const currentVersion = "1.1.2";
469608
+ const currentVersion = "1.1.3";
469538
469609
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
469539
469610
  let latestVersion = await getLatestVersion(channel);
469540
469611
  const isDisabled = isAutoUpdaterDisabled();
@@ -469745,12 +469816,12 @@ function NativeAutoUpdater({
469745
469816
  logEvent("tengu_native_auto_updater_start", {});
469746
469817
  try {
469747
469818
  const maxVersion = await getMaxVersion();
469748
- if (maxVersion && gt("1.1.2", maxVersion)) {
469819
+ if (maxVersion && gt("1.1.3", maxVersion)) {
469749
469820
  const msg = await getMaxVersionMessage();
469750
469821
  setMaxVersionIssue(msg ?? "affects your version");
469751
469822
  }
469752
469823
  const result = await installLatest(channel);
469753
- const currentVersion = "1.1.2";
469824
+ const currentVersion = "1.1.3";
469754
469825
  const latencyMs = Date.now() - startTime;
469755
469826
  if (result.lockFailed) {
469756
469827
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -469885,17 +469956,17 @@ function PackageManagerAutoUpdater(t0) {
469885
469956
  const maxVersion = await getMaxVersion();
469886
469957
  if (maxVersion && latest && gt(latest, maxVersion)) {
469887
469958
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
469888
- if (gte("1.1.2", maxVersion)) {
469889
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
469959
+ if (gte("1.1.3", maxVersion)) {
469960
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
469890
469961
  setUpdateAvailable(false);
469891
469962
  return;
469892
469963
  }
469893
469964
  latest = maxVersion;
469894
469965
  }
469895
- const hasUpdate = latest && !gte("1.1.2", latest) && !shouldSkipVersion(latest);
469966
+ const hasUpdate = latest && !gte("1.1.3", latest) && !shouldSkipVersion(latest);
469896
469967
  setUpdateAvailable(!!hasUpdate);
469897
469968
  if (hasUpdate) {
469898
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.2"} -> ${latest}`);
469969
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.3"} -> ${latest}`);
469899
469970
  }
469900
469971
  };
469901
469972
  $2[0] = t1;
@@ -469929,7 +470000,7 @@ function PackageManagerAutoUpdater(t0) {
469929
470000
  wrap: "truncate",
469930
470001
  children: [
469931
470002
  "currentVersion: ",
469932
- "1.1.2"
470003
+ "1.1.3"
469933
470004
  ]
469934
470005
  }, undefined, true, undefined, this);
469935
470006
  $2[3] = verbose;
@@ -477487,7 +477558,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
477487
477558
  project_dir: getOriginalCwd(),
477488
477559
  added_dirs: addedDirs
477489
477560
  },
477490
- version: "1.1.2",
477561
+ version: "1.1.3",
477491
477562
  output_style: {
477492
477563
  name: outputStyleName
477493
477564
  },
@@ -489033,7 +489104,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
489033
489104
  } catch {}
489034
489105
  const data = {
489035
489106
  trigger,
489036
- version: "1.1.2",
489107
+ version: "1.1.3",
489037
489108
  platform: process.platform,
489038
489109
  transcript,
489039
489110
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -500604,48 +500675,49 @@ var init_githubRepoPathMapping = __esm(() => {
500604
500675
  function WelcomeV2() {
500605
500676
  const [theme2] = useTheme();
500606
500677
  const isLightTheme = ["light", "light-daltonized", "light-ansi"].includes(theme2);
500678
+ const accentColor = isLightTheme ? "blue" : "#6366f1";
500607
500679
  return /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
500608
500680
  width: WELCOME_V2_WIDTH,
500609
500681
  flexDirection: "column",
500682
+ gap: 0,
500610
500683
  children: [
500611
- /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500684
+ /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
500685
+ gap: 1,
500612
500686
  children: [
500613
500687
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500614
- color: "claude",
500615
- children: "Welcome to localclawd "
500688
+ bold: true,
500689
+ color: accentColor,
500690
+ children: "localclawd"
500616
500691
  }, undefined, false, undefined, this),
500617
500692
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500618
500693
  dimColor: true,
500619
500694
  children: [
500620
500695
  "v",
500621
- "1.1.2"
500696
+ "1.1.3"
500622
500697
  ]
500623
500698
  }, undefined, true, undefined, this)
500624
500699
  ]
500625
500700
  }, undefined, true, undefined, this),
500626
500701
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500627
500702
  dimColor: true,
500628
- children: "──────────────────────────────────────────────────────────"
500703
+ children: "".repeat(48)
500629
500704
  }, undefined, false, undefined, this),
500630
- GEOMETRIC_BANNER.map((line, index) => /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500631
- color: isLightTheme ? "clawd_body" : "claude",
500632
- children: line
500633
- }, index, false, undefined, this)),
500634
500705
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
500635
500706
  marginTop: 1,
500707
+ gap: 2,
500636
500708
  children: [
500637
500709
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(Clawd, {}, undefined, false, undefined, this),
500638
500710
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
500639
- marginLeft: 2,
500640
500711
  flexDirection: "column",
500712
+ justifyContent: "center",
500641
500713
  children: [
500642
500714
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500643
500715
  dimColor: true,
500644
- children: "Local-first coding, wired for vLLM, Ollama, and OpenAI-compatible endpoints."
500716
+ children: "Local-first coding with vLLM, Ollama, and OpenAI-compatible APIs."
500645
500717
  }, undefined, false, undefined, this),
500646
500718
  /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
500647
500719
  dimColor: true,
500648
- children: "Vision and browser screenshots flow through when your model supports them."
500720
+ children: "Vision flows through when your model supports it."
500649
500721
  }, undefined, false, undefined, this)
500650
500722
  ]
500651
500723
  }, undefined, true, undefined, this)
@@ -500654,18 +500726,11 @@ function WelcomeV2() {
500654
500726
  ]
500655
500727
  }, undefined, true, undefined, this);
500656
500728
  }
500657
- var jsx_dev_runtime477, WELCOME_V2_WIDTH = 58, GEOMETRIC_BANNER;
500729
+ var jsx_dev_runtime477, WELCOME_V2_WIDTH = 58;
500658
500730
  var init_WelcomeV2 = __esm(() => {
500659
500731
  init_ink2();
500660
500732
  init_Clawd();
500661
500733
  jsx_dev_runtime477 = __toESM(require_jsx_dev_runtime(), 1);
500662
- GEOMETRIC_BANNER = [
500663
- "◇ ◇◇◇ ◇◇◇ ◇◇◇ ◇ ◇",
500664
- "◇ ◇ ◇ ◇ ◇ ◇ ◇◇ ◇",
500665
- "◇ ◇ ◇ ◇ ◇◇◇◇◇ ◇ ◇ ◇",
500666
- " ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇◇",
500667
- " ◇ ◇◇◇ ◇◇◇ ◇ ◇ ◇ ◇"
500668
- ];
500669
500734
  });
500670
500735
 
500671
500736
  // src/components/StartPage.tsx
@@ -500678,14 +500743,19 @@ function hasSavedBackendConfig(config2) {
500678
500743
  }
500679
500744
  function StartPage({ currentConfig, onDone }) {
500680
500745
  const hasSavedConfig = hasSavedBackendConfig(currentConfig);
500681
- const [focused, setFocused] = import_react321.useState(hasSavedConfig ? "continue" : "configure-backend");
500746
+ const options = hasSavedConfig ? CONTINUE_OPTIONS : SETUP_OPTIONS;
500747
+ const [focusIdx, setFocusIdx] = import_react321.useState(0);
500682
500748
  use_input_default((_input, key) => {
500683
- if (key.return)
500684
- onDone(focused);
500685
- else if (key.escape)
500749
+ if (key.upArrow || key.ctrl && _input === "p") {
500750
+ setFocusIdx((i2) => (i2 - 1 + options.length) % options.length);
500751
+ } else if (key.downArrow || key.ctrl && _input === "n") {
500752
+ setFocusIdx((i2) => (i2 + 1) % options.length);
500753
+ } else if (key.return) {
500754
+ onDone(options[focusIdx].value);
500755
+ } else if (key.escape) {
500686
500756
  onDone("continue");
500757
+ }
500687
500758
  });
500688
- const options = hasSavedConfig ? CONTINUE_OPTIONS : SETUP_OPTIONS;
500689
500759
  return /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500690
500760
  flexDirection: "column",
500691
500761
  gap: 1,
@@ -500701,7 +500771,6 @@ function StartPage({ currentConfig, onDone }) {
500701
500771
  children: [
500702
500772
  /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500703
500773
  flexDirection: "column",
500704
- gap: 0,
500705
500774
  children: [
500706
500775
  /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500707
500776
  bold: true,
@@ -500724,7 +500793,6 @@ function StartPage({ currentConfig, onDone }) {
500724
500793
  children: [
500725
500794
  /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500726
500795
  gap: 2,
500727
- alignItems: "center",
500728
500796
  children: [
500729
500797
  /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500730
500798
  color: "#6366f1",
@@ -500761,51 +500829,42 @@ function StartPage({ currentConfig, onDone }) {
500761
500829
  ]
500762
500830
  }, undefined, true, undefined, this)
500763
500831
  ]
500764
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(jsx_dev_runtime478.Fragment, {
500832
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500833
+ flexDirection: "column",
500834
+ gap: 0,
500765
500835
  children: [
500766
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500767
- flexDirection: "column",
500768
- gap: 0,
500769
- children: [
500770
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500771
- bold: true,
500772
- color: "#818cf8",
500773
- children: "Let's get you connected."
500774
- }, undefined, false, undefined, this),
500775
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500776
- dimColor: true,
500777
- wrap: "wrap",
500778
- children: "localclawd needs an OpenAI-compatible backend — vLLM, Ollama, or any hosted gateway. Set one up now and you're ready to code."
500779
- }, undefined, false, undefined, this)
500780
- ]
500781
- }, undefined, true, undefined, this),
500782
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500783
- paddingX: 1,
500784
- children: [
500785
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500786
- color: "#6366f1",
500787
- children: "▸"
500788
- }, undefined, false, undefined, this),
500789
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500790
- dimColor: true,
500791
- children: [
500792
- " ",
500793
- "Vision works automatically when your model accepts image content."
500794
- ]
500795
- }, undefined, true, undefined, this)
500796
- ]
500797
- }, undefined, true, undefined, this)
500836
+ /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500837
+ bold: true,
500838
+ color: "#818cf8",
500839
+ children: "Let's get you connected."
500840
+ }, undefined, false, undefined, this),
500841
+ /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500842
+ dimColor: true,
500843
+ wrap: "wrap",
500844
+ children: "localclawd needs an OpenAI-compatible backend — vLLM, Ollama, or any hosted gateway."
500845
+ }, undefined, false, undefined, this)
500798
500846
  ]
500799
500847
  }, undefined, true, undefined, this),
500800
- /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(Select, {
500801
- options,
500802
- onChange: (value) => onDone(value),
500803
- onCancel: () => onDone("continue"),
500804
- onFocus: (value) => setFocused(value)
500848
+ /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500849
+ flexDirection: "column",
500850
+ children: options.map((opt, i2) => /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
500851
+ gap: 1,
500852
+ children: [
500853
+ /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500854
+ color: "#6366f1",
500855
+ children: i2 === focusIdx ? "▶" : " "
500856
+ }, undefined, false, undefined, this),
500857
+ /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500858
+ bold: i2 === focusIdx,
500859
+ color: i2 === focusIdx ? "#818cf8" : undefined,
500860
+ children: opt.label
500861
+ }, undefined, false, undefined, this)
500862
+ ]
500863
+ }, opt.value, true, undefined, this))
500805
500864
  }, undefined, false, undefined, this),
500806
500865
  /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
500807
500866
  dimColor: true,
500808
- children: "↑↓ to navigate · Enter to confirm · Esc to continue"
500867
+ children: "↑↓ navigate · Enter confirm · Esc continue"
500809
500868
  }, undefined, false, undefined, this)
500810
500869
  ]
500811
500870
  }, undefined, true, undefined, this)
@@ -500816,7 +500875,6 @@ var import_react321, jsx_dev_runtime478, CONTINUE_OPTIONS, SETUP_OPTIONS;
500816
500875
  var init_StartPage = __esm(() => {
500817
500876
  init_ink2();
500818
500877
  init_providers();
500819
- init_select();
500820
500878
  init_WelcomeV2();
500821
500879
  import_react321 = __toESM(require_react(), 1);
500822
500880
  jsx_dev_runtime478 = __toESM(require_jsx_dev_runtime(), 1);
@@ -502075,7 +502133,7 @@ function completeOnboarding() {
502075
502133
  saveGlobalConfig((current) => ({
502076
502134
  ...current,
502077
502135
  hasCompletedOnboarding: true,
502078
- lastOnboardingVersion: "1.1.2"
502136
+ lastOnboardingVersion: "1.1.3"
502079
502137
  }));
502080
502138
  }
502081
502139
  function showDialog(root3, renderer) {
@@ -506629,7 +506687,7 @@ function appendToLog(path17, message) {
506629
506687
  cwd: getFsImplementation().cwd(),
506630
506688
  userType: process.env.USER_TYPE,
506631
506689
  sessionId: getSessionId(),
506632
- version: "1.1.2"
506690
+ version: "1.1.3"
506633
506691
  };
506634
506692
  getLogWriter(path17).write(messageWithTimestamp);
506635
506693
  }
@@ -510609,8 +510667,8 @@ async function getEnvLessBridgeConfig() {
510609
510667
  }
510610
510668
  async function checkEnvLessBridgeMinVersion() {
510611
510669
  const cfg = await getEnvLessBridgeConfig();
510612
- if (cfg.min_version && lt("1.1.2", cfg.min_version)) {
510613
- return `Your version of localclawd (${"1.1.2"}) is too old for Remote Control.
510670
+ if (cfg.min_version && lt("1.1.3", cfg.min_version)) {
510671
+ return `Your version of localclawd (${"1.1.3"}) is too old for Remote Control.
510614
510672
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
510615
510673
  }
510616
510674
  return null;
@@ -511082,7 +511140,7 @@ async function initBridgeCore(params) {
511082
511140
  const rawApi = createBridgeApiClient({
511083
511141
  baseUrl,
511084
511142
  getAccessToken,
511085
- runnerVersion: "1.1.2",
511143
+ runnerVersion: "1.1.3",
511086
511144
  onDebug: logForDebugging,
511087
511145
  onAuth401,
511088
511146
  getTrustedDeviceToken
@@ -516738,7 +516796,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
516738
516796
  setCwd(cwd3);
516739
516797
  const server = new Server({
516740
516798
  name: "claude/tengu",
516741
- version: "1.1.2"
516799
+ version: "1.1.3"
516742
516800
  }, {
516743
516801
  capabilities: {
516744
516802
  tools: {}
@@ -518343,7 +518401,7 @@ __export(exports_update, {
518343
518401
  });
518344
518402
  async function update() {
518345
518403
  logEvent("tengu_update_check", {});
518346
- writeToStdout(`Current version: ${"1.1.2"}
518404
+ writeToStdout(`Current version: ${"1.1.3"}
518347
518405
  `);
518348
518406
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
518349
518407
  writeToStdout(`Checking for updates to ${channel} version...
@@ -518418,8 +518476,8 @@ async function update() {
518418
518476
  writeToStdout(`localclawd is managed by Homebrew.
518419
518477
  `);
518420
518478
  const latest = await getLatestVersion(channel);
518421
- if (latest && !gte("1.1.2", latest)) {
518422
- writeToStdout(`Update available: ${"1.1.2"} → ${latest}
518479
+ if (latest && !gte("1.1.3", latest)) {
518480
+ writeToStdout(`Update available: ${"1.1.3"} → ${latest}
518423
518481
  `);
518424
518482
  writeToStdout(`
518425
518483
  `);
@@ -518435,8 +518493,8 @@ async function update() {
518435
518493
  writeToStdout(`localclawd is managed by winget.
518436
518494
  `);
518437
518495
  const latest = await getLatestVersion(channel);
518438
- if (latest && !gte("1.1.2", latest)) {
518439
- writeToStdout(`Update available: ${"1.1.2"} → ${latest}
518496
+ if (latest && !gte("1.1.3", latest)) {
518497
+ writeToStdout(`Update available: ${"1.1.3"} → ${latest}
518440
518498
  `);
518441
518499
  writeToStdout(`
518442
518500
  `);
@@ -518450,8 +518508,8 @@ async function update() {
518450
518508
  writeToStdout(`localclawd is managed by apk.
518451
518509
  `);
518452
518510
  const latest = await getLatestVersion(channel);
518453
- if (latest && !gte("1.1.2", latest)) {
518454
- writeToStdout(`Update available: ${"1.1.2"} → ${latest}
518511
+ if (latest && !gte("1.1.3", latest)) {
518512
+ writeToStdout(`Update available: ${"1.1.3"} → ${latest}
518455
518513
  `);
518456
518514
  writeToStdout(`
518457
518515
  `);
@@ -518516,11 +518574,11 @@ async function update() {
518516
518574
  `);
518517
518575
  await gracefulShutdown(1);
518518
518576
  }
518519
- if (result.latestVersion === "1.1.2") {
518520
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.2"})`) + `
518577
+ if (result.latestVersion === "1.1.3") {
518578
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.3"})`) + `
518521
518579
  `);
518522
518580
  } else {
518523
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.2"} to version ${result.latestVersion}`) + `
518581
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.3"} to version ${result.latestVersion}`) + `
518524
518582
  `);
518525
518583
  await regenerateCompletionCache();
518526
518584
  }
@@ -518580,12 +518638,12 @@ async function update() {
518580
518638
  `);
518581
518639
  await gracefulShutdown(1);
518582
518640
  }
518583
- if (latestVersion === "1.1.2") {
518584
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.2"})`) + `
518641
+ if (latestVersion === "1.1.3") {
518642
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.3"})`) + `
518585
518643
  `);
518586
518644
  await gracefulShutdown(0);
518587
518645
  }
518588
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.2"})
518646
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.3"})
518589
518647
  `);
518590
518648
  writeToStdout(`Installing update...
518591
518649
  `);
@@ -518630,7 +518688,7 @@ async function update() {
518630
518688
  logForDebugging(`update: Installation status: ${status2}`);
518631
518689
  switch (status2) {
518632
518690
  case "success":
518633
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.2"} to version ${latestVersion}`) + `
518691
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.3"} to version ${latestVersion}`) + `
518634
518692
  `);
518635
518693
  await regenerateCompletionCache();
518636
518694
  break;
@@ -519895,7 +519953,7 @@ ${customInstructions}` : customInstructions;
519895
519953
  }
519896
519954
  }
519897
519955
  logForDiagnosticsNoPII("info", "started", {
519898
- version: "1.1.2",
519956
+ version: "1.1.3",
519899
519957
  is_native_binary: isInBundledMode()
519900
519958
  });
519901
519959
  registerCleanup(async () => {
@@ -520679,7 +520737,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
520679
520737
  pendingHookMessages
520680
520738
  }, renderAndRun);
520681
520739
  }
520682
- }).version("1.1.2 (localClawd)", "-v, --version", "Output the version number");
520740
+ }).version("1.1.3 (localClawd)", "-v, --version", "Output the version number");
520683
520741
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
520684
520742
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
520685
520743
  if (canUserConfigureAdvisor()) {
@@ -521187,7 +521245,7 @@ if (false) {}
521187
521245
  async function main2() {
521188
521246
  const args = process.argv.slice(2);
521189
521247
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
521190
- console.log(`${"1.1.2"} (localclawd)`);
521248
+ console.log(`${"1.1.3"} (localclawd)`);
521191
521249
  return;
521192
521250
  }
521193
521251
  const {
@@ -521271,4 +521329,4 @@ async function main2() {
521271
521329
  }
521272
521330
  main2();
521273
521331
 
521274
- //# debugId=3668C1FF04F6565164756E2164756E21
521332
+ //# debugId=AE6E82D9C46EECC664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localclawd",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "Local-first coding CLI for vLLM, Ollama, and OpenAI-compatible backends.",
5
5
  "private": false,
6
6
  "type": "module",