@funnycode/myclaude 0.1.82 → 0.1.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/myclaude.js CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.82",
8
- BUILD_TIME: "2026-07-16T14:27:50.796Z",
7
+ VERSION: "0.1.84",
8
+ BUILD_TIME: "2026-07-16T20:17:47.229Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -40824,12 +40824,9 @@ function hasBinaryExtension(filePath) {
40824
40824
  return BINARY_EXTENSIONS.has(ext);
40825
40825
  }
40826
40826
  function isBinaryContent(buffer) {
40827
- const checkSize = Math.min(buffer.length, BINARY_CHECK_SIZE);
40828
40827
  let nonPrintable = 0;
40829
- for (let i2 = 0;i2 < checkSize; i2++) {
40828
+ for (let i2 = 0;i2 < buffer.length; i2++) {
40830
40829
  const byte = buffer[i2];
40831
- if (byte === undefined)
40832
- break;
40833
40830
  if (byte === 0) {
40834
40831
  return true;
40835
40832
  }
@@ -40837,9 +40834,9 @@ function isBinaryContent(buffer) {
40837
40834
  nonPrintable++;
40838
40835
  }
40839
40836
  }
40840
- return nonPrintable / checkSize > 0.2;
40837
+ return nonPrintable / buffer.length > 0.2;
40841
40838
  }
40842
- var BINARY_EXTENSIONS, BINARY_CHECK_SIZE = 8192;
40839
+ var BINARY_EXTENSIONS;
40843
40840
  var init_files2 = __esm(() => {
40844
40841
  BINARY_EXTENSIONS = new Set([
40845
40842
  ".png",
@@ -117487,7 +117484,7 @@ var package_default;
117487
117484
  var init_package = __esm(() => {
117488
117485
  package_default = {
117489
117486
  name: "@funnycode/myclaude",
117490
- version: "0.1.82",
117487
+ version: "0.1.84",
117491
117488
  private: false,
117492
117489
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
117493
117490
  license: "MIT",
@@ -210320,9 +210317,13 @@ function createDumpPromptsFetch(agentIdOrSessionId) {
210320
210317
  await fs11.appendFile(filePath, jsonStringify({ type: "response", timestamp, data }) + `
210321
210318
  `);
210322
210319
  } catch (err2) {
210323
- logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
210320
+ try {
210321
+ logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
210322
+ } catch {}
210324
210323
  }
210325
- })();
210324
+ })().catch((err2) => {
210325
+ logForDebugging(`dumpPrompts.response handler unhandled rejection: ${err2}`, { level: "error" });
210326
+ });
210326
210327
  }
210327
210328
  return response;
210328
210329
  };
@@ -300936,29 +300937,39 @@ async function isQualifiedForGrove() {
300936
300937
  return cachedEntry.grove_enabled;
300937
300938
  }
300938
300939
  async function fetchAndStoreGroveConfig(accountId) {
300939
- try {
300940
- const result = await getGroveNoticeConfig();
300941
- if (!result.success) {
300942
- return;
300940
+ const existing = groveConfigLocks.get(accountId) ?? Promise.resolve();
300941
+ const next = existing.then(async () => {
300942
+ try {
300943
+ const result = await getGroveNoticeConfig();
300944
+ if (!result.success) {
300945
+ return;
300946
+ }
300947
+ const groveEnabled = result.data.grove_enabled;
300948
+ const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
300949
+ if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
300950
+ return;
300951
+ }
300952
+ saveGlobalConfig((current) => ({
300953
+ ...current,
300954
+ groveConfigCache: {
300955
+ ...current.groveConfigCache,
300956
+ [accountId]: {
300957
+ grove_enabled: groveEnabled,
300958
+ timestamp: Date.now()
300959
+ }
300960
+ }
300961
+ }));
300962
+ } catch (err2) {
300963
+ logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
300943
300964
  }
300944
- const groveEnabled = result.data.grove_enabled;
300945
- const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
300946
- if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
300947
- return;
300965
+ });
300966
+ groveConfigLocks.set(accountId, next);
300967
+ next.then(() => {
300968
+ if (groveConfigLocks.get(accountId) === next) {
300969
+ groveConfigLocks.delete(accountId);
300948
300970
  }
300949
- saveGlobalConfig((current) => ({
300950
- ...current,
300951
- groveConfigCache: {
300952
- ...current.groveConfigCache,
300953
- [accountId]: {
300954
- grove_enabled: groveEnabled,
300955
- timestamp: Date.now()
300956
- }
300957
- }
300958
- }));
300959
- } catch (err2) {
300960
- logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
300961
- }
300971
+ });
300972
+ await next;
300962
300973
  }
300963
300974
  function calculateShouldShowGrove(settingsResult, configResult, showIfAlreadyViewed) {
300964
300975
  if (!settingsResult.success || !configResult.success) {
@@ -301011,7 +301022,7 @@ An update to our Consumer Terms and Privacy Policy will take effect on October 8
301011
301022
  }
301012
301023
  }
301013
301024
  }
301014
- var GROVE_CACHE_EXPIRATION_MS, getGroveSettings, getGroveNoticeConfig;
301025
+ var groveConfigLocks, GROVE_CACHE_EXPIRATION_MS, getGroveSettings, getGroveNoticeConfig;
301015
301026
  var init_grove = __esm(() => {
301016
301027
  init_axios2();
301017
301028
  init_memoize();
@@ -301023,6 +301034,7 @@ var init_grove = __esm(() => {
301023
301034
  init_config();
301024
301035
  init_http2();
301025
301036
  init_log3();
301037
+ groveConfigLocks = new Map;
301026
301038
  GROVE_CACHE_EXPIRATION_MS = 24 * 60 * 60 * 1000;
301027
301039
  getGroveSettings = memoize_default(async () => {
301028
301040
  if (isEssentialTrafficOnly()) {
package/dist/myclaude.mjs CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.82",
8
- BUILD_TIME: "2026-07-16T14:27:50.796Z",
7
+ VERSION: "0.1.84",
8
+ BUILD_TIME: "2026-07-16T20:17:47.229Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -40824,12 +40824,9 @@ function hasBinaryExtension(filePath) {
40824
40824
  return BINARY_EXTENSIONS.has(ext);
40825
40825
  }
40826
40826
  function isBinaryContent(buffer) {
40827
- const checkSize = Math.min(buffer.length, BINARY_CHECK_SIZE);
40828
40827
  let nonPrintable = 0;
40829
- for (let i2 = 0;i2 < checkSize; i2++) {
40828
+ for (let i2 = 0;i2 < buffer.length; i2++) {
40830
40829
  const byte = buffer[i2];
40831
- if (byte === undefined)
40832
- break;
40833
40830
  if (byte === 0) {
40834
40831
  return true;
40835
40832
  }
@@ -40837,9 +40834,9 @@ function isBinaryContent(buffer) {
40837
40834
  nonPrintable++;
40838
40835
  }
40839
40836
  }
40840
- return nonPrintable / checkSize > 0.2;
40837
+ return nonPrintable / buffer.length > 0.2;
40841
40838
  }
40842
- var BINARY_EXTENSIONS, BINARY_CHECK_SIZE = 8192;
40839
+ var BINARY_EXTENSIONS;
40843
40840
  var init_files2 = __esm(() => {
40844
40841
  BINARY_EXTENSIONS = new Set([
40845
40842
  ".png",
@@ -117487,7 +117484,7 @@ var package_default;
117487
117484
  var init_package = __esm(() => {
117488
117485
  package_default = {
117489
117486
  name: "@funnycode/myclaude",
117490
- version: "0.1.82",
117487
+ version: "0.1.84",
117491
117488
  private: false,
117492
117489
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
117493
117490
  license: "MIT",
@@ -210320,9 +210317,13 @@ function createDumpPromptsFetch(agentIdOrSessionId) {
210320
210317
  await fs11.appendFile(filePath, jsonStringify({ type: "response", timestamp, data }) + `
210321
210318
  `);
210322
210319
  } catch (err2) {
210323
- logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
210320
+ try {
210321
+ logForDebugging(`dumpPrompts.response handler error: ${err2}`, { level: "error" });
210322
+ } catch {}
210324
210323
  }
210325
- })();
210324
+ })().catch((err2) => {
210325
+ logForDebugging(`dumpPrompts.response handler unhandled rejection: ${err2}`, { level: "error" });
210326
+ });
210326
210327
  }
210327
210328
  return response;
210328
210329
  };
@@ -300936,29 +300937,39 @@ async function isQualifiedForGrove() {
300936
300937
  return cachedEntry.grove_enabled;
300937
300938
  }
300938
300939
  async function fetchAndStoreGroveConfig(accountId) {
300939
- try {
300940
- const result = await getGroveNoticeConfig();
300941
- if (!result.success) {
300942
- return;
300940
+ const existing = groveConfigLocks.get(accountId) ?? Promise.resolve();
300941
+ const next = existing.then(async () => {
300942
+ try {
300943
+ const result = await getGroveNoticeConfig();
300944
+ if (!result.success) {
300945
+ return;
300946
+ }
300947
+ const groveEnabled = result.data.grove_enabled;
300948
+ const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
300949
+ if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
300950
+ return;
300951
+ }
300952
+ saveGlobalConfig((current) => ({
300953
+ ...current,
300954
+ groveConfigCache: {
300955
+ ...current.groveConfigCache,
300956
+ [accountId]: {
300957
+ grove_enabled: groveEnabled,
300958
+ timestamp: Date.now()
300959
+ }
300960
+ }
300961
+ }));
300962
+ } catch (err2) {
300963
+ logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
300943
300964
  }
300944
- const groveEnabled = result.data.grove_enabled;
300945
- const cachedEntry = getGlobalConfig().groveConfigCache?.[accountId];
300946
- if (cachedEntry?.grove_enabled === groveEnabled && Date.now() - cachedEntry.timestamp <= GROVE_CACHE_EXPIRATION_MS) {
300947
- return;
300965
+ });
300966
+ groveConfigLocks.set(accountId, next);
300967
+ next.then(() => {
300968
+ if (groveConfigLocks.get(accountId) === next) {
300969
+ groveConfigLocks.delete(accountId);
300948
300970
  }
300949
- saveGlobalConfig((current) => ({
300950
- ...current,
300951
- groveConfigCache: {
300952
- ...current.groveConfigCache,
300953
- [accountId]: {
300954
- grove_enabled: groveEnabled,
300955
- timestamp: Date.now()
300956
- }
300957
- }
300958
- }));
300959
- } catch (err2) {
300960
- logForDebugging(`Grove: Failed to fetch and store config: ${err2}`);
300961
- }
300971
+ });
300972
+ await next;
300962
300973
  }
300963
300974
  function calculateShouldShowGrove(settingsResult, configResult, showIfAlreadyViewed) {
300964
300975
  if (!settingsResult.success || !configResult.success) {
@@ -301011,7 +301022,7 @@ An update to our Consumer Terms and Privacy Policy will take effect on October 8
301011
301022
  }
301012
301023
  }
301013
301024
  }
301014
- var GROVE_CACHE_EXPIRATION_MS, getGroveSettings, getGroveNoticeConfig;
301025
+ var groveConfigLocks, GROVE_CACHE_EXPIRATION_MS, getGroveSettings, getGroveNoticeConfig;
301015
301026
  var init_grove = __esm(() => {
301016
301027
  init_axios2();
301017
301028
  init_memoize();
@@ -301023,6 +301034,7 @@ var init_grove = __esm(() => {
301023
301034
  init_config();
301024
301035
  init_http2();
301025
301036
  init_log3();
301037
+ groveConfigLocks = new Map;
301026
301038
  GROVE_CACHE_EXPIRATION_MS = 24 * 60 * 60 * 1000;
301027
301039
  getGroveSettings = memoize_default(async () => {
301028
301040
  if (isEssentialTrafficOnly()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.82",
3
+ "version": "0.1.84",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",