From 74cccbd0a15ef07827deed2920515cef5c5e0250 Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Mon, 27 Apr 2026 16:23:10 +0200 Subject: [PATCH 1/8] release 1.1.3 - Performance improvements --- .plugin-data | 2 +- .wordpress-org/blueprints/blueprint.json | 2 +- CHANGELOG.md | 4 ++++ blockparty-tabs.php | 4 ++-- readme.txt | 4 ++++ src/blockparty-tabs-nav-item/block.json | 2 +- src/blockparty-tabs-nav/block.json | 2 +- src/blockparty-tabs-panel-item/block.json | 2 +- src/blockparty-tabs-panels/block.json | 2 +- src/blockparty-tabs/block.json | 2 +- 10 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.plugin-data b/.plugin-data index 1b94983..ff53658 100644 --- a/.plugin-data +++ b/.plugin-data @@ -1,4 +1,4 @@ { - "version": "1.1.2", + "version": "1.1.3", "slug": "blockparty-tabs" } diff --git a/.wordpress-org/blueprints/blueprint.json b/.wordpress-org/blueprints/blueprint.json index 9e4b1c8..c3b6a21 100644 --- a/.wordpress-org/blueprints/blueprint.json +++ b/.wordpress-org/blueprints/blueprint.json @@ -11,7 +11,7 @@ "pluginData": { "resource": "git:directory", "url": "https://github.com/BeAPI/blockparty-tabs", - "ref": "1.1.2", + "ref": "1.1.3", "refType": "tag" }, "options": { diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bbebbe..ec6f75a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.1.3 - 2026-04-27 + +- Performance improvements + ## 1.1.2 - 2026-04-24 - Fix css for nested tabs block diff --git a/blockparty-tabs.php b/blockparty-tabs.php index d7d5296..a9bbbab 100644 --- a/blockparty-tabs.php +++ b/blockparty-tabs.php @@ -4,7 +4,7 @@ * Description: Accessible Tabs block for WordPress gutenberg. * Requires at least: 6.2 * Requires PHP: 8.1 - * Version: 1.1.2 + * Version: 1.1.3 * Author: Be API Technical team * Author URI: https://beapi.fr * License: GPL-2.0-or-later @@ -14,7 +14,7 @@ namespace Blockparty\Tabs; -define( 'BLOCKPARTY_TABS_VERSION', '1.1.2' ); +define( 'BLOCKPARTY_TABS_VERSION', '1.1.3' ); define( 'BLOCKPARTY_TABS_URL', plugin_dir_url( __FILE__ ) ); define( 'BLOCKPARTY_TABS_DIR', plugin_dir_path( __FILE__ ) ); define( 'BLOCKPARTY_TABS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); diff --git a/readme.txt b/readme.txt index 28f8f03..8fb5c20 100644 --- a/readme.txt +++ b/readme.txt @@ -31,6 +31,10 @@ directory take precedence. For example, `/assets/screenshot-1.png` would win ove == Changelog == += 1.1.3 = + +* Performance improvements + = 1.1.2 = * Fix css for nested tabs block diff --git a/src/blockparty-tabs-nav-item/block.json b/src/blockparty-tabs-nav-item/block.json index d49076e..40d356e 100644 --- a/src/blockparty-tabs-nav-item/block.json +++ b/src/blockparty-tabs-nav-item/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-nav-item", - "version": "1.1.2", + "version": "1.1.3", "title": "Tab", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs-nav/block.json b/src/blockparty-tabs-nav/block.json index 5af7efe..14a8f55 100644 --- a/src/blockparty-tabs-nav/block.json +++ b/src/blockparty-tabs-nav/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-nav", - "version": "1.1.2", + "version": "1.1.3", "title": "Tabs list", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs-panel-item/block.json b/src/blockparty-tabs-panel-item/block.json index b91dc84..317f215 100644 --- a/src/blockparty-tabs-panel-item/block.json +++ b/src/blockparty-tabs-panel-item/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-panel-item", - "version": "1.1.2", + "version": "1.1.3", "title": "Panel", "category": "widgets", "icon": "layout", diff --git a/src/blockparty-tabs-panels/block.json b/src/blockparty-tabs-panels/block.json index fb937e5..e3c943e 100644 --- a/src/blockparty-tabs-panels/block.json +++ b/src/blockparty-tabs-panels/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-panels", - "version": "1.1.2", + "version": "1.1.3", "title": "Panels", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs/block.json b/src/blockparty-tabs/block.json index 151b963..d4e8aa2 100644 --- a/src/blockparty-tabs/block.json +++ b/src/blockparty-tabs/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs", - "version": "1.1.2", + "version": "1.1.3", "title": "Tabs", "category": "widgets", "description": "Accessible tabs block", From c4b1bd1952552878614bb20cbd8ead185243a4af Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Mon, 3 Aug 2026 17:19:16 +0200 Subject: [PATCH 2/8] feat perf remove window laod --- src/blockparty-tabs/script.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/blockparty-tabs/script.js b/src/blockparty-tabs/script.js index 8d02185..5e55a5a 100644 --- a/src/blockparty-tabs/script.js +++ b/src/blockparty-tabs/script.js @@ -136,11 +136,22 @@ class TabsAutomatic { } } -// Initialize tablist - -window.addEventListener( 'load', function () { +/** + * Initialize all tablist widgets on the page. + * + * @since 1.0.0 + * @return {void} + */ +function initTabs() { const tablists = document.querySelectorAll( '.wp-block-blockparty-tabs' ); for ( let i = 0; i < tablists.length; i++ ) { new TabsAutomatic( tablists[ i ] ); } -} ); +} + +// Deferred scripts run after HTML is parsed; init immediately when ready. +if ( document.readyState === 'loading' ) { + document.addEventListener( 'DOMContentLoaded', initTabs ); +} else { + initTabs(); +} From 24422af9abdd5b5c5fe2a1b39a92d9cada7dd5a4 Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Tue, 4 Aug 2026 11:48:43 +0200 Subject: [PATCH 3/8] feat add script to bump verision --- .distignore | 1 + package.json | 5 +- scripts/bump-version.js | 339 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 343 insertions(+), 2 deletions(-) create mode 100644 scripts/bump-version.js diff --git a/.distignore b/.distignore index 509b66b..544ea62 100644 --- a/.distignore +++ b/.distignore @@ -3,6 +3,7 @@ /.wordpress-org /node_modules /src +/scripts .distignore .editorconfig diff --git a/package.json b/package.json index 675ba1a..e962ec3 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "stop:env": "wp-env stop", "env": "wp-env", "make-pot": "wp i18n make-pot . languages/blockparty-tabs.pot --slug=blockparty-tabs --domain=blockparty-tabs --exclude=node_modules,src", - "make-json": "wp i18n make-json languages/ --no-purge" + "make-json": "wp i18n make-json languages/ --no-purge", + "bump": "node scripts/bump-version.js" }, "devDependencies": { "@wordpress/block-editor": "^12.22.0", @@ -39,4 +40,4 @@ "volta": { "node": "24.15.0" } -} \ No newline at end of file +} diff --git a/scripts/bump-version.js b/scripts/bump-version.js new file mode 100644 index 0000000..f0d8c88 --- /dev/null +++ b/scripts/bump-version.js @@ -0,0 +1,339 @@ +#!/usr/bin/env node +/** + * Bump the plugin version across project metadata, blocks, and docs. + * + * Usage: + * npm run bump -- patch + * npm run bump -- minor + * npm run bump -- major + * npm run bump -- 1.2.0 + * + * @package blockparty-tabs + */ + +const fs = require( 'fs' ); +const path = require( 'path' ); + +const ROOT = path.resolve( __dirname, '..' ); +const SEMVER_RE = /^\d+\.\d+\.\d+$/; + +const FILES = { + pluginData: '.plugin-data', + packageJson: 'package.json', + packageLock: 'package-lock.json', + mainPhp: 'blockparty-tabs.php', + changelog: 'CHANGELOG.md', + readmeMd: 'README.md', + readmeTxt: 'readme.txt', + blockJson: [ + 'src/blockparty-tabs/block.json', + 'src/blockparty-tabs-nav/block.json', + 'src/blockparty-tabs-nav-item/block.json', + 'src/blockparty-tabs-panel-item/block.json', + 'src/blockparty-tabs-panels/block.json', + ], +}; + +/** + * Read a UTF-8 file relative to the plugin root. + * + * @param {string} relativePath Relative path from plugin root. + * @return {string} File contents. + */ +function read( relativePath ) { + return fs.readFileSync( path.join( ROOT, relativePath ), 'utf8' ); +} + +/** + * Write a UTF-8 file relative to the plugin root. + * + * @param {string} relativePath Relative path from plugin root. + * @param {string} contents New file contents. + * @return {void} + */ +function write( relativePath, contents ) { + fs.writeFileSync( path.join( ROOT, relativePath ), contents ); +} + +/** + * Parse a semver string into numeric parts. + * + * @param {string} version Semver string (x.y.z). + * @return {{ major: number, minor: number, patch: number }} Parsed parts. + */ +function parseVersion( version ) { + if ( ! SEMVER_RE.test( version ) ) { + throw new Error( `Invalid version "${ version }". Expected x.y.z.` ); + } + + const [ major, minor, patch ] = version.split( '.' ).map( Number ); + return { major, minor, patch }; +} + +/** + * Resolve the next version from a bump type or explicit version. + * + * @param {string} current Current version. + * @param {string} input "patch" | "minor" | "major" | "x.y.z". + * @return {string} Next version. + */ +function resolveNextVersion( current, input ) { + if ( SEMVER_RE.test( input ) ) { + return input; + } + + const { major, minor, patch } = parseVersion( current ); + + switch ( input ) { + case 'major': + return `${ major + 1 }.0.0`; + case 'minor': + return `${ major }.${ minor + 1 }.0`; + case 'patch': + return `${ major }.${ minor }.${ patch + 1 }`; + default: + throw new Error( + `Unknown bump argument "${ input }". Use patch, minor, major, or an explicit x.y.z version.` + ); + } +} + +/** + * Replace the top-level "version" field in a JSON file, preserving formatting. + * + * @param {string} relativePath Relative path from plugin root. + * @param {string} newVersion New version. + * @return {void} + */ +function bumpJsonVersion( relativePath, newVersion ) { + const contents = read( relativePath ); + const updated = contents.replace( + /"version"\s*:\s*"[^"]+"/, + `"version": "${ newVersion }"` + ); + + if ( updated === contents ) { + throw new Error( `Could not find a "version" field in ${ relativePath }.` ); + } + + write( relativePath, updated ); +} + +/** + * Update package-lock.json root package version fields. + * + * @param {string} newVersion New version. + * @return {void} + */ +function bumpPackageLock( newVersion ) { + const relativePath = FILES.packageLock; + const lockPath = path.join( ROOT, relativePath ); + + if ( ! fs.existsSync( lockPath ) ) { + return; + } + + let contents = read( relativePath ); + + // Root "version" field. + contents = contents.replace( + /^(\s*"version"\s*:\s*")[^"]+(")/m, + `$1${ newVersion }$2` + ); + + // packages[""].version field (npm lockfile v2/v3). + contents = contents.replace( + /("packages"\s*:\s*\{\s*""\s*:\s*\{[^}]*"version"\s*:\s*")[^"]+(")/s, + `$1${ newVersion }$2` + ); + + write( relativePath, contents ); +} + +/** + * Update the main plugin PHP header and version constant. + * + * @param {string} newVersion New version. + * @return {void} + */ +function bumpMainPhp( newVersion ) { + const relativePath = FILES.mainPhp; + let contents = read( relativePath ); + + contents = contents.replace( + /( \* Version:\s*)[\d.]+/, + `$1${ newVersion }` + ); + contents = contents.replace( + /(define\(\s*'BLOCKPARTY_TABS_VERSION',\s*')[^']+(')/, + `$1${ newVersion }$2` + ); + + const hasHeader = new RegExp( + `\\* Version:\\s*${ newVersion.replace( /\./g, '\\.' ) }` + ).test( contents ); + const hasConstant = contents.includes( + `define( 'BLOCKPARTY_TABS_VERSION', '${ newVersion }' )` + ); + + if ( ! hasHeader || ! hasConstant ) { + throw new Error( `Failed to bump version in ${ relativePath }.` ); + } + + write( relativePath, contents ); +} + +/** + * Prepend a Keep a Changelog entry for the new version. + * + * @param {string} newVersion New version. + * @return {void} + */ +function bumpChangelog( newVersion ) { + const relativePath = FILES.changelog; + const contents = read( relativePath ); + const today = new Date().toISOString().slice( 0, 10 ); + const heading = `## ${ newVersion } - ${ today }`; + + if ( contents.includes( `## ${ newVersion }` ) ) { + console.log( ` skip ${ relativePath } (entry for ${ newVersion } already exists)` ); + return; + } + + const entry = `${ heading }\n\n- \n\n`; + const marker = + 'and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n'; + + if ( ! contents.includes( marker ) ) { + throw new Error( `Could not find changelog intro marker in ${ relativePath }.` ); + } + + write( relativePath, contents.replace( marker, `${ marker }${ entry }` ) ); +} + +/** + * Update Stable tag and prepend a wordpress.org changelog section. + * + * @param {string} newVersion New version. + * @return {void} + */ +function bumpReadmeTxt( newVersion ) { + const relativePath = FILES.readmeTxt; + let contents = read( relativePath ); + + contents = contents.replace( + /(Stable tag:\s*)[\d.]+/, + `$1${ newVersion }` + ); + + const section = `= ${ newVersion } =`; + if ( ! contents.includes( section ) ) { + const marker = '== Changelog ==\n\n'; + if ( ! contents.includes( marker ) ) { + throw new Error( `Could not find changelog section in ${ relativePath }.` ); + } + contents = contents.replace( + marker, + `${ marker }${ section }\n\n* \n\n` + ); + } + + write( relativePath, contents ); +} + +/** + * Replace occurrences of the old version in README.md when present. + * + * @param {string} oldVersion Previous version. + * @param {string} newVersion New version. + * @return {void} + */ +function bumpReadmeMd( oldVersion, newVersion ) { + const relativePath = FILES.readmeMd; + const contents = read( relativePath ); + + if ( ! contents.includes( oldVersion ) ) { + console.log( ` skip ${ relativePath } (no version string to update)` ); + return; + } + + write( relativePath, contents.split( oldVersion ).join( newVersion ) ); +} + +/** + * Print usage help and exit. + * + * @param {number} code Exit code. + * @return {void} + */ +function usage( code = 0 ) { + console.log( `Usage: + npm run bump -- + +Examples: + npm run bump -- patch + npm run bump -- minor + npm run bump -- 1.2.0` ); + process.exit( code ); +} + +/** + * Main entry point. + * + * @return {void} + */ +function main() { + const arg = process.argv[ 2 ]; + + if ( ! arg || arg === '-h' || arg === '--help' ) { + usage( arg ? 0 : 1 ); + } + + const current = JSON.parse( read( FILES.pluginData ) ).version; + parseVersion( current ); + + const next = resolveNextVersion( current, arg ); + + if ( next === current ) { + console.error( `Version is already ${ current }.` ); + process.exit( 1 ); + } + + console.log( `Bumping version: ${ current } → ${ next }` ); + + bumpJsonVersion( FILES.pluginData, next ); + console.log( ` updated ${ FILES.pluginData }` ); + + bumpJsonVersion( FILES.packageJson, next ); + console.log( ` updated ${ FILES.packageJson }` ); + + bumpPackageLock( next ); + if ( fs.existsSync( path.join( ROOT, FILES.packageLock ) ) ) { + console.log( ` updated ${ FILES.packageLock }` ); + } + + for ( const blockJson of FILES.blockJson ) { + bumpJsonVersion( blockJson, next ); + console.log( ` updated ${ blockJson }` ); + } + + bumpMainPhp( next ); + console.log( ` updated ${ FILES.mainPhp }` ); + + bumpChangelog( next ); + console.log( ` updated ${ FILES.changelog }` ); + + bumpReadmeTxt( next ); + console.log( ` updated ${ FILES.readmeTxt }` ); + + bumpReadmeMd( current, next ); + + console.log( '\nDone. Fill in CHANGELOG.md / readme.txt notes before releasing.' ); +} + +try { + main(); +} catch ( error ) { + console.error( error.message || error ); + process.exit( 1 ); +} From 829c682e425d63c31e7027b9a05ce1e4620cc1fd Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Wed, 5 Aug 2026 09:54:38 +0200 Subject: [PATCH 4/8] add blueprint bump version --- .gitattributes | 1 + scripts/bump-version.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/.gitattributes b/.gitattributes index 9be1ade..2464e68 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,6 +2,7 @@ /.github export-ignore /vendor/ export-ignore -diff /node_modules export-ignore +/scripts/ export-ignore /.distignore export-ignore /.editorconfig export-ignore diff --git a/scripts/bump-version.js b/scripts/bump-version.js index f0d8c88..5f122bf 100644 --- a/scripts/bump-version.js +++ b/scripts/bump-version.js @@ -25,6 +25,7 @@ const FILES = { changelog: 'CHANGELOG.md', readmeMd: 'README.md', readmeTxt: 'readme.txt', + blueprint: '.wordpress-org/blueprints/blueprint.json', blockJson: [ 'src/blockparty-tabs/block.json', 'src/blockparty-tabs-nav/block.json', @@ -241,6 +242,27 @@ function bumpReadmeTxt( newVersion ) { write( relativePath, contents ); } +/** + * Update the Playground blueprint git tag ref. + * + * @param {string} newVersion New version. + * @return {void} + */ +function bumpBlueprint( newVersion ) { + const relativePath = FILES.blueprint; + const contents = read( relativePath ); + const updated = contents.replace( + /"ref"\s*:\s*"[^"]+"/, + `"ref": "${ newVersion }"` + ); + + if ( updated === contents ) { + throw new Error( `Could not find a "ref" field in ${ relativePath }.` ); + } + + write( relativePath, updated ); +} + /** * Replace occurrences of the old version in README.md when present. * @@ -326,6 +348,9 @@ function main() { bumpReadmeTxt( next ); console.log( ` updated ${ FILES.readmeTxt }` ); + bumpBlueprint( next ); + console.log( ` updated ${ FILES.blueprint }` ); + bumpReadmeMd( current, next ); console.log( '\nDone. Fill in CHANGELOG.md / readme.txt notes before releasing.' ); From 4283e7f6ff468f70fbecc5985705043b969d6265 Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Wed, 5 Aug 2026 16:12:59 +0200 Subject: [PATCH 5/8] refactor bump script --- .distignore | 2 +- .gitattributes | 2 +- bin/bump.sh | 260 ++++++++++++++++++++++++++++ package.json | 2 +- scripts/bump-version.js | 364 ---------------------------------------- 5 files changed, 263 insertions(+), 367 deletions(-) create mode 100644 bin/bump.sh delete mode 100644 scripts/bump-version.js diff --git a/.distignore b/.distignore index 544ea62..15fdcd0 100644 --- a/.distignore +++ b/.distignore @@ -3,7 +3,7 @@ /.wordpress-org /node_modules /src -/scripts +/bin .distignore .editorconfig diff --git a/.gitattributes b/.gitattributes index 2464e68..acf28bd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,7 +2,7 @@ /.github export-ignore /vendor/ export-ignore -diff /node_modules export-ignore -/scripts/ export-ignore +/bin export-ignore /.distignore export-ignore /.editorconfig export-ignore diff --git a/bin/bump.sh b/bin/bump.sh new file mode 100644 index 0000000..a26218d --- /dev/null +++ b/bin/bump.sh @@ -0,0 +1,260 @@ +#!/usr/bin/env bash +# +# Bump the plugin version across project metadata, blocks, and docs. +# +# Usage (no chmod required): +# bash bin/bump.sh patch +# bash bin/bump.sh minor +# bash bin/bump.sh major +# bash bin/bump.sh 1.2.0 +# npm run bump -- patch +# npm run bump -- 1.2.0 +# +# macOS sed (-i '') is assumed. +# + +set -euo pipefail + +# --------------------------------------------------------------------------- +# Assets — add or remove paths here +# --------------------------------------------------------------------------- + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" + +# JSON files that expose a top-level "version" field +JSON_VERSION_FILES=( + ".plugin-data" + "package.json" + "src/blockparty-tabs/block.json" + "src/blockparty-tabs-nav/block.json" + "src/blockparty-tabs-nav-item/block.json" + "src/blockparty-tabs-panel-item/block.json" + "src/blockparty-tabs-panels/block.json" +) + +PACKAGE_LOCK_FILE="package-lock.json" +PHP_FILE="blockparty-tabs.php" +README_TXT="readme.txt" +CHANGELOG="CHANGELOG.md" +README_MD="README.md" +BLUEPRINT=".wordpress-org/blueprints/blueprint.json" + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +UPDATED_FILES=() + +log_updated() { + UPDATED_FILES+=( "$1" ) +} + +require_file() { + local file="$1" + if [[ ! -f "${ROOT_DIR}/${file}" ]]; then + echo "Error: Missing file ${file}" >&2 + exit 1 + fi +} + +replace_json_version() { + local file="$1" + local path="${ROOT_DIR}/${file}" + require_file "${file}" + sed -i '' "s/\"version\": \"[0-9]*\.[0-9]*\.[0-9]*\"/\"version\": \"${VERSION}\"/" "${path}" + log_updated "${file}" +} + +usage() { + local code="${1:-0}" + echo "Usage: bash bin/bump.sh " + echo "" + echo "Examples:" + echo " bash bin/bump.sh patch" + echo " bash bin/bump.sh minor" + echo " bash bin/bump.sh 1.2.0" + echo " npm run bump -- patch" + exit "${code}" +} + +resolve_version() { + local current="$1" + local input="$2" + + if [[ "${input}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "${input}" + return + fi + + local major minor patch + IFS='.' read -r major minor patch <<< "${current}" + + case "${input}" in + major) + echo "$((major + 1)).0.0" + ;; + minor) + echo "${major}.$((minor + 1)).0" + ;; + patch) + echo "${major}.${minor}.$((patch + 1))" + ;; + *) + echo "Error: Unknown bump argument \"${input}\". Use patch, minor, major, or an explicit x.y.z version." >&2 + exit 1 + ;; + esac +} + +# --------------------------------------------------------------------------- +# Args +# --------------------------------------------------------------------------- + +if [[ -z "${1:-}" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then + usage "$([[ -n "${1:-}" ]] && echo 0 || echo 1)" +fi + +INPUT="$1" + +require_file ".plugin-data" +CURRENT="$(sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([0-9]*\.[0-9]*\.[0-9]*\)".*/\1/p' "${ROOT_DIR}/.plugin-data" | head -n 1)" + +if [[ -z "${CURRENT}" ]]; then + echo "Error: Could not read current version from .plugin-data" >&2 + exit 1 +fi + +if ! [[ "${CURRENT}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Error: Invalid current version \"${CURRENT}\" in .plugin-data" >&2 + exit 1 +fi + +VERSION="$(resolve_version "${CURRENT}" "${INPUT}")" + +if [[ "${VERSION}" == "${CURRENT}" ]]; then + echo "Error: Version is already ${CURRENT}" >&2 + exit 1 +fi + +echo "Bumping version: ${CURRENT} → ${VERSION}" + +# --------------------------------------------------------------------------- +# JSON version fields +# --------------------------------------------------------------------------- + +for file in "${JSON_VERSION_FILES[@]}"; do + replace_json_version "${file}" +done + +# --------------------------------------------------------------------------- +# package-lock.json (root + packages[""] only) +# --------------------------------------------------------------------------- + +if [[ -f "${ROOT_DIR}/${PACKAGE_LOCK_FILE}" ]]; then + # Root "version" (near top of file) + sed -i '' '1,5s/"version": "[0-9]*\.[0-9]*\.[0-9]*"/"version": "'"${VERSION}"'"/' "${ROOT_DIR}/${PACKAGE_LOCK_FILE}" + # packages[""].version + sed -i '' '6,12s/"version": "[0-9]*\.[0-9]*\.[0-9]*"/"version": "'"${VERSION}"'"/' "${ROOT_DIR}/${PACKAGE_LOCK_FILE}" + log_updated "${PACKAGE_LOCK_FILE}" +fi + +# --------------------------------------------------------------------------- +# Main plugin PHP +# --------------------------------------------------------------------------- + +require_file "${PHP_FILE}" +sed -i '' "s/^\( \* Version:[[:space:]]*\)[0-9]*\.[0-9]*\.[0-9]*/\1${VERSION}/" "${ROOT_DIR}/${PHP_FILE}" +sed -i '' "s/define( 'BLOCKPARTY_TABS_VERSION', '[0-9]*\.[0-9]*\.[0-9]*' )/define( 'BLOCKPARTY_TABS_VERSION', '${VERSION}' )/" "${ROOT_DIR}/${PHP_FILE}" +log_updated "${PHP_FILE}" + +# --------------------------------------------------------------------------- +# readme.txt — Stable tag + changelog section +# --------------------------------------------------------------------------- + +require_file "${README_TXT}" +sed -i '' "s/^\(Stable tag:[[:space:]]*\)[0-9]*\.[0-9]*\.[0-9]*/\1${VERSION}/" "${ROOT_DIR}/${README_TXT}" + +if ! grep -q "^= ${VERSION} =$" "${ROOT_DIR}/${README_TXT}"; then + awk -v ver="${VERSION}" ' + { + print + if ( $0 == "== Changelog ==" ) { + print "" + print "= " ver " =" + print "" + print "* " + print "" + getline + # Consume the blank line that followed "== Changelog ==". + if ( $0 != "" ) { + print + } + } + } + ' "${ROOT_DIR}/${README_TXT}" > "${ROOT_DIR}/${README_TXT}.tmp" + mv "${ROOT_DIR}/${README_TXT}.tmp" "${ROOT_DIR}/${README_TXT}" +fi +log_updated "${README_TXT}" + +# --------------------------------------------------------------------------- +# CHANGELOG.md — Keep a Changelog entry +# --------------------------------------------------------------------------- + +require_file "${CHANGELOG}" +TODAY="$(date +%Y-%m-%d)" + +if grep -q "^## ${VERSION}" "${ROOT_DIR}/${CHANGELOG}"; then + echo " skip ${CHANGELOG} (entry for ${VERSION} already exists)" +else + awk -v ver="${VERSION}" -v today="${TODAY}" ' + { + print + if ( !inserted && index( $0, "Semantic Versioning" ) ) { + getline + print "" + print "## " ver " - " today + print "" + print "- " + print "" + inserted = 1 + # Marker is followed by a blank line; skip the consumed blank. + next + } + } + ' "${ROOT_DIR}/${CHANGELOG}" > "${ROOT_DIR}/${CHANGELOG}.tmp" + mv "${ROOT_DIR}/${CHANGELOG}.tmp" "${ROOT_DIR}/${CHANGELOG}" + log_updated "${CHANGELOG}" +fi + +# --------------------------------------------------------------------------- +# Playground blueprint tag ref +# --------------------------------------------------------------------------- + +require_file "${BLUEPRINT}" +sed -i '' "s/\"ref\": \"[0-9]*\.[0-9]*\.[0-9]*\"/\"ref\": \"${VERSION}\"/" "${ROOT_DIR}/${BLUEPRINT}" +log_updated "${BLUEPRINT}" + +# --------------------------------------------------------------------------- +# README.md — replace old version string when present +# --------------------------------------------------------------------------- + +if [[ -f "${ROOT_DIR}/${README_MD}" ]]; then + if grep -q "${CURRENT}" "${ROOT_DIR}/${README_MD}"; then + sed -i '' "s/${CURRENT}/${VERSION}/g" "${ROOT_DIR}/${README_MD}" + log_updated "${README_MD}" + else + echo " skip ${README_MD} (no version string to update)" + fi +fi + +# --------------------------------------------------------------------------- +# Summary +# --------------------------------------------------------------------------- + +echo "" +echo "Version updated to ${VERSION} in:" +for file in "${UPDATED_FILES[@]}"; do + echo " - ${file}" +done +echo "" +echo "Done. Fill in CHANGELOG.md / readme.txt notes before releasing." diff --git a/package.json b/package.json index e962ec3..772056f 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "env": "wp-env", "make-pot": "wp i18n make-pot . languages/blockparty-tabs.pot --slug=blockparty-tabs --domain=blockparty-tabs --exclude=node_modules,src", "make-json": "wp i18n make-json languages/ --no-purge", - "bump": "node scripts/bump-version.js" + "bump": "bash bin/bump.sh" }, "devDependencies": { "@wordpress/block-editor": "^12.22.0", diff --git a/scripts/bump-version.js b/scripts/bump-version.js deleted file mode 100644 index 5f122bf..0000000 --- a/scripts/bump-version.js +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/env node -/** - * Bump the plugin version across project metadata, blocks, and docs. - * - * Usage: - * npm run bump -- patch - * npm run bump -- minor - * npm run bump -- major - * npm run bump -- 1.2.0 - * - * @package blockparty-tabs - */ - -const fs = require( 'fs' ); -const path = require( 'path' ); - -const ROOT = path.resolve( __dirname, '..' ); -const SEMVER_RE = /^\d+\.\d+\.\d+$/; - -const FILES = { - pluginData: '.plugin-data', - packageJson: 'package.json', - packageLock: 'package-lock.json', - mainPhp: 'blockparty-tabs.php', - changelog: 'CHANGELOG.md', - readmeMd: 'README.md', - readmeTxt: 'readme.txt', - blueprint: '.wordpress-org/blueprints/blueprint.json', - blockJson: [ - 'src/blockparty-tabs/block.json', - 'src/blockparty-tabs-nav/block.json', - 'src/blockparty-tabs-nav-item/block.json', - 'src/blockparty-tabs-panel-item/block.json', - 'src/blockparty-tabs-panels/block.json', - ], -}; - -/** - * Read a UTF-8 file relative to the plugin root. - * - * @param {string} relativePath Relative path from plugin root. - * @return {string} File contents. - */ -function read( relativePath ) { - return fs.readFileSync( path.join( ROOT, relativePath ), 'utf8' ); -} - -/** - * Write a UTF-8 file relative to the plugin root. - * - * @param {string} relativePath Relative path from plugin root. - * @param {string} contents New file contents. - * @return {void} - */ -function write( relativePath, contents ) { - fs.writeFileSync( path.join( ROOT, relativePath ), contents ); -} - -/** - * Parse a semver string into numeric parts. - * - * @param {string} version Semver string (x.y.z). - * @return {{ major: number, minor: number, patch: number }} Parsed parts. - */ -function parseVersion( version ) { - if ( ! SEMVER_RE.test( version ) ) { - throw new Error( `Invalid version "${ version }". Expected x.y.z.` ); - } - - const [ major, minor, patch ] = version.split( '.' ).map( Number ); - return { major, minor, patch }; -} - -/** - * Resolve the next version from a bump type or explicit version. - * - * @param {string} current Current version. - * @param {string} input "patch" | "minor" | "major" | "x.y.z". - * @return {string} Next version. - */ -function resolveNextVersion( current, input ) { - if ( SEMVER_RE.test( input ) ) { - return input; - } - - const { major, minor, patch } = parseVersion( current ); - - switch ( input ) { - case 'major': - return `${ major + 1 }.0.0`; - case 'minor': - return `${ major }.${ minor + 1 }.0`; - case 'patch': - return `${ major }.${ minor }.${ patch + 1 }`; - default: - throw new Error( - `Unknown bump argument "${ input }". Use patch, minor, major, or an explicit x.y.z version.` - ); - } -} - -/** - * Replace the top-level "version" field in a JSON file, preserving formatting. - * - * @param {string} relativePath Relative path from plugin root. - * @param {string} newVersion New version. - * @return {void} - */ -function bumpJsonVersion( relativePath, newVersion ) { - const contents = read( relativePath ); - const updated = contents.replace( - /"version"\s*:\s*"[^"]+"/, - `"version": "${ newVersion }"` - ); - - if ( updated === contents ) { - throw new Error( `Could not find a "version" field in ${ relativePath }.` ); - } - - write( relativePath, updated ); -} - -/** - * Update package-lock.json root package version fields. - * - * @param {string} newVersion New version. - * @return {void} - */ -function bumpPackageLock( newVersion ) { - const relativePath = FILES.packageLock; - const lockPath = path.join( ROOT, relativePath ); - - if ( ! fs.existsSync( lockPath ) ) { - return; - } - - let contents = read( relativePath ); - - // Root "version" field. - contents = contents.replace( - /^(\s*"version"\s*:\s*")[^"]+(")/m, - `$1${ newVersion }$2` - ); - - // packages[""].version field (npm lockfile v2/v3). - contents = contents.replace( - /("packages"\s*:\s*\{\s*""\s*:\s*\{[^}]*"version"\s*:\s*")[^"]+(")/s, - `$1${ newVersion }$2` - ); - - write( relativePath, contents ); -} - -/** - * Update the main plugin PHP header and version constant. - * - * @param {string} newVersion New version. - * @return {void} - */ -function bumpMainPhp( newVersion ) { - const relativePath = FILES.mainPhp; - let contents = read( relativePath ); - - contents = contents.replace( - /( \* Version:\s*)[\d.]+/, - `$1${ newVersion }` - ); - contents = contents.replace( - /(define\(\s*'BLOCKPARTY_TABS_VERSION',\s*')[^']+(')/, - `$1${ newVersion }$2` - ); - - const hasHeader = new RegExp( - `\\* Version:\\s*${ newVersion.replace( /\./g, '\\.' ) }` - ).test( contents ); - const hasConstant = contents.includes( - `define( 'BLOCKPARTY_TABS_VERSION', '${ newVersion }' )` - ); - - if ( ! hasHeader || ! hasConstant ) { - throw new Error( `Failed to bump version in ${ relativePath }.` ); - } - - write( relativePath, contents ); -} - -/** - * Prepend a Keep a Changelog entry for the new version. - * - * @param {string} newVersion New version. - * @return {void} - */ -function bumpChangelog( newVersion ) { - const relativePath = FILES.changelog; - const contents = read( relativePath ); - const today = new Date().toISOString().slice( 0, 10 ); - const heading = `## ${ newVersion } - ${ today }`; - - if ( contents.includes( `## ${ newVersion }` ) ) { - console.log( ` skip ${ relativePath } (entry for ${ newVersion } already exists)` ); - return; - } - - const entry = `${ heading }\n\n- \n\n`; - const marker = - 'and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n'; - - if ( ! contents.includes( marker ) ) { - throw new Error( `Could not find changelog intro marker in ${ relativePath }.` ); - } - - write( relativePath, contents.replace( marker, `${ marker }${ entry }` ) ); -} - -/** - * Update Stable tag and prepend a wordpress.org changelog section. - * - * @param {string} newVersion New version. - * @return {void} - */ -function bumpReadmeTxt( newVersion ) { - const relativePath = FILES.readmeTxt; - let contents = read( relativePath ); - - contents = contents.replace( - /(Stable tag:\s*)[\d.]+/, - `$1${ newVersion }` - ); - - const section = `= ${ newVersion } =`; - if ( ! contents.includes( section ) ) { - const marker = '== Changelog ==\n\n'; - if ( ! contents.includes( marker ) ) { - throw new Error( `Could not find changelog section in ${ relativePath }.` ); - } - contents = contents.replace( - marker, - `${ marker }${ section }\n\n* \n\n` - ); - } - - write( relativePath, contents ); -} - -/** - * Update the Playground blueprint git tag ref. - * - * @param {string} newVersion New version. - * @return {void} - */ -function bumpBlueprint( newVersion ) { - const relativePath = FILES.blueprint; - const contents = read( relativePath ); - const updated = contents.replace( - /"ref"\s*:\s*"[^"]+"/, - `"ref": "${ newVersion }"` - ); - - if ( updated === contents ) { - throw new Error( `Could not find a "ref" field in ${ relativePath }.` ); - } - - write( relativePath, updated ); -} - -/** - * Replace occurrences of the old version in README.md when present. - * - * @param {string} oldVersion Previous version. - * @param {string} newVersion New version. - * @return {void} - */ -function bumpReadmeMd( oldVersion, newVersion ) { - const relativePath = FILES.readmeMd; - const contents = read( relativePath ); - - if ( ! contents.includes( oldVersion ) ) { - console.log( ` skip ${ relativePath } (no version string to update)` ); - return; - } - - write( relativePath, contents.split( oldVersion ).join( newVersion ) ); -} - -/** - * Print usage help and exit. - * - * @param {number} code Exit code. - * @return {void} - */ -function usage( code = 0 ) { - console.log( `Usage: - npm run bump -- - -Examples: - npm run bump -- patch - npm run bump -- minor - npm run bump -- 1.2.0` ); - process.exit( code ); -} - -/** - * Main entry point. - * - * @return {void} - */ -function main() { - const arg = process.argv[ 2 ]; - - if ( ! arg || arg === '-h' || arg === '--help' ) { - usage( arg ? 0 : 1 ); - } - - const current = JSON.parse( read( FILES.pluginData ) ).version; - parseVersion( current ); - - const next = resolveNextVersion( current, arg ); - - if ( next === current ) { - console.error( `Version is already ${ current }.` ); - process.exit( 1 ); - } - - console.log( `Bumping version: ${ current } → ${ next }` ); - - bumpJsonVersion( FILES.pluginData, next ); - console.log( ` updated ${ FILES.pluginData }` ); - - bumpJsonVersion( FILES.packageJson, next ); - console.log( ` updated ${ FILES.packageJson }` ); - - bumpPackageLock( next ); - if ( fs.existsSync( path.join( ROOT, FILES.packageLock ) ) ) { - console.log( ` updated ${ FILES.packageLock }` ); - } - - for ( const blockJson of FILES.blockJson ) { - bumpJsonVersion( blockJson, next ); - console.log( ` updated ${ blockJson }` ); - } - - bumpMainPhp( next ); - console.log( ` updated ${ FILES.mainPhp }` ); - - bumpChangelog( next ); - console.log( ` updated ${ FILES.changelog }` ); - - bumpReadmeTxt( next ); - console.log( ` updated ${ FILES.readmeTxt }` ); - - bumpBlueprint( next ); - console.log( ` updated ${ FILES.blueprint }` ); - - bumpReadmeMd( current, next ); - - console.log( '\nDone. Fill in CHANGELOG.md / readme.txt notes before releasing.' ); -} - -try { - main(); -} catch ( error ) { - console.error( error.message || error ); - process.exit( 1 ); -} From 5793d12913f2217a997223f3507999d11a279240 Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Tue, 4 Aug 2026 15:51:45 +0200 Subject: [PATCH 6/8] feat release 1.1.4 --- .plugin-data | 2 +- CHANGELOG.md | 4 ++++ blockparty-tabs.php | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- readme.txt | 6 +++++- src/blockparty-tabs-nav-item/block.json | 2 +- src/blockparty-tabs-nav/block.json | 2 +- src/blockparty-tabs-panel-item/block.json | 2 +- src/blockparty-tabs-panels/block.json | 2 +- src/blockparty-tabs/block.json | 2 +- 11 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.plugin-data b/.plugin-data index ff53658..10af834 100644 --- a/.plugin-data +++ b/.plugin-data @@ -1,4 +1,4 @@ { - "version": "1.1.3", + "version": "1.1.4", "slug": "blockparty-tabs" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ec6f75a..c0e1c1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 1.1.4 - 2026-08-04 + +- Performance improvements removed script blocking time. To allow the tabs to be loaded immediately. + ## 1.1.3 - 2026-04-27 - Performance improvements diff --git a/blockparty-tabs.php b/blockparty-tabs.php index a9bbbab..5e79ca0 100644 --- a/blockparty-tabs.php +++ b/blockparty-tabs.php @@ -4,7 +4,7 @@ * Description: Accessible Tabs block for WordPress gutenberg. * Requires at least: 6.2 * Requires PHP: 8.1 - * Version: 1.1.3 + * Version: 1.1.4 * Author: Be API Technical team * Author URI: https://beapi.fr * License: GPL-2.0-or-later @@ -14,7 +14,7 @@ namespace Blockparty\Tabs; -define( 'BLOCKPARTY_TABS_VERSION', '1.1.3' ); +define( 'BLOCKPARTY_TABS_VERSION', '1.1.4' ); define( 'BLOCKPARTY_TABS_URL', plugin_dir_url( __FILE__ ) ); define( 'BLOCKPARTY_TABS_DIR', plugin_dir_path( __FILE__ ) ); define( 'BLOCKPARTY_TABS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); diff --git a/package-lock.json b/package-lock.json index 9c1602c..2ef5588 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "blockparty-tabs", - "version": "1.1.1", + "version": "1.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "blockparty-tabs", - "version": "1.1.1", + "version": "1.1.4", "license": "GPL-2.0-or-later", "dependencies": { "@beapi/icons": "^1.2.5", diff --git a/package.json b/package.json index 772056f..ed467de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "blockparty-tabs", - "version": "1.1.1", + "version": "1.1.4", "description": "Accessible tabs block for WordPress", "author": "Be API Technical team", "license": "GPL-2.0-or-later", diff --git a/readme.txt b/readme.txt index 8fb5c20..f554a55 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: Be API Technical team Tags: block Tested up to: 6.0 -Stable tag: 1.1.2 +Stable tag: 1.1.4 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -31,6 +31,10 @@ directory take precedence. For example, `/assets/screenshot-1.png` would win ove == Changelog == += 1.1.4 = + +* Performance improvements removed script blocking time. To allow the tabs to be loaded immediately. + = 1.1.3 = * Performance improvements diff --git a/src/blockparty-tabs-nav-item/block.json b/src/blockparty-tabs-nav-item/block.json index 40d356e..1cb3e46 100644 --- a/src/blockparty-tabs-nav-item/block.json +++ b/src/blockparty-tabs-nav-item/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-nav-item", - "version": "1.1.3", + "version": "1.1.4", "title": "Tab", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs-nav/block.json b/src/blockparty-tabs-nav/block.json index 14a8f55..45b85e6 100644 --- a/src/blockparty-tabs-nav/block.json +++ b/src/blockparty-tabs-nav/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-nav", - "version": "1.1.3", + "version": "1.1.4", "title": "Tabs list", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs-panel-item/block.json b/src/blockparty-tabs-panel-item/block.json index 317f215..f80e6bc 100644 --- a/src/blockparty-tabs-panel-item/block.json +++ b/src/blockparty-tabs-panel-item/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-panel-item", - "version": "1.1.3", + "version": "1.1.4", "title": "Panel", "category": "widgets", "icon": "layout", diff --git a/src/blockparty-tabs-panels/block.json b/src/blockparty-tabs-panels/block.json index e3c943e..0189cc9 100644 --- a/src/blockparty-tabs-panels/block.json +++ b/src/blockparty-tabs-panels/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs-panels", - "version": "1.1.3", + "version": "1.1.4", "title": "Panels", "category": "widgets", "description": "Accessible tabs block item", diff --git a/src/blockparty-tabs/block.json b/src/blockparty-tabs/block.json index d4e8aa2..2a5610a 100644 --- a/src/blockparty-tabs/block.json +++ b/src/blockparty-tabs/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 2, "name": "blockparty/tabs", - "version": "1.1.3", + "version": "1.1.4", "title": "Tabs", "category": "widgets", "description": "Accessible tabs block", From 0696284c678ccc011a34d4582117771063b59647 Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Tue, 4 Aug 2026 16:31:48 +0200 Subject: [PATCH 7/8] update bluprint.json --- .wordpress-org/blueprints/blueprint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.wordpress-org/blueprints/blueprint.json b/.wordpress-org/blueprints/blueprint.json index c3b6a21..3cf27d1 100644 --- a/.wordpress-org/blueprints/blueprint.json +++ b/.wordpress-org/blueprints/blueprint.json @@ -11,7 +11,7 @@ "pluginData": { "resource": "git:directory", "url": "https://github.com/BeAPI/blockparty-tabs", - "ref": "1.1.3", + "ref": "1.1.4", "refType": "tag" }, "options": { From c998f62512ac26463244ad1d4b998942ec00743e Mon Sep 17 00:00:00 2001 From: Paolo Tesei Date: Wed, 5 Aug 2026 09:36:35 +0200 Subject: [PATCH 8/8] fix readme and changelogs --- CHANGELOG.md | 2 +- README.md | 57 +++++++++++++++++++++++++++++++--------------------- readme.txt | 2 +- 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0e1c1b..4762a64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## 1.1.4 - 2026-08-04 -- Performance improvements removed script blocking time. To allow the tabs to be loaded immediately. +- Performance improvements removed script blocking time. ## 1.1.3 - 2026-04-27 diff --git a/README.md b/README.md index f7f0313..68de741 100644 --- a/README.md +++ b/README.md @@ -84,27 +84,36 @@ The plugin generates semantic HTML with proper ARIA attributes: ```html
- - -
-
-
- -
-
- -
+ + +
+
+
+ +
+
+ +
``` @@ -134,9 +143,11 @@ npm run lint:css For bug reports and feature requests, please use the [GitHub issues](https://github.com/BeAPI/blockparty-tabs/issues) page. -## Credits +## Changelog -Developed by [Be API Technical Team](https://beapi.fr) +See [readme.txt](readme.txt) and [CHANGELOG.md](CHANGELOG.md) for the full version history. + +Developed with ❤️ by [Be API](https://beapi.fr) ## License diff --git a/readme.txt b/readme.txt index f554a55..8f22a87 100644 --- a/readme.txt +++ b/readme.txt @@ -33,7 +33,7 @@ directory take precedence. For example, `/assets/screenshot-1.png` would win ove = 1.1.4 = -* Performance improvements removed script blocking time. To allow the tabs to be loaded immediately. +* Performance improvements removed script blocking time. = 1.1.3 =