diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f28aaf9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contributing to MSDL + +Thanks for considering a contribution. This project is a small, community-run tool — bug reports, product additions, and fixes are all welcome. + +## Reporting bugs + +Open a [GitHub issue](https://github.com/starkSV/windows-iso-downloader/issues). Include: + +- Whether you hit it via the web app, the CLI, or both +- CLI version (`msdl --help` prints it) or which page on msdl.tech-latest.com +- The exact error message, if any +- Product/language you were trying to fetch + +## Development setup + +See the [README's "Running Locally" section](./README.md#running-locally) for backend and frontend setup. For the CLI: + +```bash +cd cli +go run . --help +go test ./... +``` + +## Adding a new consumer Windows release + +1. Find the product ID at `www.microsoft.com/software-download-connector/api/` +2. Add it to `frontend/public/data/products.json` (name, archs, badge, related, active) +3. Add it to `cli/catalog.go`'s `consumerProducts` slice +4. Update the product table in `README.md` + +## Adding a new evaluation edition + +1. Find the fwlink URL at `microsoft.com/en-us/evalcenter/download-*` +2. Add the slug and fwlink to the `evalProducts` map in `backend/main.go` +3. Add the same slug to `cli/catalog.go`'s `evalProducts` slice +4. Add the product config to `frontend/src/data/evalProducts.ts` +5. Update the eval table in `README.md` + +## Making changes + +- Small, one-line config fixes can go straight to `main`. +- Anything touching behavior (new feature, bug fix, refactor) should go through a feature branch and PR. +- **Test locally before opening a PR** — build and run the affected component (`go build`, `go test ./...`, `npm run dev`) rather than relying on review to catch it. +- Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `docs:`, `chore:`. +- Keep PRs focused — one fix or feature per PR, not a bundle of unrelated changes. + +## CLI releases + +CLI releases are cut by the maintainer via git tag (`cli/vX.Y.Z`), which triggers the GitHub Actions build for all platforms and the winget package update. Contributors don't need to worry about tagging, versioning, or winget — just get the fix or feature merged to `main`. + +## Code style + +No linter is enforced yet — match the surrounding code's style (Go: stdlib-first, minimal dependencies; frontend: existing Tailwind/component patterns). Don't add abstractions, comments, or error handling beyond what the change actually needs. diff --git a/README.md b/README.md index 1fc6d1a..43dc901 100644 --- a/README.md +++ b/README.md @@ -343,18 +343,7 @@ Recommended setup: ## Contributing -Pull requests welcome. To add a new consumer Windows release: - -1. Find the product ID on `www.microsoft.com/software-download-connector/api/` -2. Add it to `frontend/public/data/products.json` (name, archs, badge, related, active) -3. Update the product table in this README - -To add a new evaluation edition: - -1. Find the fwlink URL on `microsoft.com/en-us/evalcenter/download-*` -2. Add the slug and fwlink to the `evalProducts` map in `backend/main.go` -3. Add the product config to `frontend/src/data/evalProducts.ts` -4. Update the eval table in this README +Pull requests welcome — see [CONTRIBUTING.md](./CONTRIBUTING.md) for dev setup, how to add products/eval editions, and PR conventions. ---