codeep 1.1.25 → 1.1.27

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.
@@ -1287,15 +1287,17 @@ export class App {
1287
1287
  this.pasteApiKey();
1288
1288
  return;
1289
1289
  }
1290
- // Ctrl+O to open subscribe URL
1291
- if (event.ctrl && event.key === 'o') {
1290
+ // Ctrl+G to open subscribe URL
1291
+ if (event.ctrl && event.key === 'g') {
1292
1292
  const provider = this.loginProviders[this.loginProviderIndex];
1293
1293
  if (provider.subscribeUrl) {
1294
1294
  try {
1295
1295
  const cmd = process.platform === 'darwin' ? 'open'
1296
1296
  : process.platform === 'win32' ? 'start'
1297
1297
  : 'xdg-open';
1298
- require('child_process').execSync(`${cmd} "${provider.subscribeUrl}"`, { stdio: 'ignore' });
1298
+ const { spawn } = require('child_process');
1299
+ const child = spawn(cmd, [provider.subscribeUrl], { detached: true, stdio: 'ignore' });
1300
+ child.unref();
1299
1301
  }
1300
1302
  catch { /* ignore */ }
1301
1303
  }
@@ -2773,7 +2775,7 @@ export class App {
2773
2775
  y++;
2774
2776
  const hints = ['Ctrl+V Paste'];
2775
2777
  if (selectedProvider.subscribeUrl) {
2776
- hints.push('Ctrl+O Get API key');
2778
+ hints.push('Ctrl+G Get API key');
2777
2779
  }
2778
2780
  hints.push('Enter Submit', 'Esc Back');
2779
2781
  this.screen.writeLine(y, hints.join(' • '), fg.gray);
@@ -154,6 +154,24 @@ export class Input {
154
154
  event.ctrl = true;
155
155
  return event;
156
156
  }
157
+ // Ctrl+G
158
+ if (data === '\x07') {
159
+ event.key = 'g';
160
+ event.ctrl = true;
161
+ return event;
162
+ }
163
+ // Ctrl+O
164
+ if (data === '\x0f') {
165
+ event.key = 'o';
166
+ event.ctrl = true;
167
+ return event;
168
+ }
169
+ // Ctrl+T
170
+ if (data === '\x14') {
171
+ event.key = 't';
172
+ event.ctrl = true;
173
+ return event;
174
+ }
157
175
  // Enter
158
176
  if (data === '\r' || data === '\n') {
159
177
  event.key = 'enter';
@@ -4,7 +4,7 @@
4
4
  import { LineEditor } from '../Input.js';
5
5
  import { fg, style } from '../ansi.js';
6
6
  import { createBox, centerBox } from './Box.js';
7
- import { execSync } from 'child_process';
7
+ import { spawn } from 'child_process';
8
8
  // Primary color: #f02a30 (Codeep red)
9
9
  const PRIMARY_COLOR = fg.rgb(240, 42, 48);
10
10
  const PRIMARY_BRIGHT = fg.rgb(255, 80, 85);
@@ -35,7 +35,7 @@ export class LoginScreen {
35
35
  return true;
36
36
  }
37
37
  // Open subscribe URL in browser
38
- if (event.ctrl && event.key === 'o' && this.options.subscribeUrl) {
38
+ if (event.ctrl && event.key === 'g' && this.options.subscribeUrl) {
39
39
  openUrl(this.options.subscribeUrl);
40
40
  return true;
41
41
  }
@@ -122,7 +122,7 @@ export class LoginScreen {
122
122
  // Help text
123
123
  const helpParts = ['Ctrl+T: Toggle visibility'];
124
124
  if (this.options.subscribeUrl) {
125
- helpParts.push('Ctrl+O: Get API key');
125
+ helpParts.push('Ctrl+G: Get API key');
126
126
  }
127
127
  helpParts.push('Esc: Cancel');
128
128
  this.screen.write(contentX, contentY, helpParts.join(' | '), fg.gray);
@@ -147,7 +147,8 @@ function openUrl(url) {
147
147
  const cmd = process.platform === 'darwin' ? 'open'
148
148
  : process.platform === 'win32' ? 'start'
149
149
  : 'xdg-open';
150
- execSync(`${cmd} "${url}"`, { stdio: 'ignore' });
150
+ const child = spawn(cmd, [url], { detached: true, stdio: 'ignore' });
151
+ child.unref();
151
152
  }
152
153
  catch {
153
154
  // Silently fail if browser can't be opened
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeep",
3
- "version": "1.1.25",
3
+ "version": "1.1.27",
4
4
  "description": "AI-powered coding assistant built for the terminal. Multiple LLM providers, project-aware context, and a seamless development workflow.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",