storymode-cli 1.3.5 → 1.3.7
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/package.json +1 -1
- package/src/cli.mjs +11 -6
package/package.json
CHANGED
package/src/cli.mjs
CHANGED
|
@@ -203,7 +203,10 @@ export async function run(args) {
|
|
|
203
203
|
// but iTerm2's \x1b[2J is intercepted by tmux). So for iTerm2 we use native
|
|
204
204
|
// splits (AppleScript) instead of tmux, keeping the companion process direct.
|
|
205
205
|
const renderMode = detectGraphicsProtocol();
|
|
206
|
-
|
|
206
|
+
// iTerm2 inside tmux: can't clear inline images (\x1b[2J intercepted by tmux).
|
|
207
|
+
// Kitty/Ghostty work fine in tmux (a=d,d=a deletes placements).
|
|
208
|
+
const useHd = renderMode.protocol === 'kitty'
|
|
209
|
+
|| (renderMode.protocol === 'iterm2' && !renderMode.inTmux);
|
|
207
210
|
const paneWidth = useHd && size === 'full' ? 80 : size === 'full' ? 62 : size === 'tiny' ? 14 : 22;
|
|
208
211
|
|
|
209
212
|
// If we're already the companion pane (spawned by tmux split), play inline
|
|
@@ -250,16 +253,18 @@ export async function run(args) {
|
|
|
250
253
|
// iTerm2 (not in tmux): use native split to keep HD working.
|
|
251
254
|
// iTerm2 inline images can't be cleared through tmux passthrough,
|
|
252
255
|
// so we avoid tmux entirely and use AppleScript to split the pane.
|
|
256
|
+
// Use "write text" instead of "command" — the latter uses execve directly
|
|
257
|
+
// (no shell, no PATH, no env vars). "write text" types into the new
|
|
258
|
+
// pane's shell, which inherits everything.
|
|
253
259
|
if (renderMode.protocol === 'iterm2' && !renderMode.inTmux) {
|
|
254
260
|
try {
|
|
255
|
-
// Wrap in bash -c: iTerm2's "command" uses execve directly (no shell),
|
|
256
|
-
// so env vars and || operators won't work without an explicit shell.
|
|
257
|
-
const wrappedCmd = `bash -c '${companionCmd} || { echo; echo " Companion crashed. Press enter to close."; read; }'`;
|
|
258
|
-
const escapedCmd = wrappedCmd.replace(/"/g, '\\"');
|
|
259
261
|
execSync(`osascript -e '
|
|
260
262
|
tell application "iTerm2"
|
|
261
263
|
tell current session of current tab of current window
|
|
262
|
-
set newSession to split vertically with default profile
|
|
264
|
+
set newSession to split vertically with default profile
|
|
265
|
+
tell newSession
|
|
266
|
+
write text "${companionCmd.replace(/"/g, '\\"')}"
|
|
267
|
+
end tell
|
|
263
268
|
end tell
|
|
264
269
|
end tell
|
|
265
270
|
'`, { stdio: 'ignore' });
|