@doist/twist-cli 2.5.1 → 2.7.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.
@@ -1,7 +1,10 @@
1
1
  import type { Command } from 'commander';
2
2
  export declare function fetchLatestVersion(): Promise<string>;
3
3
  export declare function detectPackageManager(): string;
4
- export declare function runInstall(pm: string): Promise<number>;
4
+ export declare function runInstall(pm: string): Promise<{
5
+ exitCode: number;
6
+ stderr: string;
7
+ }>;
5
8
  interface UpdateOptions {
6
9
  check?: boolean;
7
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAStD;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDxE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAepF;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDxE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
@@ -23,10 +23,14 @@ export function runInstall(pm) {
23
23
  const command = pm === 'pnpm' ? 'add' : 'install';
24
24
  return new Promise((resolve, reject) => {
25
25
  const child = spawn(pm, [command, '-g', `${PACKAGE_NAME}@latest`], {
26
- stdio: 'inherit',
26
+ stdio: 'pipe',
27
+ });
28
+ let stderr = '';
29
+ child.stderr?.on('data', (data) => {
30
+ stderr += data.toString();
27
31
  });
28
32
  child.on('error', reject);
29
- child.on('close', (code) => resolve(code ?? 1));
33
+ child.on('close', (code) => resolve({ exitCode: code ?? 1, stderr }));
30
34
  });
31
35
  }
32
36
  export async function updateAction(options) {
@@ -50,15 +54,10 @@ export async function updateAction(options) {
50
54
  console.log(chalk.dim('Run `tw update` to install'));
51
55
  return;
52
56
  }
53
- console.log(chalk.blue(`Updating ${PACKAGE_NAME} v${currentVersion} → v${latestVersion}...`));
54
57
  const pm = detectPackageManager();
58
+ let result;
55
59
  try {
56
- const exitCode = await runInstall(pm);
57
- if (exitCode !== 0) {
58
- console.error(chalk.red('Update failed:'), `${pm} exited with code ${exitCode}`);
59
- process.exitCode = 1;
60
- return;
61
- }
60
+ result = await withSpinner({ text: `Updating to v${latestVersion}...`, color: 'blue' }, () => runInstall(pm));
62
61
  }
63
62
  catch (error) {
64
63
  if (error instanceof Error && 'code' in error && error.code === 'EACCES') {
@@ -71,6 +70,14 @@ export async function updateAction(options) {
71
70
  process.exitCode = 1;
72
71
  return;
73
72
  }
73
+ if (result.exitCode !== 0) {
74
+ console.error(chalk.red('Update failed:'), `${pm} exited with code ${result.exitCode}`);
75
+ if (result.stderr) {
76
+ console.error(chalk.dim(result.stderr.trim()));
77
+ }
78
+ process.exitCode = 1;
79
+ return;
80
+ }
74
81
  console.log(chalk.green('✓'), `Updated to v${latestVersion}`);
75
82
  }
76
83
  export function registerUpdateCommand(program) {
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -98,49 +98,705 @@ function handleCallback(req, res, expectedState, resolve, reject, cleanup) {
98
98
  function getSuccessPage() {
99
99
  return `
100
100
  <!DOCTYPE html>
101
- <html>
101
+ <html lang="en">
102
102
  <head>
103
- <meta charset="utf-8">
104
- <title>Authorization Successful - Twist CLI</title>
103
+ <meta charset="UTF-8">
104
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
105
+ <title>Connected - Twist CLI</title>
105
106
  <style>
106
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; text-align: center; padding: 50px; background: #f5f5f5; }
107
- .container { max-width: 500px; margin: 0 auto; background: white; padding: 40px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
108
- .success { color: #28a745; font-size: 24px; margin-bottom: 20px; }
109
- .message { color: #333; font-size: 16px; line-height: 1.5; }
107
+ :root {
108
+ --bg: #fafaf8;
109
+ --surface: #ffffff;
110
+ --border: rgba(0, 0, 0, 0.07);
111
+ --text: #1d1d1f;
112
+ --text-secondary: #6e6e73;
113
+ --text-muted: #aeaeb2;
114
+ --twist-teal: #0dbed9;
115
+ --twist-teal-soft: rgba(13, 190, 217, 0.06);
116
+ --green: #058527;
117
+ --terminal-bg: #1a1b26;
118
+ --terminal-text: #c0caf5;
119
+ --terminal-muted: #565f89;
120
+ --terminal-green: #9ece6a;
121
+ --radius: 16px;
122
+ --radius-sm: 10px;
123
+ --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
124
+ --shadow: 0 1px 3px rgba(0,0,0,0.05), 0 8px 24px rgba(0,0,0,0.06);
125
+ }
126
+ * { margin: 0; padding: 0; box-sizing: border-box; }
127
+ body {
128
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
129
+ background: var(--bg);
130
+ color: var(--text);
131
+ min-height: 100vh;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ line-height: 1.6;
136
+ -webkit-font-smoothing: antialiased;
137
+ }
138
+ body::before {
139
+ content: '';
140
+ position: fixed;
141
+ top: -200px;
142
+ left: 50%;
143
+ transform: translateX(-50%);
144
+ width: 800px;
145
+ height: 500px;
146
+ background: radial-gradient(ellipse, rgba(13, 190, 217, 0.07) 0%, transparent 70%);
147
+ pointer-events: none;
148
+ }
149
+ .container {
150
+ max-width: 480px;
151
+ width: 100%;
152
+ margin: 0 auto;
153
+ padding: 48px 24px;
154
+ animation: fadeIn 0.5s ease-out;
155
+ }
156
+ @keyframes fadeIn {
157
+ from { opacity: 0; transform: translateY(10px); }
158
+ to { opacity: 1; transform: translateY(0); }
159
+ }
160
+ .header {
161
+ text-align: center;
162
+ margin-bottom: 32px;
163
+ }
164
+ .logo-wrap {
165
+ width: 72px;
166
+ height: 72px;
167
+ margin: 0 auto 20px;
168
+ position: relative;
169
+ }
170
+ .logo-wrap svg {
171
+ width: 100%;
172
+ height: 100%;
173
+ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));
174
+ }
175
+ .badge {
176
+ position: absolute;
177
+ bottom: -4px;
178
+ right: -4px;
179
+ width: 26px;
180
+ height: 26px;
181
+ background: var(--green);
182
+ border-radius: 50%;
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ box-shadow: 0 0 0 3px var(--bg), 0 2px 8px rgba(5, 133, 39, 0.3);
187
+ animation: pop 0.35s ease-out 0.3s both;
188
+ }
189
+ @keyframes pop {
190
+ from { transform: scale(0); }
191
+ 70% { transform: scale(1.15); }
192
+ to { transform: scale(1); }
193
+ }
194
+ .badge svg { width: 14px; height: 14px; color: white; }
195
+ h1 {
196
+ font-size: 24px;
197
+ font-weight: 700;
198
+ letter-spacing: -0.02em;
199
+ margin-bottom: 4px;
200
+ }
201
+ .subtitle { font-size: 15px; color: var(--text-secondary); }
202
+ .terminal {
203
+ background: var(--terminal-bg);
204
+ border-radius: var(--radius);
205
+ overflow: hidden;
206
+ margin-bottom: 16px;
207
+ box-shadow: var(--shadow);
208
+ }
209
+ .terminal-bar {
210
+ padding: 12px 16px;
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 8px;
214
+ border-bottom: 1px solid rgba(255,255,255,0.06);
215
+ }
216
+ .dots { display: flex; gap: 6px; }
217
+ .dot { width: 12px; height: 12px; border-radius: 50%; }
218
+ .dot-r { background: #ff5f57; }
219
+ .dot-y { background: #febc2e; }
220
+ .dot-g { background: #28c840; }
221
+ .terminal-title {
222
+ flex: 1;
223
+ text-align: center;
224
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
225
+ font-size: 11px;
226
+ color: var(--terminal-muted);
227
+ margin-right: 48px;
228
+ }
229
+ .terminal-body { padding: 16px 20px; }
230
+ .line {
231
+ display: flex;
232
+ align-items: center;
233
+ gap: 8px;
234
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
235
+ font-size: 13px;
236
+ margin-bottom: 8px;
237
+ line-height: 1.5;
238
+ color: var(--terminal-text);
239
+ }
240
+ .line:last-child { margin-bottom: 0; }
241
+ .ps { color: var(--twist-teal); user-select: none; font-weight: 500; }
242
+ .arg { color: var(--terminal-green); }
243
+ .out {
244
+ color: var(--terminal-muted);
245
+ padding-left: 18px;
246
+ margin-top: -4px;
247
+ margin-bottom: 8px;
248
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
249
+ font-size: 12px;
250
+ }
251
+ .out-ok { color: var(--terminal-green); }
252
+ .cursor {
253
+ display: inline-block;
254
+ width: 8px;
255
+ height: 16px;
256
+ background: var(--twist-teal);
257
+ border-radius: 1px;
258
+ animation: blink 1.2s step-end infinite;
259
+ }
260
+ @keyframes blink {
261
+ 0%, 50% { opacity: 1; }
262
+ 50.01%, 100% { opacity: 0; }
263
+ }
264
+ .info {
265
+ padding: 16px 18px;
266
+ background: var(--surface);
267
+ border: 1px solid var(--border);
268
+ border-radius: var(--radius-sm);
269
+ display: flex;
270
+ gap: 14px;
271
+ align-items: flex-start;
272
+ box-shadow: var(--shadow-sm);
273
+ }
274
+ .info-icon {
275
+ flex-shrink: 0;
276
+ width: 34px;
277
+ height: 34px;
278
+ background: var(--twist-teal-soft);
279
+ border-radius: 8px;
280
+ display: flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ }
284
+ .info-icon svg { width: 16px; height: 16px; color: var(--twist-teal); }
285
+ .info-text h4 { font-size: 13px; font-weight: 600; margin-bottom: 2px; }
286
+ .info-text p { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
287
+ .info-text code {
288
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
289
+ font-size: 12px;
290
+ background: var(--twist-teal-soft);
291
+ padding: 2px 6px;
292
+ border-radius: 4px;
293
+ color: var(--twist-teal);
294
+ }
295
+ footer {
296
+ margin-top: 20px;
297
+ text-align: center;
298
+ font-size: 12px;
299
+ color: var(--text-muted);
300
+ }
301
+ .pill {
302
+ display: inline-block;
303
+ padding: 8px 14px;
304
+ background: var(--surface);
305
+ border: 1px solid var(--border);
306
+ border-radius: 999px;
307
+ box-shadow: var(--shadow-sm);
308
+ }
309
+ .gh { margin-top: 10px; }
310
+ .gh a {
311
+ display: inline-flex;
312
+ align-items: center;
313
+ gap: 5px;
314
+ color: var(--text-muted);
315
+ text-decoration: none;
316
+ font-size: 12px;
317
+ transition: color 0.2s;
318
+ }
319
+ .gh a:hover { color: var(--twist-teal); }
320
+ .gh svg { width: 14px; height: 14px; }
321
+ @media (max-width: 480px) {
322
+ .container { padding: 32px 16px; }
323
+ }
110
324
  </style>
111
325
  </head>
112
326
  <body>
113
327
  <div class="container">
114
- <div class="success">✅ Authorization Successful!</div>
115
- <div class="message">
116
- You have successfully authorized Twist CLI. You can now close this window and return to your terminal.
328
+ <header class="header">
329
+ <div class="logo-wrap">
330
+ <svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
331
+ <g id="Size=72, Style=Color">
332
+ <g id="TW CLI">
333
+ <rect x="3" y="3" width="66" height="66" rx="12" fill="#858585"/>
334
+ <g id="Terminal" filter="url(#filter0_iiiiiiii_12865_372)">
335
+ <rect x="4.83334" y="4.83325" width="62.3333" height="62.3333" rx="11" fill="#4E5E60"/>
336
+ <rect x="4.83334" y="4.83325" width="62.3333" height="62.3333" rx="11" fill="url(#paint0_radial_12865_372)" fill-opacity="0.8"/>
337
+ <g id="Twist">
338
+ <g id="Twist_2" filter="url(#filter1_ddii_12865_372)">
339
+ <path d="M29.1253 11.6726C31.6564 11.6728 33.7082 13.7246 33.7083 16.2556V29.0896C33.7082 31.6206 31.6564 33.6724 29.1253 33.6726H16.2914C13.7603 33.6724 11.7085 31.6206 11.7083 29.0896V18.0525H18.4447C18.5013 18.0525 18.5334 18.0484 18.5335 17.9753C18.5335 17.9213 18.4881 17.8873 18.3841 17.8591C18.2887 17.8333 11.8908 16.1208 11.7122 16.073C11.8083 13.6266 13.8215 11.6728 16.2914 11.6726H29.1253ZM27.9007 19.1521C27.8 19.1522 27.7466 19.1833 27.7005 19.2097L27.6976 19.2117L21.3783 22.8005L19.638 23.7888C19.318 23.9707 19.1937 24.2343 19.1937 24.5466V28.28C19.1937 28.5623 19.4816 28.6945 19.7035 28.5583L23.2621 26.3699L23.266 26.3728L23.2679 26.3748L24.8919 27.4773C24.9181 27.495 24.9424 27.4987 24.9564 27.4988C25.0074 27.4988 25.0464 27.4709 25.0619 27.4177L25.8246 24.7937L25.8314 24.7898L27.804 23.5769C28.0636 23.4172 28.2209 23.1369 28.221 22.8357V19.5281C28.221 19.2822 28.0817 19.1521 27.9007 19.1521ZM23.6117 18.5193C23.6012 18.521 23.5928 18.5225 23.5882 18.5232C23.5882 18.5232 15.1329 19.732 14.8265 19.7791C14.5245 19.8255 14.3499 20.0542 14.3499 20.3328V23.7634C14.35 24.0653 14.5855 24.2599 14.8773 24.2029L16.4046 23.9031C16.4175 23.9006 16.4269 23.889 16.4271 23.8757V22.3035C16.4271 21.8888 16.4828 21.6781 16.8236 21.5564L24.0179 19.4001C24.0296 19.3966 24.0374 19.3861 24.0374 19.3738V18.7722C24.0374 18.594 23.9607 18.493 23.8363 18.4929C23.778 18.4929 23.6642 18.5108 23.6117 18.5193Z" fill="#0DBED9"/>
340
+ <path d="M29.1253 11.6726C31.6564 11.6728 33.7082 13.7246 33.7083 16.2556V29.0896C33.7082 31.6206 31.6564 33.6724 29.1253 33.6726H16.2914C13.7603 33.6724 11.7085 31.6206 11.7083 29.0896V18.0525H18.4447C18.5013 18.0525 18.5334 18.0484 18.5335 17.9753C18.5335 17.9213 18.4881 17.8873 18.3841 17.8591C18.2887 17.8333 11.8908 16.1208 11.7122 16.073C11.8083 13.6266 13.8215 11.6728 16.2914 11.6726H29.1253ZM27.9007 19.1521C27.8 19.1522 27.7466 19.1833 27.7005 19.2097L27.6976 19.2117L21.3783 22.8005L19.638 23.7888C19.318 23.9707 19.1937 24.2343 19.1937 24.5466V28.28C19.1937 28.5623 19.4816 28.6945 19.7035 28.5583L23.2621 26.3699L23.266 26.3728L23.2679 26.3748L24.8919 27.4773C24.9181 27.495 24.9424 27.4987 24.9564 27.4988C25.0074 27.4988 25.0464 27.4709 25.0619 27.4177L25.8246 24.7937L25.8314 24.7898L27.804 23.5769C28.0636 23.4172 28.2209 23.1369 28.221 22.8357V19.5281C28.221 19.2822 28.0817 19.1521 27.9007 19.1521ZM23.6117 18.5193C23.6012 18.521 23.5928 18.5225 23.5882 18.5232C23.5882 18.5232 15.1329 19.732 14.8265 19.7791C14.5245 19.8255 14.3499 20.0542 14.3499 20.3328V23.7634C14.35 24.0653 14.5855 24.2599 14.8773 24.2029L16.4046 23.9031C16.4175 23.9006 16.4269 23.889 16.4271 23.8757V22.3035C16.4271 21.8888 16.4828 21.6781 16.8236 21.5564L24.0179 19.4001C24.0296 19.3966 24.0374 19.3861 24.0374 19.3738V18.7722C24.0374 18.594 23.9607 18.493 23.8363 18.4929C23.778 18.4929 23.6642 18.5108 23.6117 18.5193Z" fill="url(#paint1_linear_12865_372)" fill-opacity="0.3" style="mix-blend-mode:color-burn"/>
341
+ </g>
342
+ <path id="Cutout" d="M27.9007 19.1523C28.0816 19.1523 28.2209 19.2817 28.221 19.5273V22.835C28.221 23.1362 28.0635 23.4163 27.804 23.5762L25.8314 24.7891L25.8246 24.7939L25.0619 27.418C25.0464 27.471 25.0073 27.499 24.9564 27.499C24.9424 27.499 24.9181 27.4953 24.8919 27.4775L23.2679 26.374L23.266 26.373L23.2621 26.3701L19.7035 28.5586C19.4816 28.6947 19.1937 28.5625 19.1937 28.2803V24.5459C19.1938 24.2338 19.3182 23.9709 19.638 23.7891L21.3783 22.8008L27.6976 19.2119L27.7005 19.21C27.7467 19.1835 27.7999 19.1524 27.9007 19.1523ZM23.8363 18.4922C23.9607 18.4923 24.0374 18.5943 24.0374 18.7725V19.374C24.0373 19.3863 24.0295 19.3969 24.0179 19.4004L16.8236 21.5566C16.4828 21.6784 16.4271 21.8889 16.4271 22.3037V23.875C16.4271 23.8883 16.4176 23.8997 16.4046 23.9023L14.8773 24.2021C14.5855 24.2592 14.3501 24.0655 14.3499 23.7637V20.333C14.3499 20.0545 14.5245 19.8257 14.8265 19.7793C15.1323 19.7323 23.5882 18.5234 23.5882 18.5234C23.5928 18.5228 23.6012 18.5212 23.6117 18.5195C23.6642 18.511 23.778 18.4922 23.8363 18.4922ZM18.3841 17.8594C18.4879 17.8875 18.5333 17.9208 18.5335 17.9746C18.5335 18.0481 18.5014 18.0527 18.4447 18.0527H11.7083V16.0723C11.7083 16.0723 18.2873 17.8331 18.3841 17.8594Z" fill="#2B545B"/>
343
+ </g>
344
+ <g id="Underscore" filter="url(#filter2_ddii_12865_372)">
345
+ <rect x="38.0052" y="30.0417" width="17.4167" height="3.66667" rx="1.83333" fill="#0DBED9"/>
346
+ <rect x="38.0052" y="30.0417" width="17.4167" height="3.66667" rx="1.83333" fill="url(#paint2_linear_12865_372)" fill-opacity="0.3" style="mix-blend-mode:color-burn"/>
347
+ </g>
348
+ </g>
349
+ </g>
350
+ </g>
351
+ <defs>
352
+ <filter id="filter0_iiiiiiii_12865_372" x="4.83334" y="4.83325" width="62.3333" height="62.3333" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
353
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
354
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
355
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
356
+ <feOffset/>
357
+ <feGaussianBlur stdDeviation="6.63667"/>
358
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
359
+ <feColorMatrix type="matrix" values="0 0 0 0 0.94902 0 0 0 0 0.94902 0 0 0 0 0.94902 0 0 0 1 0"/>
360
+ <feBlend mode="plus-darker" in2="shape" result="effect1_innerShadow_12865_372"/>
361
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
362
+ <feOffset/>
363
+ <feGaussianBlur stdDeviation="1.30167"/>
364
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
365
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
366
+ <feBlend mode="overlay" in2="effect1_innerShadow_12865_372" result="effect2_innerShadow_12865_372"/>
367
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
368
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect3_innerShadow_12865_372"/>
369
+ <feOffset dx="-0.88" dy="-0.88"/>
370
+ <feGaussianBlur stdDeviation="0.22"/>
371
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
372
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
373
+ <feBlend mode="overlay" in2="effect2_innerShadow_12865_372" result="effect3_innerShadow_12865_372"/>
374
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
375
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect4_innerShadow_12865_372"/>
376
+ <feOffset dx="-1.68667" dy="-1.68667"/>
377
+ <feGaussianBlur stdDeviation="0.22"/>
378
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
379
+ <feColorMatrix type="matrix" values="0 0 0 0 0.14902 0 0 0 0 0.14902 0 0 0 0 0.14902 0 0 0 1 0"/>
380
+ <feBlend mode="plus-lighter" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
381
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
382
+ <feOffset dx="-0.22" dy="-0.22"/>
383
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
384
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.45 0"/>
385
+ <feBlend mode="normal" in2="effect4_innerShadow_12865_372" result="effect5_innerShadow_12865_372"/>
386
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
387
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect6_innerShadow_12865_372"/>
388
+ <feOffset dx="0.88" dy="0.88"/>
389
+ <feGaussianBlur stdDeviation="0.22"/>
390
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
391
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
392
+ <feBlend mode="overlay" in2="effect5_innerShadow_12865_372" result="effect6_innerShadow_12865_372"/>
393
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
394
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect7_innerShadow_12865_372"/>
395
+ <feOffset dx="1.68667" dy="1.68667"/>
396
+ <feGaussianBlur stdDeviation="0.22"/>
397
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
398
+ <feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 1 0"/>
399
+ <feBlend mode="plus-lighter" in2="effect6_innerShadow_12865_372" result="effect7_innerShadow_12865_372"/>
400
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
401
+ <feOffset dx="0.22" dy="0.22"/>
402
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
403
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.35 0"/>
404
+ <feBlend mode="normal" in2="effect7_innerShadow_12865_372" result="effect8_innerShadow_12865_372"/>
405
+ </filter>
406
+ <filter id="filter1_ddii_12865_372" x="7.12501" y="7.08927" width="31.1667" height="31.1667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
407
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
408
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
409
+ <feOffset/>
410
+ <feGaussianBlur stdDeviation="2.29167"/>
411
+ <feComposite in2="hardAlpha" operator="out"/>
412
+ <feColorMatrix type="matrix" values="0 0 0 0 0.028646 0 0 0 0 0.553635 0 0 0 0 0.634402 0 0 0 0.7 0"/>
413
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_12865_372"/>
414
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
415
+ <feOffset/>
416
+ <feGaussianBlur stdDeviation="0.916667"/>
417
+ <feComposite in2="hardAlpha" operator="out"/>
418
+ <feColorMatrix type="matrix" values="0 0 0 0 0.027451 0 0 0 0 0.554248 0 0 0 0 0.635294 0 0 0 0.8 0"/>
419
+ <feBlend mode="normal" in2="effect1_dropShadow_12865_372" result="effect2_dropShadow_12865_372"/>
420
+ <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_12865_372" result="shape"/>
421
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
422
+ <feOffset dy="0.458333"/>
423
+ <feGaussianBlur stdDeviation="0.229167"/>
424
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
425
+ <feColorMatrix type="matrix" values="0 0 0 0 0.629032 0 0 0 0 0.83871 0 0 0 0 0.870968 0 0 0 1 0"/>
426
+ <feBlend mode="normal" in2="shape" result="effect3_innerShadow_12865_372"/>
427
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
428
+ <feOffset dy="-0.458333"/>
429
+ <feGaussianBlur stdDeviation="0.229167"/>
430
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
431
+ <feColorMatrix type="matrix" values="0 0 0 0 0.1472 0 0 0 0 0.689387 0 0 0 0 0.7728 0 0 0 1 0"/>
432
+ <feBlend mode="normal" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
433
+ </filter>
434
+ <filter id="filter2_ddii_12865_372" x="33.4219" y="25.4584" width="26.5833" height="12.8334" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
435
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
436
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
437
+ <feOffset/>
438
+ <feGaussianBlur stdDeviation="2.29167"/>
439
+ <feComposite in2="hardAlpha" operator="out"/>
440
+ <feColorMatrix type="matrix" values="0 0 0 0 0.028646 0 0 0 0 0.553635 0 0 0 0 0.634402 0 0 0 0.7 0"/>
441
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_12865_372"/>
442
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
443
+ <feOffset/>
444
+ <feGaussianBlur stdDeviation="0.916667"/>
445
+ <feComposite in2="hardAlpha" operator="out"/>
446
+ <feColorMatrix type="matrix" values="0 0 0 0 0.027451 0 0 0 0 0.554248 0 0 0 0 0.635294 0 0 0 0.8 0"/>
447
+ <feBlend mode="normal" in2="effect1_dropShadow_12865_372" result="effect2_dropShadow_12865_372"/>
448
+ <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_12865_372" result="shape"/>
449
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
450
+ <feOffset dy="0.458333"/>
451
+ <feGaussianBlur stdDeviation="0.229167"/>
452
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
453
+ <feColorMatrix type="matrix" values="0 0 0 0 0.629032 0 0 0 0 0.83871 0 0 0 0 0.870968 0 0 0 1 0"/>
454
+ <feBlend mode="normal" in2="shape" result="effect3_innerShadow_12865_372"/>
455
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
456
+ <feOffset dy="-0.458333"/>
457
+ <feGaussianBlur stdDeviation="0.229167"/>
458
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
459
+ <feColorMatrix type="matrix" values="0 0 0 0 0.1472 0 0 0 0 0.689387 0 0 0 0 0.7728 0 0 0 1 0"/>
460
+ <feBlend mode="normal" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
461
+ </filter>
462
+ <radialGradient id="paint0_radial_12865_372" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(36 24.9084) rotate(90) scale(44.8021 44.9389)">
463
+ <stop stop-opacity="0"/>
464
+ <stop offset="1"/>
465
+ </radialGradient>
466
+ <linearGradient id="paint1_linear_12865_372" x1="31.1875" y1="13.0835" x2="12.5429" y2="33.7019" gradientUnits="userSpaceOnUse">
467
+ <stop stop-color="white"/>
468
+ <stop offset="1" stop-color="#002C33"/>
469
+ </linearGradient>
470
+ <linearGradient id="paint2_linear_12865_372" x1="51.9748" y1="30.5192" x2="50.9651" y2="35.9852" gradientUnits="userSpaceOnUse">
471
+ <stop stop-color="white"/>
472
+ <stop offset="1" stop-color="#002C33"/>
473
+ </linearGradient>
474
+ </defs>
475
+ </svg>
476
+ <div class="badge">
477
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round">
478
+ <polyline points="20 6 9 17 4 12"/>
479
+ </svg>
480
+ </div>
481
+ </div>
482
+ <h1>You're connected</h1>
483
+ <p class="subtitle">Twist CLI is now authenticated</p>
484
+ </header>
485
+
486
+ <div class="terminal">
487
+ <div class="terminal-bar">
488
+ <div class="dots">
489
+ <span class="dot dot-r"></span>
490
+ <span class="dot dot-y"></span>
491
+ <span class="dot dot-g"></span>
492
+ </div>
493
+ <span class="terminal-title">Terminal</span>
494
+ </div>
495
+ <div class="terminal-body">
496
+ <div class="line">
497
+ <span class="ps">$</span>
498
+ <span>tw</span>
499
+ <span class="arg">inbox</span>
500
+ </div>
501
+ <div class="out out-ok">5 unread threads</div>
502
+ <div class="line">
503
+ <span class="ps">$</span>
504
+ <span>tw</span>
505
+ <span class="arg">compose</span>
506
+ <span>"Weekly update"</span>
507
+ </div>
508
+ <div class="out out-ok">Thread posted</div>
509
+ <div class="line">
510
+ <span class="ps">$</span>
511
+ <span class="cursor"></span>
512
+ </div>
513
+ </div>
514
+ </div>
515
+
516
+ <div class="info">
517
+ <div class="info-icon">
518
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
519
+ <polyline points="4 17 10 11 4 5"></polyline>
520
+ <line x1="12" y1="19" x2="20" y2="19"></line>
521
+ </svg>
522
+ </div>
523
+ <div class="info-text">
524
+ <h4>Return to your terminal</h4>
525
+ <p>You can close this window. Run <code>tw --help</code> to see available commands.</p>
526
+ </div>
117
527
  </div>
528
+
529
+ <footer>
530
+ <p class="pill">Closing in <span id="countdown">30</span> seconds...</p>
531
+ <p class="gh">
532
+ <a href="https://github.com/Doist/twist-cli" target="_blank" rel="noopener noreferrer">
533
+ <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
534
+ View on GitHub
535
+ </a>
536
+ </p>
537
+ </footer>
118
538
  </div>
539
+ <script>
540
+ let seconds = 30;
541
+ const el = document.getElementById('countdown');
542
+ const t = setInterval(() => {
543
+ if (--seconds > 0) { el.textContent = seconds; }
544
+ else { clearInterval(t); el.parentElement.textContent = 'You can close this window.'; }
545
+ }, 1000);
546
+ </script>
119
547
  </body>
120
548
  </html>`;
121
549
  }
122
550
  function getErrorPage(errorMessage) {
123
551
  return `
124
552
  <!DOCTYPE html>
125
- <html>
553
+ <html lang="en">
126
554
  <head>
127
- <meta charset="utf-8">
128
- <title>Authorization Error - Twist CLI</title>
555
+ <meta charset="UTF-8">
556
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
557
+ <title>Error - Twist CLI</title>
129
558
  <style>
130
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; text-align: center; padding: 50px; background: #f5f5f5; }
131
- .container { max-width: 500px; margin: 0 auto; background: white; padding: 40px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
132
- .error { color: #dc3545; font-size: 24px; margin-bottom: 20px; }
133
- .message { color: #333; font-size: 16px; line-height: 1.5; margin-bottom: 20px; }
134
- .instructions { color: #666; font-size: 14px; }
559
+ :root {
560
+ --bg: #fafaf8;
561
+ --surface: #ffffff;
562
+ --border: rgba(0, 0, 0, 0.07);
563
+ --text: #1d1d1f;
564
+ --text-secondary: #6e6e73;
565
+ --red: #e44332;
566
+ --red-soft: rgba(228, 67, 50, 0.06);
567
+ --radius: 12px;
568
+ }
569
+ * { margin: 0; padding: 0; box-sizing: border-box; }
570
+ body {
571
+ font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
572
+ background: var(--bg);
573
+ color: var(--text);
574
+ min-height: 100vh;
575
+ display: flex;
576
+ align-items: center;
577
+ justify-content: center;
578
+ -webkit-font-smoothing: antialiased;
579
+ }
580
+ .container {
581
+ text-align: center;
582
+ padding: 48px 24px;
583
+ max-width: 480px;
584
+ animation: fadeIn 0.5s ease-out;
585
+ }
586
+ @keyframes fadeIn {
587
+ from { opacity: 0; transform: translateY(10px); }
588
+ to { opacity: 1; transform: translateY(0); }
589
+ }
590
+ .logo {
591
+ width: 72px;
592
+ height: 72px;
593
+ margin: 0 auto 20px;
594
+ position: relative;
595
+ }
596
+ .logo svg {
597
+ width: 100%;
598
+ height: 100%;
599
+ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));
600
+ }
601
+ .badge {
602
+ position: absolute;
603
+ bottom: -4px;
604
+ right: -4px;
605
+ width: 26px;
606
+ height: 26px;
607
+ background: var(--red);
608
+ border-radius: 50%;
609
+ display: flex;
610
+ align-items: center;
611
+ justify-content: center;
612
+ box-shadow: 0 0 0 3px var(--bg), 0 2px 8px rgba(228, 67, 50, 0.3);
613
+ }
614
+ .badge svg { width: 14px; height: 14px; color: white; }
615
+ h1 {
616
+ font-size: 24px;
617
+ font-weight: 700;
618
+ letter-spacing: -0.02em;
619
+ margin-bottom: 6px;
620
+ }
621
+ p { font-size: 15px; color: var(--text-secondary); line-height: 1.6; }
622
+ .hint {
623
+ margin-top: 24px;
624
+ padding: 16px 20px;
625
+ background: var(--surface);
626
+ border: 1px solid var(--border);
627
+ border-radius: var(--radius);
628
+ font-size: 13px;
629
+ color: var(--text-secondary);
630
+ }
631
+ .hint code {
632
+ font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
633
+ font-size: 12px;
634
+ background: var(--red-soft);
635
+ padding: 2px 6px;
636
+ border-radius: 4px;
637
+ color: var(--red);
638
+ }
135
639
  </style>
136
640
  </head>
137
641
  <body>
138
642
  <div class="container">
139
- <div class="error">❌ Authorization Failed</div>
140
- <div class="message">${errorMessage}</div>
141
- <div class="instructions">
142
- Please close this window and try running the login command again in your terminal.
643
+ <div class="logo">
644
+ <svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
645
+ <g id="Size=72, Style=Color">
646
+ <g id="TW CLI">
647
+ <rect x="3" y="3" width="66" height="66" rx="12" fill="#858585"/>
648
+ <g id="Terminal" filter="url(#filter0_iiiiiiii_12865_372)">
649
+ <rect x="4.83334" y="4.83325" width="62.3333" height="62.3333" rx="11" fill="#4E5E60"/>
650
+ <rect x="4.83334" y="4.83325" width="62.3333" height="62.3333" rx="11" fill="url(#paint0_radial_12865_372)" fill-opacity="0.8"/>
651
+ <g id="Twist">
652
+ <g id="Twist_2" filter="url(#filter1_ddii_12865_372)">
653
+ <path d="M29.1253 11.6726C31.6564 11.6728 33.7082 13.7246 33.7083 16.2556V29.0896C33.7082 31.6206 31.6564 33.6724 29.1253 33.6726H16.2914C13.7603 33.6724 11.7085 31.6206 11.7083 29.0896V18.0525H18.4447C18.5013 18.0525 18.5334 18.0484 18.5335 17.9753C18.5335 17.9213 18.4881 17.8873 18.3841 17.8591C18.2887 17.8333 11.8908 16.1208 11.7122 16.073C11.8083 13.6266 13.8215 11.6728 16.2914 11.6726H29.1253ZM27.9007 19.1521C27.8 19.1522 27.7466 19.1833 27.7005 19.2097L27.6976 19.2117L21.3783 22.8005L19.638 23.7888C19.318 23.9707 19.1937 24.2343 19.1937 24.5466V28.28C19.1937 28.5623 19.4816 28.6945 19.7035 28.5583L23.2621 26.3699L23.266 26.3728L23.2679 26.3748L24.8919 27.4773C24.9181 27.495 24.9424 27.4987 24.9564 27.4988C25.0074 27.4988 25.0464 27.4709 25.0619 27.4177L25.8246 24.7937L25.8314 24.7898L27.804 23.5769C28.0636 23.4172 28.2209 23.1369 28.221 22.8357V19.5281C28.221 19.2822 28.0817 19.1521 27.9007 19.1521ZM23.6117 18.5193C23.6012 18.521 23.5928 18.5225 23.5882 18.5232C23.5882 18.5232 15.1329 19.732 14.8265 19.7791C14.5245 19.8255 14.3499 20.0542 14.3499 20.3328V23.7634C14.35 24.0653 14.5855 24.2599 14.8773 24.2029L16.4046 23.9031C16.4175 23.9006 16.4269 23.889 16.4271 23.8757V22.3035C16.4271 21.8888 16.4828 21.6781 16.8236 21.5564L24.0179 19.4001C24.0296 19.3966 24.0374 19.3861 24.0374 19.3738V18.7722C24.0374 18.594 23.9607 18.493 23.8363 18.4929C23.778 18.4929 23.6642 18.5108 23.6117 18.5193Z" fill="#0DBED9"/>
654
+ <path d="M29.1253 11.6726C31.6564 11.6728 33.7082 13.7246 33.7083 16.2556V29.0896C33.7082 31.6206 31.6564 33.6724 29.1253 33.6726H16.2914C13.7603 33.6724 11.7085 31.6206 11.7083 29.0896V18.0525H18.4447C18.5013 18.0525 18.5334 18.0484 18.5335 17.9753C18.5335 17.9213 18.4881 17.8873 18.3841 17.8591C18.2887 17.8333 11.8908 16.1208 11.7122 16.073C11.8083 13.6266 13.8215 11.6728 16.2914 11.6726H29.1253ZM27.9007 19.1521C27.8 19.1522 27.7466 19.1833 27.7005 19.2097L27.6976 19.2117L21.3783 22.8005L19.638 23.7888C19.318 23.9707 19.1937 24.2343 19.1937 24.5466V28.28C19.1937 28.5623 19.4816 28.6945 19.7035 28.5583L23.2621 26.3699L23.266 26.3728L23.2679 26.3748L24.8919 27.4773C24.9181 27.495 24.9424 27.4987 24.9564 27.4988C25.0074 27.4988 25.0464 27.4709 25.0619 27.4177L25.8246 24.7937L25.8314 24.7898L27.804 23.5769C28.0636 23.4172 28.2209 23.1369 28.221 22.8357V19.5281C28.221 19.2822 28.0817 19.1521 27.9007 19.1521ZM23.6117 18.5193C23.6012 18.521 23.5928 18.5225 23.5882 18.5232C23.5882 18.5232 15.1329 19.732 14.8265 19.7791C14.5245 19.8255 14.3499 20.0542 14.3499 20.3328V23.7634C14.35 24.0653 14.5855 24.2599 14.8773 24.2029L16.4046 23.9031C16.4175 23.9006 16.4269 23.889 16.4271 23.8757V22.3035C16.4271 21.8888 16.4828 21.6781 16.8236 21.5564L24.0179 19.4001C24.0296 19.3966 24.0374 19.3861 24.0374 19.3738V18.7722C24.0374 18.594 23.9607 18.493 23.8363 18.4929C23.778 18.4929 23.6642 18.5108 23.6117 18.5193Z" fill="url(#paint1_linear_12865_372)" fill-opacity="0.3" style="mix-blend-mode:color-burn"/>
655
+ </g>
656
+ <path id="Cutout" d="M27.9007 19.1523C28.0816 19.1523 28.2209 19.2817 28.221 19.5273V22.835C28.221 23.1362 28.0635 23.4163 27.804 23.5762L25.8314 24.7891L25.8246 24.7939L25.0619 27.418C25.0464 27.471 25.0073 27.499 24.9564 27.499C24.9424 27.499 24.9181 27.4953 24.8919 27.4775L23.2679 26.374L23.266 26.373L23.2621 26.3701L19.7035 28.5586C19.4816 28.6947 19.1937 28.5625 19.1937 28.2803V24.5459C19.1938 24.2338 19.3182 23.9709 19.638 23.7891L21.3783 22.8008L27.6976 19.2119L27.7005 19.21C27.7467 19.1835 27.7999 19.1524 27.9007 19.1523ZM23.8363 18.4922C23.9607 18.4923 24.0374 18.5943 24.0374 18.7725V19.374C24.0373 19.3863 24.0295 19.3969 24.0179 19.4004L16.8236 21.5566C16.4828 21.6784 16.4271 21.8889 16.4271 22.3037V23.875C16.4271 23.8883 16.4176 23.8997 16.4046 23.9023L14.8773 24.2021C14.5855 24.2592 14.3501 24.0655 14.3499 23.7637V20.333C14.3499 20.0545 14.5245 19.8257 14.8265 19.7793C15.1323 19.7323 23.5882 18.5234 23.5882 18.5234C23.5928 18.5228 23.6012 18.5212 23.6117 18.5195C23.6642 18.511 23.778 18.4922 23.8363 18.4922ZM18.3841 17.8594C18.4879 17.8875 18.5333 17.9208 18.5335 17.9746C18.5335 18.0481 18.5014 18.0527 18.4447 18.0527H11.7083V16.0723C11.7083 16.0723 18.2873 17.8331 18.3841 17.8594Z" fill="#2B545B"/>
657
+ </g>
658
+ <g id="Underscore" filter="url(#filter2_ddii_12865_372)">
659
+ <rect x="38.0052" y="30.0417" width="17.4167" height="3.66667" rx="1.83333" fill="#0DBED9"/>
660
+ <rect x="38.0052" y="30.0417" width="17.4167" height="3.66667" rx="1.83333" fill="url(#paint2_linear_12865_372)" fill-opacity="0.3" style="mix-blend-mode:color-burn"/>
661
+ </g>
662
+ </g>
663
+ </g>
664
+ </g>
665
+ <defs>
666
+ <filter id="filter0_iiiiiiii_12865_372" x="4.83334" y="4.83325" width="62.3333" height="62.3333" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
667
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
668
+ <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
669
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
670
+ <feOffset/>
671
+ <feGaussianBlur stdDeviation="6.63667"/>
672
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
673
+ <feColorMatrix type="matrix" values="0 0 0 0 0.94902 0 0 0 0 0.94902 0 0 0 0 0.94902 0 0 0 1 0"/>
674
+ <feBlend mode="plus-darker" in2="shape" result="effect1_innerShadow_12865_372"/>
675
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
676
+ <feOffset/>
677
+ <feGaussianBlur stdDeviation="1.30167"/>
678
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
679
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
680
+ <feBlend mode="overlay" in2="effect1_innerShadow_12865_372" result="effect2_innerShadow_12865_372"/>
681
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
682
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect3_innerShadow_12865_372"/>
683
+ <feOffset dx="-0.88" dy="-0.88"/>
684
+ <feGaussianBlur stdDeviation="0.22"/>
685
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
686
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
687
+ <feBlend mode="overlay" in2="effect2_innerShadow_12865_372" result="effect3_innerShadow_12865_372"/>
688
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
689
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect4_innerShadow_12865_372"/>
690
+ <feOffset dx="-1.68667" dy="-1.68667"/>
691
+ <feGaussianBlur stdDeviation="0.22"/>
692
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
693
+ <feColorMatrix type="matrix" values="0 0 0 0 0.14902 0 0 0 0 0.14902 0 0 0 0 0.14902 0 0 0 1 0"/>
694
+ <feBlend mode="plus-lighter" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
695
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
696
+ <feOffset dx="-0.22" dy="-0.22"/>
697
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
698
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.45 0"/>
699
+ <feBlend mode="normal" in2="effect4_innerShadow_12865_372" result="effect5_innerShadow_12865_372"/>
700
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
701
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect6_innerShadow_12865_372"/>
702
+ <feOffset dx="0.88" dy="0.88"/>
703
+ <feGaussianBlur stdDeviation="0.22"/>
704
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
705
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
706
+ <feBlend mode="overlay" in2="effect5_innerShadow_12865_372" result="effect6_innerShadow_12865_372"/>
707
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
708
+ <feMorphology radius="0.88" operator="dilate" in="SourceAlpha" result="effect7_innerShadow_12865_372"/>
709
+ <feOffset dx="1.68667" dy="1.68667"/>
710
+ <feGaussianBlur stdDeviation="0.22"/>
711
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
712
+ <feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 0 0.2 0 0 0 1 0"/>
713
+ <feBlend mode="plus-lighter" in2="effect6_innerShadow_12865_372" result="effect7_innerShadow_12865_372"/>
714
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
715
+ <feOffset dx="0.22" dy="0.22"/>
716
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
717
+ <feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.35 0"/>
718
+ <feBlend mode="normal" in2="effect7_innerShadow_12865_372" result="effect8_innerShadow_12865_372"/>
719
+ </filter>
720
+ <filter id="filter1_ddii_12865_372" x="7.12501" y="7.08927" width="31.1667" height="31.1667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
721
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
722
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
723
+ <feOffset/>
724
+ <feGaussianBlur stdDeviation="2.29167"/>
725
+ <feComposite in2="hardAlpha" operator="out"/>
726
+ <feColorMatrix type="matrix" values="0 0 0 0 0.028646 0 0 0 0 0.553635 0 0 0 0 0.634402 0 0 0 0.7 0"/>
727
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_12865_372"/>
728
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
729
+ <feOffset/>
730
+ <feGaussianBlur stdDeviation="0.916667"/>
731
+ <feComposite in2="hardAlpha" operator="out"/>
732
+ <feColorMatrix type="matrix" values="0 0 0 0 0.027451 0 0 0 0 0.554248 0 0 0 0 0.635294 0 0 0 0.8 0"/>
733
+ <feBlend mode="normal" in2="effect1_dropShadow_12865_372" result="effect2_dropShadow_12865_372"/>
734
+ <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_12865_372" result="shape"/>
735
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
736
+ <feOffset dy="0.458333"/>
737
+ <feGaussianBlur stdDeviation="0.229167"/>
738
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
739
+ <feColorMatrix type="matrix" values="0 0 0 0 0.629032 0 0 0 0 0.83871 0 0 0 0 0.870968 0 0 0 1 0"/>
740
+ <feBlend mode="normal" in2="shape" result="effect3_innerShadow_12865_372"/>
741
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
742
+ <feOffset dy="-0.458333"/>
743
+ <feGaussianBlur stdDeviation="0.229167"/>
744
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
745
+ <feColorMatrix type="matrix" values="0 0 0 0 0.1472 0 0 0 0 0.689387 0 0 0 0 0.7728 0 0 0 1 0"/>
746
+ <feBlend mode="normal" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
747
+ </filter>
748
+ <filter id="filter2_ddii_12865_372" x="33.4219" y="25.4584" width="26.5833" height="12.8334" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
749
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
750
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
751
+ <feOffset/>
752
+ <feGaussianBlur stdDeviation="2.29167"/>
753
+ <feComposite in2="hardAlpha" operator="out"/>
754
+ <feColorMatrix type="matrix" values="0 0 0 0 0.028646 0 0 0 0 0.553635 0 0 0 0 0.634402 0 0 0 0.7 0"/>
755
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_12865_372"/>
756
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
757
+ <feOffset/>
758
+ <feGaussianBlur stdDeviation="0.916667"/>
759
+ <feComposite in2="hardAlpha" operator="out"/>
760
+ <feColorMatrix type="matrix" values="0 0 0 0 0.027451 0 0 0 0 0.554248 0 0 0 0 0.635294 0 0 0 0.8 0"/>
761
+ <feBlend mode="normal" in2="effect1_dropShadow_12865_372" result="effect2_dropShadow_12865_372"/>
762
+ <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_12865_372" result="shape"/>
763
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
764
+ <feOffset dy="0.458333"/>
765
+ <feGaussianBlur stdDeviation="0.229167"/>
766
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
767
+ <feColorMatrix type="matrix" values="0 0 0 0 0.629032 0 0 0 0 0.83871 0 0 0 0 0.870968 0 0 0 1 0"/>
768
+ <feBlend mode="normal" in2="shape" result="effect3_innerShadow_12865_372"/>
769
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
770
+ <feOffset dy="-0.458333"/>
771
+ <feGaussianBlur stdDeviation="0.229167"/>
772
+ <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
773
+ <feColorMatrix type="matrix" values="0 0 0 0 0.1472 0 0 0 0 0.689387 0 0 0 0 0.7728 0 0 0 1 0"/>
774
+ <feBlend mode="normal" in2="effect3_innerShadow_12865_372" result="effect4_innerShadow_12865_372"/>
775
+ </filter>
776
+ <radialGradient id="paint0_radial_12865_372" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(36 24.9084) rotate(90) scale(44.8021 44.9389)">
777
+ <stop stop-opacity="0"/>
778
+ <stop offset="1"/>
779
+ </radialGradient>
780
+ <linearGradient id="paint1_linear_12865_372" x1="31.1875" y1="13.0835" x2="12.5429" y2="33.7019" gradientUnits="userSpaceOnUse">
781
+ <stop stop-color="white"/>
782
+ <stop offset="1" stop-color="#002C33"/>
783
+ </linearGradient>
784
+ <linearGradient id="paint2_linear_12865_372" x1="51.9748" y1="30.5192" x2="50.9651" y2="35.9852" gradientUnits="userSpaceOnUse">
785
+ <stop stop-color="white"/>
786
+ <stop offset="1" stop-color="#002C33"/>
787
+ </linearGradient>
788
+ </defs>
789
+ </svg>
790
+ <div class="badge">
791
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round">
792
+ <line x1="18" y1="6" x2="6" y2="18"/>
793
+ <line x1="6" y1="6" x2="18" y2="18"/>
794
+ </svg>
795
+ </div>
143
796
  </div>
797
+ <h1>Authentication failed</h1>
798
+ <p>${errorMessage}</p>
799
+ <div class="hint">Try again with <code>tw auth login</code></div>
144
800
  </div>
145
801
  </body>
146
802
  </html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/lib/oauth-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/twist-cli",
3
- "version": "2.5.1",
3
+ "version": "2.7.0",
4
4
  "description": "TypeScript CLI for Twist",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -69,6 +69,6 @@
69
69
  "prettier": "3.4.2",
70
70
  "semantic-release": "25.0.2",
71
71
  "typescript": "5.9.3",
72
- "vitest": "4.0.16"
72
+ "vitest": "4.0.18"
73
73
  }
74
74
  }