Skip to main content

make-release

Use when cutting a new TinyUSB release — version bump, regenerated files, the per-release changelog, and validation before the maintainer commits and tags.

معلومات المصدر

المستودع
hathach/tinyusb
آخر نشاط في المصدر
٢٤ سبتمبر ٢٠٢٦ في ١٥:٤٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٧٬٢١٠
التفرعات
١٬٥٥٨

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
make-release
description
Use when cutting a new TinyUSB release — version bump, regenerated files, the per-release changelog, and validation before the maintainer commits and tags.
# Cut a TinyUSB Release **Don't commit or tag during prep** — leave changes unstaged for the maintainer (step 4). Work in a worktree. Agree the version `X.Y.Z` with the maintainer first (their call, not derivable from the diff). ## 1. Bump + regenerate ```bash R=.claude/skills/make-release/scripts/release.py $R bump X.Y.Z # tusb_option.h, repository.yml, library.json, sonar-project.properties .claude/skills/build-doc/scripts/gen_doc.py # docs/reference/{boards,dependencies}.rst, hil_boards.md .claude/skills/build-doc/scripts/gen_presets.py # hw/bsp/BoardPresets.json + per-example CMakePresets.json . "$IDF_PATH/export.sh" && python3 tools/family_json.py refresh # hw/bsp/family.json: every board re-observed ``` `refresh` configures every cmake board once, Espressif included, so it needs every toolchain and every dependency at its pin (`tools/get_deps.py all`) and the ESP-IDF environment sourced; it exits 1 naming each board it could not observe, and a row it could not observe keeps its old value. Nothing between releases re-checks rows against `src/common/tusb_mcu.h`, `hw/bsp/family_support.cmake` or example-eligibility edits (an example's `CMakeLists.txt`, `skip.txt` or `only.txt`, which decide a row's `roles`); this step is where they catch up. `bump` refuses a version that is not `X.Y.Z` or equals the current one, and refuses (writing nothing) when a file's version line no longer matches its pattern — fix the file or the pattern, never hand-edit around it. The regenerated files change only if boards, deps or the HIL rosters did (see the build-doc skill for what a diff there means). ## 2. Changelog — `docs/changelog/` (the hard part) New file `docs/changelog/X.Y.Z.md`, listed **first** in `docs/changelog/index.rst`. The PR set comes from **commit reachability, not merge date** (a date query wrongly pulls in the prior release's changelog PR at the boundary): ```bash $R prs --prev <previous-X.Y.Z> [--head master] > /tmp/prs.txt # '#N<TAB>title<TAB>[labels]', one PR per line ``` It refuses when `--prev` is not an ancestor of the head, and when a first-parent commit is not a merged PR (a direct push: decide what to do with it, do not silence the guard). A PR merged into a *feature branch* folds into its parent (won't appear alone) — reflect its final state in the parent's bullet. **Curate** into the prior file's exact Markdown (MyST) style: - Title = version (`# X.Y.Z`), then italic date (ask if unknown). Add to top of `index.rst`. - Section order: **General** (New MCUs and Boards / Code Quality and Build / Documentation) → **API Changes** → **Device Stack** (per class) → **Host Stack** → **Controller Driver (DCD & HCD)** (per driver) → **Testing** → **Contributors**. Sections are `##`; each class/driver group is a `###` sub-heading, not a bullet. - Single backticks for symbols; group related PRs into one bullet (don't dump). `Port *`/driver labels help bucket DCD/HCD. - **Contributors**: unique non-bot PR authors, alphabetical (the only contributor credit — no separate page): `$R contributors --prev <previous-X.Y.Z>` prints the line; drop any CI/service account it did not recognise. ## 3. Validate (leave unstaged) ```bash pre-commit run --all-files # every file step 1 regenerated, unit tests included .claude/skills/build-doc/scripts/build_doc.py -c # docs build clean, warnings fail it (see build-doc skill) python3 .claude/skills/build/scripts/check_build.py --board stm32f407disco -e device/cdc_msc # smoke build, a release changes no firmware git diff --stat -- ':!.idea' # .idea/* is IDE noise ``` Confirm the version matches across `tusb_option.h` / `library.json` / `repository.yml` / `sonar-project.properties`. ## 4. Finalize (maintainer) ```bash git add -A -- ':!.idea' && git commit -m "Bump version to X.Y.Z" git tag -a X.Y.Z -m "Release X.Y.Z" # tags are unprefixed (0.20.0, not v0.20.0) git push origin <branch> X.Y.Z ``` Then create the GitHub release from the tag.
عرض على GitHub