Forráskód Böngészése

fix(multiplexer): prefer herdr over kitty in auto-detection ordering

kitty exports KITTY_PID to every child process, so a user running
OpenCode inside kitty with Herdr active would silently resolve to kitty
and fail every spawnPane (no KITTY_LISTEN_ON). Check HERDR_ENV/
HERDR_PANE_ID before KITTY_PID in the auto chain.
adikpb 3 hete
szülő
commit
b5482848ca
1 módosított fájl, 11 hozzáadás és 6 törlés
  1. 11 6
      src/multiplexer/factory.ts

+ 11 - 6
src/multiplexer/factory.ts

@@ -74,18 +74,23 @@ export function getMultiplexer(config: MultiplexerConfig): Multiplexer | null {
           config.zellij_pane_mode,
         );
         actualType = 'zellij';
-      } else if (process.env.KITTY_PID || process.env.KITTY_WINDOW_ID) {
-        multiplexer = new KittyMultiplexer(
-          config.layout,
-          config.main_pane_size,
-        );
-        actualType = 'kitty';
       } else if (process.env.HERDR_ENV || process.env.HERDR_PANE_ID) {
+        // Check Herdr before kitty: kitty exports KITTY_PID to every child
+        // process, so a user running OpenCode inside kitty with Herdr active
+        // would otherwise silently resolve to kitty and fail every spawn
+        // (no KITTY_LISTEN_ON). Herdr's env vars are only set when Herdr is
+        // actually active, so this is safe to prefer.
         multiplexer = new HerdrMultiplexer(
           config.layout,
           config.main_pane_size,
         );
         actualType = 'herdr';
+      } else if (process.env.KITTY_PID || process.env.KITTY_WINDOW_ID) {
+        multiplexer = new KittyMultiplexer(
+          config.layout,
+          config.main_pane_size,
+        );
+        actualType = 'kitty';
       } else {
         // Not inside any session, disable multiplexer
         log('[multiplexer] auto: not inside any session, disabling');