Skip to content

3.9.2

Latest

Choose a tag to compare

@PaulArgoud PaulArgoud released this 11 Jun 00:18

Added

  • Persistent entity-map cacheEntity_Map_Repository now layers an optional cross-request object cache (active only when an external object cache such as Redis/Memcached is installed) over the per-request array cache. Positive WP↔Odoo ID mappings are cached, scoped per blog, and invalidated via a generation salt on flush/bulk-delete and per-entry on save()/remove()/invalidate_key()
  • Automatic queue purge — The daily maintenance cron now also deletes completed/failed sync-queue jobs beyond their retention window (filterable via wp4odoo_queue_retention_days, default 7 days). Previously only logs were auto-purged; the queue required a manual admin action or WP-CLI. Log and queue purges are isolated so one failure cannot block the other

Changed

  • composer.lock committed — Removed composer.lock from .gitignore so CI dependency caching (hashFiles('composer.lock')) is effective and builds are reproducible
  • Distribution packaging — Added .distignore (clean release ZIP excluding tests, tooling, and dev artifacts) and a wordpress.org readme.txt
  • CI — Added the Composer dependency cache to the integration test job (previously only the unit and coverage jobs cached it)
  • CI runner modernization — Bumped GitHub Actions to Node 24-compatible majors (actions/checkout@v5, actions/cache@v5, codecov/codecov-action@v5) ahead of the June 16 2026 forced Node 20 removal

Fixed

  • CI integration tests flaky — Added retry with backoff (3 attempts, 15/30/45s) to wp-env start step to handle Docker Hub 429 rate limiting
  • CI badge not displaying — Fixed repository name in badge URL (wordpress-for-odoowp4odoo) in README
  • Codecov token passing — Moved CODECOV_TOKEN from env to with.token input, matching codecov-action@v4 requirements
  • Repository hygiene — Removed stray .po~ gettext backup files from version control and added *.po~ to .gitignore
  • CI Composer audit — Switched composer audit --no-dev to --locked so the audit runs against the now-committed composer.lock; with only dev dependencies present, --no-dev left nothing to audit and failed under Composer 2's stricter check