localclawd 1.1.15 → 1.1.16

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 (3) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.mjs +126 -174
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -173,9 +173,10 @@ If you want to use the Anthropic API directly, set `ANTHROPIC_API_KEY` in your e
173
173
 
174
174
  ## Release status
175
175
 
176
- `v1.1.15` is live on npm. Install globally with `npm install -g localclawd` or run without installing with `npx localclawd`.
176
+ `v1.1.16` is live on npm. Install globally with `npm install -g localclawd` or run without installing with `npx localclawd`.
177
177
 
178
178
  **Changelog**
179
+ - `1.1.16` — Complete branding purge (no Claude/Anthropic references anywhere in UI or prompts); Grove data-sharing and subscription features fully disabled; MCP client identity updated to localclawd; all cloud-only error messages reworded to be backend-agnostic.
179
180
  - `1.1.15` — Full branding cleanup (no Anthropic/Claude references in UI); global crash handler shows errors instead of silent exit; auth commands hidden (use env vars or /setup); all startup errors surfaced with actionable messages.
180
181
  - `1.1.14` — Error handling for all startup awaits; clean build artifacts before rebuild to prevent stale cache issues.
181
182
  - `1.1.13` — Go straight to dashboard on launch; /setup for configuration; fix all stuck menus; useRef guards everywhere.
package/dist/cli.mjs CHANGED
@@ -89227,7 +89227,7 @@ var init_isEqual = __esm(() => {
89227
89227
 
89228
89228
  // src/utils/userAgent.ts
89229
89229
  function getClaudeCodeUserAgent() {
89230
- return `claude-code/${"1.1.15"}`;
89230
+ return `claude-code/${"1.1.16"}`;
89231
89231
  }
89232
89232
 
89233
89233
  // src/utils/workloadContext.ts
@@ -89249,7 +89249,7 @@ function getUserAgent() {
89249
89249
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
89250
89250
  const workload = getWorkload();
89251
89251
  const workloadSuffix = workload ? `, workload/${workload}` : "";
89252
- return `claude-cli/${"1.1.15"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89252
+ return `claude-cli/${"1.1.16"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89253
89253
  }
89254
89254
  function getMCPUserAgent() {
89255
89255
  const parts = [];
@@ -89263,7 +89263,7 @@ function getMCPUserAgent() {
89263
89263
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
89264
89264
  }
89265
89265
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
89266
- return `claude-code/${"1.1.15"}${suffix}`;
89266
+ return `claude-code/${"1.1.16"}${suffix}`;
89267
89267
  }
89268
89268
  function getWebFetchUserAgent() {
89269
89269
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -99172,7 +99172,7 @@ function getAttributionHeader(fingerprint) {
99172
99172
  if (!isAttributionHeaderEnabled()) {
99173
99173
  return "";
99174
99174
  }
99175
- const version = `${"1.1.15"}.${fingerprint}`;
99175
+ const version = `${"1.1.16"}.${fingerprint}`;
99176
99176
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
99177
99177
  const cch = "";
99178
99178
  const workload = getWorkload();
@@ -132719,7 +132719,7 @@ var init_metadata = __esm(() => {
132719
132719
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
132720
132720
  WHITESPACE_REGEX = /\s+/;
132721
132721
  getVersionBase = memoize_default(() => {
132722
- const match = "1.1.15".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132722
+ const match = "1.1.16".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132723
132723
  return match ? match[0] : undefined;
132724
132724
  });
132725
132725
  buildEnvContext = memoize_default(async () => {
@@ -132759,9 +132759,9 @@ var init_metadata = __esm(() => {
132759
132759
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
132760
132760
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
132761
132761
  isClaudeAiAuth: isClaudeAISubscriber(),
132762
- version: "1.1.15",
132762
+ version: "1.1.16",
132763
132763
  versionBase: getVersionBase(),
132764
- buildTime: "2026-04-08T22:42:21.973Z",
132764
+ buildTime: "2026-04-08T22:59:48.602Z",
132765
132765
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
132766
132766
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
132767
132767
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -154097,7 +154097,7 @@ function getSSLErrorHint(error5) {
154097
154097
  if (!details?.isSSLError) {
154098
154098
  return null;
154099
154099
  }
154100
- return `SSL certificate error (${details.code}). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path, or ask IT to allowlist *.anthropic.com. Run /doctor for details.`;
154100
+ return `SSL certificate error (${details.code}). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path. Run /doctor for details.`;
154101
154101
  }
154102
154102
  function sanitizeMessageHTML(message) {
154103
154103
  if (message.includes("<!DOCTYPE html") || message.includes("<html")) {
@@ -197348,7 +197348,7 @@ function getTelemetryAttributes() {
197348
197348
  attributes["session.id"] = sessionId;
197349
197349
  }
197350
197350
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
197351
- attributes["app.version"] = "1.1.15";
197351
+ attributes["app.version"] = "1.1.16";
197352
197352
  }
197353
197353
  const oauthAccount = getOauthAccountInfo();
197354
197354
  if (oauthAccount) {
@@ -229409,7 +229409,7 @@ function getInstallationEnv() {
229409
229409
  return;
229410
229410
  }
229411
229411
  function getClaudeCodeVersion() {
229412
- return "1.1.15";
229412
+ return "1.1.16";
229413
229413
  }
229414
229414
  async function getInstalledVSCodeExtensionVersion(command) {
229415
229415
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -235009,10 +235009,10 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
235009
235009
  const results = await Promise.allSettled(Object.entries(sdkMcpConfigs).map(async ([name, config]) => {
235010
235010
  const transport = new SdkControlClientTransport(name, sendMcpMessage);
235011
235011
  const client4 = new Client({
235012
- name: "claude-code",
235013
- title: "Claude Code",
235014
- version: "1.1.15",
235015
- description: "Anthropic's agentic coding tool",
235012
+ name: "localclawd",
235013
+ title: "localclawd",
235014
+ version: "1.1.16",
235015
+ description: "local-first AI coding tool",
235016
235016
  websiteUrl: PRODUCT_URL
235017
235017
  }, {
235018
235018
  capabilities: {}
@@ -235362,10 +235362,10 @@ var init_client9 = __esm(() => {
235362
235362
  }
235363
235363
  }
235364
235364
  const client4 = new Client({
235365
- name: "claude-code",
235366
- title: "Claude Code",
235367
- version: "1.1.15",
235368
- description: "Anthropic's agentic coding tool",
235365
+ name: "localclawd",
235366
+ title: "localclawd",
235367
+ version: "1.1.16",
235368
+ description: "local-first AI coding tool",
235369
235369
  websiteUrl: PRODUCT_URL
235370
235370
  }, {
235371
235371
  capabilities: {
@@ -253970,6 +253970,7 @@ async function updateGroveSettings(groveEnabled) {
253970
253970
  }
253971
253971
  }
253972
253972
  async function isQualifiedForGrove() {
253973
+ return false;
253973
253974
  if (!isConsumerSubscriber()) {
253974
253975
  return false;
253975
253976
  }
@@ -258555,7 +258556,7 @@ var init_user = __esm(() => {
258555
258556
  deviceId,
258556
258557
  sessionId: getSessionId(),
258557
258558
  email: getEmail(),
258558
- appVersion: "1.1.15",
258559
+ appVersion: "1.1.16",
258559
258560
  platform: getHostPlatformForAnalytics(),
258560
258561
  organizationUuid,
258561
258562
  accountUuid,
@@ -259879,7 +259880,7 @@ async function initializeBetaTracing(resource) {
259879
259880
  });
259880
259881
  logs.setGlobalLoggerProvider(loggerProvider);
259881
259882
  setLoggerProvider(loggerProvider);
259882
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.15");
259883
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.16");
259883
259884
  setEventLogger(eventLogger);
259884
259885
  process.on("beforeExit", async () => {
259885
259886
  await loggerProvider?.forceFlush();
@@ -259919,7 +259920,7 @@ async function initializeTelemetry() {
259919
259920
  const platform3 = getPlatform();
259920
259921
  const baseAttributes = {
259921
259922
  [ATTR_SERVICE_NAME5]: "claude-code",
259922
- [ATTR_SERVICE_VERSION5]: "1.1.15"
259923
+ [ATTR_SERVICE_VERSION5]: "1.1.16"
259923
259924
  };
259924
259925
  if (platform3 === "wsl") {
259925
259926
  const wslVersion = getWslVersion();
@@ -259964,7 +259965,7 @@ async function initializeTelemetry() {
259964
259965
  } catch {}
259965
259966
  };
259966
259967
  registerCleanup(shutdownTelemetry2);
259967
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.15");
259968
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.16");
259968
259969
  }
259969
259970
  const meterProvider = new MeterProvider5({
259970
259971
  resource,
@@ -259984,7 +259985,7 @@ async function initializeTelemetry() {
259984
259985
  });
259985
259986
  logs.setGlobalLoggerProvider(loggerProvider);
259986
259987
  setLoggerProvider(loggerProvider);
259987
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.15");
259988
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.16");
259988
259989
  setEventLogger(eventLogger);
259989
259990
  logForDebugging("[3P telemetry] Event logger set successfully");
259990
259991
  process.on("beforeExit", async () => {
@@ -260046,7 +260047,7 @@ Current timeout: ${timeoutMs}ms
260046
260047
  }
260047
260048
  };
260048
260049
  registerCleanup(shutdownTelemetry);
260049
- return meterProvider.getMeter("com.anthropic.claude_code", "1.1.15");
260050
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.16");
260050
260051
  }
260051
260052
  async function flushTelemetry() {
260052
260053
  const meterProvider = getMeterProvider();
@@ -261269,7 +261270,7 @@ function detectLinuxGlobPatternWarnings() {
261269
261270
  }
261270
261271
  async function getDoctorDiagnostic() {
261271
261272
  const installationType = await getCurrentInstallationType();
261272
- const version = typeof MACRO !== "undefined" ? "1.1.15" : "unknown";
261273
+ const version = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
261273
261274
  const installationPath = await getInstallationPath();
261274
261275
  const invokedBinary = getInvokedBinary();
261275
261276
  const multipleInstallations = await detectMultipleInstallations();
@@ -262210,8 +262211,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262210
262211
  const maxVersion = await getMaxVersion();
262211
262212
  if (maxVersion && gt(version, maxVersion)) {
262212
262213
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
262213
- if (gte("1.1.15", maxVersion)) {
262214
- logForDebugging(`Native installer: current version ${"1.1.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
262214
+ if (gte("1.1.16", maxVersion)) {
262215
+ logForDebugging(`Native installer: current version ${"1.1.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
262215
262216
  logEvent("tengu_native_update_skipped_max_version", {
262216
262217
  latency_ms: Date.now() - startTime,
262217
262218
  max_version: maxVersion,
@@ -262222,7 +262223,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262222
262223
  version = maxVersion;
262223
262224
  }
262224
262225
  }
262225
- if (!forceReinstall && version === "1.1.15" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262226
+ if (!forceReinstall && version === "1.1.16" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262226
262227
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
262227
262228
  logEvent("tengu_native_update_complete", {
262228
262229
  latency_ms: Date.now() - startTime,
@@ -334442,7 +334443,7 @@ function getAnthropicEnvMetadata() {
334442
334443
  function getBuildAgeMinutes() {
334443
334444
  if (false)
334444
334445
  ;
334445
- const buildTime = new Date("2026-04-08T22:42:21.973Z").getTime();
334446
+ const buildTime = new Date("2026-04-08T22:59:48.602Z").getTime();
334446
334447
  if (isNaN(buildTime))
334447
334448
  return;
334448
334449
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -350853,7 +350854,7 @@ function getAssistantMessageFromError(error5, model, options) {
350853
350854
  });
350854
350855
  }
350855
350856
  if (error5.message.includes("Extra usage is required for long context")) {
350856
- const hint = getIsNonInteractiveSession() ? "enable extra usage at claude.ai/settings/usage, or use --model to switch to standard context" : "run /extra-usage to enable, or /model to switch to standard context";
350857
+ const hint = getIsNonInteractiveSession() ? "use --model to switch to a standard-context model" : "run /model to switch to a standard-context model";
350857
350858
  return createAssistantAPIErrorMessage({
350858
350859
  content: `${API_ERROR_MESSAGE_PREFIX}: Extra usage is required for 1M context · ${hint}`,
350859
350860
  error: "rate_limit"
@@ -350863,7 +350864,7 @@ function getAssistantMessageFromError(error5, model, options) {
350863
350864
  const innerMessage = stripped.match(/"message"\s*:\s*"([^"]*)"/)?.[1];
350864
350865
  const detail = innerMessage || stripped;
350865
350866
  return createAssistantAPIErrorMessage({
350866
- content: `${API_ERROR_MESSAGE_PREFIX}: Request rejected (429) · ${detail || "this may be a temporary capacity issue — check status.anthropic.com"}`,
350867
+ content: `${API_ERROR_MESSAGE_PREFIX}: Request rejected (429) · ${detail || "this may be a temporary capacity issue — check your backend status"}`,
350867
350868
  error: "rate_limit"
350868
350869
  });
350869
350870
  }
@@ -351174,7 +351175,7 @@ function getErrorMessageIfRefusal(stopReason, model) {
351174
351175
  return;
351175
351176
  }
351176
351177
  logEvent("tengu_refusal_api_response", {});
351177
- const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Try rephrasing the request or attempting a different approach.` : `${API_ERROR_MESSAGE_PREFIX}: Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`;
351178
+ const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: localclawd is unable to respond to this request. Try rephrasing the request or attempting a different approach.` : `${API_ERROR_MESSAGE_PREFIX}: localclawd is unable to respond to this request. Please double press esc to edit your last message or start a new session.`;
351178
351179
  const modelSuggestion = model !== "claude-sonnet-4-20250514" ? " If you are seeing this refusal repeatedly, try running /model claude-sonnet-4-20250514 to switch models." : "";
351179
351180
  return createAssistantAPIErrorMessage({
351180
351181
  content: baseMessage + modelSuggestion,
@@ -357262,7 +357263,7 @@ function PermissionDescription() {
357262
357263
  if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
357263
357264
  t0 = /* @__PURE__ */ jsx_dev_runtime158.jsxDEV(ThemedText, {
357264
357265
  dimColor: true,
357265
- children: "Claude Code will be able to read files in this directory and make edits when auto-accept edits is on."
357266
+ children: "localclawd will be able to read files in this directory and make edits when auto-accept edits is on."
357266
357267
  }, undefined, false, undefined, this);
357267
357268
  $2[0] = t0;
357268
357269
  } else {
@@ -358508,7 +358509,7 @@ function Feedback({
358508
358509
  platform: env4.platform,
358509
358510
  gitRepo: envInfo.isGit,
358510
358511
  terminal: env4.terminal,
358511
- version: "1.1.15",
358512
+ version: "1.1.16",
358512
358513
  transcript: normalizeMessagesForAPI(messages),
358513
358514
  errors: sanitizedErrors,
358514
358515
  lastApiRequest: getLastAPIRequest(),
@@ -358700,7 +358701,7 @@ function Feedback({
358700
358701
  ", ",
358701
358702
  env4.terminal,
358702
358703
  ", v",
358703
- "1.1.15"
358704
+ "1.1.16"
358704
358705
  ]
358705
358706
  }, undefined, true, undefined, this)
358706
358707
  ]
@@ -358734,7 +358735,7 @@ function Feedback({
358734
358735
  children: [
358735
358736
  "We will use your feedback to debug related issues or to improve",
358736
358737
  " ",
358737
- "Claude Code's functionality (eg. to reduce the risk of bugs occurring in the future)."
358738
+ "localclawd's functionality (eg. to reduce the risk of bugs occurring in the future)."
358738
358739
  ]
358739
358740
  }, undefined, true, undefined, this)
358740
358741
  }, undefined, false, undefined, this),
@@ -358806,7 +358807,7 @@ ${sanitizedDescription}
358806
358807
  ` + `**Environment Info**
358807
358808
  ` + `- Platform: ${env4.platform}
358808
358809
  ` + `- Terminal: ${env4.terminal}
358809
- ` + `- Version: ${"1.1.15"}
358810
+ ` + `- Version: ${"1.1.16"}
358810
358811
  ` + `- Feedback ID: ${feedbackId}
358811
358812
  ` + `
358812
358813
  **Errors**
@@ -358855,7 +358856,7 @@ ${sanitizedDescription}
358855
358856
  async function generateTitle(description, abortSignal) {
358856
358857
  try {
358857
358858
  const response = await queryHaiku({
358858
- systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for Claude Code.", "Claude Code is an agentic coding CLI based on the Anthropic API.", "The title should:", "- Include the type of issue [Bug] or [Feature Request] as the first thing in the title", "- Be concise, specific and descriptive of the actual problem", "- Use technical terminology appropriate for a software issue", '- For error messages, extract the key error (e.g., "Missing Tool Result Block" rather than the full message)', "- Be direct and clear for developers to understand the problem", '- If you cannot determine a clear issue, use "Bug Report: [brief description]"', "- Any LLM API errors are from the Anthropic API, not from any other model provider", "Your response will be directly used as the title of the Github issue, and as such should not contain any other commentary or explaination", 'Examples of good titles include: "[Bug] Auto-Compact triggers to soon", "[Bug] Anthropic API Error: Missing Tool Result Block", "[Bug] Error: Invalid Model Name for Opus"']),
358859
+ systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for localclawd.", "localclawd is a local-first agentic coding CLI.", "The title should:", "- Include the type of issue [Bug] or [Feature Request] as the first thing in the title", "- Be concise, specific and descriptive of the actual problem", "- Use technical terminology appropriate for a software issue", '- For error messages, extract the key error (e.g., "Missing Tool Result Block" rather than the full message)', "- Be direct and clear for developers to understand the problem", '- If you cannot determine a clear issue, use "Bug Report: [brief description]"', "Your response will be directly used as the title of the Github issue, and as such should not contain any other commentary or explaination", 'Examples of good titles include: "[Bug] Auto-Compact triggers too soon", "[Bug] API Error: Missing Tool Result Block", "[Bug] Error: Invalid Model Name"']),
358859
358860
  userPrompt: description,
358860
358861
  signal: abortSignal,
358861
358862
  options: {
@@ -361919,7 +361920,7 @@ function buildPrimarySection() {
361919
361920
  }, undefined, false, undefined, this);
361920
361921
  return [{
361921
361922
  label: "Version",
361922
- value: "1.1.15"
361923
+ value: "1.1.16"
361923
361924
  }, {
361924
361925
  label: "Session name",
361925
361926
  value: nameValue
@@ -364464,7 +364465,7 @@ function OutputStylePicker(t0) {
364464
364465
  marginTop: 1,
364465
364466
  children: /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ThemedText, {
364466
364467
  dimColor: true,
364467
- children: "This changes how Claude Code communicates with you"
364468
+ children: "This changes how localclawd communicates with you"
364468
364469
  }, undefined, false, undefined, this)
364469
364470
  }, undefined, false, undefined, this);
364470
364471
  $2[5] = t7;
@@ -366537,7 +366538,7 @@ function Config({
366537
366538
  }
366538
366539
  }, undefined, false, undefined, this)
366539
366540
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
366540
- currentVersion: "1.1.15",
366541
+ currentVersion: "1.1.16",
366541
366542
  onChoice: (choice) => {
366542
366543
  setShowSubmenu(null);
366543
366544
  setTabsHidden(false);
@@ -366549,7 +366550,7 @@ function Config({
366549
366550
  autoUpdatesChannel: "stable"
366550
366551
  };
366551
366552
  if (choice === "stay") {
366552
- newSettings.minimumVersion = "1.1.15";
366553
+ newSettings.minimumVersion = "1.1.16";
366553
366554
  }
366554
366555
  updateSettingsForSource("userSettings", newSettings);
366555
366556
  setSettingsData((prev_27) => ({
@@ -376282,7 +376283,7 @@ function HelpV2(t0) {
376282
376283
  let t6;
376283
376284
  if ($2[31] !== tabs) {
376284
376285
  t6 = /* @__PURE__ */ jsx_dev_runtime214.jsxDEV(Tabs, {
376285
- title: `localclawd v${"1.1.15"}`,
376286
+ title: `localclawd v${"1.1.16"}`,
376286
376287
  color: "professionalBlue",
376287
376288
  defaultTab: "general",
376288
376289
  children: tabs
@@ -378202,7 +378203,7 @@ function ApiKeyStep(t0) {
378202
378203
  children: /* @__PURE__ */ jsx_dev_runtime219.jsxDEV(ThemedText, {
378203
378204
  children: [
378204
378205
  selectedOption === "existing" ? color("success", theme)("> ") : " ",
378205
- "Use your existing Claude Code API key"
378206
+ "Use your existing API key"
378206
378207
  ]
378207
378208
  }, undefined, true, undefined, this)
378208
378209
  }, undefined, false, undefined, this);
@@ -380169,7 +380170,7 @@ async function setupGitHubActions(repoName, apiKeyOrOAuthToken, secretName, upda
380169
380170
  workflows.push({
380170
380171
  path: ".github/workflows/claude-code-review.yml",
380171
380172
  content: CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT,
380172
- message: "Claude Code Review workflow"
380173
+ message: "localclawd review workflow"
380173
380174
  });
380174
380175
  }
380175
380176
  for (const workflow of workflows) {
@@ -381784,7 +381785,7 @@ function MCPListPanel(t0) {
381784
381785
  paddingLeft: 2,
381785
381786
  children: /* @__PURE__ */ jsx_dev_runtime232.jsxDEV(ThemedText, {
381786
381787
  bold: true,
381787
- children: "claude.ai"
381788
+ children: "remote"
381788
381789
  }, undefined, false, undefined, this)
381789
381790
  }, undefined, false, undefined, this),
381790
381791
  claudeAiServers.map((server_5) => renderServerItem(server_5))
@@ -383714,7 +383715,7 @@ function MCPRemoteServerMenu({
383714
383715
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime236.jsxDEV(jsx_dev_runtime236.Fragment, {
383715
383716
  children: [
383716
383717
  /* @__PURE__ */ jsx_dev_runtime236.jsxDEV(ThemedText, {
383717
- children: 'This will open claude.ai in the browser. Find the MCP server in the list and click "Disconnect".'
383718
+ children: 'Find the MCP server in the list and click "Disconnect".'
383718
383719
  }, undefined, false, undefined, this),
383719
383720
  /* @__PURE__ */ jsx_dev_runtime236.jsxDEV(ThemedBox_default, {
383720
383721
  marginLeft: 3,
@@ -385070,7 +385071,7 @@ function MCPSettings(t0) {
385070
385071
  t9 = $2[25];
385071
385072
  }
385072
385073
  const serverTools_0 = t9;
385073
- const defaultTab = viewState.server.transport === "claudeai-proxy" ? "claude.ai" : "Claude Code";
385074
+ const defaultTab = viewState.server.transport === "claudeai-proxy" ? "remote" : "localclawd";
385074
385075
  if (viewState.server.transport === "stdio") {
385075
385076
  let t10;
385076
385077
  if ($2[26] !== viewState.server) {
@@ -386436,7 +386437,7 @@ function PluginTrustWarning() {
386436
386437
  dimColor: true,
386437
386438
  italic: true,
386438
386439
  children: [
386439
- "Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.",
386440
+ "Make sure you trust a plugin before installing, updating, or using it. We do not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.",
386440
386441
  customMessage ? ` ${customMessage}` : ""
386441
386442
  ]
386442
386443
  }, undefined, true, undefined, this)
@@ -388365,7 +388366,7 @@ function EmptyStateMessage(t0) {
388365
388366
  }, undefined, false, undefined, this),
388366
388367
  /* @__PURE__ */ jsx_dev_runtime247.jsxDEV(ThemedText, {
388367
388368
  dimColor: true,
388368
- children: "Please install git and restart Claude Code."
388369
+ children: "Please install git and restart localclawd."
388369
388370
  }, undefined, false, undefined, this)
388370
388371
  ]
388371
388372
  }, undefined, true, undefined, this);
@@ -389870,7 +389871,7 @@ function ManageMarketplaces({
389870
389871
  marginTop: 1,
389871
389872
  children: /* @__PURE__ */ jsx_dev_runtime248.jsxDEV(ThemedText, {
389872
389873
  dimColor: true,
389873
- children: "Auto-update enabled. Claude Code will automatically update this marketplace and its installed plugins."
389874
+ children: "Auto-update enabled. localclawd will automatically update this marketplace and its installed plugins."
389874
389875
  }, undefined, false, undefined, this)
389875
389876
  }, undefined, false, undefined, this),
389876
389877
  /* @__PURE__ */ jsx_dev_runtime248.jsxDEV(ThemedBox_default, {
@@ -400440,7 +400441,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
400440
400441
  return [];
400441
400442
  }
400442
400443
  }
400443
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.15") {
400444
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.16") {
400444
400445
  if (process.env.USER_TYPE === "ant") {
400445
400446
  const changelog = MACRO.VERSION_CHANGELOG;
400446
400447
  if (changelog) {
@@ -400467,7 +400468,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.15")
400467
400468
  releaseNotes
400468
400469
  };
400469
400470
  }
400470
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.15") {
400471
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.16") {
400471
400472
  if (process.env.USER_TYPE === "ant") {
400472
400473
  const changelog = MACRO.VERSION_CHANGELOG;
400473
400474
  if (changelog) {
@@ -401634,7 +401635,7 @@ function getRecentActivitySync() {
401634
401635
  return cachedActivity;
401635
401636
  }
401636
401637
  function getLogoDisplayData() {
401637
- const version = process.env.DEMO_VERSION ?? "1.1.15";
401638
+ const version = process.env.DEMO_VERSION ?? "1.1.16";
401638
401639
  const serverUrl = getDirectConnectServerUrl();
401639
401640
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
401640
401641
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -402156,7 +402157,7 @@ function createWhatsNewFeed(releaseNotes2) {
402156
402157
  text: note
402157
402158
  };
402158
402159
  });
402159
- const emptyMessage = "Check the Claude Code changelog for updates";
402160
+ const emptyMessage = "Check the changelog for updates";
402160
402161
  return {
402161
402162
  title: "What's new",
402162
402163
  lines,
@@ -402190,7 +402191,7 @@ function createProjectOnboardingFeed(steps) {
402190
402191
  }
402191
402192
  function createGuestPassesFeed() {
402192
402193
  const reward = getCachedReferrerReward();
402193
- const subtitle = reward ? `Share Claude Code and earn ${formatCreditAmount(reward)} of extra usage` : "Share Claude Code with friends";
402194
+ const subtitle = reward ? `Share localclawd and earn ${formatCreditAmount(reward)} of extra usage` : "Share localclawd with friends";
402194
402195
  return {
402195
402196
  title: "3 guest passes",
402196
402197
  lines: [],
@@ -402422,7 +402423,7 @@ function GuestPassesUpsell() {
402422
402423
  }, undefined, false, undefined, this),
402423
402424
  " ·",
402424
402425
  " ",
402425
- reward ? `Share Claude Code and earn ${formatCreditAmount(reward)} of extra usage · /passes` : "3 guest passes at /passes"
402426
+ "guest passes at /passes"
402426
402427
  ]
402427
402428
  }, undefined, true, undefined, this);
402428
402429
  $2[0] = t0;
@@ -402908,7 +402909,7 @@ function LogoV2() {
402908
402909
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
402909
402910
  t2 = () => {
402910
402911
  const currentConfig = getGlobalConfig();
402911
- if (currentConfig.lastReleaseNotesSeen === "1.1.15") {
402912
+ if (currentConfig.lastReleaseNotesSeen === "1.1.16") {
402912
402913
  return;
402913
402914
  }
402914
402915
  saveGlobalConfig(_temp327);
@@ -403584,12 +403585,12 @@ function LogoV2() {
403584
403585
  return t41;
403585
403586
  }
403586
403587
  function _temp327(current) {
403587
- if (current.lastReleaseNotesSeen === "1.1.15") {
403588
+ if (current.lastReleaseNotesSeen === "1.1.16") {
403588
403589
  return current;
403589
403590
  }
403590
403591
  return {
403591
403592
  ...current,
403592
- lastReleaseNotesSeen: "1.1.15"
403593
+ lastReleaseNotesSeen: "1.1.16"
403593
403594
  };
403594
403595
  }
403595
403596
  function _temp245(s_0) {
@@ -410150,13 +410151,13 @@ async function launchAndDone(args, context8, onDone, billingNote, signal) {
410150
410151
  var jsx_dev_runtime282, call39 = async (onDone, context8, args) => {
410151
410152
  const gate = await checkOverageGate();
410152
410153
  if (gate.kind === "not-enabled") {
410153
- onDone("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.", {
410154
+ onDone("Free ultrareviews used. This feature requires a cloud subscription.", {
410154
410155
  display: "system"
410155
410156
  });
410156
410157
  return null;
410157
410158
  }
410158
410159
  if (gate.kind === "low-balance") {
410159
- onDone(`Balance too low to launch ultrareview ($${gate.available.toFixed(2)} available, $10 minimum). Top up at https://claude.ai/settings/billing`, {
410160
+ onDone(`Balance too low to launch ultrareview ($${gate.available.toFixed(2)} available, $10 minimum). This feature requires a cloud subscription.`, {
410160
410161
  display: "system"
410161
410162
  });
410162
410163
  return null;
@@ -418134,7 +418135,7 @@ function RemoveWorkspaceDirectory(t0) {
418134
418135
  let t4;
418135
418136
  if ($2[10] === Symbol.for("react.memo_cache_sentinel")) {
418136
418137
  t4 = /* @__PURE__ */ jsx_dev_runtime305.jsxDEV(ThemedText, {
418137
- children: "Claude Code will no longer have access to files in this directory."
418138
+ children: "localclawd will no longer have access to files in this directory."
418138
418139
  }, undefined, false, undefined, this);
418139
418140
  $2[10] = t4;
418140
418141
  } else {
@@ -419578,7 +419579,7 @@ function PermissionRuleList(t0) {
419578
419579
  let t28;
419579
419580
  if ($2[89] === Symbol.for("react.memo_cache_sentinel")) {
419580
419581
  t28 = /* @__PURE__ */ jsx_dev_runtime307.jsxDEV(ThemedText, {
419581
- children: "Claude Code can read files in the workspace, and make edits when auto-accept edits is on."
419582
+ children: "localclawd can read files in the workspace, and make edits when auto-accept edits is on."
419582
419583
  }, undefined, false, undefined, this);
419583
419584
  $2[89] = t28;
419584
419585
  } else {
@@ -420585,7 +420586,7 @@ function Passes({
420585
420586
  children: /* @__PURE__ */ jsx_dev_runtime312.jsxDEV(ThemedText, {
420586
420587
  dimColor: true,
420587
420588
  children: [
420588
- referrerReward ? `Share a free week of Claude Code with friends. If they love it and subscribe, you'll get ${formatCreditAmount(referrerReward)} of extra usage to keep building. ` : "Share a free week of Claude Code with friends. ",
420589
+ referrerReward ? `Share a free week of localclawd with friends. If they love it and subscribe, you'll get ${formatCreditAmount(referrerReward)} of extra usage to keep building. ` : "Share a free week of localclawd with friends. ",
420589
420590
  /* @__PURE__ */ jsx_dev_runtime312.jsxDEV(Link, {
420590
420591
  url: referrerReward ? "https://support.claude.com/en/articles/13456702-claude-code-guest-passes" : "https://support.claude.com/en/articles/12875061-claude-code-guest-passes",
420591
420592
  children: "Terms apply."
@@ -420734,7 +420735,7 @@ function GracePeriodContentBody() {
420734
420735
  children: [
420735
420736
  "— Allow the use of your chats and coding sessions to help improve the service. Change anytime in your Privacy Settings (",
420736
420737
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420737
- url: "https://claude.ai/settings/data-privacy-controls"
420738
+ url: "https://github.com/chromebookwiz/localclawd"
420738
420739
  }, undefined, false, undefined, this),
420739
420740
  ")."
420740
420741
  ]
@@ -420779,7 +420780,7 @@ function GracePeriodContentBody() {
420779
420780
  let t6;
420780
420781
  if ($2[6] === Symbol.for("react.memo_cache_sentinel")) {
420781
420782
  t6 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420782
- url: "https://www.anthropic.com/news/updates-to-our-consumer-terms"
420783
+ url: "https://github.com/chromebookwiz/localclawd"
420783
420784
  }, undefined, false, undefined, this);
420784
420785
  $2[6] = t6;
420785
420786
  } else {
@@ -420788,7 +420789,7 @@ function GracePeriodContentBody() {
420788
420789
  let t7;
420789
420790
  if ($2[7] === Symbol.for("react.memo_cache_sentinel")) {
420790
420791
  t7 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420791
- url: "https://anthropic.com/legal/terms"
420792
+ url: "https://github.com/chromebookwiz/localclawd"
420792
420793
  }, undefined, false, undefined, this);
420793
420794
  $2[7] = t7;
420794
420795
  } else {
@@ -420808,7 +420809,7 @@ function GracePeriodContentBody() {
420808
420809
  t7,
420809
420810
  ") and Privacy Policy (",
420810
420811
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420811
- url: "https://anthropic.com/legal/privacy"
420812
+ url: "https://github.com/chromebookwiz/localclawd"
420812
420813
  }, undefined, false, undefined, this),
420813
420814
  ")"
420814
420815
  ]
@@ -420848,13 +420849,13 @@ function PostGracePeriodContentBody() {
420848
420849
  children: [
420849
420850
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
420850
420851
  bold: true,
420851
- children: "Help improve Claude"
420852
+ children: "Help improve the service"
420852
420853
  }, undefined, false, undefined, this),
420853
420854
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
420854
420855
  children: "Allow the use of your chats and coding sessions to help improve the service. You can change this anytime in Privacy Settings"
420855
420856
  }, undefined, false, undefined, this),
420856
420857
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420857
- url: "https://claude.ai/settings/data-privacy-controls"
420858
+ url: "https://github.com/chromebookwiz/localclawd"
420858
420859
  }, undefined, false, undefined, this)
420859
420860
  ]
420860
420861
  }, undefined, true, undefined, this);
@@ -420891,7 +420892,7 @@ function PostGracePeriodContentBody() {
420891
420892
  let t4;
420892
420893
  if ($2[4] === Symbol.for("react.memo_cache_sentinel")) {
420893
420894
  t4 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420894
- url: "https://www.anthropic.com/news/updates-to-our-consumer-terms"
420895
+ url: "https://github.com/chromebookwiz/localclawd"
420895
420896
  }, undefined, false, undefined, this);
420896
420897
  $2[4] = t4;
420897
420898
  } else {
@@ -420900,7 +420901,7 @@ function PostGracePeriodContentBody() {
420900
420901
  let t5;
420901
420902
  if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
420902
420903
  t5 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420903
- url: "https://anthropic.com/legal/terms"
420904
+ url: "https://github.com/chromebookwiz/localclawd"
420904
420905
  }, undefined, false, undefined, this);
420905
420906
  $2[5] = t5;
420906
420907
  } else {
@@ -420920,7 +420921,7 @@ function PostGracePeriodContentBody() {
420920
420921
  t5,
420921
420922
  ") and Privacy Policy (",
420922
420923
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
420923
- url: "https://anthropic.com/legal/privacy"
420924
+ url: "https://github.com/chromebookwiz/localclawd"
420924
420925
  }, undefined, false, undefined, this),
420925
420926
  ")"
420926
420927
  ]
@@ -421024,13 +421025,13 @@ function GroveDialog(t0) {
421024
421025
  let t4;
421025
421026
  if ($2[8] !== groveConfig?.domain_excluded) {
421026
421027
  t4 = groveConfig?.domain_excluded ? [{
421027
- label: "Accept terms · Help improve Claude: OFF (for emails with your domain)",
421028
+ label: "Accept terms · Help improve the service: OFF (for emails with your domain)",
421028
421029
  value: "accept_opt_out"
421029
421030
  }] : [{
421030
- label: "Accept terms · Help improve Claude: ON",
421031
+ label: "Accept terms · Help improve the service: ON",
421031
421032
  value: "accept_opt_in"
421032
421033
  }, {
421033
- label: "Accept terms · Help improve Claude: OFF",
421034
+ label: "Accept terms · Help improve the service: OFF",
421034
421035
  value: "accept_opt_out"
421035
421036
  }];
421036
421037
  $2[8] = groveConfig?.domain_excluded;
@@ -421308,7 +421309,7 @@ function PrivacySettingsDialog(t0) {
421308
421309
  "Review and manage your privacy settings at",
421309
421310
  " ",
421310
421311
  /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
421311
- url: "https://claude.ai/settings/data-privacy-controls"
421312
+ url: "https://github.com/chromebookwiz/localclawd"
421312
421313
  }, undefined, false, undefined, this)
421313
421314
  ]
421314
421315
  }, undefined, true, undefined, this);
@@ -421322,7 +421323,7 @@ function PrivacySettingsDialog(t0) {
421322
421323
  width: 44,
421323
421324
  children: /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
421324
421325
  bold: true,
421325
- children: "Help improve Claude"
421326
+ children: "Help improve the service"
421326
421327
  }, undefined, false, undefined, this)
421327
421328
  }, undefined, false, undefined, this);
421328
421329
  $2[10] = t6;
@@ -421448,7 +421449,7 @@ async function call54(onDone) {
421448
421449
  location: "settings"
421449
421450
  }, undefined, false, undefined, this);
421450
421451
  }
421451
- var jsx_dev_runtime315, FALLBACK_MESSAGE = "Review and manage your privacy settings at https://claude.ai/settings/data-privacy-controls";
421452
+ var jsx_dev_runtime315, FALLBACK_MESSAGE = "Privacy settings are not available in this local-first build. No data is shared with cloud services unless you configure a cloud backend.";
421452
421453
  var init_privacy_settings = __esm(() => {
421453
421454
  init_Grove();
421454
421455
  init_grove();
@@ -429791,7 +429792,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
429791
429792
  smapsRollup,
429792
429793
  platform: process.platform,
429793
429794
  nodeVersion: process.version,
429794
- ccVersion: "1.1.15"
429795
+ ccVersion: "1.1.16"
429795
429796
  };
429796
429797
  }
429797
429798
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -430376,7 +430377,7 @@ var init_bridge_kick = __esm(() => {
430376
430377
  var call64 = async () => {
430377
430378
  return {
430378
430379
  type: "text",
430379
- value: `${"1.1.15"} (built ${"2026-04-08T22:42:21.973Z"})`
430380
+ value: `${"1.1.16"} (built ${"2026-04-08T22:59:48.602Z"})`
430380
430381
  };
430381
430382
  }, version, version_default;
430382
430383
  var init_version = __esm(() => {
@@ -434508,7 +434509,7 @@ async function call76(onDone, context8) {
434508
434509
  setTimeout(onDone, 0, "Opened the Claude Max upgrade page in your browser. localclawd no longer runs a separate in-terminal login flow; use /provider to configure the backend you want after any browser-side account changes.");
434509
434510
  } catch (error5) {
434510
434511
  logError(error5);
434511
- setTimeout(onDone, 0, "Failed to open browser. Please visit https://claude.ai/upgrade/max to upgrade.");
434512
+ setTimeout(onDone, 0, "Failed to open browser. /upgrade is a cloud-only feature — use /setup to configure a local backend instead.");
434512
434513
  }
434513
434514
  return null;
434514
434515
  }
@@ -439314,7 +439315,7 @@ function generateHtmlReport(data, insights) {
439314
439315
  </html>`;
439315
439316
  }
439316
439317
  function buildExportData(data, insights, facets, remoteStats) {
439317
- const version2 = typeof MACRO !== "undefined" ? "1.1.15" : "unknown";
439318
+ const version2 = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
439318
439319
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
439319
439320
  const facets_summary = {
439320
439321
  total: facets.size,
@@ -443481,7 +443482,7 @@ var init_sessionStorage = __esm(() => {
443481
443482
  init_settings2();
443482
443483
  init_slowOperations();
443483
443484
  init_uuid();
443484
- VERSION6 = typeof MACRO !== "undefined" ? "1.1.15" : "unknown";
443485
+ VERSION6 = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
443485
443486
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
443486
443487
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
443487
443488
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -444683,7 +444684,7 @@ var init_filesystem = __esm(() => {
444683
444684
  });
444684
444685
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
444685
444686
  const nonce = randomBytes19(16).toString("hex");
444686
- return join130(getClaudeTempDir(), "bundled-skills", "1.1.15", nonce);
444687
+ return join130(getClaudeTempDir(), "bundled-skills", "1.1.16", nonce);
444687
444688
  });
444688
444689
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
444689
444690
  });
@@ -450682,7 +450683,7 @@ function computeFingerprint(messageText, version2) {
450682
450683
  }
450683
450684
  function computeFingerprintFromMessages(messages) {
450684
450685
  const firstMessageText = extractFirstMessageText(messages);
450685
- return computeFingerprint(firstMessageText, "1.1.15");
450686
+ return computeFingerprint(firstMessageText, "1.1.16");
450686
450687
  }
450687
450688
  var FINGERPRINT_SALT = "59cf53e54c78";
450688
450689
  var init_fingerprint = () => {};
@@ -452537,7 +452538,7 @@ async function sideQuery(opts) {
452537
452538
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
452538
452539
  }
452539
452540
  const messageText = extractFirstUserMessageText(messages);
452540
- const fingerprint = computeFingerprint(messageText, "1.1.15");
452541
+ const fingerprint = computeFingerprint(messageText, "1.1.16");
452541
452542
  const attributionHeader = getAttributionHeader(fingerprint);
452542
452543
  const systemBlocks = [
452543
452544
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -457335,7 +457336,7 @@ function buildSystemInitMessage(inputs) {
457335
457336
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
457336
457337
  apiKeySource: getAnthropicApiKeyWithSource().source,
457337
457338
  betas: getSdkBetas(),
457338
- claude_code_version: "1.1.15",
457339
+ claude_code_version: "1.1.16",
457339
457340
  output_style: outputStyle2,
457340
457341
  agents: inputs.agents.map((agent) => agent.agentType),
457341
457342
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -471914,7 +471915,7 @@ var init_useVoiceEnabled = __esm(() => {
471914
471915
  function getSemverPart(version2) {
471915
471916
  return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
471916
471917
  }
471917
- function useUpdateNotification(updatedVersion, initialVersion = "1.1.15") {
471918
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.16") {
471918
471919
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
471919
471920
  if (!updatedVersion) {
471920
471921
  return null;
@@ -471954,7 +471955,7 @@ function AutoUpdater({
471954
471955
  return;
471955
471956
  }
471956
471957
  if (false) {}
471957
- const currentVersion = "1.1.15";
471958
+ const currentVersion = "1.1.16";
471958
471959
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
471959
471960
  let latestVersion = await getLatestVersion(channel);
471960
471961
  const isDisabled = isAutoUpdaterDisabled();
@@ -472165,12 +472166,12 @@ function NativeAutoUpdater({
472165
472166
  logEvent("tengu_native_auto_updater_start", {});
472166
472167
  try {
472167
472168
  const maxVersion = await getMaxVersion();
472168
- if (maxVersion && gt("1.1.15", maxVersion)) {
472169
+ if (maxVersion && gt("1.1.16", maxVersion)) {
472169
472170
  const msg = await getMaxVersionMessage();
472170
472171
  setMaxVersionIssue(msg ?? "affects your version");
472171
472172
  }
472172
472173
  const result = await installLatest(channel);
472173
- const currentVersion = "1.1.15";
472174
+ const currentVersion = "1.1.16";
472174
472175
  const latencyMs = Date.now() - startTime;
472175
472176
  if (result.lockFailed) {
472176
472177
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -472305,17 +472306,17 @@ function PackageManagerAutoUpdater(t0) {
472305
472306
  const maxVersion = await getMaxVersion();
472306
472307
  if (maxVersion && latest && gt(latest, maxVersion)) {
472307
472308
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
472308
- if (gte("1.1.15", maxVersion)) {
472309
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.15"} is already at or above maxVersion ${maxVersion}, skipping update`);
472309
+ if (gte("1.1.16", maxVersion)) {
472310
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
472310
472311
  setUpdateAvailable(false);
472311
472312
  return;
472312
472313
  }
472313
472314
  latest = maxVersion;
472314
472315
  }
472315
- const hasUpdate = latest && !gte("1.1.15", latest) && !shouldSkipVersion(latest);
472316
+ const hasUpdate = latest && !gte("1.1.16", latest) && !shouldSkipVersion(latest);
472316
472317
  setUpdateAvailable(!!hasUpdate);
472317
472318
  if (hasUpdate) {
472318
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.15"} -> ${latest}`);
472319
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.16"} -> ${latest}`);
472319
472320
  }
472320
472321
  };
472321
472322
  $2[0] = t1;
@@ -472349,7 +472350,7 @@ function PackageManagerAutoUpdater(t0) {
472349
472350
  wrap: "truncate",
472350
472351
  children: [
472351
472352
  "currentVersion: ",
472352
- "1.1.15"
472353
+ "1.1.16"
472353
472354
  ]
472354
472355
  }, undefined, true, undefined, this);
472355
472356
  $2[3] = verbose;
@@ -479907,7 +479908,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
479907
479908
  project_dir: getOriginalCwd(),
479908
479909
  added_dirs: addedDirs
479909
479910
  },
479910
- version: "1.1.15",
479911
+ version: "1.1.16",
479911
479912
  output_style: {
479912
479913
  name: outputStyleName
479913
479914
  },
@@ -491467,7 +491468,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
491467
491468
  } catch {}
491468
491469
  const data = {
491469
491470
  trigger,
491470
- version: "1.1.15",
491471
+ version: "1.1.16",
491471
491472
  platform: process.platform,
491472
491473
  transcript,
491473
491474
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -495279,31 +495280,6 @@ function useMcpConnectivityStatus(t0) {
495279
495280
  priority: "medium"
495280
495281
  });
495281
495282
  }
495282
- if (failedClaudeAiClients.length > 0) {
495283
- addNotification({
495284
- key: "mcp-claudeai-failed",
495285
- jsx: /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(jsx_dev_runtime462.Fragment, {
495286
- children: [
495287
- /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
495288
- color: "error",
495289
- children: [
495290
- failedClaudeAiClients.length,
495291
- " claude.ai",
495292
- " ",
495293
- failedClaudeAiClients.length === 1 ? "connector" : "connectors",
495294
- " ",
495295
- "unavailable"
495296
- ]
495297
- }, undefined, true, undefined, this),
495298
- /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
495299
- dimColor: true,
495300
- children: " · /mcp"
495301
- }, undefined, false, undefined, this)
495302
- ]
495303
- }, undefined, true, undefined, this),
495304
- priority: "medium"
495305
- });
495306
- }
495307
495283
  if (needsAuthLocalServers.length > 0) {
495308
495284
  addNotification({
495309
495285
  key: "mcp-needs-auth",
@@ -495329,31 +495305,6 @@ function useMcpConnectivityStatus(t0) {
495329
495305
  priority: "medium"
495330
495306
  });
495331
495307
  }
495332
- if (needsAuthClaudeAiServers.length > 0) {
495333
- addNotification({
495334
- key: "mcp-claudeai-needs-auth",
495335
- jsx: /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(jsx_dev_runtime462.Fragment, {
495336
- children: [
495337
- /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
495338
- color: "warning",
495339
- children: [
495340
- needsAuthClaudeAiServers.length,
495341
- " claude.ai",
495342
- " ",
495343
- needsAuthClaudeAiServers.length === 1 ? "connector needs" : "connectors need",
495344
- " ",
495345
- "auth"
495346
- ]
495347
- }, undefined, true, undefined, this),
495348
- /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
495349
- dimColor: true,
495350
- children: " · /mcp"
495351
- }, undefined, false, undefined, this)
495352
- ]
495353
- }, undefined, true, undefined, this),
495354
- priority: "medium"
495355
- });
495356
- }
495357
495308
  };
495358
495309
  t3 = [addNotification, mcpClients];
495359
495310
  $2[0] = addNotification;
@@ -497577,6 +497528,7 @@ function useCanSwitchToExistingSubscription() {
497577
497528
  useStartupNotification(_temp297);
497578
497529
  }
497579
497530
  async function _temp297() {
497531
+ return null;
497580
497532
  if ((getGlobalConfig().subscriptionNoticeCount ?? 0) >= MAX_SHOW_COUNT2) {
497581
497533
  return null;
497582
497534
  }
@@ -507930,7 +507882,7 @@ function appendToLog(path17, message) {
507930
507882
  cwd: getFsImplementation().cwd(),
507931
507883
  userType: process.env.USER_TYPE,
507932
507884
  sessionId: getSessionId(),
507933
- version: "1.1.15"
507885
+ version: "1.1.16"
507934
507886
  };
507935
507887
  getLogWriter(path17).write(messageWithTimestamp);
507936
507888
  }
@@ -511930,8 +511882,8 @@ async function getEnvLessBridgeConfig() {
511930
511882
  }
511931
511883
  async function checkEnvLessBridgeMinVersion() {
511932
511884
  const cfg = await getEnvLessBridgeConfig();
511933
- if (cfg.min_version && lt("1.1.15", cfg.min_version)) {
511934
- return `Your version of localclawd (${"1.1.15"}) is too old for Remote Control.
511885
+ if (cfg.min_version && lt("1.1.16", cfg.min_version)) {
511886
+ return `Your version of localclawd (${"1.1.16"}) is too old for Remote Control.
511935
511887
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
511936
511888
  }
511937
511889
  return null;
@@ -512403,7 +512355,7 @@ async function initBridgeCore(params) {
512403
512355
  const rawApi = createBridgeApiClient({
512404
512356
  baseUrl,
512405
512357
  getAccessToken,
512406
- runnerVersion: "1.1.15",
512358
+ runnerVersion: "1.1.16",
512407
512359
  onDebug: logForDebugging,
512408
512360
  onAuth401,
512409
512361
  getTrustedDeviceToken
@@ -518059,7 +518011,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
518059
518011
  setCwd(cwd3);
518060
518012
  const server = new Server({
518061
518013
  name: "claude/tengu",
518062
- version: "1.1.15"
518014
+ version: "1.1.16"
518063
518015
  }, {
518064
518016
  capabilities: {
518065
518017
  tools: {}
@@ -519140,7 +519092,7 @@ function WelcomeV2() {
519140
519092
  dimColor: true,
519141
519093
  children: [
519142
519094
  "v",
519143
- "1.1.15"
519095
+ "1.1.16"
519144
519096
  ]
519145
519097
  }, undefined, true, undefined, this)
519146
519098
  ]
@@ -519709,7 +519661,7 @@ __export(exports_update, {
519709
519661
  });
519710
519662
  async function update() {
519711
519663
  logEvent("tengu_update_check", {});
519712
- writeToStdout(`Current version: ${"1.1.15"}
519664
+ writeToStdout(`Current version: ${"1.1.16"}
519713
519665
  `);
519714
519666
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
519715
519667
  writeToStdout(`Checking for updates to ${channel} version...
@@ -519784,8 +519736,8 @@ async function update() {
519784
519736
  writeToStdout(`localclawd is managed by Homebrew.
519785
519737
  `);
519786
519738
  const latest = await getLatestVersion(channel);
519787
- if (latest && !gte("1.1.15", latest)) {
519788
- writeToStdout(`Update available: ${"1.1.15"} → ${latest}
519739
+ if (latest && !gte("1.1.16", latest)) {
519740
+ writeToStdout(`Update available: ${"1.1.16"} → ${latest}
519789
519741
  `);
519790
519742
  writeToStdout(`
519791
519743
  `);
@@ -519801,8 +519753,8 @@ async function update() {
519801
519753
  writeToStdout(`localclawd is managed by winget.
519802
519754
  `);
519803
519755
  const latest = await getLatestVersion(channel);
519804
- if (latest && !gte("1.1.15", latest)) {
519805
- writeToStdout(`Update available: ${"1.1.15"} → ${latest}
519756
+ if (latest && !gte("1.1.16", latest)) {
519757
+ writeToStdout(`Update available: ${"1.1.16"} → ${latest}
519806
519758
  `);
519807
519759
  writeToStdout(`
519808
519760
  `);
@@ -519816,8 +519768,8 @@ async function update() {
519816
519768
  writeToStdout(`localclawd is managed by apk.
519817
519769
  `);
519818
519770
  const latest = await getLatestVersion(channel);
519819
- if (latest && !gte("1.1.15", latest)) {
519820
- writeToStdout(`Update available: ${"1.1.15"} → ${latest}
519771
+ if (latest && !gte("1.1.16", latest)) {
519772
+ writeToStdout(`Update available: ${"1.1.16"} → ${latest}
519821
519773
  `);
519822
519774
  writeToStdout(`
519823
519775
  `);
@@ -519882,11 +519834,11 @@ async function update() {
519882
519834
  `);
519883
519835
  await gracefulShutdown(1);
519884
519836
  }
519885
- if (result.latestVersion === "1.1.15") {
519886
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.15"})`) + `
519837
+ if (result.latestVersion === "1.1.16") {
519838
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.16"})`) + `
519887
519839
  `);
519888
519840
  } else {
519889
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.15"} to version ${result.latestVersion}`) + `
519841
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.16"} to version ${result.latestVersion}`) + `
519890
519842
  `);
519891
519843
  await regenerateCompletionCache();
519892
519844
  }
@@ -519946,12 +519898,12 @@ async function update() {
519946
519898
  `);
519947
519899
  await gracefulShutdown(1);
519948
519900
  }
519949
- if (latestVersion === "1.1.15") {
519950
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.15"})`) + `
519901
+ if (latestVersion === "1.1.16") {
519902
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.16"})`) + `
519951
519903
  `);
519952
519904
  await gracefulShutdown(0);
519953
519905
  }
519954
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.15"})
519906
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.16"})
519955
519907
  `);
519956
519908
  writeToStdout(`Installing update...
519957
519909
  `);
@@ -519996,7 +519948,7 @@ async function update() {
519996
519948
  logForDebugging(`update: Installation status: ${status2}`);
519997
519949
  switch (status2) {
519998
519950
  case "success":
519999
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.15"} to version ${latestVersion}`) + `
519951
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.16"} to version ${latestVersion}`) + `
520000
519952
  `);
520001
519953
  await regenerateCompletionCache();
520002
519954
  break;
@@ -521280,7 +521232,7 @@ Run with --debug for more details.
521280
521232
  }
521281
521233
  }
521282
521234
  logForDiagnosticsNoPII("info", "started", {
521283
- version: "1.1.15",
521235
+ version: "1.1.16",
521284
521236
  is_native_binary: isInBundledMode()
521285
521237
  });
521286
521238
  registerCleanup(async () => {
@@ -522064,7 +522016,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522064
522016
  pendingHookMessages
522065
522017
  }, renderAndRun);
522066
522018
  }
522067
- }).version("1.1.15 (localClawd)", "-v, --version", "Output the version number");
522019
+ }).version("1.1.16 (localClawd)", "-v, --version", "Output the version number");
522068
522020
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
522069
522021
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
522070
522022
  if (canUserConfigureAdvisor()) {
@@ -522572,7 +522524,7 @@ if (false) {}
522572
522524
  async function main2() {
522573
522525
  const args = process.argv.slice(2);
522574
522526
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
522575
- console.log(`${"1.1.15"} (localclawd)`);
522527
+ console.log(`${"1.1.16"} (localclawd)`);
522576
522528
  return;
522577
522529
  }
522578
522530
  const {
@@ -522669,4 +522621,4 @@ localclawd crashed: ${msg}
522669
522621
  process.exit(1);
522670
522622
  });
522671
522623
 
522672
- //# debugId=EE921B1E2788116364756E2164756E21
522624
+ //# debugId=5C73951C8879C82664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localclawd",
3
- "version": "1.1.15",
3
+ "version": "1.1.16",
4
4
  "description": "Local-first coding CLI for vLLM, Ollama, and OpenAI-compatible backends.",
5
5
  "private": false,
6
6
  "type": "module",