Releases: dereuromark/cakephp-queue
8.12.0
⚠️ Breaking Changes
-
Queue.adminAccessis now required to access the admin backend at/admin/queue/.... The host application MUST set it to aClosurethat returns literaltrueto grant access — anything else (unset, non-Closure, returnsfalse, returns a truthy non-bool, throws) yields a403. The admin UI can trigger jobs (viaAddFromBackendInterfacetasks), reset / remove queued jobs, and terminate workers; accidental exposure is harmful, so the default policy is now deny.Migration — add to
config/bootstrap.php:use Cake\Core\Configure; use Cake\Http\ServerRequest; Configure::write('Queue.adminAccess', function (ServerRequest $request): bool { $identity = $request->getAttribute('identity'); return $identity !== null && in_array('admin', (array)$identity->roles, true); });
See
docs/sections/admin_dashboard.mdfor the Authorization subsection.adminAccessis independent ofQueue.standalone— the gate runs in both modes.
Improvements
- Sweep stale
queue_processesrows on worker startup (#480) — workers now clear orphan rows on launch instead of leaving them around for the timeout sweep.
Full Changelog: 8.11.0...8.12.0
8.11.0
Fixes
- Fix
Queue::addJob()silently no-op'ing when a task'srun()did not actually queue a job. The return value now reliably reflects whether a job was created. (#478)
Improvements
- Add
Queue.workerLifetimeJitterconfig option to stagger worker shutdowns and avoid thundering-herd restarts when many workers are spawned together. (#476) - Refactor admin UI to be CSP-compatible: inline
<script>blocks now use nonces and inlineonclickhandlers were removed. (#477) - Move mobile-nav background image from an inline
styleattribute to a CSS class so the admin UI works under strict CSP. (#479)
Full Changelog: 8.10.2...8.11.0
8.10.2
Fixes
- Fix
EmailTaskcalling undefined methods onMailer/Messagewhen queued payloads contained keys from a serializedCake\Mailer\Message(htmlMessage,textMessage,appCharset). These are now routed to the correct Message setters (setBodyHtml,setBodyText,setCharsetfallback). (#474, fixes #473) - Fix
EmailTaskthrowingUnknown named parameterwhensettings.headersor thereadReceiptaddress setting was an associative map. (#474)
Full Changelog: 8.10.1...8.10.2
8.10.1
Fixes
- Fix
EmailTaskthrowingUnknown named parameteron PHP 8+ when queued payloads used CakePHP's associative['email' => 'Name']address-map format forto,from,cc,bcc, orreplyTo. Previously-working payload formats (string,['email', 'Name']tuple, legacy wrapped[['email' => 'Name']]) are unchanged. (#472, fixes #471)
Full Changelog: 8.10.0...8.10.1
8.10.0
Modern Isolated Admin Dashboard (#461)
This release introduces a modern, self-contained admin dashboard for the Queue plugin that is completely isolated from the host application's CSS/JS.
Key Features
- Bootstrap 5.3.3 + Font Awesome 6.7.2 via CDN with SRI hashes
- Isolated base controller (
QueueAppController) that extendsCake\Controller\Controllerdirectly - Default enabled - the new layout is used automatically (can be disabled)
- Mobile responsive - offcanvas navigation for mobile devices
- Backwards compatible - can revert to app's layout via config
Configuration Options
'Queue' => [
// Layout for admin pages:
// - null (default): Uses 'Queue.queue' isolated Bootstrap 5 layout
// - false: Disables plugin layout, uses app's default layout
// - string: Uses specified layout
'adminLayout' => null,
// Auto-refresh dashboard every N seconds (0 = disabled)
'dashboardAutoRefresh' => 30,
],Dashboard Features
- Status banner showing queue running/idle state
- Statistics cards for pending, scheduled, running, and failed jobs
- Pending/scheduled jobs tables with inline actions
- Job statistics with Chart.js visualization
- Trigger jobs section for addable tasks
- Configuration display
- Sidebar navigation with quick actions
- Mobile offcanvas navigation
Stats Page Improvements
- Fixed Chart.js infinite vertical expansion issue
- Job type filter now uses query parameters (supports job types with slashes)
- Added back button when viewing specific job type stats
Full Changelog: 8.9.1...8.10.0

8.9.1
Fixes
- Fixed hidden dependency on Tools plugin in admin templates by adding runtime fallbacks for
relLengthOfTime()(falls back to CakePHP'stimeAgoInWords()) andFormat->ok()(uses element with fallback) - Fixed hidden dependency on Shim plugin in
JsonableBehaviorby adding localArrayTypeclass
Full Changelog: 8.9.0...8.9.1
8.9.0
8.8.0
Improvements
- varexporter v7 support
- Add Queue.Job.* lifecycle events with optional Sentry bridge
Full Changelog: 8.7.0...8.8.0
8.7.0
Improvements
- Make Icon configuration optional with text fallback, allows to have
dereuromark/templatingand icons fully optional.
Full Changelog: 8.6.2...8.7.0
8.6.2
Improvements
- Added support for unified cake_migrations table - #450
- Allow config override on vendor tasks
- Auto-cap task timeout to defaultRequeueTimeout
Full Changelog: 8.6.1...8.6.2