From b63530aec89352bc9407f98e9bd5d7d0993063d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A0nh=20Nh=C3=A2n?= Date: Tue, 10 Nov 2026 18:34:11 +0700 Subject: [PATCH] release: prepare DevTools 4.0.1 --- CHANGELOG.md | 17 +++++++++++++++++ RELEASE_NOTES.md | 21 ++++++++++++--------- composer.json | 2 +- composer.lock | 2 +- plugin.yml | 2 +- tests/Validation/RepositoryMetadataTest.php | 2 +- 6 files changed, 33 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4e3584..b5c1102 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ ## Unreleased +## 4.0.1 - 2026-11-10 + +### Changed + +- Make plugin and virion PHAR builds reproducible when staged files and the build toolchain are unchanged. +- Normalize archive ordering, timestamps, permissions, and internal PHAR metadata while retaining SHA-256 signatures. +- Declare the ZIP extension required by the PHAR build path. + +### Fixed + +- Prevent generated PHAR timestamps from changing an otherwise identical artifact checksum. + +### Compatibility + +- Plugin commands, manifest formats, namespace contracts, and runtime APIs are unchanged. +- PHP 8.4 remains the minimum supported version. + ## 4.0.0 - 2026-11-10 ### Changed diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 5f1ba94..887bc99 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,19 +1,22 @@ -# DevTools 4.0.0 +# DevTools 4.0.1 -DevTools 4.0.0 reorganizes dependency selection, runtime loading and artifact building. Direct PHP integrations need the migration described below. Plugin commands, workflow inputs, manifest formats and CLI JSON schema remain unchanged. +DevTools 4.0.1 makes repeated plugin and virion PHAR builds reproducible when staged files and the build toolchain are unchanged. ## Changes -- Keep startup dependency errors scoped to the affected folder plugin. -- Separate candidate selection and graph checks from class-loader registration while preserving folder precedence, compatible cycles and ordered diagnostics. -- Share artifact replacement and rollback across plugin, virion and dual builds. -- Share prepared-content verification and project doctor checks, and retain preflight data when a CLI build fails. +- Use stable archive entry ordering and normalized metadata for plugin and virion PHAR builds. +- Retain SHA-256 PHAR signatures after archive metadata normalization. +- Declare the ZIP extension required by the PHAR build path. + +## Compatibility + +- Plugin commands, manifest formats, namespace contracts, and runtime APIs are unchanged. +- PHP 8.4 remains the minimum supported version. CI covers PHP 8.4 and 8.5. +- Build environments must provide the ZIP extension. ## Upgrading - Replace `plugins/DevTools.phar` and restart the server. -- Use `AxolotlBucketLabs/DevTools@v4` or the corresponding reusable workflow reference for the 4.x channel. `v3` remains on the 3.x series. `latest` follows stable releases across major versions. -- Direct PHP callers must update the dual builder, CLI and folder-loader construction described in the [migration guide](https://github.com/AxolotlBucketLabs/DevTools/blob/v4.0.0/docs/migration.md#direct-php-integrations). -- PHP 8.4 remains the minimum. Quality checks cover PHP 8.4 and 8.5. Real-server smoke tests use Axolotl-PM 5.51.1 on PHP 8.4.27. +- No source migration is required for plugin or virion consumers. The release tag and checksum manifest are signed with the maintainer's GPG key. Verify `SHA256SUMS.txt.asc` before checking the downloaded assets against `SHA256SUMS.txt`. diff --git a/composer.json b/composer.json index 9748b8e..a91d950 100644 --- a/composer.json +++ b/composer.json @@ -52,7 +52,7 @@ }, "extra": { "devtools": { - "release-version": "4.0.0" + "release-version": "4.0.1" } }, "support": { diff --git a/composer.lock b/composer.lock index f3a01c2..43b239b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "77a595552ba60afefa6d173bbd3c6687", + "content-hash": "f7f3d21fbc2a084caf9bd3d3d62971b8", "packages": [ { "name": "nikic/php-parser", diff --git a/plugin.yml b/plugin.yml index df77363..e8be5ff 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: DevTools -version: 4.0.0 +version: 4.0.1 main: AxolotlBucketLabs\DevTools\DevTools api: 5.0.0 load: STARTUP diff --git a/tests/Validation/RepositoryMetadataTest.php b/tests/Validation/RepositoryMetadataTest.php index bda3fc4..f6f4c6d 100644 --- a/tests/Validation/RepositoryMetadataTest.php +++ b/tests/Validation/RepositoryMetadataTest.php @@ -19,7 +19,7 @@ final class RepositoryMetadataTest extends TestCase { - private const VERSION = '4.0.0'; + private const VERSION = '4.0.1'; private const COMPATIBILITY_BUILDER_VERSION = '4.0.0'; private const PHP_ACTION_COMMIT = 'b8c3f9add4f2ad4a5e2624a1112aba899ee8db0e';