@ekkos/cli 1.2.5 → 1.2.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.
@@ -880,11 +880,10 @@ function launchWithDashboard(options) {
880
880
  * Launch a NEW Windows Terminal window with Claude (left 60%) + dashboard (right 40%).
881
881
  *
882
882
  * wt.exe cannot split the CURRENT window from a script (microsoft/terminal#4656).
883
- * Instead, we launch a new WT window with both panes pre-defined using semicolons,
884
- * matching the macOS tmux approach (new session with both panes).
883
+ * Instead, we launch a new WT window with both panes pre-defined using a temp .cmd
884
+ * file to avoid Windows quoting hell with nested paths containing spaces.
885
885
  */
886
886
  function launchWithWindowsTerminal(options) {
887
- const ekkosCmd = process.argv[1];
888
887
  const cwd = process.cwd();
889
888
  const launchTime = Date.now();
890
889
  // Write marker file so dashboard knows to wait for a NEW session
@@ -894,6 +893,7 @@ function launchWithWindowsTerminal(options) {
894
893
  }
895
894
  catch { }
896
895
  // Build ekkos run args WITHOUT --dashboard (prevent recursion)
896
+ // Uses `ekkos` directly — it's in PATH since user ran `ekkos --dashboard`
897
897
  const runArgs = ['run'];
898
898
  if (options.session)
899
899
  runArgs.push('-s', options.session);
@@ -911,28 +911,15 @@ function launchWithWindowsTerminal(options) {
911
911
  runArgs.push('--skip-dna');
912
912
  if (options.noProxy)
913
913
  runArgs.push('--skip-proxy');
914
- // Escape paths for cmd shell
915
- const nodeExe = process.execPath;
916
- const claudeCmd = `"${nodeExe}" "${ekkosCmd}" ${runArgs.join(' ')}`;
917
- const dashCmd = `"${nodeExe}" "${ekkosCmd}" dashboard --wait-for-new --refresh 2000`;
914
+ // Write a temp batch file to avoid all quoting issues
915
+ const batPath = path.join(os.tmpdir(), `ekkos-wt-${launchTime}.cmd`);
916
+ const batContent = [
917
+ '@echo off',
918
+ `wt --title "Claude Code" -d "${cwd}" ekkos ${runArgs.join(' ')} ; split-pane -V -s 0.4 --title "ekkOS Dashboard" -d "${cwd}" ekkos dashboard --wait-for-new --refresh 2000`,
919
+ ].join('\r\n');
918
920
  try {
919
- // Launch new WT window with both panes pre-defined:
920
- // Pane 0 (left, 60%): Claude Code
921
- // Pane 1 (right, 40%): Dashboard
922
- // Uses semicolon syntax to define multiple panes in one wt.exe invocation.
923
- // --title sets pane titles for easy identification.
924
- const wtCmd = [
925
- 'wt.exe',
926
- '--title "Claude Code"',
927
- `-d "${cwd}"`,
928
- claudeCmd,
929
- '\\;', // semicolon separator (escaped for cmd)
930
- 'split-pane -V -s 0.4',
931
- '--title "ekkOS Dashboard"',
932
- `-d "${cwd}"`,
933
- dashCmd,
934
- ].join(' ');
935
- (0, child_process_1.execSync)(wtCmd, { stdio: 'pipe' });
921
+ fs.writeFileSync(batPath, batContent);
922
+ (0, child_process_1.execSync)(`"${batPath}"`, { stdio: 'pipe' });
936
923
  console.log(chalk_1.default.cyan('\n Launched Claude Code + Dashboard in Windows Terminal'));
937
924
  console.log(chalk_1.default.gray(' Claude (left 60%) | Dashboard (right 40%)'));
938
925
  console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys\n'));
@@ -941,6 +928,13 @@ function launchWithWindowsTerminal(options) {
941
928
  console.log(chalk_1.default.yellow(` Windows Terminal launch failed: ${err.message}`));
942
929
  console.log(chalk_1.default.gray(' Run "ekkos dashboard --latest" in a separate terminal'));
943
930
  }
931
+ finally {
932
+ // Cleanup temp batch file
933
+ try {
934
+ fs.unlinkSync(batPath);
935
+ }
936
+ catch { }
937
+ }
944
938
  }
945
939
  async function run(options) {
946
940
  // ══════════════════════════════════════════════════════════════════════════
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekkos/cli",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "description": "Setup ekkOS memory for AI coding assistants (Claude Code, Cursor, Windsurf)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {