From 23eeb2a83993ad1ebb33a331d456fb86e8497baf Mon Sep 17 00:00:00 2001 From: nichinichisou Date: Wed, 30 Sep 2026 20:51:42 +0800 Subject: [PATCH] fix(release): preflight wheels and preserve reviewed notes --- .github/workflows/release.yml | 10 ++++++++++ release-notes/v0.1.3.txt | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 release-notes/v0.1.3.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9808b4d..0c870a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,7 @@ name: Release on: push: tags: ["v*"] + workflow_dispatch: permissions: contents: read @@ -13,6 +14,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Check the tag against the package and extension versions + if: startsWith(github.ref, 'refs/tags/v') run: | version=$(python3 -c 'import re, pathlib; print(re.search(r"__version__ = \"([^\"]+)\"", pathlib.Path("src/nnnotes/__init__.py").read_text()).group(1))') cargo=$(python3 -c 'import re, pathlib; print(re.search(r"^version = \"([^\"]+)\"", pathlib.Path("rust/Cargo.toml").read_text(), re.M).group(1))') @@ -89,6 +91,7 @@ jobs: pypi: needs: build + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest environment: name: pypi @@ -107,6 +110,7 @@ jobs: github-release: needs: pypi + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest permissions: contents: write @@ -122,6 +126,12 @@ jobs: env: OUTPUT: RELEASE_NOTES.md GITHUB_REPO: ${{ github.repository }} + - name: Use reviewed release notes when available + run: | + reviewed="release-notes/${GITHUB_REF_NAME}.txt" + if [ -f "$reviewed" ]; then + cp "$reviewed" RELEASE_NOTES.md + fi - uses: actions/download-artifact@v8 with: name: dist diff --git a/release-notes/v0.1.3.txt b/release-notes/v0.1.3.txt new file mode 100644 index 0000000..9e289b4 --- /dev/null +++ b/release-notes/v0.1.3.txt @@ -0,0 +1,10 @@ +nnnotes 0.1.3 adds a music-data exporter, Japanese-release support and an experimental offline UI library export. + +- `nnnotes music-data` produces one `nnnotes.music-data/1` file with song metadata, chart facts, the Gekisou catalog and deck statistics. The pinned `ournotes-deck` model is bundled as `nnnotes._deck`; `--full` includes the model inputs and versioned replay data. Decoded master data can be read with its manifest. +- International catalogs now follow the discovered resource version instead of stale `catalog_main` files. `--catalog-release` pins a build; caches are isolated by CDN root/version, and explicit local catalogs stay offline. +- Japanese-release support includes version discovery, authenticated CDN downloads, gzip catalogs, snapshot-isolated caches and split APKs. See the [JP guide](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/jp.md) for configuration and validation coverage. +- `nnnotes ui` exports serialized prefab libraries, stable node and controller references, and image/font resources for `ournotes-player/ui`. Resume validates pack and dependency hashes. See the [UI format](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/ui.md). + +The UI feature is experimental. It preserves serialized data for inspection; full Unity Presenter behavior and real JP UI rendering coverage are outside the verified scope. The chart model and replay data retain the validation limits documented in the [music-data guide](https://github.com/MetaSekaiLab/nnnotes/blob/main/docs/music-data.md). + +Validation: Python 3.11, 3.12 and 3.13 CI, strict golden records and Rust lints pass. Source-distribution metadata passes `twine check --strict`. Cross-repository browser review covers complete button labels, a numeric Animator binding and two parallel chapter tweens with no diagnostics or console errors.