From 7f312e88df6b84fe5d65b52f302f6986a828984e Mon Sep 17 00:00:00 2001 From: dipto0321 Date: Mon, 29 Jun 2026 22:12:00 +0600 Subject: [PATCH 1/2] docs: add status line to managers.md and docs index to README --- README.md | 35 ++++++++++++----------------------- docs/managers.md | 4 +++- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 368e8b2..3aa2111 100644 --- a/README.md +++ b/README.md @@ -195,31 +195,20 @@ phases layer commands on top: `nodeup check` (Phase 2) → `nodeup packages` (Phase 3) → `nodeup upgrade` end-to-end (Phase 4) → `nodeup config` (Phase 5) → first tagged release (Phase 7). +## Docs index + +| Topic | Doc | +|---|---| +| Supported version managers, detection, locking to one | [`docs/managers.md`](./docs/managers.md) | +| Config schema, precedence rules, env vars | [`docs/configuration.md`](./docs/configuration.md) | +| Install channels (Homebrew / Scoop / npm / binary / source) | [`docs/installation.md`](./docs/installation.md) | +| First-stable + patch release runbook | [`docs/release-checklist.md`](./docs/release-checklist.md) | + ## Contributing -Contributions welcome! A `CONTRIBUTING.md` will land alongside Phase 5; in the -meantime, this is the working contract. - -**Branching.** Branch from `main` using one of: -`feat//…`, `fix//…`, `chore//…`, -`docs/…`, `ci/…`, `test//…`, `refactor//…`. -`main` is protected — every change goes through a PR and is squash-merged -with the source branch deleted. Releases are tag-driven: pushing a -`v*.*.*` tag fires the GoReleaser workflow. - -**Commit messages — Conventional Commits.** Type and scope are -enforced by commitlint in CI. - -- Allowed **types**: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, - `test`, `build`, `ci`, `chore`, `revert`. -- Allowed **scopes**: `detector`, `manager`, `packages`, `node`, `config`, - `ui`, `platform`, `cli`, `deps`, `release`, `ci`, `docs`, `lint`. -- **Breaking changes** use the `!` marker in the type/scope header and a - `BREAKING CHANGE:` footer in the body, e.g. - `feat(config)!: drop legacy manager=auto key`. - -**Pull requests.** One PR per logical change. CI must be green; `make ci` -runs everything locally. +See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the working contract — +branching, Conventional Commits rules, local dev (`make ci`), PR +workflow, issue / security etiquette, and coding style. ## License diff --git a/docs/managers.md b/docs/managers.md index 7ba1ffa..4550be1 100644 --- a/docs/managers.md +++ b/docs/managers.md @@ -40,4 +40,6 @@ Or via flag: ```bash nodeup upgrade --manager fnm -``` \ No newline at end of file +``` + +> _Status: Phase 1 ✅ done — all 8 managers detected · last updated 2026-06-29_ \ No newline at end of file From 0128ed7c544a044cde3c4321923b332a48600ace Mon Sep 17 00:00:00 2001 From: dipto0321 Date: Mon, 29 Jun 2026 22:12:49 +0600 Subject: [PATCH 2/2] docs: add CONTRIBUTING.md with development conventions --- CONTRIBUTING.md | 139 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..8b1099a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,139 @@ +# Contributing to nodeup + +Thanks for considering a contribution. `nodeup` is a small Go CLI with a +single maintainer and a strict, automated workflow — read this once before +opening an issue or a PR. + +## Quick orientation + +- **Language / runtime:** Go 1.22+ +- **Architecture:** see the `How it works` section in [`README.md`](./README.md) + for the high-level pipeline. The single source of truth for implementation + details is the Go source under `internal/` plus inline godoc. +- **Branching:** always branch from `main`. `main` is protected — every + change ships via PR and is squash-merged with the source branch deleted. +- **Releases:** tag-driven. Pushing a `v*.*.*` tag to `origin` fires the + GoReleaser workflow (`.github/workflows/release.yml` → + [Homebrew tap](https://github.com/dipto0321/homebrew-tap), + [Scoop bucket](https://github.com/dipto0321/scoop-bucket), npm wrapper). + +## Branching conventions + +Branch names use one of: + +| Prefix | Use for | +|---|---| +| `feat//` | New user-facing feature | +| `fix//` | Bug fix | +| `chore//` | Maintenance, deps, refactors with no behavior change | +| `docs/` | Documentation only | +| `ci/` | CI/CD only | +| `test//` | Tests only | +| `refactor//` | Refactor only | + +`` is one of the commitlint scopes (see below). Examples: +`feat/check/dist-index-fetcher`, `fix/detector/nvm-windows-registry`, +`docs/clarify-installation`, `ci/bump-golangci-lint`. + +## Commit messages — Conventional Commits + +Enforced by [commitlint](https://github.com/conventional-changelog/commitlint) +in CI (`wagoid/commitlint-github-action@v5`). Local check: `npx commitlint --edit`. + +**Allowed types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, +`test`, `build`, `ci`, `chore`, `revert`. + +**Allowed scopes:** `detector`, `manager`, `packages`, `node`, `config`, +`ui`, `platform`, `cli`, `deps`, `release`, `ci`, `docs`, `lint`. + +**Breaking changes:** append `!` after the type/scope and add a +`BREAKING CHANGE:` footer in the commit body, e.g.: + +``` +feat(config)!: drop legacy manager=auto key + +BREAKING CHANGE: config.manager=auto is no longer recognized. Use +config.manager= explicitly, or omit the key for auto-detect. +``` + +**Format:** + +``` +(): # imperative mood, <= 100 chars, no trailing period + + # explain *what* and *why*, not how + +