@ekkos/cli 1.1.4 → 1.1.5

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.
@@ -639,24 +639,30 @@ function installEkkosClaudeVersion() {
639
639
  * 3. npx with pinned version (fallback if install fails)
640
640
  */
641
641
  function resolveClaudePath() {
642
- // PRIORITY 1: ekkOS-managed installation
642
+ // When 'latest', prefer system Claude (user keeps it updated via brew/npm)
643
+ if (PINNED_CLAUDE_VERSION === 'latest') {
644
+ const globalPath = resolveGlobalClaudePath();
645
+ if (globalPath !== 'claude' && fs.existsSync(globalPath)) {
646
+ return globalPath;
647
+ }
648
+ // No system Claude found — fall through to ekkOS-managed install
649
+ }
650
+ // ekkOS-managed installation (for pinned versions or no system Claude)
643
651
  if (fs.existsSync(EKKOS_CLAUDE_BIN) && checkClaudeVersion(EKKOS_CLAUDE_BIN)) {
644
652
  return EKKOS_CLAUDE_BIN;
645
653
  }
646
- // PRIORITY 2: Auto-install to ekkOS-managed directory (user's Claude stays untouched)
654
+ // Auto-install to ekkOS-managed directory
647
655
  if (installEkkosClaudeVersion()) {
648
656
  if (fs.existsSync(EKKOS_CLAUDE_BIN)) {
649
657
  return EKKOS_CLAUDE_BIN;
650
658
  }
651
659
  }
652
- // PRIORITY 3: Fall back to npx with pinned version (shows update message)
653
- // This is rare - only happens if install failed
660
+ // Fall back to npx (rare - only if install failed)
654
661
  return `npx:${PINNED_CLAUDE_VERSION}`;
655
662
  }
656
663
  /**
657
664
  * Original resolve function for fallback to global install
658
665
  */
659
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
660
666
  function resolveGlobalClaudePath() {
661
667
  // Windows global paths
662
668
  if (isWindows) {
@@ -898,17 +904,22 @@ async function run(options) {
898
904
  // DASHBOARD MODE: Launch via tmux with isolated dashboard pane (60/40)
899
905
  // ══════════════════════════════════════════════════════════════════════════
900
906
  if (options.dashboard) {
901
- try {
902
- const tmuxPath = (0, child_process_1.execSync)('which tmux', { encoding: 'utf-8' }).trim();
903
- if (tmuxPath) {
907
+ if (isWindows) {
908
+ console.log(chalk_1.default.yellow(' Dashboard split-pane requires tmux (not available on Windows)'));
909
+ console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
910
+ console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
911
+ }
912
+ else {
913
+ try {
914
+ (0, child_process_1.execSync)('command -v tmux', { encoding: 'utf-8', stdio: 'pipe' }).trim();
904
915
  launchWithDashboard(options);
905
916
  return;
906
917
  }
907
- }
908
- catch {
909
- console.log(chalk_1.default.yellow(' tmux not found. Install: brew install tmux'));
910
- console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
911
- console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
918
+ catch {
919
+ console.log(chalk_1.default.yellow(' tmux not found. Install: brew install tmux'));
920
+ console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
921
+ console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
922
+ }
912
923
  }
913
924
  }
914
925
  // Generate instance ID for this run
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekkos/cli",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Setup ekkOS memory for AI coding assistants (Claude Code, Cursor, Windsurf)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {