diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 09b9ec45ed..dff5505ca7 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -20,6 +20,10 @@ jobs: with: fetch-depth: 0 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + with: + node-version: lts/* + - name: 🔍 Check for unreleased commits id: check run: | @@ -34,21 +38,26 @@ jobs: echo "$COMMITS" fi + - name: 🔢 Determine next version + if: steps.check.outputs.skip == 'false' + id: version + run: | + VERSION_JSON=$(node scripts/next-version.ts) + CURRENT_VERSION=$(echo "$VERSION_JSON" | jq -r .current) + NEXT_VERSION=$(echo "$VERSION_JSON" | jq -r .next) + FROM_REF=$(echo "$VERSION_JSON" | jq -r .from) + echo "current=$CURRENT_VERSION" >> "$GITHUB_OUTPUT" + echo "next=v${NEXT_VERSION}" >> "$GITHUB_OUTPUT" + echo "from=$FROM_REF" >> "$GITHUB_OUTPUT" + - name: 📝 Generate changelog body if: steps.check.outputs.skip == 'false' id: changelog + env: + CURRENT_VERSION: ${{ steps.version.outputs.current }} + NEXT_VERSION: ${{ steps.version.outputs.next }} + FROM_REF: ${{ steps.version.outputs.from }} run: | - # Get the latest tag, or use initial commit if no tags exist - LATEST_TAG=$(git describe --tags --abbrev=0 origin/release 2>/dev/null || echo "") - - if [ -z "$LATEST_TAG" ]; then - FROM_REF=$(git rev-list --max-parents=0 HEAD) - CURRENT_VERSION="0.0.0" - else - FROM_REF="$LATEST_TAG" - CURRENT_VERSION="${LATEST_TAG#v}" - fi - # Categorize commits FEATURES="" FIXES="" @@ -72,25 +81,12 @@ jobs: fi done <<< "$(git log "$FROM_REF"..origin/main --oneline --no-merges)" - # Determine next version - HAS_BREAKING=$(git log "$FROM_REF"..origin/main --format='%B' | grep -c 'BREAKING CHANGE\|!:' || true) - HAS_FEAT=$(git log "$FROM_REF"..origin/main --oneline --no-merges | grep -cE '^[a-f0-9]+ feat(\(|:)' || true) - - IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION" - - if [ "$HAS_BREAKING" -gt 0 ] && [ "$MAJOR" -gt 0 ]; then - NEXT_VERSION="$((MAJOR + 1)).0.0" - elif [ "$HAS_FEAT" -gt 0 ]; then - NEXT_VERSION="${MAJOR}.$((MINOR + 1)).0" - else - NEXT_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" - fi - - echo "next_version=v${NEXT_VERSION}" >> "$GITHUB_OUTPUT" + # Strip the leading 'v' for display + DISPLAY_NEXT="${NEXT_VERSION#v}" # Build the PR body BODY="This PR will deploy the following changes to production (\`npmx.dev\`).\n\n" - BODY="${BODY}**Next version: \`v${NEXT_VERSION}\`** (current: \`v${CURRENT_VERSION}\`)\n\n" + BODY="${BODY}**Next version: \`${NEXT_VERSION}\`** (current: \`v${CURRENT_VERSION}\`)\n\n" if [ -n "$FEATURES" ]; then BODY="${BODY}### Features\n\n${FEATURES}\n" @@ -108,8 +104,8 @@ jobs: BODY="${BODY}---\n\n" BODY="${BODY}> Merging this PR will:\n" BODY="${BODY}> - Deploy to \`npmx.dev\` via Vercel\n" - BODY="${BODY}> - Create a \`v${NEXT_VERSION}\` tag and GitHub Release\n" - BODY="${BODY}> - Publish \`npmx-connector@${NEXT_VERSION}\` to npm" + BODY="${BODY}> - Create a \`${NEXT_VERSION}\` tag and GitHub Release\n" + BODY="${BODY}> - Publish \`npmx-connector@${DISPLAY_NEXT}\` to npm" # Write body to file, truncating if needed (GitHub limits PR body to 65536 chars) echo -e "$BODY" > /tmp/pr-body.md @@ -117,14 +113,14 @@ jobs: COMMIT_COUNT=$(git log "$FROM_REF"..origin/main --oneline --no-merges | wc -l) COMPARE_URL="https://github.com/npmx-dev/npmx.dev/compare/${FROM_REF}...main" TRUNCATED="This PR will deploy the following changes to production (\`npmx.dev\`).\n\n" - TRUNCATED="${TRUNCATED}**Next version: \`v${NEXT_VERSION}\`** (current: \`v${CURRENT_VERSION}\`)\n\n" + TRUNCATED="${TRUNCATED}**Next version: \`${NEXT_VERSION}\`** (current: \`v${CURRENT_VERSION}\`)\n\n" TRUNCATED="${TRUNCATED}> **${COMMIT_COUNT} commits** are included in this release. The full changelog is too large to display here.\n>\n" TRUNCATED="${TRUNCATED}> [View full diff on GitHub](${COMPARE_URL})\n\n" TRUNCATED="${TRUNCATED}---\n\n" TRUNCATED="${TRUNCATED}> Merging this PR will:\n" TRUNCATED="${TRUNCATED}> - Deploy to \`npmx.dev\` via Vercel\n" - TRUNCATED="${TRUNCATED}> - Create a \`v${NEXT_VERSION}\` tag and GitHub Release\n" - TRUNCATED="${TRUNCATED}> - Publish \`npmx-connector@${NEXT_VERSION}\` to npm" + TRUNCATED="${TRUNCATED}> - Create a \`${NEXT_VERSION}\` tag and GitHub Release\n" + TRUNCATED="${TRUNCATED}> - Publish \`npmx-connector@${DISPLAY_NEXT}\` to npm" echo -e "$TRUNCATED" > /tmp/pr-body.md fi @@ -132,7 +128,7 @@ jobs: if: steps.check.outputs.skip == 'false' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NEXT_VERSION: ${{ steps.changelog.outputs.next_version }} + NEXT_VERSION: ${{ steps.version.outputs.next }} run: | EXISTING_PR=$(gh pr list --base release --head main --state open --json number --jq '.[0].number') diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 7666e24377..512a3bffbb 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -23,42 +23,18 @@ jobs: with: fetch-depth: 0 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + with: + node-version: lts/* + - name: 🔢 Determine next version id: version run: | - # Get the latest tag on this branch - LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") - - if [ -z "$LATEST_TAG" ]; then - CURRENT_VERSION="0.0.0" - FROM_REF=$(git rev-list --max-parents=0 HEAD) - else - CURRENT_VERSION="${LATEST_TAG#v}" - FROM_REF="$LATEST_TAG" - fi - - # Analyze conventional commits since last tag - HAS_BREAKING=$(git log "${FROM_REF}..HEAD" --format='%B' | grep -c 'BREAKING CHANGE\|!:' || true) - HAS_FEAT=$(git log "${FROM_REF}..HEAD" --oneline --no-merges | grep -cE '^[a-f0-9]+ feat(\(|:)' || true) - HAS_FIX=$(git log "${FROM_REF}..HEAD" --oneline --no-merges | grep -cE '^[a-f0-9]+ fix(\(|:)' || true) - - IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION" - - if [ "$HAS_BREAKING" -gt 0 ] && [ "$MAJOR" -gt 0 ]; then - NEXT_VERSION="$((MAJOR + 1)).0.0" - elif [ "$HAS_FEAT" -gt 0 ]; then - NEXT_VERSION="${MAJOR}.$((MINOR + 1)).0" - elif [ "$HAS_FIX" -gt 0 ]; then - NEXT_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" - else - # Only chore/docs/ci commits — still bump patch - NEXT_VERSION="${MAJOR}.${MINOR}.$((PATCH + 1))" - fi - - echo "current=$CURRENT_VERSION" >> "$GITHUB_OUTPUT" - echo "next=v${NEXT_VERSION}" >> "$GITHUB_OUTPUT" - echo "from=$FROM_REF" >> "$GITHUB_OUTPUT" - echo "Bumping from v${CURRENT_VERSION} to v${NEXT_VERSION}" + VERSION_JSON=$(node scripts/next-version.ts) + echo "current=$(echo "$VERSION_JSON" | jq -r .current)" >> "$GITHUB_OUTPUT" + echo "next=v$(echo "$VERSION_JSON" | jq -r .next)" >> "$GITHUB_OUTPUT" + echo "from=$(echo "$VERSION_JSON" | jq -r .from)" >> "$GITHUB_OUTPUT" + echo "Bumping from v$(echo "$VERSION_JSON" | jq -r .current) to v$(echo "$VERSION_JSON" | jq -r .next)" - name: 🔍 Check if tag already exists id: check @@ -82,11 +58,6 @@ jobs: git tag -a "$VERSION" -m "Release $VERSION" git push origin "$VERSION" - - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 - if: steps.check.outputs.skip == 'false' - with: - node-version: lts/* - - uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # 4e1c8eafbd745f64b1ef30a7d7ed7965034c486c if: steps.check.outputs.skip == 'false' name: 🟧 Install pnpm diff --git a/app/assets/logos/oss-partners/blento.svg b/app/assets/logos/oss-partners/blento.svg new file mode 100644 index 0000000000..38b4792e7f --- /dev/null +++ b/app/assets/logos/oss-partners/blento.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/assets/logos/oss-partners/index.ts b/app/assets/logos/oss-partners/index.ts index 4f14698d4d..e27f78f6b7 100644 --- a/app/assets/logos/oss-partners/index.ts +++ b/app/assets/logos/oss-partners/index.ts @@ -30,6 +30,7 @@ import LogoLunaria from './lunaria.svg' import LogoJsr from './jsr.svg' import LogoIconify from './iconify.svg' import LogoFloatingUi from './floating-ui-vue.svg' +import LogoBlento from './blento.svg' // The list is used on the about page. To add, simply upload the logos nearby and add an entry here. Prefer SVGs. // For logo src, specify a string or object with the light and dark theme variants. @@ -195,4 +196,9 @@ export const OSS_PARTNERS = [ logo: LogoFloatingUi, url: 'https://floating-ui.com/', }, + { + name: 'blento', + logo: LogoBlento, + url: 'https://blento.app/npmx.dev', + }, ] diff --git a/app/components/global/BlogPostWrapper.vue b/app/components/global/BlogPostWrapper.vue index b2651f0845..d50ad9b8dc 100644 --- a/app/components/global/BlogPostWrapper.vue +++ b/app/components/global/BlogPostWrapper.vue @@ -1,5 +1,6 @@