project-compass 3.5.0 โ†’ 3.5.2

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 (3) hide show
  1. package/README.md +28 -39
  2. package/package.json +1 -1
  3. package/src/cli.js +6 -8
package/README.md CHANGED
@@ -1,20 +1,17 @@
1
- # Project Compass (v2.9.2)
1
+ # Project Compass (v3.5.1)
2
2
 
3
- Project Compass is a futuristic CLI navigator built with [Ink](https://github.com/vadimdemedes/ink) that scans your current folder tree for familiar code projects and gives you one-keystroke access to build, test, or run them.
3
+ Project Compass is a futuristic CLI navigator and lifecycle orchestrator built with [Ink](https://github.com/vadimdemedes/ink). It scans your folder tree for code projects and provides a unified interface to install, build, test, and manage them.
4
4
 
5
5
  ## Highlights
6
6
 
7
- - ๐Ÿ” Scans directories for Node.js, Python, Rust, Go, Java, Scala, PHP, Ruby, and .NET projects.
8
- - ๐ŸŽจ Futuristic layout with glyph-based art board and split Projects/Details rows.
9
- - ๐Ÿš€ **New Keyboard-Centric UX**: Shortcuts now use **Shift** instead of Ctrl to avoid terminal interference.
10
- - ๐Ÿ’ก **Refined Output**: Improved stdin buffer with proper spacing and reliable scrolling (Shift+โ†‘/โ†“).
11
- - ๐Ÿง  **Smart Detection**: Support for 20+ frameworks including **Spring Boot** (Maven/Gradle), **ASP.NET Core**, **Rocket/Actix** (Rust), **Laravel** (PHP), **Vite**, **Prisma**, and more.
12
- - ๐Ÿ›ฐ๏ธ **Orbit Task Manager**: Run commands and **Detach** (**Shift+D**) them to the background. Manage multiple processes via **Shift+T**.
13
- - โš ๏ธ **Runtime Health**: Automatically checks if the required language/runtime (e.g., `node`, `python`, `cargo`) is installed and warns you if it's missing.
14
- - ๐Ÿ’Ž **Omni-Studio**: A new interactive environment intelligence mode to see all installed runtimes and versions.
15
- - ๐Ÿ“‚ **Log Management**: Clear output with **Shift+X** or export logs to a text file with **Shift+E**.
16
- - ๐Ÿ”Œ **Extensible**: Add custom commands with **Shift+C** and frameworks via `plugins.json`.
17
- - ๐Ÿ’พ **Persistence**: Saves your UI preferences (Art Board, Help, Structure Guide) globally in `~/.project-compass/config.json`.
7
+ - ๐Ÿ” **Omni-Scanner**: Deep-scans directories for Node.js, Python, Rust, Go, Java, Scala, PHP, Ruby, and .NET projects.
8
+ - ๐Ÿ—๏ธ **Project Architect (Shift+N)**: Scaffold new projects from industry-standard templates (Next.js, Vite, Rust, Go) into any target path.
9
+ - ๐Ÿ“ฆ **Package Registry (Shift+P)**: Interactively add/remove dependencies and manage environments (like Python `.venv`) without leaving the CLI.
10
+ - ๐Ÿ›ฐ๏ธ **Orbit Task Manager (Shift+T)**: Run multiple commands in parallel, detach them to the background (**Shift+D**), and manage them (Rename/Kill).
11
+ - ๐Ÿ’€ **Atomic Kill (Ctrl+C)**: Forcefully wipe out entire process trees and zombie servers using kernel-level signal forwarding.
12
+ - ๐Ÿ’Ž **Omni-Studio (Shift+A)**: Real-time environment intelligence dashboard showing all installed runtimes and versions.
13
+ - ๐Ÿ’พ **Global Persistence**: Remembers your UI preferences (Art Board, Help, Structure Guide) via `~/.project-compass/config.json`.
14
+ - ๐ŸŽจ **Flicker-Free UI**: Isolated rendering architecture ensures zero UI jitter even during high-velocity log streaming.
18
15
 
19
16
  ## Installation
20
17
 
@@ -28,41 +25,33 @@ npm install -g project-compass
28
25
  project-compass [--dir /path/to/workspace] [--studio] [--version]
29
26
  ```
30
27
 
31
- ### Keyboard Guide
28
+ ### Keyboard Master Guide
32
29
 
33
30
  | Key | Action |
34
31
  | --- | --- |
35
- | โ†‘ / โ†“ | Move focus, **Enter**: toggle details |
36
- | B / T / R | Build / Test / Run |
37
- | 1โ€‘9 | Execute numbered detail commands |
32
+ | โ†‘ / โ†“ | Move focus between projects |
33
+ | **Enter** | Toggle Detail View / Return from Tasks |
34
+ | **Shift+N** | Open **Project Architect** (Create new project) |
35
+ | **Shift+P** | Open **Package Registry** (Manage dependencies) |
38
36
  | **Shift+T** | Open **Orbit Task Manager** |
39
- | **Shift+D** | **Detach** from active task (runs in background) |
40
- | **Shift+A** | Open **Omni-Studio** (Environment View) |
37
+ | **Shift+D** | **Detach** active task to background |
38
+ | **Shift+A** | Open **Omni-Studio** (Environment intelligence) |
41
39
  | **Shift+B** | Toggle **Art Board** visibility |
42
40
  | **Shift+H** | Toggle **Help Cards** visibility |
43
- | **Shift+S** | Toggle **Structure Guide** visibility |
44
- | **Shift+C** | Add a custom command (`label|cmd`) |
45
- | **Shift+X** | **Clear output logs** |
46
- | **Shift+E** | **Export logs to .txt** |
47
- | **Shift โ†‘ / โ†“** | Scroll output buffer |
48
- | **Shift+L** | Rerun last command |
49
- | **Shift+Q** | Quit app (with confirmation if tasks run) |
50
- | ? | Toggle help overlay |
51
- | Shift+Q | Quit app (with confirmation if tasks run) |
52
- | **Ctrl+C** | Force quit and kill all background tasks |
41
+ | **Shift+S** | Toggle **Structure Guide** |
42
+ | **Shift+X** | **Clear** log buffer for active task |
43
+ | **Shift+E** | **Export** current logs to `.txt` |
44
+ | **Shift+L** | **Rerun** last executed command |
45
+ | **Shift+Q** | **Quit** (Confirms if tasks are running) |
46
+ | **Ctrl+C** | **Force Kill** all background tasks and exit |
47
+ | Shift+โ†‘ / โ†“ | Scroll output logs (Intuitive direction) |
48
+ | **?** | Toggle help overlay |
53
49
 
54
- ## Orbit Task Manager
50
+ ## Framework Support
55
51
 
56
- Project Compass introduces background task management. You can start a build, press **Shift+D** to detach and return to the navigator, then start another task.
52
+ Compass provides specialized intelligence for 20+ stacks including **Next.js, React, Vue, NestJS, Spring Boot, ASP.NET Core, Laravel, Rocket, Actix, Prisma, and Tailwind**.
57
53
 
58
- Inside the Task Manager (**Shift+T**):
59
- - **Shift+K**: Kill a running process or remove a task from history.
60
- - **Shift+R**: Rename a task for better organization.
61
- - **Enter**: Switch back to the Navigator with the selected task's logs.
62
-
63
- ## Omni-Studio
64
-
65
- Launch with `project-compass --studio` or press **Shift+A** inside the app. Omni-Studio provides real-time intelligence on your installed development environments, checking versions for Node, Python, Rust, Go, Java, and more.
54
+ For a full list of framework-specific commands and shortcuts, see [commands.md](./commands.md).
66
55
 
67
56
  ## License
68
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-compass",
3
- "version": "3.5.0",
3
+ "version": "3.5.2",
4
4
  "description": "Futuristic project navigator and runner for Node, Python, Rust, and Go",
5
5
  "main": "src/cli.js",
6
6
  "bin": {
package/src/cli.js CHANGED
@@ -537,18 +537,12 @@ function Compass({rootPath, initialView = 'navigator'}) {
537
537
  create(Text, {dimColor: true}, tile.subtext)
538
538
  )), [projectCountLabel, rootPath, selectedProject, tasks.length, running]);
539
539
 
540
- const helpCards = useMemo(() => [
541
- {label: 'Navigation', color: 'magenta', body: ['โ†‘ / โ†“ move focus, Enter: details', 'Shift+โ†‘ / โ†“ scroll output', 'Shift+H toggle help cards', 'Shift+D detach from task']},
542
- {label: 'Management', color: 'cyan', body: ['Shift+P Package Registry', 'Shift+N Project Architect', 'Shift+X clear / Shift+E export']},
543
- {label: 'Orbit & Studio', color: 'yellow', body: ['Shift+T task manager', 'Shift+A studio / Shift+B art board', 'Shift+S structure / Shift+Q quit']}
544
- ], []);
545
-
546
540
  if (quitConfirm) {
547
541
  return create(Box, {flexDirection: 'column', borderStyle: 'round', borderColor: 'red', padding: 1}, create(Text, {bold: true, color: 'red'}, 'โš ๏ธ Confirm Exit'), create(Text, null, `There are ${tasks.filter(t=>t.status==='running').length} tasks still running in the background.`), create(Text, null, 'Are you sure you want to quit and stop all processes?'), create(Text, {marginTop: 1}, kleur.bold('Y') + ' to Quit, ' + kleur.bold('N') + ' to Cancel'));
548
542
  }
549
543
 
550
544
  if (mainView === 'studio') return create(Studio);
551
- if (mainView === 'tasks') return create(TaskManager, {tasks, activeTaskId, setActiveTaskId, renameMode, renameInput, renameCursor, CursorText});
545
+ if (mainView === 'tasks') return create(TaskManager, {tasks, activeTaskId, renameMode, renameInput, renameCursor, CursorText});
552
546
  if (mainView === 'registry') return create(PackageRegistry, {selectedProject, onRunCommand: runProjectCommand, CursorText});
553
547
  if (mainView === 'architect') return create(ProjectArchitect, {rootPath, onRunCommand: runProjectCommand, CursorText, onReturn: () => setMainView('navigator')});
554
548
 
@@ -575,7 +569,11 @@ function Compass({rootPath, initialView = 'navigator'}) {
575
569
  create(Box, {marginTop: 1, flexDirection: 'row', justifyContent: 'space-between'}, create(Text, {dimColor: true}, running ? 'Type to feed stdin; Enter: submit.' : 'Run a command or press Shift+T to switch tasks.'), create(Text, {dimColor: true}, `${toggleHint}, Shift+S: Structure Guide`)),
576
570
  create(Box, {marginTop: 1, flexDirection: 'row', borderStyle: 'round', borderColor: running ? 'green' : 'gray', paddingX: 1}, create(Text, {bold: true, color: running ? 'green' : 'white'}, running ? ' Stdin buffer ' : ' Input ready '), create(Box, {marginLeft: 1}, create(CursorText, {value: stdinBuffer || (running ? '' : 'Start a command to feed stdin'), cursorIndex: stdinCursor, active: running})))
577
571
  ),
578
- config.showHelpCards && create(Box, {marginTop: 1, flexDirection: 'row', justifyContent: 'space-between', flexWrap: 'wrap'}, helpCards.map((card, idx) => create(Box, {key: card.label, flexGrow: 1, flexBasis: 0, minWidth: HELP_CARD_MIN_WIDTH, marginRight: idx < 2 ? 1 : 0, marginBottom: 1, borderStyle: 'round', borderColor: card.color, padding: 1, flexDirection: 'column'}, create(Text, {color: card.color, bold: true, marginBottom: 1}, card.label), ...card.body.map((line, lidx) => create(Text, {key: lidx, dimColor: card.color === 'yellow'}, line))))),
572
+ config.showHelpCards && create(Box, {marginTop: 1, flexDirection: 'row', justifyContent: 'space-between', flexWrap: 'wrap'}, [
573
+ {label: 'Navigation', color: 'magenta', body: ['โ†‘ / โ†“ move focus, Enter: details', 'Shift+โ†‘ / โ†“ scroll output', 'Shift+H toggle help cards', 'Shift+D detach from task']},
574
+ {label: 'Management', color: 'cyan', body: ['Shift+P Package Registry', 'Shift+N Project Architect', 'Shift+X clear / Shift+E export']},
575
+ {label: 'Orbit & Studio', color: 'yellow', body: ['Shift+T task manager', 'Shift+A studio / Shift+B art board', 'Shift+S structure / Shift+Q quit']}
576
+ ].map((card, idx) => create(Box, {key: card.label, flexGrow: 1, flexBasis: 0, minWidth: HELP_CARD_MIN_WIDTH, marginRight: idx < 2 ? 1 : 0, marginBottom: 1, borderStyle: 'round', borderColor: card.color, padding: 1, flexDirection: 'column'}, create(Text, {color: card.color, bold: true, marginBottom: 1}, card.label), ...card.body.map((line, lidx) => create(Text, {key: lidx, dimColor: card.color === 'yellow'}, line))))),
579
577
  config.showStructureGuide && create(Box, {flexDirection: 'column', borderStyle: 'round', borderColor: 'blue', marginTop: 1, padding: 1}, create(Text, {color: 'cyan', bold: true}, 'Structure guide ยท press Shift+S to hide'), ...SCHEMA_GUIDE.map(e => create(Text, {key: e.type, dimColor: true}, `โ€ข ${e.icon} ${e.label}: ${e.files.join(', ')}`))),
580
578
  showHelp && create(Box, {flexDirection: 'column', borderStyle: 'double', borderColor: 'cyan', marginTop: 1, padding: 1}, create(Text, {color: 'cyan', bold: true}, 'Help overlay'), create(Text, null, 'Shift+โ†‘/โ†“ scrolls logs; Shift+X clears; Shift+E exports; Shift+A Studio; Shift+T Tasks; Shift+D Detach; Shift+B Toggle Art Board; Shift+P Packages; Shift+N Creator.'))
581
579
  );