@miphamai/cli 0.24.12 → 0.24.14
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/bin/mipham.ts +10 -5
- package/package.json +1 -1
- package/src/agent-view/dashboard.tsx +2 -2
package/bin/mipham.ts
CHANGED
|
@@ -311,13 +311,16 @@ async function main() {
|
|
|
311
311
|
// ── Disable terminal special characters ──────────────────────────────────
|
|
312
312
|
// Terminal intercepts Ctrl+S (XOFF), Ctrl+T (SIGINFO/status), Ctrl+R (rprnt)
|
|
313
313
|
// before the app sees them. Disable these so Agent Dashboard shortcuts work.
|
|
314
|
+
// IMPORTANT: stty needs the real terminal on stdin — 'ignore' won't work.
|
|
314
315
|
const { execSync } = await import('node:child_process')
|
|
315
316
|
let savedStty = ''
|
|
316
317
|
try {
|
|
317
|
-
savedStty = execSync('stty -g
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
318
|
+
savedStty = execSync('stty -g', {
|
|
319
|
+
encoding: 'utf-8',
|
|
320
|
+
stdio: ['inherit', 'pipe', 'ignore'],
|
|
321
|
+
}).trim()
|
|
322
|
+
execSync('stty -ixon stop undef start undef status undef rprnt undef', {
|
|
323
|
+
stdio: ['inherit', 'ignore', 'ignore'],
|
|
321
324
|
})
|
|
322
325
|
} catch {
|
|
323
326
|
// Non-POSIX platform (Windows) — no special chars to disable
|
|
@@ -326,7 +329,9 @@ async function main() {
|
|
|
326
329
|
const restoreTerminal = () => {
|
|
327
330
|
if (!savedStty) return
|
|
328
331
|
try {
|
|
329
|
-
execSync(`stty ${savedStty}
|
|
332
|
+
execSync(`stty ${savedStty}`, {
|
|
333
|
+
stdio: ['inherit', 'ignore', 'ignore'],
|
|
334
|
+
})
|
|
330
335
|
} catch {
|
|
331
336
|
/* ignore */
|
|
332
337
|
}
|
package/package.json
CHANGED
|
@@ -104,14 +104,14 @@ export function AgentViewDashboard({ manager, onAttach, onExit }: DashboardProps
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
// Ctrl+T — toggle group by (status ↔ directory)
|
|
107
|
-
if (input === '
|
|
107
|
+
if (key.ctrl && input === 't') {
|
|
108
108
|
setGroupBy((prev) => (prev === 'status' ? 'directory' : 'status'))
|
|
109
109
|
showFeedback(`Grouped by ${_groupBy === 'status' ? 'directory' : 'status'}`)
|
|
110
110
|
return
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
// Ctrl+R — rename selected session
|
|
114
|
-
if (input === '
|
|
114
|
+
if (key.ctrl && input === 'r') {
|
|
115
115
|
if (sessionsOnly.length === 0) {
|
|
116
116
|
showFeedback('No sessions to rename')
|
|
117
117
|
return
|