Skip to content

Release 10.0.0

Release 10.0.0 #9

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
version:
description: Optional release version guard without leading v; must match VERSION.
required: false
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
version:
runs-on: windows-latest
outputs:
version: ${{ steps.version.outputs.version }}
tag: ${{ steps.version.outputs.tag }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Resolve version
id: version
shell: bash
run: |
canonical_version="$(tr -d '[:space:]' < VERSION)"
requested_version="${{ github.event.inputs.version }}"
if [ -z "$requested_version" ] && [ "${{ github.ref_type }}" = "tag" ]; then
requested_version="${GITHUB_REF_NAME#v}"
fi
if [ -n "$requested_version" ] && [ "$requested_version" != "$canonical_version" ]; then
echo "Release version '$requested_version' does not match VERSION '$canonical_version'. Update VERSION first." >&2
exit 1
fi
echo "version=$canonical_version" >> "$GITHUB_OUTPUT"
echo "tag=v$canonical_version" >> "$GITHUB_OUTPUT"
build:
needs: version
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Build, verify, and package
shell: cmd
run: gradlew.bat clean check corePerformance verifyPlugin buildPlugin "-PpluginVersion=${{ needs.version.outputs.version }}" -PverifyRecommendedIdes=false -PverifyAllJetBrainsIdes=false --no-daemon --console=plain --no-build-cache --rerun-tasks
- name: Upload package artifact
uses: actions/upload-artifact@v4
with:
name: idea-plugin
path: |
build/distributions/MarkdownTableEditorIdea-${{ needs.version.outputs.version }}.zip
build/release/MARKETPLACE_SUBMISSION.md
if-no-files-found: error
release:
needs:
- version
- build
runs-on: windows-latest
steps:
- name: Download package artifact
uses: actions/download-artifact@v4
with:
path: release-assets
- name: Publish GitHub release
shell: bash
env:
GH_TOKEN: ${{ github.token }}
TAG_NAME: ${{ needs.version.outputs.tag }}
VERSION: ${{ needs.version.outputs.version }}
run: |
mapfile -t files < <(find release-assets -type f -name '*.zip' | sort)
if [ "${#files[@]}" -eq 0 ]; then
echo "No release ZIP files were downloaded." >&2
exit 1
fi
sha256sum "${files[@]}" > SHA256SUMS.txt
marketplace_doc="$(find release-assets -type f -name 'MARKETPLACE_SUBMISSION.md' | sort | head -n 1)"
cat > release-notes.md <<EOF
## Builds / Downloads
- [MarkdownTableEditorIdea-$VERSION.zip](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MarkdownTableEditorIdea-$VERSION.zip)
- [SHA256SUMS.txt](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/SHA256SUMS.txt)
- [MARKETPLACE_SUBMISSION.md](https://github.com/krotname/IdeaMarkdownTableEditor/releases/download/v$VERSION/MARKETPLACE_SUBMISSION.md)
## What's Changed
- Supersedes 9.0.0 as the current stable release.
- Added localized action names, menu text, dialogs, and user messages for 20 popular locales.
- Improved large-table performance by reducing table parsing, display-width, and formatting overhead.
- Added release-blocking Java/C++ core performance benchmarks to CI.
- Preserved Java/C++ core parity for trimmed pipe rows, escaped pipes, Unicode/CJK width, CSV/TSV conversion, sorting, and row/column edits.
- Kept the non-conflicting Tab plus Ctrl+Alt+Shift shortcut scheme from 9.0.0.
- Built the JetBrains IDE plugin package on GitHub Actions.
- Included SHA-256 sums for release verification.
## Validation
- GitHub Actions release build completed with smoke tests, coverage checks, baseline Plugin Verifier, and core performance benchmarks.
EOF
assets=("${files[@]}" SHA256SUMS.txt)
if [ -n "$marketplace_doc" ]; then
assets+=("$marketplace_doc")
fi
if gh release view "$TAG_NAME" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then
gh release upload "$TAG_NAME" "${assets[@]}" --repo "$GITHUB_REPOSITORY" --clobber
gh release edit "$TAG_NAME" --repo "$GITHUB_REPOSITORY" --title "Markdown Table Editor $VERSION" --notes-file release-notes.md --latest
else
gh release create "$TAG_NAME" "${assets[@]}" --repo "$GITHUB_REPOSITORY" --target "$GITHUB_SHA" --title "Markdown Table Editor $VERSION" --notes-file release-notes.md --latest
fi