claude-remote-cli 2.2.1 → 2.3.0
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/server/index.js +52 -1
- package/dist/test/auth.test.js +41 -0
- package/dist/test/clipboard.test.js +12 -0
- package/dist/test/config.test.js +99 -0
- package/dist/test/paths.test.js +32 -0
- package/dist/test/service.test.js +43 -0
- package/dist/test/sessions.test.js +217 -0
- package/dist/test/version.test.js +34 -0
- package/dist/test/worktrees.test.js +57 -0
- package/package.json +14 -8
- package/config.example.json +0 -11
- package/public/app.js +0 -1915
- package/public/icon-192.png +0 -0
- package/public/icon-512.png +0 -0
- package/public/icon.svg +0 -6
- package/public/index.html +0 -212
- package/public/manifest.json +0 -25
- package/public/style.css +0 -1246
- package/public/sw.js +0 -5
- package/public/vendor/addon-fit.js +0 -2
- package/public/vendor/xterm.css +0 -218
- package/public/vendor/xterm.js +0 -2
package/public/icon-192.png
DELETED
|
Binary file
|
package/public/icon-512.png
DELETED
|
Binary file
|
package/public/icon.svg
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
-
<rect width="512" height="512" rx="64" fill="#1a1a1a"/>
|
|
3
|
-
<text x="256" y="200" text-anchor="middle" font-family="monospace" font-size="72" font-weight="bold" fill="#d97757">>_</text>
|
|
4
|
-
<text x="256" y="320" text-anchor="middle" font-family="-apple-system,sans-serif" font-size="56" font-weight="600" fill="#ececec">Claude</text>
|
|
5
|
-
<text x="256" y="390" text-anchor="middle" font-family="-apple-system,sans-serif" font-size="40" fill="#9b9b9b">Remote CLI</text>
|
|
6
|
-
</svg>
|
package/public/index.html
DELETED
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
|
|
6
|
-
<title>Claude Remote CLI</title>
|
|
7
|
-
<link rel="manifest" href="/manifest.json" />
|
|
8
|
-
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
|
9
|
-
<link rel="apple-touch-icon" href="/icon-192.png" />
|
|
10
|
-
<meta name="mobile-web-app-capable" content="yes" />
|
|
11
|
-
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
12
|
-
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
13
|
-
<meta name="theme-color" content="#1a1a1a" />
|
|
14
|
-
<link rel="stylesheet" href="/vendor/xterm.css" />
|
|
15
|
-
<link rel="stylesheet" href="/style.css" />
|
|
16
|
-
</head>
|
|
17
|
-
<body>
|
|
18
|
-
|
|
19
|
-
<!-- PIN Gate -->
|
|
20
|
-
<div id="pin-gate">
|
|
21
|
-
<div class="pin-container">
|
|
22
|
-
<h1>Claude Remote CLI</h1>
|
|
23
|
-
<p>Enter PIN to continue</p>
|
|
24
|
-
<input
|
|
25
|
-
type="password"
|
|
26
|
-
id="pin-input"
|
|
27
|
-
inputmode="numeric"
|
|
28
|
-
maxlength="20"
|
|
29
|
-
placeholder="PIN"
|
|
30
|
-
autofocus
|
|
31
|
-
/>
|
|
32
|
-
<button id="pin-submit">Unlock</button>
|
|
33
|
-
<p id="pin-error" class="error" hidden></p>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<!-- Main App (hidden until PIN unlocked) -->
|
|
38
|
-
<div id="main-app" hidden>
|
|
39
|
-
|
|
40
|
-
<!-- Sidebar -->
|
|
41
|
-
<div id="sidebar">
|
|
42
|
-
<div class="sidebar-header">
|
|
43
|
-
<span class="sidebar-label">Sessions</span>
|
|
44
|
-
<button id="sidebar-toggle" class="icon-btn" aria-label="Toggle sidebar">☰</button>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="sidebar-filters">
|
|
47
|
-
<select id="sidebar-root-filter">
|
|
48
|
-
<option value="">All roots</option>
|
|
49
|
-
</select>
|
|
50
|
-
<select id="sidebar-repo-filter">
|
|
51
|
-
<option value="">All repos</option>
|
|
52
|
-
</select>
|
|
53
|
-
<input type="text" id="session-filter" placeholder="Filter..." />
|
|
54
|
-
</div>
|
|
55
|
-
<div class="sidebar-tabs">
|
|
56
|
-
<button class="sidebar-tab active" data-tab="repos">Repos (<span id="tab-repos-count">0</span>)</button>
|
|
57
|
-
<button class="sidebar-tab" data-tab="worktrees">Worktrees (<span id="tab-worktrees-count">0</span>)</button>
|
|
58
|
-
</div>
|
|
59
|
-
<ul id="session-list"></ul>
|
|
60
|
-
<button id="new-session-btn">+ New Session</button>
|
|
61
|
-
<button id="settings-btn">Settings</button>
|
|
62
|
-
</div>
|
|
63
|
-
|
|
64
|
-
<!-- Sidebar Overlay (mobile) -->
|
|
65
|
-
<div id="sidebar-overlay"></div>
|
|
66
|
-
|
|
67
|
-
<!-- Terminal Area -->
|
|
68
|
-
<div id="terminal-area">
|
|
69
|
-
<div id="mobile-header">
|
|
70
|
-
<button id="menu-btn" class="icon-btn" aria-label="Open sessions menu">☰</button>
|
|
71
|
-
<span id="session-title" class="mobile-title">No session</span>
|
|
72
|
-
</div>
|
|
73
|
-
<input type="text" id="mobile-input" dir="ltr" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" aria-label="Terminal input" />
|
|
74
|
-
<div id="terminal-container"></div>
|
|
75
|
-
<div id="terminal-scrollbar"><div id="terminal-scrollbar-thumb"></div></div>
|
|
76
|
-
<div id="no-session-msg">No active session. Create or select a session to begin.</div>
|
|
77
|
-
|
|
78
|
-
<!-- Touch Toolbar -->
|
|
79
|
-
<div id="toolbar">
|
|
80
|
-
<div class="toolbar-grid">
|
|
81
|
-
<button class="tb-btn" data-key="	" aria-label="Tab">Tab</button>
|
|
82
|
-
<button class="tb-btn" data-key="[Z" aria-label="Shift+Tab">⇧Tab</button>
|
|
83
|
-
<button class="tb-btn tb-arrow" data-key="[A" aria-label="Up arrow">↑</button>
|
|
84
|
-
<button class="tb-btn" data-key="" aria-label="Escape">Esc</button>
|
|
85
|
-
<button class="tb-btn" id="upload-image-btn" aria-label="Upload image">📷</button>
|
|
86
|
-
<button class="tb-btn" data-key="" aria-label="Ctrl+D">^D</button>
|
|
87
|
-
<button class="tb-btn" data-key="" aria-label="Ctrl+C">^C</button>
|
|
88
|
-
<button class="tb-btn tb-arrow" data-key="[D" aria-label="Left arrow">←</button>
|
|
89
|
-
<button class="tb-btn tb-arrow" data-key="[B" aria-label="Down arrow">↓</button>
|
|
90
|
-
<button class="tb-btn tb-arrow" data-key="[C" aria-label="Right arrow">→</button>
|
|
91
|
-
<button class="tb-btn tb-newline" data-key="[13;2u" aria-label="Shift+Enter (newline)">⇧⏎</button>
|
|
92
|
-
<button class="tb-btn tb-enter" data-key="
" aria-label="Enter">⏎</button>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
</div>
|
|
96
|
-
|
|
97
|
-
<!-- Update Toast -->
|
|
98
|
-
<div id="update-toast" hidden>
|
|
99
|
-
<div id="update-toast-content">
|
|
100
|
-
<span id="update-toast-text"></span>
|
|
101
|
-
<div id="update-toast-actions">
|
|
102
|
-
<button id="update-toast-btn" class="btn-accent">Update Now</button>
|
|
103
|
-
<button id="update-toast-dismiss" aria-label="Dismiss">×</button>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
|
|
108
|
-
<!-- Hidden file input for mobile image upload -->
|
|
109
|
-
<input type="file" id="image-file-input" accept="image/*" hidden />
|
|
110
|
-
|
|
111
|
-
<!-- Image Paste Toast -->
|
|
112
|
-
<div id="image-toast" hidden>
|
|
113
|
-
<div id="image-toast-content">
|
|
114
|
-
<span id="image-toast-text"></span>
|
|
115
|
-
<div id="image-toast-actions">
|
|
116
|
-
<button id="image-toast-insert" class="btn-accent" hidden>Insert Path</button>
|
|
117
|
-
<button id="image-toast-dismiss" aria-label="Dismiss">×</button>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
<!-- New Session Dialog -->
|
|
125
|
-
<dialog id="new-session-dialog">
|
|
126
|
-
<h2>New Session</h2>
|
|
127
|
-
|
|
128
|
-
<div class="dialog-field">
|
|
129
|
-
<label for="dialog-root-select">Root</label>
|
|
130
|
-
<select id="dialog-root-select"><option value="">Select a root...</option></select>
|
|
131
|
-
</div>
|
|
132
|
-
|
|
133
|
-
<div class="dialog-field">
|
|
134
|
-
<label for="dialog-repo-select">Repo</label>
|
|
135
|
-
<select id="dialog-repo-select" disabled><option value="">Select a repo...</option></select>
|
|
136
|
-
</div>
|
|
137
|
-
|
|
138
|
-
<div class="dialog-field">
|
|
139
|
-
<label for="dialog-branch-input">Branch</label>
|
|
140
|
-
<div class="branch-input-wrapper">
|
|
141
|
-
<input type="text" id="dialog-branch-input" placeholder="Search or create branch..." autocomplete="off" />
|
|
142
|
-
<ul id="dialog-branch-list" class="branch-dropdown" hidden></ul>
|
|
143
|
-
</div>
|
|
144
|
-
<span class="dialog-option-hint">Leave empty for auto-generated name</span>
|
|
145
|
-
</div>
|
|
146
|
-
|
|
147
|
-
<div class="dialog-field" id="dialog-continue-field" hidden>
|
|
148
|
-
<label>
|
|
149
|
-
<input type="checkbox" id="dialog-continue" />
|
|
150
|
-
Continue previous conversation
|
|
151
|
-
</label>
|
|
152
|
-
<span class="dialog-option-hint">Resume where you left off (--continue)</span>
|
|
153
|
-
</div>
|
|
154
|
-
|
|
155
|
-
<hr class="dialog-separator" />
|
|
156
|
-
<div class="dialog-custom-path">
|
|
157
|
-
<label for="custom-path-input">Or enter a local path:</label>
|
|
158
|
-
<input type="text" id="custom-path-input" placeholder="/Users/you/code/my-repo" />
|
|
159
|
-
</div>
|
|
160
|
-
<div class="dialog-option">
|
|
161
|
-
<label>
|
|
162
|
-
<input type="checkbox" id="dialog-yolo" />
|
|
163
|
-
Yolo mode
|
|
164
|
-
</label>
|
|
165
|
-
<span class="dialog-option-hint">Skip all permission prompts</span>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="dialog-actions">
|
|
168
|
-
<button id="dialog-cancel">Cancel</button>
|
|
169
|
-
<button id="dialog-start" class="btn-accent">New Worktree</button>
|
|
170
|
-
</div>
|
|
171
|
-
</dialog>
|
|
172
|
-
|
|
173
|
-
<!-- Settings Dialog -->
|
|
174
|
-
<dialog id="settings-dialog">
|
|
175
|
-
<h2>Settings</h2>
|
|
176
|
-
<div class="settings-section">
|
|
177
|
-
<label class="settings-label">Root Directories</label>
|
|
178
|
-
<p class="settings-hint">Add folders that contain your repos. The app scans one level deep for git repos.</p>
|
|
179
|
-
<div id="settings-roots-list"></div>
|
|
180
|
-
<div class="settings-add-repo">
|
|
181
|
-
<input type="text" id="add-root-path" placeholder="/Users/you/code" />
|
|
182
|
-
<button id="add-root-btn" class="btn-accent">Add</button>
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
<div class="dialog-actions">
|
|
186
|
-
<button id="settings-close">Done</button>
|
|
187
|
-
</div>
|
|
188
|
-
</dialog>
|
|
189
|
-
|
|
190
|
-
<!-- Context Menu -->
|
|
191
|
-
<div id="context-menu" class="context-menu" hidden>
|
|
192
|
-
<button id="ctx-resume-yolo" class="context-menu-item">Resume in yolo mode</button>
|
|
193
|
-
<button id="ctx-delete-worktree" class="context-menu-item ctx-danger">Delete worktree</button>
|
|
194
|
-
</div>
|
|
195
|
-
|
|
196
|
-
<!-- Delete Worktree Confirmation Dialog -->
|
|
197
|
-
<dialog id="delete-worktree-dialog">
|
|
198
|
-
<h2>Delete worktree?</h2>
|
|
199
|
-
<p class="delete-wt-warning">This will remove the worktree directory and delete its branch. This cannot be undone.</p>
|
|
200
|
-
<p class="delete-wt-name" id="delete-wt-name"></p>
|
|
201
|
-
<div class="dialog-actions">
|
|
202
|
-
<button id="delete-wt-cancel">Cancel</button>
|
|
203
|
-
<button id="delete-wt-confirm" class="btn-danger">Delete</button>
|
|
204
|
-
</div>
|
|
205
|
-
</dialog>
|
|
206
|
-
|
|
207
|
-
<script src="/vendor/xterm.js"></script>
|
|
208
|
-
<script src="/vendor/addon-fit.js"></script>
|
|
209
|
-
<script src="/app.js"></script>
|
|
210
|
-
<script>if ('serviceWorker' in navigator) navigator.serviceWorker.register('/sw.js');</script>
|
|
211
|
-
</body>
|
|
212
|
-
</html>
|
package/public/manifest.json
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "Claude Remote CLI",
|
|
3
|
-
"short_name": "Claude CLI",
|
|
4
|
-
"display": "standalone",
|
|
5
|
-
"start_url": "/",
|
|
6
|
-
"background_color": "#1a1a1a",
|
|
7
|
-
"theme_color": "#1a1a1a",
|
|
8
|
-
"icons": [
|
|
9
|
-
{
|
|
10
|
-
"src": "/icon-192.png",
|
|
11
|
-
"sizes": "192x192",
|
|
12
|
-
"type": "image/png"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"src": "/icon-512.png",
|
|
16
|
-
"sizes": "512x512",
|
|
17
|
-
"type": "image/png"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"src": "/icon.svg",
|
|
21
|
-
"sizes": "any",
|
|
22
|
-
"type": "image/svg+xml"
|
|
23
|
-
}
|
|
24
|
-
]
|
|
25
|
-
}
|