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 @@