clitrigger 0.2.60 → 0.2.62

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 (57) hide show
  1. package/dist/client/assets/{AnalyticsPanel-uR2EZupK.js → AnalyticsPanel-CP-29VIV.js} +1 -1
  2. package/dist/client/assets/{FloatingComposerController-5A3GJtK4-BkXM3qOw.js → FloatingComposerController-5A3GJtK4-964OUsel.js} +1 -1
  3. package/dist/client/assets/{PlannerPageEditor-C0hQXGPf.js → PlannerPageEditor-tQ8cSsEl.js} +3 -3
  4. package/dist/client/assets/{TaskGraph-C-nI-HsK.js → TaskGraph-DVvS2YsK.js} +1 -1
  5. package/dist/client/assets/{VaultLayout-BlwEx0uG.js → VaultLayout-D9R8grOG.js} +1 -1
  6. package/dist/client/assets/index-B_c_NGU8.js +700 -0
  7. package/dist/client/assets/{index-CM0q9PyP.css → index-BgKRPFk4.css} +1 -1
  8. package/dist/client/assets/{style-QVqTyoyk.js → style-2Q6xFyWI.js} +1 -1
  9. package/dist/client/assets/{with-selector-vaDMkeAu.js → with-selector-BOuuo9Zj.js} +1 -1
  10. package/dist/client/index.html +2 -2
  11. package/dist/server/db/queries.d.ts +2 -1
  12. package/dist/server/db/queries.d.ts.map +1 -1
  13. package/dist/server/db/queries.js +4 -0
  14. package/dist/server/db/queries.js.map +1 -1
  15. package/dist/server/db/schema.d.ts.map +1 -1
  16. package/dist/server/db/schema.js +4 -0
  17. package/dist/server/db/schema.js.map +1 -1
  18. package/dist/server/lib/claude-conversations.d.ts +4 -0
  19. package/dist/server/lib/claude-conversations.d.ts.map +1 -0
  20. package/dist/server/lib/claude-conversations.js +20 -0
  21. package/dist/server/lib/claude-conversations.js.map +1 -0
  22. package/dist/server/lib/process-tree.d.ts +33 -0
  23. package/dist/server/lib/process-tree.d.ts.map +1 -0
  24. package/dist/server/lib/process-tree.js +136 -0
  25. package/dist/server/lib/process-tree.js.map +1 -0
  26. package/dist/server/lib/svn.d.ts +5 -1
  27. package/dist/server/lib/svn.d.ts.map +1 -1
  28. package/dist/server/lib/svn.js +36 -2
  29. package/dist/server/lib/svn.js.map +1 -1
  30. package/dist/server/routes/sessions.d.ts.map +1 -1
  31. package/dist/server/routes/sessions.js +34 -9
  32. package/dist/server/routes/sessions.js.map +1 -1
  33. package/dist/server/routes/svn.d.ts.map +1 -1
  34. package/dist/server/routes/svn.js +15 -2
  35. package/dist/server/routes/svn.js.map +1 -1
  36. package/dist/server/services/claude-manager.d.ts +1 -1
  37. package/dist/server/services/claude-manager.d.ts.map +1 -1
  38. package/dist/server/services/claude-manager.js +2 -2
  39. package/dist/server/services/claude-manager.js.map +1 -1
  40. package/dist/server/services/cli-adapters.d.ts +1 -0
  41. package/dist/server/services/cli-adapters.d.ts.map +1 -1
  42. package/dist/server/services/cli-adapters.js +12 -3
  43. package/dist/server/services/cli-adapters.js.map +1 -1
  44. package/dist/server/services/session-manager.d.ts +9 -0
  45. package/dist/server/services/session-manager.d.ts.map +1 -1
  46. package/dist/server/services/session-manager.js +53 -21
  47. package/dist/server/services/session-manager.js.map +1 -1
  48. package/dist/server/services/svn-manager.d.ts +1 -1
  49. package/dist/server/services/svn-manager.d.ts.map +1 -1
  50. package/dist/server/services/svn-manager.js +7 -2
  51. package/dist/server/services/svn-manager.js.map +1 -1
  52. package/dist/server/websocket/events.d.ts +2 -0
  53. package/dist/server/websocket/events.d.ts.map +1 -1
  54. package/electron/main.cjs +16 -0
  55. package/electron/preload.cjs +9 -1
  56. package/package.json +1 -1
  57. package/dist/client/assets/index-CqfG77x6.js +0 -699
package/electron/main.cjs CHANGED
@@ -434,6 +434,22 @@ ipcMain.on('window:minimize-self', (event) => {
434
434
  win.minimize();
435
435
  });
436
436
 
437
+ // Move the sender's OS window (popout tab-bar drag). 'start' snapshots the
438
+ // bounds; each 'move' carries the TOTAL cursor delta since then (renderer
439
+ // screenX DIPs = bounds DIPs), so a dropped or reordered IPC can't drift the
440
+ // window. setBounds rather than setPosition keeps the size pinned — under
441
+ // fractional display scaling repeated setPosition can grow/shrink by 1px.
442
+ const moveStartBounds = new WeakMap(); // BrowserWindow → bounds at gesture start
443
+ ipcMain.on('window:move-self', (event, p) => {
444
+ const win = BrowserWindow.fromWebContents(event.sender);
445
+ if (!win || win.isDestroyed() || win === mainWindow) return;
446
+ if (win.isMaximized() || win.isFullScreen()) return;
447
+ if (!p || p.phase === 'start') { moveStartBounds.set(win, win.getBounds()); return; }
448
+ const s = moveStartBounds.get(win);
449
+ if (!s || !Number.isFinite(p.dx) || !Number.isFinite(p.dy)) return;
450
+ win.setBounds({ ...s, x: Math.round(s.x + p.dx), y: Math.round(s.y + p.dy) }, false);
451
+ });
452
+
437
453
  ipcMain.on('ime:reset', (event, payload) => {
438
454
  // Route the focus call to the sender's webContents so popout child
439
455
  // windows reclaim their own keyboard focus, not the main window's.
@@ -1,4 +1,4 @@
1
- const { contextBridge, ipcRenderer, webUtils } = require('electron');
1
+ const { contextBridge, ipcRenderer, webFrame, webUtils } = require('electron');
2
2
 
3
3
  // `imeReset` calls `webContents.focus()` in the main process to recover the
4
4
  // native HWND keyboard focus when it gets stuck on xterm's helper textarea
@@ -28,6 +28,11 @@ contextBridge.exposeInMainWorld('electronAPI', {
28
28
  // titlebar buttons, so their own top bar needs this bridge — the web
29
29
  // platform has no window.minimize().
30
30
  windowMinimize: () => ipcRenderer.send('window:minimize-self'),
31
+ // Move this window by dragging its tab bar (single-stack popouts). The
32
+ // renderer drives the gesture from mousemove screen deltas; main anchors on
33
+ // the bounds captured at 'start', so deltas never accumulate error.
34
+ windowMoveStart: () => ipcRenderer.send('window:move-self', { phase: 'start' }),
35
+ windowMoveBy: (dx, dy) => ipcRenderer.send('window:move-self', { phase: 'move', dx, dy }),
31
36
  // Ctrl+wheel / pinch is consumed by Chromium's browser process as a page-zoom
32
37
  // gesture and never reaches the renderer as a DOM `wheel` event, so the
33
38
  // terminal's own Ctrl+wheel font-zoom silently never fires in the exe. Main
@@ -42,6 +47,9 @@ contextBridge.exposeInMainWorld('electronAPI', {
42
47
  // Step this window's page zoom by one Ctrl+wheel tick ('in'/'out'). Applied
43
48
  // main-side so it shares the View-menu Ctrl+=/- zoom store.
44
49
  zoomPage: (dir) => ipcRenderer.send('window:zoom', dir),
50
+ // Current page zoom (1 = 100%). Cross-window dock geometry needs it:
51
+ // screenX is DIPs but clientX is CSS px, so screen deltas divide by zoom.
52
+ getZoomFactor: () => webFrame.getZoomFactor(),
45
53
  // A guest's window.open / target=_blank is denied in main
46
54
  // (setWindowOpenHandler) and its URL forwarded here so the web panel can
47
55
  // open it as a new tab instead of leaking to the OS browser. Returns an
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clitrigger",
3
- "version": "0.2.60",
3
+ "version": "0.2.62",
4
4
  "description": "Spawn isolated git worktrees and orchestrate Claude/Gemini/Codex CLI tasks in parallel from a web UI.",
5
5
  "keywords": [
6
6
  "claude",