-
v1.4.1 Stable
released this
2026-08-10 16:31:55 +00:00 | 0 commits to main since this release1.4.1
Release date: 2026-08-10
Highlights
- Security hardening, data preservation option, and WP-CLI commands
- 66 tests (up from 38), 100% coverage of tested classes
Added
- Data preservation option — checkbox under Settings → iDrivee2 to opt in to data deletion on uninstall (default: preserve)
- WP-CLI commands:
wp idrivee2 test-connection,wp idrivee2 cleanup-local-files,wp idrivee2 stats --days=N
Security
- Logger: validate IP with
filter_var( FILTER_VALIDATE_IP )instead ofsanitize_text_field - Admin page:
wp_unslash()at read point for$_POST['test_file'] - Cron cleanup:
wp_delete_file()replacesWP_Filesystem()(cron-safe, no credentials needed) - Uninstall: data preservation is opt-in per AGENTS policy (default: preserve all data)
Changed
- WordPress minimum corrected 4.1 → 5.3 (wp-compat verified)
- Uninstall:
delete_post_meta_by_key()replaces raw SQL robotstxt-updater.phpdocumented as EXTERNAL DEPENDENCY
Compatibility
- WordPress: 5.3 - 7.1
- PHP: 8.1 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPUnit: 66 tests, 109 assertions
Downloads
-
v1.4.0 Stable
released this
2026-08-10 16:22:41 +00:00 | 1 commits to main since this release1.4.0
Release date: 2026-08-10
Highlights
- Security hardening, data preservation option, and WP-CLI commands
- 66 tests (up from 38), 100% coverage of tested classes
Added
- Data preservation option — checkbox under Settings → iDrivee2 to opt in to data deletion on uninstall (default: preserve)
- WP-CLI commands:
wp idrivee2 test-connection,wp idrivee2 cleanup-local-files,wp idrivee2 stats --days=N
Security
- Logger: validate IP with
filter_var( FILTER_VALIDATE_IP )instead ofsanitize_text_field - Admin page:
wp_unslash()at read point for$_POST['test_file'] - Cron cleanup:
wp_delete_file()replacesWP_Filesystem()(cron-safe, no credentials needed) - Uninstall: data preservation is opt-in per AGENTS policy (default: preserve all data)
Changed
- WordPress minimum corrected 4.1 → 5.3 (wp-compat verified)
- Uninstall:
delete_post_meta_by_key()replaces raw SQL robotstxt-updater.phpdocumented as EXTERNAL DEPENDENCY
Compatibility
- WordPress: 5.3 - 7.1
- PHP: 8.1 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPUnit: 66 tests, 109 assertions
Downloads
-
v1.3.0 Stable
released this
2026-07-18 13:31:17 +00:00 | 2 commits to main since this release1.3.0
Release date: 2026-07-18
Highlights
- New image sub-sizes control: ship less data per upload, ideal for large camera files. Reduces work in both the WP 7.1 client-side path (browser) and the server-side path.
Added
- Settings field Image Sub-sizes under Settings → iDrivee2 with three modes:
all(default),thumbnail(only the default thumbnail),none(no sub-sizes). IDRIVEE2_MEDIA_SUBSIZES_MODEwp-config.php constant — same priority pattern as the S3 credentials; the field becomes read-only when set.- In
thumbnailandnonemodes thebig_image_size_thresholdfilter is also disabled, so WordPress no longer creates a-scaledderivative for images larger than 2560px.
Security
composer auditCVEs resolved:guzzlehttp/guzzle7.11 → 7.15,guzzlehttp/psr72.11 → 2.13,mtdowling/jmespath.php2.8 → 2.9 (CVE-2026-55767 / 55568 / 55766 / 54133).
Tooling
bin/preflight.shadded — automated pre-deploy verification per AGENTS-testing-build-deployment.md (PHPCS, PHPStan, PHPCompatibility, PHPUnit + coverage, composer audit, candidate ZIP inspection)..claude/settings.jsonadded — mechanical deny rules fordeploy.sh,git push/tag/mergeper AGENTS.md.
Compatibility
- WordPress: 4.1 - 7.1
- PHP: 8.1 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPUnit: 38 tests, 60 assertions
Downloads
-
v1.2.1 Stable
released this
2026-06-05 09:47:38 +00:00 | 3 commits to main since this release1.2.1
Release date: 2026-06-05
Fixed
-
Infinite recursion on image upload —
wp_update_post()(called to update the attachment GUID after S3 upload) was firing theedit_attachmentWordPress action, which re-triggered the upload method, which calledwp_update_post()again, creating infinite recursion. Xdebug killed the process at 512 stack frames, WordPress reported "The server cannot process the image". Fixed by: (1) removing theedit_attachmenthook —wp_update_attachment_metadatacovers all new-upload scenarios; (2) adding a static re-entry guard ($in_progressper attachment ID) as a safety net. -
Fatal error: fclose() on already-closed stream — The AWS SDK (via Guzzle) closes file streams automatically after reading them for upload. The
finallyblock was attempting tofclose()streams that were already closed, throwingTypeError: fclose(): Argument #1 ($stream) must be an open stream resource. Fixed by checkingis_resource($fh)before callingfclose().
Compatibility
- WordPress: 4.1 - 7.1
- PHP: 8.1 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPUnit: 22 tests, 54 assertions
Downloads
-
-
v1.2.0 Stable
released this
2026-06-02 19:06:43 +00:00 | 4 commits to main since this release1.2.0
Release date: 2026-06-02
Highlights
- Media uploads dramatically faster: concurrent S3 uploads + streaming from disk
Performance
- Concurrent uploads via AWS CommandPool (default 5, configurable via IDRIVEE2_UPLOAD_CONCURRENCY)
- Files now stream directly from disk (fopen + resource) instead of loading fully into memory
- Removed per-file headObject pre-check (eliminates N extra HTTP round-trips per image)
- Single DB write for upload stats per attachment (replaces one write per file)
- Hook priority lowered from 999 to 10
Compatibility
- WordPress: 4.1 - 7.1
- PHP: 8.1 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPUnit: 22 tests, 54 assertions
Downloads
-
v1.1.4 Stable
released this
2026-06-02 18:50:57 +00:00 | 5 commits to main since this release1.1.4
Release date: 2026-06-02
Highlights
- Full dev tooling setup (PHPCS, PHPStan level 9, PHPUnit) and first test suite
- WordPress 7.1 and PHP 8.5 compatibility declared
Added
- Composer dev tooling: PHPCS/WPCS, PHPStan (level 9), PHPUnit, PHPCompatibility
- phpstan.neon, phpcs.xml, phpunit.xml configuration
- PHPUnit test suite (22 tests, 54 assertions): plugin headers, Config, Rate_Limiter
- bin/deploy.sh: automated ZIP generation with production vendor only
- docs/: db-migrations.md, known-issues.md
Changed
- Tested up to WordPress 7.1; PHP compatibility extended to 8.5
- PHPStan level upgraded from 8 to 9
IDRIVEE2_MEDIA_VERSIONconstant defined in plugin main file; replacesget_file_data()call in enqueue- Admin page: proper
sanitize_key()for$_GET['page'], type-check for$_POST['test_file'] - deploy.sh: switched from
composer updatetocomposer installfor reproducible builds from lock file - Logger stats: switched to
time() - ($n * DAY_IN_SECONDS)arithmetic for consistent UTC dates - uninstall.php: variable renamed to satisfy WP prefix naming rules
Fixed
- WP_Filesystem null guard before file operations in Media_Uploader
- Type-safety on all
get_option()/get_transient()results (guards against mixed types) - Rate_Limiter arithmetic: transient value narrowed to int before subtraction
- robotstxt-updater.php: short ternary operators replaced,
serialize()annotated - Media_Uploader deletion queue: malformed
timestamp=0entries now requeued instead of deleted immediately - Logger: UTC-consistent date arithmetic in both
track_s3_operation()andget_s3_stats()
Compatibility
- WordPress: 6.8 - 7.1
- PHP: 8.2 - 8.5
Tests
- PHP Coding Standards: 3.13.5 (0 errors)
- WordPress Coding Standards: 3.3.0 (0 violations)
- PHPStan: Level 9, 0 errors
- PHPCompatibility scan: 8.2-8.5
Downloads
-
v1.1.3 Stable
released this
2026-02-04 09:43:51 +00:00 | 6 commits to main since this release1.1.3
Release date: 2026-02-04
Highlights
- Critical bug fix for namespace issue causing fatal error
Fixed
- Critical namespace issue with Robotstxt_Updater class causing fatal error
- Fatal error "Class 'iDrivee2Media\Robotstxt_Updater' not found" resolved
- Added global namespace prefix (
\) toRobotstxt_Updater::init()call in main plugin file - Plugin now loads correctly without PHP fatal errors
Technical Details
- Issue:
Robotstxt_Updaterclass is defined in global namespace but was called from withiniDrivee2Medianamespace - Solution: Changed
Robotstxt_Updater::init()to\Robotstxt_Updater::init()to explicitly reference global namespace - Location: idrivee2-media-upload.php line 67
Compatibility
- WordPress: 6.8 - 6.9
- PHP: 8.2 - 8.4
- MariaDB: 10.6+
Tests
- PHP Coding Standards: 0 errors
- WordPress Coding Standards (WPCS): 3.3
- PHPStan: Level 8 (0 errors)
- PHPCompatibility: 8.2-8.4
1.1.2
Release date: 2026-02-04
Highlights
- Build system improvements for consistent PHP 8.2+ deployments
Changed
- Deployment script updated to use PHP 8.2 as platform base for production builds
- Now uses
composer update --no-devinstead ofcomposer install --no-dev - Temporarily configures
platform.php 8.2during build for consistent dependency resolution - Platform configuration cleaned up after build completes
- Deploy script updated to bin/deploy.sh version 1.1.0
Improved
- Production packages now guarantee PHP 8.2+ compatibility regardless of development environment PHP version
- Build consistency ensures reliable deployments across different server environments with varying PHP versions
- Using
composer updateensures latest compatible versions for target PHP version - Dependency resolution is consistent and predictable
Compatibility
- WordPress: 6.8 - 6.9
- PHP: 8.2 - 8.4
- MariaDB: 10.6+
Tests
- PHP Coding Standards: 0 errors
- WordPress Coding Standards (WPCS): 3.3
- PHPStan: Level 8 (0 errors)
- PHPCompatibility: 8.2-8.4
Downloads
-
v1.1.1 Stable
released this
2026-02-04 09:26:57 +00:00 | 7 commits to main since this release1.1.1
Release date: 2026-02-04
Highlights
- Deployment script improvements to ensure production packages are complete
Fixed
- Deployment script now includes essential files in production packages
- update.json (auto-update system) now included in deploy
- robotstxt-updater.php (auto-update handler) now included in deploy
- readme.txt (WordPress.org documentation) now included in deploy
- changelog.txt (full changelog) now included in deploy
- Updated script documentation and output messages
Improved
- Production packages now contain all files required for automatic updates from Gitea
- Deploy script version updated to 1.1.0
Compatibility
- WordPress: 6.8 - 6.9
- PHP: 8.2 - 8.4
- MariaDB: 10.6+
Tests
- PHP Coding Standards: 0 errors
- WordPress Coding Standards (WPCS): 3.3
- PHPStan: Level 8 (0 errors)
- PHPCompatibility: 8.2-8.4
Downloads
-
v1.1.0 Stable
released this
2026-02-04 09:16:12 +00:00 | 8 commits to main since this release1.1.0
Release date: 2026-02-04
Highlights
- Configuration and consistency improvements for PHP 8.2+ compatibility
- Updated plugin repository URLs to Gitea
- Fixed text domain consistency across all files
Changed
- Added explicit PHP version requirement (>=8.2) to composer.json
- Updated update.json with correct plugin information
- Fixed Text Domain in robotstxt-updater.php to match plugin slug (idrivee2-media-upload)
- Migrated repository from GitHub to Gitea (git.robotstxt.es)
- Added Gitea Plugin URI and Primary Branch headers
Fixed
- Composer now validates PHP version during dependency installation
- Plugin update system correctly identifies the plugin
- Translations properly loaded for updater error messages
Improved
- All text domains now consistently use 'idrivee2-media-upload'
- Update metadata accurately reflects plugin information
Compatibility
- WordPress: 6.8 - 6.9
- PHP: 8.2 - 8.4
- MariaDB: 10.6+
Tests
- PHP Coding Standards: 0 errors
- WordPress Coding Standards (WPCS): 3.3
- PHPStan: Level 8 (0 errors)
- PHPCompatibility: 8.2-8.4
Downloads
-
v1.0.0 Stable
released this
2026-02-03 15:55:54 +00:00 | 9 commits to main since this release1.0.0
- Fixes
Downloads