@caoruhua/open-claude-remote 1.0.7 → 1.3.6

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 (109) hide show
  1. package/README.md +54 -27
  2. package/dist/backend/src/api/file-routes.d.ts +0 -24
  3. package/dist/backend/src/api/file-routes.d.ts.map +1 -1
  4. package/dist/backend/src/api/file-routes.js +464 -68
  5. package/dist/backend/src/api/file-routes.js.map +1 -1
  6. package/dist/backend/src/api/instance-routes.d.ts +4 -0
  7. package/dist/backend/src/api/instance-routes.d.ts.map +1 -1
  8. package/dist/backend/src/api/instance-routes.js +27 -2
  9. package/dist/backend/src/api/instance-routes.js.map +1 -1
  10. package/dist/backend/src/api/router.d.ts +3 -1
  11. package/dist/backend/src/api/router.d.ts.map +1 -1
  12. package/dist/backend/src/api/router.js +3 -3
  13. package/dist/backend/src/api/router.js.map +1 -1
  14. package/dist/backend/src/cli-utils.d.ts +4 -0
  15. package/dist/backend/src/cli-utils.d.ts.map +1 -1
  16. package/dist/backend/src/cli-utils.js +17 -1
  17. package/dist/backend/src/cli-utils.js.map +1 -1
  18. package/dist/backend/src/cli.d.ts +6 -0
  19. package/dist/backend/src/cli.d.ts.map +1 -1
  20. package/dist/backend/src/cli.js +52 -7
  21. package/dist/backend/src/cli.js.map +1 -1
  22. package/dist/backend/src/config.d.ts +11 -0
  23. package/dist/backend/src/config.d.ts.map +1 -1
  24. package/dist/backend/src/config.js +43 -1
  25. package/dist/backend/src/config.js.map +1 -1
  26. package/dist/backend/src/daemon/daemon-client.d.ts +5 -0
  27. package/dist/backend/src/daemon/daemon-client.d.ts.map +1 -1
  28. package/dist/backend/src/daemon/daemon-client.js +42 -0
  29. package/dist/backend/src/daemon/daemon-client.js.map +1 -1
  30. package/dist/backend/src/daemon/daemon-launcher.d.ts.map +1 -1
  31. package/dist/backend/src/daemon/daemon-launcher.js +4 -1
  32. package/dist/backend/src/daemon/daemon-launcher.js.map +1 -1
  33. package/dist/backend/src/daemon/restart-state.d.ts +22 -0
  34. package/dist/backend/src/daemon/restart-state.d.ts.map +1 -0
  35. package/dist/backend/src/daemon/restart-state.js +85 -0
  36. package/dist/backend/src/daemon/restart-state.js.map +1 -0
  37. package/dist/backend/src/deps/detector.js +1 -1
  38. package/dist/backend/src/deps/index.d.ts +1 -1
  39. package/dist/backend/src/deps/index.js +22 -22
  40. package/dist/backend/src/deps/installer.js +6 -6
  41. package/dist/backend/src/deps/installer.js.map +1 -1
  42. package/dist/backend/src/deps/types.d.ts +1 -1
  43. package/dist/backend/src/deps/types.d.ts.map +1 -1
  44. package/dist/backend/src/deps/types.js +9 -11
  45. package/dist/backend/src/deps/types.js.map +1 -1
  46. package/dist/backend/src/hooks/hook-receiver.d.ts.map +1 -1
  47. package/dist/backend/src/hooks/hook-receiver.js +4 -0
  48. package/dist/backend/src/hooks/hook-receiver.js.map +1 -1
  49. package/dist/backend/src/index.d.ts.map +1 -1
  50. package/dist/backend/src/index.js +76 -9
  51. package/dist/backend/src/index.js.map +1 -1
  52. package/dist/backend/src/instance/instance-manager.d.ts +9 -0
  53. package/dist/backend/src/instance/instance-manager.d.ts.map +1 -1
  54. package/dist/backend/src/instance/instance-manager.js +46 -7
  55. package/dist/backend/src/instance/instance-manager.js.map +1 -1
  56. package/dist/backend/src/instance/instance-session.d.ts +12 -1
  57. package/dist/backend/src/instance/instance-session.d.ts.map +1 -1
  58. package/dist/backend/src/instance/instance-session.js +25 -3
  59. package/dist/backend/src/instance/instance-session.js.map +1 -1
  60. package/dist/backend/src/instance/types.d.ts +3 -0
  61. package/dist/backend/src/instance/types.d.ts.map +1 -1
  62. package/dist/backend/src/pty/fix-pty-permissions.d.ts +1 -1
  63. package/dist/backend/src/pty/fix-pty-permissions.js +1 -1
  64. package/dist/backend/src/pty/output-buffer.d.ts +6 -0
  65. package/dist/backend/src/pty/output-buffer.d.ts.map +1 -1
  66. package/dist/backend/src/pty/output-buffer.js +10 -0
  67. package/dist/backend/src/pty/output-buffer.js.map +1 -1
  68. package/dist/backend/src/registry/stop-instances.js +1 -1
  69. package/dist/backend/src/services/pptx-converter.d.ts +66 -0
  70. package/dist/backend/src/services/pptx-converter.d.ts.map +1 -0
  71. package/dist/backend/src/services/pptx-converter.js +282 -0
  72. package/dist/backend/src/services/pptx-converter.js.map +1 -0
  73. package/dist/backend/src/update.d.ts +2 -2
  74. package/dist/backend/src/update.d.ts.map +1 -1
  75. package/dist/backend/src/update.js +9 -9
  76. package/dist/backend/src/update.js.map +1 -1
  77. package/dist/backend/src/utils/banner.d.ts +2 -0
  78. package/dist/backend/src/utils/banner.d.ts.map +1 -1
  79. package/dist/backend/src/utils/banner.js +14 -10
  80. package/dist/backend/src/utils/banner.js.map +1 -1
  81. package/dist/backend/src/utils/network.d.ts +22 -0
  82. package/dist/backend/src/utils/network.d.ts.map +1 -1
  83. package/dist/backend/src/utils/network.js +54 -0
  84. package/dist/backend/src/utils/network.js.map +1 -1
  85. package/dist/backend/src/utils/string-display-width.d.ts +20 -0
  86. package/dist/backend/src/utils/string-display-width.d.ts.map +1 -0
  87. package/dist/backend/src/utils/string-display-width.js +79 -0
  88. package/dist/backend/src/utils/string-display-width.js.map +1 -0
  89. package/dist/shared/file-types.d.ts +176 -0
  90. package/dist/shared/file-types.d.ts.map +1 -0
  91. package/dist/shared/file-types.js +108 -0
  92. package/dist/shared/file-types.js.map +1 -0
  93. package/dist/shared/index.d.ts +1 -0
  94. package/dist/shared/index.d.ts.map +1 -1
  95. package/dist/shared/index.js +1 -0
  96. package/dist/shared/index.js.map +1 -1
  97. package/dist/shared/instance.d.ts +2 -0
  98. package/dist/shared/instance.d.ts.map +1 -1
  99. package/dist/shared/instance.js.map +1 -1
  100. package/frontend-dist/assets/{index-UXAwH56Q.css → index-BY0fnkbW.css} +1 -1
  101. package/frontend-dist/assets/index-qwSai8-t.js +211 -0
  102. package/frontend-dist/index.html +2 -2
  103. package/package.json +8 -4
  104. package/scripts/build.sh +3 -9
  105. package/scripts/dev.sh +1 -4
  106. package/scripts/git-hooks/pre-commit +0 -4
  107. package/scripts/publish-npm.sh +61 -0
  108. package/scripts/stop.sh +1 -1
  109. package/frontend-dist/assets/index-CVRtrLyp.js +0 -199
package/README.md CHANGED
@@ -19,16 +19,11 @@ View terminal output, send commands, and approve tool calls from your phone —
19
19
 
20
20
  ### 1. Install
21
21
 
22
- ```bash
23
- # npm
24
- npm install -g @caoruhua/open-claude-remote
25
-
26
- # pnpm (recommended)
27
- pnpm add -g @caoruhua/open-claude-remote
22
+ ```bashs
23
+ # tnpm (recommended)
24
+ tnpm install -g @alipay/open-claude-remote
28
25
  ```
29
26
 
30
- > **Note for pnpm users**: pnpm v10 may show a warning about "Ignored build scripts: node-pty". This is expected and **does not affect functionality** — the package includes prebuilt binaries that work out of the box. To suppress the warning, run `pnpm approve-builds -g` (optional).
31
-
32
27
  ### 2. Run
33
28
 
34
29
  ```bash
@@ -53,6 +48,7 @@ Scan the QR code shown in your terminal with your phone. The auth token is auto-
53
48
  - LAN IP change notification with new connection URL
54
49
  - Smart auto-scroll with a "scroll to bottom" floating button — respects your scroll position when browsing history
55
50
  - **Tap-to-focus** — clicking anywhere in the terminal automatically focuses the input bar for a seamless typing experience
51
+ - **Long-press to copy** — long-press the terminal to open a copy menu: "Select Copy" enters a plain text view for native text selection, "Copy All" copies the entire terminal output to clipboard
56
52
 
57
53
  ### Multi-Network Access (WiFi + VPN)
58
54
 
@@ -90,6 +86,15 @@ Example: When connected to both WiFi (192.168.x.x) and company VPN (30.x.x.x), b
90
86
  - **Reduced motion support** — respects `prefers-reduced-motion` accessibility setting
91
87
  - **Security** — only files within allowed workspace directories can be viewed
92
88
 
89
+ ### Image Viewer
90
+ - **Browse from file selector** — open any image from the file browser to view it in full-screen mode
91
+ - **Navigate between images** — swipe left/right or tap navigation arrows to browse all images in the current directory
92
+ - **Keyboard navigation** — use ← → arrow keys to navigate between images
93
+ - **Edge tap zones** — tap the left/right 15% of the screen to quickly go to previous/next image
94
+ - **Zoom & pan** — double-tap to zoom, pinch gesture on mobile, drag to pan when zoomed in
95
+ - **Contextual browsing** — navigation only shows images matching current filters (search, category, directory)
96
+ - **Boundary indicators** — prev/next buttons disabled on first/last image with visual feedback
97
+
93
98
  ### Multi-Instance
94
99
  - Run multiple `claude-remote` instances simultaneously in a single daemon process
95
100
  - Fixed port 8866 — all instances share same origin, no cross-port auth needed
@@ -97,6 +102,8 @@ Example: When connected to both WiFi (192.168.x.x) and company VPN (30.x.x.x), b
97
102
  - Auto-switch when an instance goes offline
98
103
  - Spawn new instances from the web UI ("+" button)
99
104
  - Copy instance via long-press/right-click tab — pre-fills working directory, settings, and arguments
105
+ - Rename instance via long-press/right-click tab — update instance display name on the fly
106
+ - Close instance via long-press/right-click tab — terminate with confirmation dialog
100
107
  - `claude-remote attach <name|id>` to take over a web-spawned instance
101
108
  - `claude-remote stop` to stop the daemon and all instances
102
109
 
@@ -180,6 +187,9 @@ claude-remote status
180
187
  # Stop the daemon and all instances
181
188
  claude-remote stop
182
189
 
190
+ # Restart daemon and restore all instances (with session resume)
191
+ claude-remote restart
192
+
183
193
  # Headless mode (no local terminal, web UI only)
184
194
  claude-remote --no-terminal
185
195
 
@@ -485,6 +495,13 @@ Install build tools:
485
495
  - **Node.js** >= 20
486
496
  - **Claude Code CLI** — [installation guide](https://docs.anthropic.com/en/docs/claude-code)
487
497
 
498
+ ### Optional Dependencies
499
+
500
+ - **LibreOffice** — Required for viewing PPTX files in the browser. The app will prompt you with installation instructions if you try to open a PPTX file without it.
501
+ - macOS: `brew install --cask libreoffice`
502
+ - Ubuntu/Debian: `sudo apt-get install -y libreoffice`
503
+ - Fedora/RHEL: `sudo dnf install -y libreoffice`
504
+
488
505
  ---
489
506
 
490
507
  ## Development
@@ -495,13 +512,13 @@ Install build tools:
495
512
  # Clone and install
496
513
  git clone https://github.com/StephenTowne/open-claude-remote.git
497
514
  cd open-claude-remote
498
- pnpm install
515
+ tnpm install
499
516
 
500
517
  # Development mode (with hot reload)
501
- pnpm dev:cli
518
+ tnpm dev:cli
502
519
 
503
520
  # Production mode
504
- pnpm build && pnpm link -g && claude-remote
521
+ tnpm run build && npm link && claude-remote
505
522
  ```
506
523
 
507
524
  **Project structure:**
@@ -509,13 +526,13 @@ pnpm build && pnpm link -g && claude-remote
509
526
  - Backend: `backend/src/` (Express + node-pty + WebSocket)
510
527
  - Frontend: `frontend/src/` (React + xterm.js)
511
528
  - Shared types: `shared/` (imported via `#shared` alias)
512
- - Tests: `pnpm test` (Vitest)
513
- - Build: `pnpm build` (TypeScript + Vite)
529
+ - Tests: `tnpm test` (Vitest)
530
+ - Build: `tnpm run build` (TypeScript + Vite)
514
531
 
515
532
  ### Stop all instances
516
533
 
517
534
  ```bash
518
- pnpm stop
535
+ tnpm stop
519
536
  ```
520
537
 
521
538
  ---
@@ -541,15 +558,10 @@ MIT
541
558
  ### 1. 安装
542
559
 
543
560
  ```bash
544
- # npm
545
- npm install -g @caoruhua/open-claude-remote
546
-
547
- # pnpm(推荐)
548
- pnpm add -g @caoruhua/open-claude-remote
561
+ # tnpm(推荐)
562
+ tnpm install -g @alipay/open-claude-remote
549
563
  ```
550
564
 
551
- > **pnpm 用户注意**:pnpm v10 可能显示 "Ignored build scripts: node-pty" 警告。这是正常的,**不影响功能** — 包含预编译的二进制文件,开箱即用。要消除警告,运行 `pnpm approve-builds -g`(可选)。
552
-
553
565
  ### 2. 运行
554
566
 
555
567
  ```bash
@@ -574,6 +586,7 @@ claude-remote
574
586
  - 局域网 IP 变更通知,附带新连接地址
575
587
  - 智能自动滚动,配有"滚动到底部"悬浮按钮 — 浏览历史时尊重你的滚动位置
576
588
  - **点击聚焦** — 点击终端任意位置自动聚焦输入框,打字体验更流畅
589
+ - **长按复制** — 长按终端区域弹出复制菜单:「选择复制」进入纯文本视图可原生选择文字,「复制全部」一键复制全部终端内容到剪贴板
577
590
 
578
591
  ### 多网络访问(WiFi + VPN)
579
592
 
@@ -611,6 +624,15 @@ claude-remote
611
624
  - **减少动画支持** — 尊重 `prefers-reduced-motion` 无障碍设置
612
625
  - **安全限制** — 仅允许查看工作目录白名单内的文件
613
626
 
627
+ ### 图片查看器
628
+ - **从文件浏览器打开** — 在文件浏览器中打开任意图片,全屏查看
629
+ - **图片间导航** — 左右滑动或点击导航箭头浏览当前目录下的所有图片
630
+ - **键盘导航** — 使用 ← → 方向键在图片间切换
631
+ - **边缘点击区域** — 点击屏幕左/右 15% 区域快速切换上一张/下一张
632
+ - **缩放与拖动** — 双击缩放、移动端捏合手势、放大后可拖动查看
633
+ - **上下文浏览** — 导航仅显示符合当前筛选条件的图片(搜索、分类、目录)
634
+ - **边界提示** — 首张/末张图片时禁用上一张/下一张按钮并显示视觉反馈
635
+
614
636
  ### 多实例支持
615
637
  - 在单个守护进程中同时运行多个 `claude-remote` 实例
616
638
  - 固定端口 8866 — 所有实例共享同源,无需跨端口认证
@@ -618,6 +640,8 @@ claude-remote
618
640
  - 实例离线时自动切换
619
641
  - 从 Web UI 生成新实例("+" 按钮)
620
642
  - 长按/右键标签复制实例 — 预填充工作目录、设置和参数
643
+ - 长按/右键标签重命名实例 — 实时更新实例显示名称
644
+ - 长按/右键标签关闭实例 — 确认后终止实例
621
645
  - `claude-remote attach <名称|ID>` 接管 Web 生成的实例
622
646
  - `claude-remote stop` 停止守护进程和所有实例
623
647
 
@@ -701,6 +725,9 @@ claude-remote status
701
725
  # 停止守护进程和所有实例
702
726
  claude-remote stop
703
727
 
728
+ # 重启守护进程并恢复所有实例(支持会话恢复)
729
+ claude-remote restart
730
+
704
731
  # 无头模式(无本地终端,仅 Web UI)
705
732
  claude-remote --no-terminal
706
733
 
@@ -1016,13 +1043,13 @@ claude-remote update
1016
1043
  # 克隆并安装
1017
1044
  git clone https://github.com/StephenTowne/open-claude-remote.git
1018
1045
  cd open-claude-remote
1019
- pnpm install
1046
+ tnpm install
1020
1047
 
1021
1048
  # 开发模式(热重载)
1022
- pnpm dev:cli
1049
+ tnpm dev:cli
1023
1050
 
1024
1051
  # 生产模式
1025
- pnpm build && pnpm link -g && claude-remote
1052
+ tnpm run build && npm link && claude-remote
1026
1053
  ```
1027
1054
 
1028
1055
  **项目结构:**
@@ -1030,13 +1057,13 @@ pnpm build && pnpm link -g && claude-remote
1030
1057
  - 后端:`backend/src/`(Express + node-pty + WebSocket)
1031
1058
  - 前端:`frontend/src/`(React + xterm.js)
1032
1059
  - 共享类型:`shared/`(通过 `#shared` 别名导入)
1033
- - 测试:`pnpm test`(Vitest)
1034
- - 构建:`pnpm build`(TypeScript + Vite)
1060
+ - 测试:`tnpm test`(Vitest)
1061
+ - 构建:`tnpm run build`(TypeScript + Vite)
1035
1062
 
1036
1063
  ### 停止所有实例
1037
1064
 
1038
1065
  ```bash
1039
- pnpm stop
1066
+ tnpm stop
1040
1067
  ```
1041
1068
 
1042
1069
  ---
@@ -1,29 +1,5 @@
1
1
  import { Router } from 'express';
2
2
  import { AuthModule } from '../auth/auth-middleware.js';
3
3
  import type { InstanceManager } from '../instance/instance-manager.js';
4
- /** Markdown 文件信息 */
5
- export interface MarkdownFileItem {
6
- filename: string;
7
- absolutePath: string;
8
- relativePath: string;
9
- size: number;
10
- modifiedAt: string;
11
- }
12
- /** 文件列表响应 */
13
- export interface FileListResponse {
14
- files: MarkdownFileItem[];
15
- cwd: string;
16
- total: number;
17
- }
18
- export interface FileReadResponse {
19
- /** 文件内容 */
20
- content: string;
21
- /** 文件路径(绝对路径) */
22
- path: string;
23
- /** 文件名 */
24
- filename: string;
25
- /** 文件大小(字节) */
26
- size: number;
27
- }
28
4
  export declare function createFileRoutes(authModule: AuthModule, instanceManager: InstanceManager): Router;
29
5
  //# sourceMappingURL=file-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-routes.d.ts","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkFvE,oBAAoB;AACpB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAuTR"}
1
+ {"version":3,"file":"file-routes.d.ts","sourceRoot":"","sources":["../../../../backend/src/api/file-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA0PvE,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,GAC/B,MAAM,CAitBR"}