storymode-cli 1.3.4 → 1.3.6

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/cli.mjs +7 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storymode-cli",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "Play AI-animated pixel art characters in your terminal",
5
5
  "type": "module",
6
6
  "bin": {
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
- const useHd = !!renderMode.protocol;
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
@@ -252,8 +255,9 @@ export async function run(args) {
252
255
  // so we avoid tmux entirely and use AppleScript to split the pane.
253
256
  if (renderMode.protocol === 'iterm2' && !renderMode.inTmux) {
254
257
  try {
255
- // Wrap command so errors stay visible (iTerm2 closes pane on exit)
256
- const wrappedCmd = `${companionCmd} || { echo ""; echo " Companion crashed. Press enter to close."; read; }`;
258
+ // Wrap in bash -c: iTerm2's "command" uses execve directly (no shell),
259
+ // so env vars and || operators won't work without an explicit shell.
260
+ const wrappedCmd = `bash -c '${companionCmd} || { echo; echo " Companion crashed. Press enter to close."; read; }'`;
257
261
  const escapedCmd = wrappedCmd.replace(/"/g, '\\"');
258
262
  execSync(`osascript -e '
259
263
  tell application "iTerm2"