@funnycode/myclaude 0.1.23 → 0.1.25

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/README.md CHANGED
@@ -142,8 +142,7 @@ npx @funnycode/myclaude --help # Show help
142
142
  | `/tag` | Tag current session |
143
143
  | `/export` | Export session |
144
144
  | `/upgrade` | Check for updates |
145
- | `/feedback` | Submit feedback |
146
- | `/summary` | Generate session summary |
145
+ | `/feedback` | Submit feedback (opens GitHub Issues) |
147
146
  | `/thinkback` | Think-back review |
148
147
 
149
148
  ---
@@ -263,17 +262,17 @@ Supports both `MYCLAUDE_*` and `CLAUDE_CODE_*` names.
263
262
  ## Development
264
263
 
265
264
  ```bash
266
- git clone https://gitee.com/thomaslwq/myclaude.git
265
+ git clone https://github.com/thomaslwq/myclaude.git
267
266
  cd myclaude
268
267
  bun install
269
268
  bun run dev # Development mode
270
- bun run build # Build to dist/myclaude.js
269
+ bun run build # Build to dist/myclaude.mjs
271
270
  bun run version # Verify CLI boots
272
271
  ```
273
272
 
274
273
  ### Build Output
275
274
 
276
- The build script bundles `src/entrypoints/cli.tsx` into a single file `dist/myclaude.js`, injecting compile-time constants such as version number.
275
+ The build script bundles `src/entrypoints/cli.tsx` into a single file `dist/myclaude.mjs`, injecting compile-time constants such as version number.
277
276
 
278
277
  ### Directory Structure
279
278
 
@@ -319,8 +318,8 @@ Pull requests are welcome!
319
318
 
320
319
  ## Links
321
320
 
322
- - **Gitee**: [https://gitee.com/thomaslwq/myclaude](https://gitee.com/thomaslwq/myclaude)
323
321
  - **GitHub**: [https://github.com/thomaslwq/myclaude](https://github.com/thomaslwq/myclaude)
322
+ - **Gitee**: [https://gitee.com/thomaslwq/myclaude](https://gitee.com/thomaslwq/myclaude) (mirror)
324
323
  - **npm**: [https://www.npmjs.com/package/@funnycode/myclaude](https://www.npmjs.com/package/@funnycode/myclaude)
325
324
 
326
325
  ---
package/README.zh-CN.md CHANGED
@@ -142,8 +142,7 @@ npx @funnycode/myclaude --help # 查看帮助
142
142
  | `/tag` | 标记当前会话 |
143
143
  | `/export` | 导出会话 |
144
144
  | `/upgrade` | 检查更新 |
145
- | `/feedback` | 提交反馈 |
146
- | `/summary` | 生成会话摘要 |
145
+ | `/feedback` | 提交反馈(跳转 GitHub Issues) |
147
146
  | `/thinkback` | 回溯思考过程 |
148
147
 
149
148
  ---
@@ -260,17 +259,17 @@ myclaude 内置了一个终端电子宠物。每只宠物都根据你的用户 I
260
259
  ## 开发
261
260
 
262
261
  ```bash
263
- git clone https://gitee.com/thomaslwq/myclaude.git
262
+ git clone https://github.com/thomaslwq/myclaude.git
264
263
  cd myclaude
265
264
  bun install
266
265
  bun run dev # 开发模式
267
- bun run build # 构建到 dist/myclaude.js
266
+ bun run build # 构建到 dist/myclaude.mjs
268
267
  bun run version # 验证 CLI 启动
269
268
  ```
270
269
 
271
270
  ### 构建产物
272
271
 
273
- 构建脚本会将 `src/entrypoints/cli.tsx` 打包为单文件 `dist/myclaude.js`,并注入版本号等编译时常量。
272
+ 构建脚本会将 `src/entrypoints/cli.tsx` 打包为单文件 `dist/myclaude.mjs`,并注入版本号等编译时常量。
274
273
 
275
274
  ### 目录结构
276
275
 
@@ -316,8 +315,8 @@ src/
316
315
 
317
316
  ## 相关链接
318
317
 
319
- - **Gitee**: [https://gitee.com/thomaslwq/myclaude](https://gitee.com/thomaslwq/myclaude)
320
318
  - **GitHub**: [https://github.com/thomaslwq/myclaude](https://github.com/thomaslwq/myclaude)
319
+ - **Gitee**: [https://gitee.com/thomaslwq/myclaude](https://gitee.com/thomaslwq/myclaude)(镜像)
321
320
  - **npm**: [https://www.npmjs.com/package/@funnycode/myclaude](https://www.npmjs.com/package/@funnycode/myclaude)
322
321
 
323
322
  ---
package/dist/myclaude.js CHANGED
@@ -4,12 +4,12 @@
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.23",
8
- BUILD_TIME: "2026-06-16T13:12:22.731Z",
7
+ VERSION: "0.1.25",
8
+ BUILD_TIME: "2026-06-22T12:30:11.149Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
12
- ISSUES_EXPLAINER: 'file an issue at ' + "https://gitee.com/thomaslwq/myclaude/issues",
12
+ ISSUES_EXPLAINER: 'file an issue at ' + "https://github.com/thomaslwq/myclaude/issues",
13
13
  FEEDBACK_CHANNEL: 'github',
14
14
  };
15
15
 
@@ -274035,7 +274035,7 @@ function getRemoteSessionUrl(sessionId, ingressUrl) {
274035
274035
  const baseUrl = getClaudeAiBaseUrl(compatId, ingressUrl);
274036
274036
  return `${baseUrl}/code/${compatId}`;
274037
274037
  }
274038
- var PRODUCT_URL = "https://gitee.com/thomaslwq/myclaude", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
274038
+ var PRODUCT_URL = "https://github.com/thomaslwq/myclaude", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
274039
274039
 
274040
274040
  // src/keybindings/defaultBindings.ts
274041
274041
  var IMAGE_PASTE_KEY, SUPPORTS_TERMINAL_VT_MODE, MODE_CYCLE_KEY, DEFAULT_BINDINGS;
@@ -405977,27 +405977,17 @@ function Feedback({
405977
405977
  rawTranscriptJsonl
405978
405978
  }
405979
405979
  };
405980
- const [result, t] = await Promise.all([submitFeedback(reportData, abortSignal), generateTitle(description, abortSignal)]);
405981
- setTitle(t);
405982
- if (result.success) {
405983
- if (result.feedbackId) {
405984
- setFeedbackId(result.feedbackId);
405985
- logEvent("tengu_bug_report_submitted", {
405986
- feedback_id: result.feedbackId,
405987
- last_assistant_message_id: lastAssistantMessageId
405988
- });
405989
- logEventTo1P("tengu_bug_report_description", {
405990
- feedback_id: result.feedbackId,
405991
- description: redactSensitiveInfo(description)
405992
- });
405993
- }
405980
+ const generatedTitle = await generateTitle(description, abortSignal).catch(() => createFallbackTitle(description));
405981
+ setTitle(generatedTitle);
405982
+ const fallbackId = `myclaude-${Date.now()}`;
405983
+ const url3 = createGitHubIssueUrl(fallbackId, generatedTitle, description, sanitizedErrors);
405984
+ try {
405985
+ await openBrowser(url3);
405986
+ setFeedbackId(fallbackId);
405994
405987
  setStep("done");
405995
- } else {
405996
- if (result.isZdrOrg) {
405997
- setError("Feedback collection is not available for organizations with custom data retention policies.");
405998
- } else {
405999
- setError("Could not submit feedback. Please try again later.");
406000
- }
405988
+ } catch {
405989
+ setError(`Could not open browser. Please manually create an issue at:
405990
+ ${url3}`);
406001
405991
  setStep("userInput");
406002
405992
  }
406003
405993
  }, [description, envInfo.isGit, messages]);
@@ -406351,101 +406341,19 @@ function createFallbackTitle(description) {
406351
406341
  }
406352
406342
  return truncated.length < 10 ? "Bug Report" : truncated;
406353
406343
  }
406354
- function sanitizeAndLogError(err2) {
406355
- if (err2 instanceof Error) {
406356
- const safeError = new Error(redactSensitiveInfo(err2.message));
406357
- if (err2.stack) {
406358
- safeError.stack = redactSensitiveInfo(err2.stack);
406359
- }
406360
- logError2(safeError);
406361
- } else {
406362
- const errorString = redactSensitiveInfo(String(err2));
406363
- logError2(new Error(errorString));
406364
- }
406365
- }
406366
- async function submitFeedback(data, signal) {
406367
- if (isEssentialTrafficOnly()) {
406368
- return {
406369
- success: false
406370
- };
406371
- }
406372
- try {
406373
- await checkAndRefreshOAuthTokenIfNeeded();
406374
- const authResult = getAuthHeaders();
406375
- if (authResult.error) {
406376
- return {
406377
- success: false
406378
- };
406379
- }
406380
- const headers = {
406381
- "Content-Type": "application/json",
406382
- "User-Agent": getUserAgent(),
406383
- ...authResult.headers
406384
- };
406385
- const response = await axios_default.post("https://api.anthropic.com/api/claude_cli_feedback", {
406386
- content: jsonStringify(data)
406387
- }, {
406388
- headers,
406389
- timeout: 30000,
406390
- signal
406391
- });
406392
- if (response.status === 200) {
406393
- const result = response.data;
406394
- if (result?.feedback_id) {
406395
- return {
406396
- success: true,
406397
- feedbackId: result.feedback_id
406398
- };
406399
- }
406400
- sanitizeAndLogError(new Error("Failed to submit feedback: request did not return feedback_id"));
406401
- return {
406402
- success: false
406403
- };
406404
- }
406405
- sanitizeAndLogError(new Error("Failed to submit feedback:" + response.status));
406406
- return {
406407
- success: false
406408
- };
406409
- } catch (err2) {
406410
- if (axios_default.isCancel(err2)) {
406411
- return {
406412
- success: false
406413
- };
406414
- }
406415
- if (axios_default.isAxiosError(err2) && err2.response?.status === 403) {
406416
- const errorData = err2.response.data;
406417
- if (errorData?.error?.type === "permission_error" && errorData?.error?.message?.includes("Custom data retention settings")) {
406418
- sanitizeAndLogError(new Error("Cannot submit feedback because custom data retention settings are enabled"));
406419
- return {
406420
- success: false,
406421
- isZdrOrg: true
406422
- };
406423
- }
406424
- }
406425
- sanitizeAndLogError(err2);
406426
- return {
406427
- success: false
406428
- };
406429
- }
406430
- }
406431
406344
  var import_react95, jsx_dev_runtime159, GITHUB_URL_LIMIT = 7250, GITHUB_ISSUES_REPO_URL = "https://github.com/thomaslwq/myclaude/issues";
406432
406345
  var init_Feedback = __esm(() => {
406433
- init_axios2();
406434
406346
  init_state();
406435
- init_firstPartyEventLogger();
406436
- init_analytics();
406437
406347
  init_messages3();
406438
406348
  init_useTerminalSize();
406439
406349
  init_ink2();
406440
406350
  init_useKeybinding();
406441
406351
  init_claude();
406442
406352
  init_errors8();
406443
- init_auth();
406444
406353
  init_browser();
406445
406354
  init_debug();
406446
406355
  init_env();
406447
406356
  init_git();
406448
- init_http2();
406449
406357
  init_log3();
406450
406358
  init_sessionStorage();
406451
406359
  init_slowOperations();
@@ -484864,10 +484772,10 @@ import {
484864
484772
  import { tmpdir as tmpdir12 } from "os";
484865
484773
  import { extname as extname14, join as join135 } from "path";
484866
484774
  function getAnalysisModel() {
484867
- return getDefaultOpusModel();
484775
+ return getDefaultSonnetModel();
484868
484776
  }
484869
484777
  function getInsightsModel() {
484870
- return getDefaultOpusModel();
484778
+ return getDefaultSonnetModel();
484871
484779
  }
484872
484780
  function getDataDir() {
484873
484781
  return join135(getClaudeConfigHomeDir(), "usage-data");
package/dist/myclaude.mjs CHANGED
@@ -4,12 +4,12 @@
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.23",
8
- BUILD_TIME: "2026-06-16T13:12:22.731Z",
7
+ VERSION: "0.1.25",
8
+ BUILD_TIME: "2026-06-22T12:30:11.149Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
12
- ISSUES_EXPLAINER: 'file an issue at ' + "https://gitee.com/thomaslwq/myclaude/issues",
12
+ ISSUES_EXPLAINER: 'file an issue at ' + "https://github.com/thomaslwq/myclaude/issues",
13
13
  FEEDBACK_CHANNEL: 'github',
14
14
  };
15
15
 
@@ -274035,7 +274035,7 @@ function getRemoteSessionUrl(sessionId, ingressUrl) {
274035
274035
  const baseUrl = getClaudeAiBaseUrl(compatId, ingressUrl);
274036
274036
  return `${baseUrl}/code/${compatId}`;
274037
274037
  }
274038
- var PRODUCT_URL = "https://gitee.com/thomaslwq/myclaude", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
274038
+ var PRODUCT_URL = "https://github.com/thomaslwq/myclaude", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
274039
274039
 
274040
274040
  // src/keybindings/defaultBindings.ts
274041
274041
  var IMAGE_PASTE_KEY, SUPPORTS_TERMINAL_VT_MODE, MODE_CYCLE_KEY, DEFAULT_BINDINGS;
@@ -405977,27 +405977,17 @@ function Feedback({
405977
405977
  rawTranscriptJsonl
405978
405978
  }
405979
405979
  };
405980
- const [result, t] = await Promise.all([submitFeedback(reportData, abortSignal), generateTitle(description, abortSignal)]);
405981
- setTitle(t);
405982
- if (result.success) {
405983
- if (result.feedbackId) {
405984
- setFeedbackId(result.feedbackId);
405985
- logEvent("tengu_bug_report_submitted", {
405986
- feedback_id: result.feedbackId,
405987
- last_assistant_message_id: lastAssistantMessageId
405988
- });
405989
- logEventTo1P("tengu_bug_report_description", {
405990
- feedback_id: result.feedbackId,
405991
- description: redactSensitiveInfo(description)
405992
- });
405993
- }
405980
+ const generatedTitle = await generateTitle(description, abortSignal).catch(() => createFallbackTitle(description));
405981
+ setTitle(generatedTitle);
405982
+ const fallbackId = `myclaude-${Date.now()}`;
405983
+ const url3 = createGitHubIssueUrl(fallbackId, generatedTitle, description, sanitizedErrors);
405984
+ try {
405985
+ await openBrowser(url3);
405986
+ setFeedbackId(fallbackId);
405994
405987
  setStep("done");
405995
- } else {
405996
- if (result.isZdrOrg) {
405997
- setError("Feedback collection is not available for organizations with custom data retention policies.");
405998
- } else {
405999
- setError("Could not submit feedback. Please try again later.");
406000
- }
405988
+ } catch {
405989
+ setError(`Could not open browser. Please manually create an issue at:
405990
+ ${url3}`);
406001
405991
  setStep("userInput");
406002
405992
  }
406003
405993
  }, [description, envInfo.isGit, messages]);
@@ -406351,101 +406341,19 @@ function createFallbackTitle(description) {
406351
406341
  }
406352
406342
  return truncated.length < 10 ? "Bug Report" : truncated;
406353
406343
  }
406354
- function sanitizeAndLogError(err2) {
406355
- if (err2 instanceof Error) {
406356
- const safeError = new Error(redactSensitiveInfo(err2.message));
406357
- if (err2.stack) {
406358
- safeError.stack = redactSensitiveInfo(err2.stack);
406359
- }
406360
- logError2(safeError);
406361
- } else {
406362
- const errorString = redactSensitiveInfo(String(err2));
406363
- logError2(new Error(errorString));
406364
- }
406365
- }
406366
- async function submitFeedback(data, signal) {
406367
- if (isEssentialTrafficOnly()) {
406368
- return {
406369
- success: false
406370
- };
406371
- }
406372
- try {
406373
- await checkAndRefreshOAuthTokenIfNeeded();
406374
- const authResult = getAuthHeaders();
406375
- if (authResult.error) {
406376
- return {
406377
- success: false
406378
- };
406379
- }
406380
- const headers = {
406381
- "Content-Type": "application/json",
406382
- "User-Agent": getUserAgent(),
406383
- ...authResult.headers
406384
- };
406385
- const response = await axios_default.post("https://api.anthropic.com/api/claude_cli_feedback", {
406386
- content: jsonStringify(data)
406387
- }, {
406388
- headers,
406389
- timeout: 30000,
406390
- signal
406391
- });
406392
- if (response.status === 200) {
406393
- const result = response.data;
406394
- if (result?.feedback_id) {
406395
- return {
406396
- success: true,
406397
- feedbackId: result.feedback_id
406398
- };
406399
- }
406400
- sanitizeAndLogError(new Error("Failed to submit feedback: request did not return feedback_id"));
406401
- return {
406402
- success: false
406403
- };
406404
- }
406405
- sanitizeAndLogError(new Error("Failed to submit feedback:" + response.status));
406406
- return {
406407
- success: false
406408
- };
406409
- } catch (err2) {
406410
- if (axios_default.isCancel(err2)) {
406411
- return {
406412
- success: false
406413
- };
406414
- }
406415
- if (axios_default.isAxiosError(err2) && err2.response?.status === 403) {
406416
- const errorData = err2.response.data;
406417
- if (errorData?.error?.type === "permission_error" && errorData?.error?.message?.includes("Custom data retention settings")) {
406418
- sanitizeAndLogError(new Error("Cannot submit feedback because custom data retention settings are enabled"));
406419
- return {
406420
- success: false,
406421
- isZdrOrg: true
406422
- };
406423
- }
406424
- }
406425
- sanitizeAndLogError(err2);
406426
- return {
406427
- success: false
406428
- };
406429
- }
406430
- }
406431
406344
  var import_react95, jsx_dev_runtime159, GITHUB_URL_LIMIT = 7250, GITHUB_ISSUES_REPO_URL = "https://github.com/thomaslwq/myclaude/issues";
406432
406345
  var init_Feedback = __esm(() => {
406433
- init_axios2();
406434
406346
  init_state();
406435
- init_firstPartyEventLogger();
406436
- init_analytics();
406437
406347
  init_messages3();
406438
406348
  init_useTerminalSize();
406439
406349
  init_ink2();
406440
406350
  init_useKeybinding();
406441
406351
  init_claude();
406442
406352
  init_errors8();
406443
- init_auth();
406444
406353
  init_browser();
406445
406354
  init_debug();
406446
406355
  init_env();
406447
406356
  init_git();
406448
- init_http2();
406449
406357
  init_log3();
406450
406358
  init_sessionStorage();
406451
406359
  init_slowOperations();
@@ -484864,10 +484772,10 @@ import {
484864
484772
  import { tmpdir as tmpdir12 } from "os";
484865
484773
  import { extname as extname14, join as join135 } from "path";
484866
484774
  function getAnalysisModel() {
484867
- return getDefaultOpusModel();
484775
+ return getDefaultSonnetModel();
484868
484776
  }
484869
484777
  function getInsightsModel() {
484870
- return getDefaultOpusModel();
484778
+ return getDefaultSonnetModel();
484871
484779
  }
484872
484780
  function getDataDir() {
484873
484781
  return join135(getClaudeConfigHomeDir(), "usage-data");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",
@@ -8,12 +8,12 @@
8
8
  "packageManager": "bun@1.3.5",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://gitee.com/thomaslwq/myclaude.git"
11
+ "url": "https://github.com/thomaslwq/myclaude.git"
12
12
  },
13
13
  "bugs": {
14
- "url": "https://gitee.com/thomaslwq/myclaude/issues"
14
+ "url": "https://github.com/thomaslwq/myclaude/issues"
15
15
  },
16
- "homepage": "https://gitee.com/thomaslwq/myclaude",
16
+ "homepage": "https://github.com/thomaslwq/myclaude",
17
17
  "engines": {
18
18
  "bun": ">=1.3.5",
19
19
  "node": ">=18.0.0"