@aster110/cc2wechat 1.0.1 → 1.0.3
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/auth.js +15 -15
- package/dist/auth.js.map +1 -1
- package/package.json +1 -1
- package/src/auth.ts +15 -15
package/dist/auth.js
CHANGED
|
@@ -86,17 +86,8 @@ function buildQRPage(qrUrl) {
|
|
|
86
86
|
<h2>WeChat × Claude Code</h2>
|
|
87
87
|
<p class="subtitle">Scan with WeChat to connect</p>
|
|
88
88
|
<div id="qr-container">
|
|
89
|
-
<
|
|
89
|
+
<img id="qr-img" src="https://api.qrserver.com/v1/create-qr-code/?size=280x280&data=${encodeURIComponent(qrUrl)}" style="width:280px;height:280px;border-radius:12px;background:white;padding:16px" />
|
|
90
90
|
</div>
|
|
91
|
-
<script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.4/build/qrcode.min.js"></script>
|
|
92
|
-
<script>
|
|
93
|
-
function renderQR(text) {
|
|
94
|
-
QRCode.toCanvas(document.getElementById('qr-canvas'), text, {width:280,margin:2}, function(err) {
|
|
95
|
-
if(err) { document.getElementById('status').textContent='QR render error: '+err; }
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
renderQR("${qrUrl}");
|
|
99
|
-
</script>
|
|
100
91
|
<p id="status">Waiting for scan...</p>
|
|
101
92
|
</div>
|
|
102
93
|
<script>
|
|
@@ -109,11 +100,20 @@ function buildQRPage(qrUrl) {
|
|
|
109
100
|
el.textContent = 'Scanned! Confirm on your phone...';
|
|
110
101
|
el.style.color = '#f0ad4e';
|
|
111
102
|
} else if (data.status === 'success') {
|
|
112
|
-
el.textContent = 'Connected!';
|
|
113
|
-
el.style.color = '#5cb85c';
|
|
114
|
-
document.getElementById('qr-container').style.display = 'none';
|
|
115
103
|
clearInterval(poll);
|
|
116
|
-
|
|
104
|
+
const cmd = 'claude --dangerously-load-development-channels server:wechat-channel';
|
|
105
|
+
navigator.clipboard.writeText(cmd).catch(()=>{});
|
|
106
|
+
document.querySelector('.container').innerHTML = \`
|
|
107
|
+
<div style="text-align:center;max-width:420px">
|
|
108
|
+
<div style="font-size:64px;margin-bottom:16px">✓</div>
|
|
109
|
+
<h2 style="font-size:28px;font-weight:600;margin-bottom:8px;color:#fff">WeChat Connected</h2>
|
|
110
|
+
<p style="color:#888;margin-bottom:32px;font-size:15px">Command copied to clipboard</p>
|
|
111
|
+
<div style="background:#2a2a3e;border-radius:10px;padding:14px 18px;font-family:'SF Mono',Menlo,monospace;font-size:13px;color:#a8b4ff;text-align:left;cursor:pointer;transition:background .2s" onclick="navigator.clipboard.writeText('\${cmd}');this.style.background='#1e3a1e';setTimeout(()=>this.style.background='#2a2a3e',800)">
|
|
112
|
+
\${cmd}
|
|
113
|
+
</div>
|
|
114
|
+
<p style="color:#555;margin-top:24px;font-size:13px">Paste in a new terminal to start</p>
|
|
115
|
+
</div>\`;
|
|
116
|
+
|
|
117
117
|
} else if (data.status === 'expired') {
|
|
118
118
|
el.textContent = 'QR expired, refreshing...';
|
|
119
119
|
el.style.color = '#d9534f';
|
|
@@ -121,7 +121,7 @@ function buildQRPage(qrUrl) {
|
|
|
121
121
|
const r2 = await fetch('/qr-refresh');
|
|
122
122
|
const d2 = await r2.json();
|
|
123
123
|
if (d2.url) {
|
|
124
|
-
|
|
124
|
+
document.getElementById('qr-img').src = 'https://api.qrserver.com/v1/create-qr-code/?size=280x280&data=' + encodeURIComponent(d2.url);
|
|
125
125
|
el.textContent = 'QR refreshed, scan again...';
|
|
126
126
|
el.style.color = '#888';
|
|
127
127
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/auth.ts
CHANGED
|
@@ -102,17 +102,8 @@ function buildQRPage(qrUrl: string): string {
|
|
|
102
102
|
<h2>WeChat × Claude Code</h2>
|
|
103
103
|
<p class="subtitle">Scan with WeChat to connect</p>
|
|
104
104
|
<div id="qr-container">
|
|
105
|
-
<
|
|
105
|
+
<img id="qr-img" src="https://api.qrserver.com/v1/create-qr-code/?size=280x280&data=${encodeURIComponent(qrUrl)}" style="width:280px;height:280px;border-radius:12px;background:white;padding:16px" />
|
|
106
106
|
</div>
|
|
107
|
-
<script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.4/build/qrcode.min.js"></script>
|
|
108
|
-
<script>
|
|
109
|
-
function renderQR(text) {
|
|
110
|
-
QRCode.toCanvas(document.getElementById('qr-canvas'), text, {width:280,margin:2}, function(err) {
|
|
111
|
-
if(err) { document.getElementById('status').textContent='QR render error: '+err; }
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
renderQR("${qrUrl}");
|
|
115
|
-
</script>
|
|
116
107
|
<p id="status">Waiting for scan...</p>
|
|
117
108
|
</div>
|
|
118
109
|
<script>
|
|
@@ -125,11 +116,20 @@ function buildQRPage(qrUrl: string): string {
|
|
|
125
116
|
el.textContent = 'Scanned! Confirm on your phone...';
|
|
126
117
|
el.style.color = '#f0ad4e';
|
|
127
118
|
} else if (data.status === 'success') {
|
|
128
|
-
el.textContent = 'Connected!';
|
|
129
|
-
el.style.color = '#5cb85c';
|
|
130
|
-
document.getElementById('qr-container').style.display = 'none';
|
|
131
119
|
clearInterval(poll);
|
|
132
|
-
|
|
120
|
+
const cmd = 'claude --dangerously-load-development-channels server:wechat-channel';
|
|
121
|
+
navigator.clipboard.writeText(cmd).catch(()=>{});
|
|
122
|
+
document.querySelector('.container').innerHTML = \`
|
|
123
|
+
<div style="text-align:center;max-width:420px">
|
|
124
|
+
<div style="font-size:64px;margin-bottom:16px">✓</div>
|
|
125
|
+
<h2 style="font-size:28px;font-weight:600;margin-bottom:8px;color:#fff">WeChat Connected</h2>
|
|
126
|
+
<p style="color:#888;margin-bottom:32px;font-size:15px">Command copied to clipboard</p>
|
|
127
|
+
<div style="background:#2a2a3e;border-radius:10px;padding:14px 18px;font-family:'SF Mono',Menlo,monospace;font-size:13px;color:#a8b4ff;text-align:left;cursor:pointer;transition:background .2s" onclick="navigator.clipboard.writeText('\${cmd}');this.style.background='#1e3a1e';setTimeout(()=>this.style.background='#2a2a3e',800)">
|
|
128
|
+
\${cmd}
|
|
129
|
+
</div>
|
|
130
|
+
<p style="color:#555;margin-top:24px;font-size:13px">Paste in a new terminal to start</p>
|
|
131
|
+
</div>\`;
|
|
132
|
+
|
|
133
133
|
} else if (data.status === 'expired') {
|
|
134
134
|
el.textContent = 'QR expired, refreshing...';
|
|
135
135
|
el.style.color = '#d9534f';
|
|
@@ -137,7 +137,7 @@ function buildQRPage(qrUrl: string): string {
|
|
|
137
137
|
const r2 = await fetch('/qr-refresh');
|
|
138
138
|
const d2 = await r2.json();
|
|
139
139
|
if (d2.url) {
|
|
140
|
-
|
|
140
|
+
document.getElementById('qr-img').src = 'https://api.qrserver.com/v1/create-qr-code/?size=280x280&data=' + encodeURIComponent(d2.url);
|
|
141
141
|
el.textContent = 'QR refreshed, scan again...';
|
|
142
142
|
el.style.color = '#888';
|
|
143
143
|
}
|