climaybe 1.7.1 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/version.txt +1 -1
- package/package.json +6 -7
- package/src/workflows/shared/ai-changelog.yml +11 -14
package/README.md
CHANGED
|
@@ -288,7 +288,7 @@ Add the following secrets to your GitHub repository (or use **GitLab CI/CD varia
|
|
|
288
288
|
|
|
289
289
|
- **Branch:** Single default branch `main`. Feature branches open as PRs into `main`.
|
|
290
290
|
- **Versioning:** [SemVer](https://semver.org/). Versions are **bumped automatically** when PRs are merged to `main` using [conventional commits](https://www.conventionalcommits.org/): `fix:` → patch, `feat:` → minor, `BREAKING CHANGE` or `feat!:` → major.
|
|
291
|
-
- **Flow:** Merge to `main` → [Release version](.github/workflows/release-version.yml) runs semantic-release (bumps `package.json`, pushes tag)
|
|
291
|
+
- **Flow:** Merge to `main` → [Release version](.github/workflows/release-version.yml) runs semantic-release (bumps `package.json`, publishes to npm, pushes tag). Optional: tag push runs [Verify release tag](.github/workflows/verify-release-tag.yml) for an extra test pass and tag vs `package.json` check (no publish). Prefer [npm Trusted Publisher](https://docs.npmjs.com/trusted-publishers) (workflow file `release-version.yml`) so no long-lived `NPM_TOKEN` is needed for CI; see [CONTRIBUTING.md](CONTRIBUTING.md). Do not create tags manually; only the Release version workflow creates tags so that tag and package version stay in sync.
|
|
292
292
|
- **CI:** Every PR and push to `main` runs tests on Node 20 and 22 ([CI workflow](.github/workflows/ci.yml)).
|
|
293
293
|
|
|
294
294
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for branch, PR, and conventional-commit details.
|
package/bin/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.7.
|
|
1
|
+
1.7.3
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "climaybe",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.3",
|
|
4
4
|
"description": "Shopify CI/CD CLI — scaffolds workflows, branch strategy, and store config for single-store and multi-store theme repos",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
},
|
|
30
30
|
"bugs": "https://github.com/electricmaybe/climaybe/issues",
|
|
31
31
|
"homepage": "https://github.com/electricmaybe/climaybe#readme",
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public",
|
|
34
|
+
"provenance": true
|
|
35
|
+
},
|
|
32
36
|
"scripts": {
|
|
33
37
|
"test": "node scripts/run-tests.js 2>&1 | tee test.log",
|
|
34
38
|
"prepare": "husky",
|
|
@@ -56,12 +60,7 @@
|
|
|
56
60
|
}
|
|
57
61
|
],
|
|
58
62
|
"@semantic-release/release-notes-generator",
|
|
59
|
-
|
|
60
|
-
"@semantic-release/npm",
|
|
61
|
-
{
|
|
62
|
-
"npmPublish": false
|
|
63
|
-
}
|
|
64
|
-
],
|
|
63
|
+
"@semantic-release/npm",
|
|
65
64
|
[
|
|
66
65
|
"@semantic-release/git",
|
|
67
66
|
{
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
contents: read
|
|
31
31
|
models: read
|
|
32
32
|
outputs:
|
|
33
|
-
changelog: ${{ steps.ai.outputs.changelog }}
|
|
33
|
+
changelog: ${{ steps.ai.outputs.changelog || steps.no_commits.outputs.changelog }}
|
|
34
34
|
|
|
35
35
|
steps:
|
|
36
36
|
- uses: actions/checkout@v4
|
|
@@ -43,25 +43,21 @@ jobs:
|
|
|
43
43
|
COMMITS=$(git log --pretty=format:"%h %s" ${{ inputs.base_ref }}..${{ inputs.head_ref }} 2>/dev/null || echo "")
|
|
44
44
|
if [ -z "$COMMITS" ]; then
|
|
45
45
|
echo "No commits found between ${{ inputs.base_ref }} and ${{ inputs.head_ref }}"
|
|
46
|
-
echo "
|
|
46
|
+
echo "has_commits=false" >> $GITHUB_OUTPUT
|
|
47
47
|
exit 0
|
|
48
48
|
fi
|
|
49
|
-
#
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
echo "$COMMITS"
|
|
53
|
-
echo "COMMITS_EOF"
|
|
54
|
-
} >> $GITHUB_OUTPUT
|
|
49
|
+
# File avoids huge env vars and shell escaping; jq reads via --rawfile (never use --argjson for raw log text).
|
|
50
|
+
printf '%s\n' "$COMMITS" > commits-for-ai.txt
|
|
51
|
+
echo "has_commits=true" >> $GITHUB_OUTPUT
|
|
55
52
|
|
|
56
53
|
- name: Generate changelog (Gemini -> GitHub Models fallback)
|
|
57
54
|
id: ai
|
|
58
|
-
if: steps.commits.outputs.
|
|
55
|
+
if: steps.commits.outputs.has_commits == 'true'
|
|
59
56
|
env:
|
|
60
57
|
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
|
61
58
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
62
|
-
COMMITS_RAW: ${{ steps.commits.outputs.commits }}
|
|
63
59
|
run: |
|
|
64
|
-
COMMITS
|
|
60
|
+
COMMITS=$(cat commits-for-ai.txt)
|
|
65
61
|
PROVIDER="fallback"
|
|
66
62
|
|
|
67
63
|
PROMPT=$(cat <<'PROMPT_EOF'
|
|
@@ -86,7 +82,7 @@ jobs:
|
|
|
86
82
|
if [ -n "$GEMINI_API_KEY" ]; then
|
|
87
83
|
PAYLOAD=$(jq -n \
|
|
88
84
|
--arg prompt "$PROMPT" \
|
|
89
|
-
--
|
|
85
|
+
--rawfile commits commits-for-ai.txt \
|
|
90
86
|
'{
|
|
91
87
|
"contents": [{
|
|
92
88
|
"parts": [{"text": ($prompt + "\n" + $commits)}]
|
|
@@ -112,7 +108,7 @@ jobs:
|
|
|
112
108
|
if [ -z "$CHANGELOG" ] || [ "$CHANGELOG" = "null" ]; then
|
|
113
109
|
GH_PAYLOAD=$(jq -n \
|
|
114
110
|
--arg prompt "$PROMPT" \
|
|
115
|
-
--
|
|
111
|
+
--rawfile commits commits-for-ai.txt \
|
|
116
112
|
'{
|
|
117
113
|
"model": "gpt-4o-mini",
|
|
118
114
|
"messages": [
|
|
@@ -157,7 +153,8 @@ jobs:
|
|
|
157
153
|
} >> $GITHUB_OUTPUT
|
|
158
154
|
|
|
159
155
|
- name: Fallback if no commits
|
|
160
|
-
|
|
156
|
+
id: no_commits
|
|
157
|
+
if: steps.commits.outputs.has_commits != 'true'
|
|
161
158
|
run: |
|
|
162
159
|
{
|
|
163
160
|
echo "changelog<<CHANGELOG_EOF"
|