ci: stamp file_description with CS release + compat matrix#2351
Conversation
Replace the upstream-default 'See mod description for details.' on
every Nexus file row with version-anchored content.
Core (Community Shaders) file row now reads:
Community Shaders 1.5.2 — feature versions in this release:
• Cloud Shadows 1.4.0
• Grass Collision 3.0.4
• Grass Lighting 2.0.2
• Hair Specular 1.1.0 (unchanged)
• HDR 1.0.1
...
— so the CS Nexus listing answers 'what feature versions go with
this release' on the file row, including features whose version
didn't bump in this release ('(unchanged)' annotation).
Each feature file row reads:
Cloud Shadows 1.4.0 — released for Community Shaders 1.5.2.
— anchoring each .7z to the CS release it shipped with. We don't
synthesise forward ranges (which CS versions other than 1.5.2 also
ship this Cloud Shadows version) because forward compatibility is
only knowable post-hoc and the upload action's check_existing=true
flag prevents revisiting an already-uploaded file row anyway. A
single-CS-version stamp is accurate forever.
Implementation:
- tools/feature_version_audit.py: new --release-version CLI arg.
When provided, build_nexus_upload_matrix populates a
file_description field on every row. Compatibility bullets
derive from each auto_upload feature's INI Version, with
'(unchanged)' added when the value matches the same INI at the
--base ref (uses the existing get_prior_version helper).
When --release-version is omitted (manual one-off dispatches),
file_description is empty and the upstream Nexus action default
is preserved — backward compatible.
- .github/workflows/nexus-upload.yaml: passes --release-version
'$RELEASE_VER' (release tag with the leading 'v' stripped) to
the audit tool, and forwards matrix.file_description into the
upload-nexus reusable workflow's file_description input.
📝 WalkthroughWalkthroughThis PR adds support for embedding Nexus upload file descriptions anchored to a specific Community Shaders release version. A new ChangesNexus file description generation from release version
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/nexus-upload.yaml (1)
1-1: ⚡ Quick winConsider shortening the PR title to meet the 50-character guideline.
The current title "ci(nexus): stamp file_description with CS release + compat matrix" is 66 characters, exceeding the conventional commit 50-character recommendation. Consider shortening to improve readability:
ci(nexus): add release-stamped file descriptions(48 chars)ci(nexus): stamp file_description with release(47 chars)As per coding guidelines, conventional commit titles should stay within 50 characters for the
type(scope): descriptionformat.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/nexus-upload.yaml at line 1, The PR title exceeds the 50-character conventional-commit guideline ("ci(nexus): stamp file_description with CS release + compat matrix"); shorten it to <=50 characters using the type(scope): description format (for example "ci(nexus): add release-stamped file descriptions" or "ci(nexus): stamp file_description with release") and update the PR title accordingly so it conforms to the conventional commit length rule.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.github/workflows/nexus-upload.yaml:
- Line 1: The PR title exceeds the 50-character conventional-commit guideline
("ci(nexus): stamp file_description with CS release + compat matrix"); shorten
it to <=50 characters using the type(scope): description format (for example
"ci(nexus): add release-stamped file descriptions" or "ci(nexus): stamp
file_description with release") and update the PR title accordingly so it
conforms to the conventional commit length rule.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 6a71cb04-1267-4d6b-a89e-a898927e6c36
📒 Files selected for processing (2)
.github/workflows/nexus-upload.yamltools/feature_version_audit.py
A common complaint on Nexus comments after every CS release is which feature versions go with this Community Shaders version? Today, every uploaded
.7zcarries the upstream-default file description "See mod description for details." — which doesn't actually help the user match versions.This PR replaces that default with version-anchored content, populated by the audit tool from the same INI metadata it already reads.
What users will see
Core (Community Shaders) file row:
(Sample output from
python tools/feature_version_audit.py --export-nexus-matrix --base v1.5.1 --release-version 1.5.2 --all-features.)The
(unchanged)annotation appears when the feature'sVersionin its.inimatches the same.iniat the previous stable tag — so users can see at a glance which features actually moved versus which carried over.Each feature file row:
Anchors each
.7zto the CS release it shipped with. Answers the inverse question ("which CS does this Cloud Shadows file go with?") right on the file row.Why no forward-looking ranges
Considered making this a range (e.g.,
Cloud Shadows 1.4.0 — released for CS 1.5.2 to 1.5.4). Decided against it:check_existing: trueand skips the upload, so the file row's description never gets revisited.unexsupports this independently of file upload), but extra surface and not needed for the v1 ask.Implementation
tools/feature_version_audit.py:--release-versionCLI arg (e.g.1.5.2).build_nexus_upload_matrixacceptsrelease_version=.... When provided, populates afile_descriptionfield on every row. New helper_build_compat_bulletswalks the same metadata used elsewhere in the file, marks rows as(unchanged)using the existingget_prior_versionhelper against--base.--release-versionis omitted (e.g. ad-hoc manual dispatches without a built-from-tag context),file_descriptionis empty and the upstream Nexus action default is preserved — backward compatible..github/workflows/nexus-upload.yaml:--release-version "$RELEASE_VER"(the release tag with the leadingvstripped) to the audit tool.matrix.file_descriptionintoalandtse/nexus-workflows/upload-nexus.yml's existingfile_descriptioninput.What this does NOT do
changelog(still derived from commits since base).Stacking
Independent of #2350 (artifact-pattern overrides + missing-artifact warning). They can land in either order.
Summary by CodeRabbit
Release Notes