Group Make targets (and other command types) with a consistent visual language
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 38/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- developer-experience, tooling
Direzione di ricerca
Start with src/CommandTreeProvider.ts and its buildRootCategories() entry point, then inspect the providers under src/discovery/. Review src/discovery/make.ts for the variable-filtering requirement and trace how each provider currently builds its command list. Done means a shared TaskGroup classifier and consistent grouping across the listed providers, with the specified Make, VS Code, Mise, and end-to-end fixture behavior.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The tree currently shows a flat list of Make targets under Make Targets (13) — help, build, ci, clean, fmt, lint, package, setup, test, test-exclude-ci, plus variables like COVERAGE_THRESHOLDS_FILE and UNAME that leaked in as pseudo-targets. This doesn't scale: real Makefiles routinely have dozens of targets and users can't find what they need.
The same problem exists across every command-type we support (Mise tasks, VS Code tasks, npm scripts, Just recipes, etc.). Each provider currently shows a flat list, and there is no shared visual language for grouping.
Goal
A consistent grouping visual language across all command types — Make, Mise, VS Code tasks, npm, Just, Cargo, Gradle, Rake, Taskfile, etc. — so that a user who learns the grouping for one provider immediately understands the others.
GNU convention (source of truth for Make)
Per GNU Makefile Conventions — Standard Targets for Users, standard target names fall into natural groups:
| Group | Standard targets |
|---|---|
| Build | all (default) |
| Install | install, install-html, install-pdf, install-ps, install-strip, installdirs, installcheck, uninstall |
| Clean | clean, mostlyclean, distclean, maintainer-clean |
| Test | check |
| Docs | info, html, pdf, ps, TAGS |
| Dist | dist |
These are the canonical groups a user expects. Our grouping must at minimum recognise these.
Proposed groups (cross-provider)
A single taxonomy used by every discovery provider:
- Build — compile/package (Make
all/build, npmbuild, Cargobuild, VS Codebuildgroup, Misebuild:*) - Test — Make
check/test, npmtest,pytest, Cargotest, VS Codetestgroup - Lint / Format —
lint,fmt,format,check-format - Run / Dev —
start,dev,serve,watch, launch configs - Clean —
clean,distclean,mostlyclean,maintainer-clean - Install / Deps —
install,setup,bootstrap,uninstall,install-* - Release / Dist —
dist,package,release,publish - CI —
ci,ci-* - Docs —
docs,html,pdf,info,ps - Other — anything unmatched
Classification strategy
- Name-prefix / name-suffix rules —
test-*,*-test,docker-*,db-*group by prefix. - Known-target dictionary — exact matches to GNU standard names and common ecosystem names (npm's
start/test/build; Cargo'sbuild/test/check/doc; Misebuild:*/test:*). - Provider-native metadata where available:
- VS Code tasks:
groupfield (build,test) — see tasks.json reference. - npm: lifecycle scripts (
pre*/post*) are grouped under their parent. - Mise:
:namespace (build:web,build:api) — group by the prefix before:. - Just: doc comments above recipes.
- Make: parse
## group: <name>or## commentannotations when present (popularmake helpconvention).
- VS Code tasks:
- Fallback: ungrouped targets go to Other.
Visual language
- Each group shown as a collapsible tree node with a consistent icon + label across providers.
- e.g. "Build" always uses the same icon whether it comes from Make, npm, or VS Code tasks.
- Group order is fixed across providers (Build → Test → Lint → Run → Clean → Install → Release → CI → Docs → Other).
- Groups with zero matches are hidden.
- Single-item groups still render (consistency beats compactness).
- A setting
commandtree.groupingwith valuesauto(default) /flat/customlets users opt out.
Out of scope (follow-ups)
- User-configurable custom groups via
commandtree.json. - Per-workspace overrides of the default classification dictionary.
- Drag-to-regroup in the tree.
Acceptance
- Shared
TaskGroupenum + classifier module used by every discovery provider - GNU standard Make target names classify correctly (see table above)
- VS Code tasks honour their native
groupfield - Mise
:namespaces become groups - Variables like
COVERAGE_THRESHOLDS_FILEandUNAMEno longer appear as Make "targets" (separate filtering fix in src/discovery/make.ts) - E2E test asserts that, given a fixture Makefile with
all,clean,distclean,check,install, they land in Build / Clean / Clean / Test / Install respectively - E2E test asserts grouping is identical in structure for a fixture
package.json,Justfile, andmise.tomlwith equivalent tasks
References
- GNU Makefile Conventions
- GNU Standard Targets for Users
- VS Code task groups
- src/CommandTreeProvider.ts —
buildRootCategories() - src/discovery/ — 20+ providers that all need the shared classifier
- Lingua principale
- TypeScript
- Stelle
- 3
- Fork
- 2
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Nimblesite/CommandTree
-
enhancement priority: critical security
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Nimblesite/CommandTree#24 ·
Tutte le issue di Nimblesite/CommandTree
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
area:tools bug good first issue help wanted priority:P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
TaewoooPark/Motifcode#14 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
newrelic-experimental/preflight#793 · 1 commento ·
-
bug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
[Bounty proposal] fix(web): memory insights count an evening memory on the next day ($25 proposed) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
BasedHardware/omi#15320 ·