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.
- package/README.md +28 -39
- package/package.json +1 -1
- package/src/cli.js +6 -8
package/README.md
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
# Project Compass (
|
|
1
|
+
# Project Compass (v3.5.1)
|
|
2
2
|
|
|
3
|
-
Project Compass is a futuristic CLI navigator built with [Ink](https://github.com/vadimdemedes/ink)
|
|
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
|
-
- ๐
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
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
|
|
36
|
-
|
|
|
37
|
-
|
|
|
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**
|
|
40
|
-
| **Shift+A** | Open **Omni-Studio** (Environment
|
|
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**
|
|
44
|
-
| **Shift+
|
|
45
|
-
| **Shift+
|
|
46
|
-
| **Shift+
|
|
47
|
-
| **Shift
|
|
48
|
-
| **
|
|
49
|
-
|
|
|
50
|
-
|
|
|
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
|
-
##
|
|
50
|
+
## Framework Support
|
|
55
51
|
|
|
56
|
-
|
|
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
|
-
|
|
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
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,
|
|
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'},
|
|
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
|
);
|