project-compass 2.2.0 โ 2.3.0
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 +10 -4
- package/package.json +1 -1
- package/src/projectDetection.js +84 -2
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Project Compass (v2.
|
|
1
|
+
# Project Compass (v2.3.0)
|
|
2
2
|
|
|
3
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.
|
|
4
4
|
|
|
5
5
|
## Highlights
|
|
6
6
|
|
|
7
|
-
- ๐ Scans directories for Node.js, Python, Rust, Go, Java, and
|
|
7
|
+
- ๐ Scans directories for Node.js, Python, Rust, Go, Java, Scala, PHP, Ruby, and .NET projects.
|
|
8
8
|
- ๐จ Futuristic layout with glyph-based art board and split Projects/Details rows.
|
|
9
9
|
- ๐ **New Keyboard-Centric UX**: Shortcuts now use **Shift** instead of Ctrl to avoid terminal interference.
|
|
10
10
|
- ๐ก **Refined Output**: Improved stdin buffer with proper spacing and reliable scrolling (Shift+โ/โ).
|
|
11
|
-
- ๐ง **Smart Detection**: Support for
|
|
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
12
|
- ๐ **Extensible**: Add custom commands with **Shift+C** and frameworks via `plugins.json`.
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
@@ -45,7 +45,13 @@ Project Compass features a split layout where Projects and Details stay paired w
|
|
|
45
45
|
|
|
46
46
|
## Frameworks
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
Supports a wide array of modern stacks:
|
|
49
|
+
- **Node.js**: Next.js, React, Vue, NestJS, Vite, Prisma, Tailwind
|
|
50
|
+
- **Python**: FastAPI, Django, Flask
|
|
51
|
+
- **Java/Kotlin**: Spring Boot (Maven & Gradle)
|
|
52
|
+
- **Rust**: Rocket, Actix Web
|
|
53
|
+
- **.NET**: ASP.NET Core
|
|
54
|
+
- **PHP**: Laravel
|
|
49
55
|
|
|
50
56
|
## License
|
|
51
57
|
|
package/package.json
CHANGED
package/src/projectDetection.js
CHANGED
|
@@ -417,13 +417,24 @@ const builtInFrameworks = [
|
|
|
417
417
|
name: 'Spring Boot',
|
|
418
418
|
icon: '๐ฑ',
|
|
419
419
|
description: 'Spring Boot apps',
|
|
420
|
-
languages: ['Java'],
|
|
420
|
+
languages: ['Java', 'Kotlin'],
|
|
421
421
|
priority: 105,
|
|
422
422
|
match(project) {
|
|
423
|
-
return dependencyMatches(project, 'spring-boot-starter') ||
|
|
423
|
+
return dependencyMatches(project, 'spring-boot-starter') ||
|
|
424
|
+
dependencyMatches(project, 'spring-boot-autoconfigure') ||
|
|
425
|
+
hasProjectFile(project.path, 'src/main/resources/application.properties') ||
|
|
426
|
+
hasProjectFile(project.path, 'src/main/resources/application.yml');
|
|
424
427
|
},
|
|
425
428
|
commands(project) {
|
|
426
429
|
const hasMvnw = hasProjectFile(project.path, 'mvnw');
|
|
430
|
+
const hasGradlew = hasProjectFile(project.path, 'gradlew');
|
|
431
|
+
if (hasGradlew) {
|
|
432
|
+
return {
|
|
433
|
+
run: {label: 'Gradle BootRun', command: ['./gradlew', 'bootRun'], source: 'framework'},
|
|
434
|
+
build: {label: 'Gradle Build', command: ['./gradlew', 'build'], source: 'framework'},
|
|
435
|
+
test: {label: 'Gradle Test', command: ['./gradlew', 'test'], source: 'framework'}
|
|
436
|
+
};
|
|
437
|
+
}
|
|
427
438
|
const base = hasMvnw ? './mvnw' : 'mvn';
|
|
428
439
|
return {
|
|
429
440
|
run: {label: 'Spring Boot run', command: [base, 'spring-boot:run'], source: 'framework'},
|
|
@@ -431,6 +442,77 @@ const builtInFrameworks = [
|
|
|
431
442
|
test: {label: 'Maven test', command: [base, 'test'], source: 'framework'}
|
|
432
443
|
};
|
|
433
444
|
}
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
id: 'rocket',
|
|
448
|
+
name: 'Rocket',
|
|
449
|
+
icon: '๐',
|
|
450
|
+
description: 'Rocket Rust Web',
|
|
451
|
+
languages: ['Rust'],
|
|
452
|
+
priority: 105,
|
|
453
|
+
match(project) {
|
|
454
|
+
return dependencyMatches(project, 'rocket');
|
|
455
|
+
},
|
|
456
|
+
commands() {
|
|
457
|
+
return {
|
|
458
|
+
run: {label: 'Rocket Run', command: ['cargo', 'run'], source: 'framework'},
|
|
459
|
+
test: {label: 'Rocket Test', command: ['cargo', 'test'], source: 'framework'}
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
id: 'actix',
|
|
465
|
+
name: 'Actix Web',
|
|
466
|
+
icon: '๐ฆ',
|
|
467
|
+
description: 'Actix Rust Web',
|
|
468
|
+
languages: ['Rust'],
|
|
469
|
+
priority: 105,
|
|
470
|
+
match(project) {
|
|
471
|
+
return dependencyMatches(project, 'actix-web');
|
|
472
|
+
},
|
|
473
|
+
commands() {
|
|
474
|
+
return {
|
|
475
|
+
run: {label: 'Actix Run', command: ['cargo', 'run'], source: 'framework'},
|
|
476
|
+
test: {label: 'Actix Test', command: ['cargo', 'test'], source: 'framework'}
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
id: 'aspnet',
|
|
482
|
+
name: 'ASP.NET Core',
|
|
483
|
+
icon: '๐',
|
|
484
|
+
description: 'ASP.NET Core Web App',
|
|
485
|
+
languages: ['.NET'],
|
|
486
|
+
priority: 105,
|
|
487
|
+
match(project) {
|
|
488
|
+
return hasProjectFile(project.path, 'Program.cs') &&
|
|
489
|
+
(hasProjectFile(project.path, 'appsettings.json') || hasProjectFile(project.path, 'web.config'));
|
|
490
|
+
},
|
|
491
|
+
commands() {
|
|
492
|
+
return {
|
|
493
|
+
run: {label: 'dotnet run', command: ['dotnet', 'run'], source: 'framework'},
|
|
494
|
+
watch: {label: 'dotnet watch', command: ['dotnet', 'watch', 'run'], source: 'framework'},
|
|
495
|
+
test: {label: 'dotnet test', command: ['dotnet', 'test'], source: 'framework'}
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
id: 'laravel',
|
|
501
|
+
name: 'Laravel',
|
|
502
|
+
icon: '๐งก',
|
|
503
|
+
description: 'Laravel PHP Framework',
|
|
504
|
+
languages: ['PHP'],
|
|
505
|
+
priority: 105,
|
|
506
|
+
match(project) {
|
|
507
|
+
return hasProjectFile(project.path, 'artisan') || dependencyMatches(project, 'laravel/framework');
|
|
508
|
+
},
|
|
509
|
+
commands() {
|
|
510
|
+
return {
|
|
511
|
+
run: {label: 'Artisan Serve', command: ['php', 'artisan', 'serve'], source: 'framework'},
|
|
512
|
+
test: {label: 'Artisan Test', command: ['php', 'artisan', 'test'], source: 'framework'},
|
|
513
|
+
migrate: {label: 'Artisan Migrate', command: ['php', 'artisan', 'migrate'], source: 'framework'}
|
|
514
|
+
};
|
|
515
|
+
}
|
|
434
516
|
}
|
|
435
517
|
];
|
|
436
518
|
|