clitrigger 0.2.58 → 0.2.60
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/dist/client/assets/{AnalyticsPanel-2L8QrILR.js → AnalyticsPanel-uR2EZupK.js} +1 -1
- package/dist/client/assets/{FloatingComposerController-5A3GJtK4-DhS4oLvE.js → FloatingComposerController-5A3GJtK4-BkXM3qOw.js} +1 -1
- package/dist/client/assets/{PlannerPageEditor-DZuA4tyW.js → PlannerPageEditor-C0hQXGPf.js} +3 -3
- package/dist/client/assets/{TaskGraph-DSBwV1iY.js → TaskGraph-C-nI-HsK.js} +1 -1
- package/dist/client/assets/{VaultLayout-TP1u-F_g.js → VaultLayout-BlwEx0uG.js} +1 -1
- package/dist/client/assets/index-CqfG77x6.js +699 -0
- package/dist/client/assets/{style-Xz_QosBG.js → style-QVqTyoyk.js} +1 -1
- package/dist/client/assets/{with-selector-h0toebLx.js → with-selector-vaDMkeAu.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/services/agent-state-detector.d.ts +16 -2
- package/dist/server/services/agent-state-detector.d.ts.map +1 -1
- package/dist/server/services/agent-state-detector.js +40 -9
- package/dist/server/services/agent-state-detector.js.map +1 -1
- package/dist/server/services/cli-adapters.d.ts.map +1 -1
- package/dist/server/services/cli-adapters.js +16 -5
- package/dist/server/services/cli-adapters.js.map +1 -1
- package/electron/main.cjs +21 -6
- package/electron/preload.cjs +6 -2
- package/package.json +1 -1
- package/dist/client/assets/index-nqWuNWC5.js +0 -699
|
@@ -8,27 +8,51 @@
|
|
|
8
8
|
* turn finished (prompt waiting), AskUserQuestion, and plan-approval dialogs.
|
|
9
9
|
*/
|
|
10
10
|
import { stripAnsi } from './pty-output-filter.js';
|
|
11
|
+
const OSC_TITLE = /\x1b\](?:0|2);([^\x07\x1b]*)(?:\x07|\x1b\\)/g;
|
|
12
|
+
function lastTitle(chunk) {
|
|
13
|
+
let title = null;
|
|
14
|
+
for (const match of chunk.matchAll(OSC_TITLE))
|
|
15
|
+
title = match[1];
|
|
16
|
+
return title;
|
|
17
|
+
}
|
|
11
18
|
// ponytail: calibration knob; raise if the Ink renderer pauses >1s mid-turn and flaps working→blocked
|
|
12
19
|
export const QUIET_MS = 1000;
|
|
13
20
|
export function initialState(hints, nowMs) {
|
|
14
21
|
// ponytail: idle only at spawn; every later prompt-wait is reported as blocked
|
|
15
|
-
return { state: hints ? 'idle' : 'unknown', lastWorkingAt: nowMs, reason: 'spawn' };
|
|
22
|
+
return { state: hints ? 'idle' : 'unknown', lastWorkingAt: nowMs, reason: 'spawn', titleSeen: false };
|
|
16
23
|
}
|
|
17
24
|
/** Pure transition. `chunk === null` is a quiet-timer tick. */
|
|
18
25
|
export function step(prev, chunk, nowMs, hints) {
|
|
19
26
|
if (prev.state === 'done')
|
|
20
27
|
return prev;
|
|
21
28
|
if (chunk === null) {
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
// Quiet timer only guesses for PTYs whose CLI never told us its turn boundaries.
|
|
30
|
+
if (!prev.titleSeen && prev.state === 'working' && nowMs - prev.lastWorkingAt >= QUIET_MS) {
|
|
31
|
+
return { ...prev, state: 'blocked', reason: 'quiet' };
|
|
24
32
|
}
|
|
25
33
|
return prev;
|
|
26
34
|
}
|
|
27
35
|
const clean = stripAnsi(chunk);
|
|
28
36
|
if (hints.blocked.test(clean))
|
|
29
|
-
return { state: 'blocked',
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
return { ...prev, state: 'blocked', reason: 'dialog' };
|
|
38
|
+
const title = hints.title ? lastTitle(chunk) : null;
|
|
39
|
+
if (title !== null && hints.title) {
|
|
40
|
+
if (hints.title.working.test(title))
|
|
41
|
+
return { state: 'working', lastWorkingAt: nowMs, reason: 'title', titleSeen: true };
|
|
42
|
+
if (hints.title.idle.test(title)) {
|
|
43
|
+
// Idle title while not working (startup "✳ Claude Code") is not news — only a finished turn is.
|
|
44
|
+
return prev.state === 'working'
|
|
45
|
+
? { ...prev, state: 'blocked', reason: 'title', titleSeen: true }
|
|
46
|
+
: { ...prev, titleSeen: true };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Screen spinner rules: the only signal without titles; with titles they may
|
|
50
|
+
// only lift a dialog block (the title stays "working" across a dialog, so it
|
|
51
|
+
// cannot tell us the user answered). Never from an idle title — a summary line
|
|
52
|
+
// such as "✻ Baked for 6m 45s" would otherwise stick us in working.
|
|
53
|
+
if ((!prev.titleSeen || prev.reason === 'dialog') && hints.working.test(clean)) {
|
|
54
|
+
return { ...prev, state: 'working', lastWorkingAt: nowMs, reason: 'spinner' };
|
|
55
|
+
}
|
|
32
56
|
return prev;
|
|
33
57
|
}
|
|
34
58
|
/**
|
|
@@ -41,6 +65,8 @@ export class AgentStateTracker {
|
|
|
41
65
|
onChange;
|
|
42
66
|
current;
|
|
43
67
|
timer = null;
|
|
68
|
+
/** Unterminated `ESC ]` tail of the previous chunk, so a title split by the PTY is still seen whole. */
|
|
69
|
+
carry = '';
|
|
44
70
|
constructor(hints, onChange) {
|
|
45
71
|
this.hints = hints;
|
|
46
72
|
this.onChange = onChange;
|
|
@@ -52,16 +78,21 @@ export class AgentStateTracker {
|
|
|
52
78
|
feed(chunk) {
|
|
53
79
|
if (!this.hints)
|
|
54
80
|
return;
|
|
55
|
-
|
|
81
|
+
const data = this.carry + chunk;
|
|
82
|
+
// ponytail: only an unterminated OSC tail is carried over; a real VT parser if titles still get lost
|
|
83
|
+
const oscStart = data.lastIndexOf('\x1b]');
|
|
84
|
+
const unterminated = oscStart !== -1 && !/\x07|\x1b\\/.test(data.slice(oscStart));
|
|
85
|
+
this.carry = unterminated ? data.slice(oscStart, oscStart + 256) : '';
|
|
86
|
+
this.apply(step(this.current, unterminated ? data.slice(0, oscStart) : data, Date.now(), this.hints));
|
|
56
87
|
}
|
|
57
88
|
exit(reason) {
|
|
58
89
|
this.clearTimer();
|
|
59
|
-
this.apply({ state: 'done',
|
|
90
|
+
this.apply({ ...this.current, state: 'done', reason });
|
|
60
91
|
}
|
|
61
92
|
apply(next) {
|
|
62
93
|
const changed = next.state !== this.current.state;
|
|
63
94
|
this.current = next;
|
|
64
|
-
if (next.state === 'working')
|
|
95
|
+
if (next.state === 'working' && !next.titleSeen)
|
|
65
96
|
this.armTimer();
|
|
66
97
|
else
|
|
67
98
|
this.clearTimer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-state-detector.js","sourceRoot":"","sources":["../../../src/server/services/agent-state-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-state-detector.js","sourceRoot":"","sources":["../../../src/server/services/agent-state-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-adapters.d.ts","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AACvE,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAqBlE;AAoCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBnE;AASD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;IACrN,yCAAyC;IACzC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,uCAAuC;IACvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1D,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;
|
|
1
|
+
{"version":3,"file":"cli-adapters.d.ts","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AACvE,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAqBlE;AAoCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBnE;AASD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,SAAS,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;IACrN,yCAAyC;IACzC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,uCAAuC;IACvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1D,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACtC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC/C;AAuMD,wBAAgB,eAAe,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYnF;AA4BD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAEpD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAE9D"}
|
|
@@ -118,13 +118,24 @@ const claudeAdapter = {
|
|
|
118
118
|
],
|
|
119
119
|
// `Yes, I trust` is deliberately absent from `blocked`: the auto-respond rule
|
|
120
120
|
// above answers it within milliseconds, so nothing would flip the state back.
|
|
121
|
+
// `title` is the primary signal (same rules as herdr's claude.toml): Claude
|
|
122
|
+
// Code sets the terminal title to "◐ <name>"/"◑ <name>" while a turn runs and
|
|
123
|
+
// "✳ <name>" when it is back at the prompt. Sticky and independent of how the
|
|
124
|
+
// spinner line is painted, so a minutes-long thinking pause stays `working`.
|
|
125
|
+
// The `working` regex below is the fallback for PTYs where no title arrives.
|
|
121
126
|
// `working` alternatives, in order: legacy "(esc to interrupt)" hint; the
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
//
|
|
127
|
+
// long-thinking status "still thinking with xhigh effort", which Claude Code
|
|
128
|
+
// 2.1.x repaints colour-pulsing several times a second with or without the
|
|
129
|
+
// glyph (nothing else matched those frames → 1s quiet timer flapped
|
|
130
|
+
// working→blocked and spammed notifications); the first spinner paint
|
|
131
|
+
// "✻ Kneading…" (glyph + verb + ellipsis); tool status sub-lines; and the
|
|
132
|
+
// ~10Hz repaint frames, which after ANSI stripping are the glyph plus a few
|
|
133
|
+
// words or recoloured single letters (" ✽ d g ", " ✢ still thinking … ").
|
|
134
|
+
// Those last rules are anchored to the whole chunk so prose never matches;
|
|
135
|
+
// ASCII `*`/`·` only take single letters so markdown bullets stay out.
|
|
126
136
|
agentStateHints: {
|
|
127
|
-
|
|
137
|
+
title: { working: /^[⠀-⣿◐-◓] /, idle: /^✳ / },
|
|
138
|
+
working: /esc to interrupt|still thinking|[✶✻✽✢✧✦✱✳⊹◈⟡⋆✸✹✺⊛⊕⊗]\s*\S[^\n]{0,60}…|⎿\s*(?:Running|Waiting|Thinking|Working)|^\s*[✶✻✽✢✧✦✱✳](?:\s+\S+){0,8}\s*$|^\s*[·*+](?:\s+\S){0,6}\s*$/,
|
|
128
139
|
blocked: /Do you want to|Would you like to|Yes, allow|Allow once|Yes, I accept|❯\s*1\.|\(y\/n\)|Esc to cancel/i,
|
|
129
140
|
},
|
|
130
141
|
buildArgs({ mode, prompt, model, extraOptions, maxTurns, sandboxMode, continueSession }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-adapters.js","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-adapters.js","sourceRoot":"","sources":["../../../src/server/services/cli-adapters.ts"],"names":[],"mappings":"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"}
|
package/electron/main.cjs
CHANGED
|
@@ -332,16 +332,19 @@ function createWindow(port) {
|
|
|
332
332
|
return { action: 'deny' };
|
|
333
333
|
});
|
|
334
334
|
guest.on('will-navigate', (e, navUrl) => { if (!isWebScheme(navUrl)) e.preventDefault(); });
|
|
335
|
+
// Nothing else can be under the pointer inside a guest, so apply directly.
|
|
336
|
+
guest.on('zoom-changed', (_e, dir) => stepPageZoom(guest, dir));
|
|
335
337
|
});
|
|
336
338
|
|
|
337
|
-
//
|
|
338
|
-
//
|
|
339
|
-
//
|
|
340
|
-
//
|
|
341
|
-
//
|
|
339
|
+
// In the exe, Ctrl+wheel never reaches the renderer as a DOM `wheel` event;
|
|
340
|
+
// Chromium reports it browser-side as zoom-changed and Electron applies no
|
|
341
|
+
// zoom itself. Forward the direction and let the renderer route it: over a
|
|
342
|
+
// terminal → font size, elsewhere → page zoom (window:zoom below). Do NOT
|
|
343
|
+
// touch the zoom level here — the old setZoomLevel(0) reset any page zoom
|
|
344
|
+
// the user had set via Ctrl+=/- to 100% on every wheel tick (ime-debug
|
|
345
|
+
// 2026-09-08).
|
|
342
346
|
const wireTerminalZoom = (contents, label) => {
|
|
343
347
|
contents.on('zoom-changed', (_e, zoomDirection) => {
|
|
344
|
-
contents.setZoomLevel(0);
|
|
345
348
|
contents.send('terminal:zoom', zoomDirection);
|
|
346
349
|
imeDebugLog(label, { event: 'zoom-changed', dir: zoomDirection });
|
|
347
350
|
});
|
|
@@ -392,6 +395,18 @@ ipcMain.on('ime:set-debug', (_event, enabled) => {
|
|
|
392
395
|
}
|
|
393
396
|
});
|
|
394
397
|
|
|
398
|
+
// One Ctrl+wheel tick of page zoom. 0.5-level step matches Electron's
|
|
399
|
+
// zoomIn/zoomOut menu roles (Ctrl+=/-), so wheel and keys share one scale.
|
|
400
|
+
function stepPageZoom(contents, dir) {
|
|
401
|
+
const next = contents.getZoomLevel() + (dir === 'in' ? 0.5 : -0.5);
|
|
402
|
+
contents.setZoomLevel(Math.max(-4, Math.min(6, next))); // ~48%-299%
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// Renderer decided the forwarded Ctrl+wheel (terminal:zoom) landed outside a
|
|
406
|
+
// terminal → zoom the sender's page. Done main-side so it hits the same
|
|
407
|
+
// per-host zoom store the menu roles write, and persists across restarts.
|
|
408
|
+
ipcMain.on('window:zoom', (event, dir) => stepPageZoom(event.sender, dir));
|
|
409
|
+
|
|
395
410
|
// Raise the sender's OS window to the front. Renderers can't do this
|
|
396
411
|
// themselves: window.focus() without user activation is ignored by Chromium,
|
|
397
412
|
// and popouts reacting to a BroadcastChannel message never have activation.
|
package/electron/preload.cjs
CHANGED
|
@@ -31,13 +31,17 @@ contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
31
31
|
// Ctrl+wheel / pinch is consumed by Chromium's browser process as a page-zoom
|
|
32
32
|
// gesture and never reaches the renderer as a DOM `wheel` event, so the
|
|
33
33
|
// terminal's own Ctrl+wheel font-zoom silently never fires in the exe. Main
|
|
34
|
-
// forwards the gesture ('in'/'out') here instead; the
|
|
35
|
-
//
|
|
34
|
+
// forwards the gesture ('in'/'out') here instead; the hovered SessionTerminal
|
|
35
|
+
// bumps its font size, and main.tsx zooms the page when no terminal is
|
|
36
|
+
// hovered (zoomPage). Returns an unsubscribe fn.
|
|
36
37
|
onTerminalZoom: (cb) => {
|
|
37
38
|
const listener = (_e, dir) => cb(dir);
|
|
38
39
|
ipcRenderer.on('terminal:zoom', listener);
|
|
39
40
|
return () => ipcRenderer.removeListener('terminal:zoom', listener);
|
|
40
41
|
},
|
|
42
|
+
// Step this window's page zoom by one Ctrl+wheel tick ('in'/'out'). Applied
|
|
43
|
+
// main-side so it shares the View-menu Ctrl+=/- zoom store.
|
|
44
|
+
zoomPage: (dir) => ipcRenderer.send('window:zoom', dir),
|
|
41
45
|
// A guest's window.open / target=_blank is denied in main
|
|
42
46
|
// (setWindowOpenHandler) and its URL forwarded here so the web panel can
|
|
43
47
|
// open it as a new tab instead of leaking to the OS browser. Returns an
|