ai-agent-session-center 1.0.0 → 1.0.1
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/README.md +4 -4
- package/package.json +1 -1
- package/public/index.html +2 -2
- package/public/js/app.js +21 -3
- package/public/js/terminalManager.js +2 -2
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
A real-time dashboard for monitoring and managing all your AI coding agent sessions. Launch, monitor, and control Claude Code, Codex CLI, and Gemini CLI sessions from a unified interface with embedded SSH terminals, approval alerts, and comprehensive analytics.
|
|
4
4
|
|
|
5
|
-

|
|
5
|
+
[](https://www.npmjs.com/package/ai-agent-session-center)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
[](./LICENSE)
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -28,7 +28,7 @@ ai-agent-session-center
|
|
|
28
28
|
### From Source
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
git clone
|
|
31
|
+
git clone https://github.com/coding-by-feng/ai-agent-session-center.git
|
|
32
32
|
cd ai-agent-session-center
|
|
33
33
|
npm install
|
|
34
34
|
npm start
|
package/package.json
CHANGED
package/public/index.html
CHANGED
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
<div class="shortcut-row"><kbd>S</kbd><span>Toggle settings</span></div>
|
|
66
66
|
<div class="shortcut-row"><kbd>M</kbd><span>Mute / unmute all</span></div>
|
|
67
67
|
<div class="shortcut-row"><kbd>T</kbd><span>New session (none selected)</span></div>
|
|
68
|
-
<div class="shortcut-row"><kbd>Esc</kbd><span>Close
|
|
68
|
+
<div class="shortcut-row"><kbd>Esc</kbd><span>Close modal / panel (except terminal tab)</span></div>
|
|
69
69
|
<div class="shortcut-row"><kbd>?</kbd><span>Toggle this panel</span></div>
|
|
70
70
|
</div>
|
|
71
71
|
<div class="shortcuts-section">
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
</div>
|
|
76
76
|
<div class="shortcuts-section">
|
|
77
77
|
<h4>Terminal</h4>
|
|
78
|
-
<div class="shortcut-row"><kbd>F11</kbd><span>Toggle fullscreen</span></div>
|
|
78
|
+
<div class="shortcut-row"><kbd>Alt+F11</kbd><span>Toggle fullscreen</span></div>
|
|
79
79
|
<div class="shortcut-row"><kbd>Ctrl+Enter</kbd><span>Send queued prompt</span></div>
|
|
80
80
|
</div>
|
|
81
81
|
</div>
|
package/public/js/app.js
CHANGED
|
@@ -429,7 +429,7 @@ function initKeyboardShortcuts() {
|
|
|
429
429
|
break;
|
|
430
430
|
}
|
|
431
431
|
case 'Escape': {
|
|
432
|
-
//
|
|
432
|
+
// Check if we should close modals first (highest priority)
|
|
433
433
|
const kill = document.getElementById('kill-modal');
|
|
434
434
|
const alert = document.getElementById('alert-modal');
|
|
435
435
|
const summarizeModal = document.getElementById('summarize-modal');
|
|
@@ -438,25 +438,43 @@ function initKeyboardShortcuts() {
|
|
|
438
438
|
const quickSessionModal = document.getElementById('quick-session-modal');
|
|
439
439
|
const shortcutsModal = document.getElementById('shortcuts-modal');
|
|
440
440
|
const settings = document.getElementById('settings-modal');
|
|
441
|
-
const detail = document.getElementById('session-detail-overlay');
|
|
442
441
|
|
|
442
|
+
// Close modals in priority order (always handle these first)
|
|
443
443
|
if (kill && !kill.classList.contains('hidden')) {
|
|
444
444
|
kill.classList.add('hidden');
|
|
445
|
+
break;
|
|
445
446
|
} else if (alert && !alert.classList.contains('hidden')) {
|
|
446
447
|
alert.classList.add('hidden');
|
|
448
|
+
break;
|
|
447
449
|
} else if (summarizeModal && !summarizeModal.classList.contains('hidden')) {
|
|
448
450
|
summarizeModal.classList.add('hidden');
|
|
451
|
+
break;
|
|
449
452
|
} else if (newSessionModal && !newSessionModal.classList.contains('hidden')) {
|
|
450
453
|
newSessionModal.classList.add('hidden');
|
|
454
|
+
break;
|
|
451
455
|
} else if (quickSessionModal && !quickSessionModal.classList.contains('hidden')) {
|
|
452
456
|
quickSessionModal.classList.add('hidden');
|
|
457
|
+
break;
|
|
453
458
|
} else if (teamModal && !teamModal.classList.contains('hidden')) {
|
|
454
459
|
teamModal.classList.add('hidden');
|
|
460
|
+
break;
|
|
455
461
|
} else if (shortcutsModal && !shortcutsModal.classList.contains('hidden')) {
|
|
456
462
|
shortcutsModal.classList.add('hidden');
|
|
463
|
+
break;
|
|
457
464
|
} else if (settings && !settings.classList.contains('hidden')) {
|
|
458
465
|
settings.classList.add('hidden');
|
|
459
|
-
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// Don't close detail panel if terminal tab is active - let terminal handle ESC
|
|
470
|
+
const detail = document.getElementById('session-detail-overlay');
|
|
471
|
+
if (detail && !detail.classList.contains('hidden')) {
|
|
472
|
+
const activeTab = document.querySelector('.detail-tabs .tab.active');
|
|
473
|
+
if (activeTab && activeTab.dataset.tab === 'terminal') {
|
|
474
|
+
// Don't do anything - let ESC pass through to terminal
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
// Not on terminal tab, close the detail panel
|
|
460
478
|
deselectSession();
|
|
461
479
|
}
|
|
462
480
|
break;
|
|
@@ -373,9 +373,9 @@ document.addEventListener('visibilitychange', () => {
|
|
|
373
373
|
}
|
|
374
374
|
});
|
|
375
375
|
|
|
376
|
-
// F11 toggles fullscreen (no Escape — it's a valid terminal key)
|
|
376
|
+
// Alt+F11 toggles fullscreen (no Escape — it's a valid terminal key)
|
|
377
377
|
document.addEventListener('keydown', (e) => {
|
|
378
|
-
if (e.key === 'F11' && activeTerminal) {
|
|
378
|
+
if (e.key === 'F11' && e.altKey && activeTerminal) {
|
|
379
379
|
e.preventDefault();
|
|
380
380
|
toggleFullscreen();
|
|
381
381
|
}
|