Group Make targets (and other command types) with a consistent visual language
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 38/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- typescript
- Domaine
- developer-experience, tooling
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- TypeScript
- Étoiles
- 3
- Forks
- 2
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Nimblesite/CommandTree
-
enhancement priority: critical security
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
Nimblesite/CommandTree#24 ·
Toutes les issues de Nimblesite/CommandTree
Issues similaires
-
Area/Cloud Needs Triage Type/Bug
Difficulté 1/5 1-3 heures Accessibilité débutants 86/100
wso2/product-integrator#2847 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
bluesky-social/social-app#12118 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Player: speed button's accessible name doesn't include its visible textPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
heygen-com/hyperframes#6021 ·
Les mainteneurs répondent en général sous 1 jour
-
Edit: Tele Posadas HDOuvertecheck:passed streams:edit
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour