Skip to content

Releases: dereuromark/cakephp-queue

8.12.0

30 Apr 15:54

Choose a tag to compare

⚠️ Breaking Changes

  • Queue.adminAccess is now required to access the admin backend at /admin/queue/.... The host application MUST set it to a Closure that returns literal true to grant access — anything else (unset, non-Closure, returns false, returns a truthy non-bool, throws) yields a 403. The admin UI can trigger jobs (via AddFromBackendInterface tasks), 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.md for the Authorization subsection. adminAccess is independent of Queue.standalone — the gate runs in both modes.

Improvements

  • Sweep stale queue_processes rows 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

27 Apr 13:24
39cf2e7

Choose a tag to compare

Fixes

  • Fix Queue::addJob() silently no-op'ing when a task's run() did not actually queue a job. The return value now reliably reflects whether a job was created. (#478)

Improvements

  • Add Queue.workerLifetimeJitter config 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 inline onclick handlers were removed. (#477)
  • Move mobile-nav background image from an inline style attribute to a CSS class so the admin UI works under strict CSP. (#479)

Full Changelog: 8.10.2...8.11.0

8.10.2

17 Apr 18:51
5410512

Choose a tag to compare

Fixes

  • Fix EmailTask calling undefined methods on Mailer/Message when queued payloads contained keys from a serialized Cake\Mailer\Message (htmlMessage, textMessage, appCharset). These are now routed to the correct Message setters (setBodyHtml, setBodyText, setCharset fallback). (#474, fixes #473)
  • Fix EmailTask throwing Unknown named parameter when settings.headers or the readReceipt address setting was an associative map. (#474)

Full Changelog: 8.10.1...8.10.2

8.10.1

17 Apr 14:33
6eda87a

Choose a tag to compare

Fixes

  • Fix EmailTask throwing Unknown named parameter on PHP 8+ when queued payloads used CakePHP's associative ['email' => 'Name'] address-map format for to, from, cc, bcc, or replyTo. 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

02 Apr 14:57

Choose a tag to compare

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 extends Cake\Controller\Controller directly
  • 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

dashboard_queue

8.9.1

17 Mar 21:54

Choose a tag to compare

Fixes

  • Fixed hidden dependency on Tools plugin in admin templates by adding runtime fallbacks for relLengthOfTime() (falls back to CakePHP's timeAgoInWords()) and Format->ok() (uses element with fallback)
  • Fixed hidden dependency on Shim plugin in JsonableBehavior by adding local ArrayType class

Full Changelog: 8.9.0...8.9.1

8.9.0

29 Jan 18:35
798f9af

Choose a tag to compare

Improvements

  • Add optional output capture for queue jobs

Full Changelog: 8.8.0...8.9.0

8.8.0

11 Jan 03:11
1418afb

Choose a tag to compare

Improvements

  • varexporter v7 support
  • Add Queue.Job.* lifecycle events with optional Sentry bridge

Full Changelog: 8.7.0...8.8.0

8.7.0

04 Jan 04:45
e1c944f

Choose a tag to compare

Improvements

  • Make Icon configuration optional with text fallback, allows to have dereuromark/templating and icons fully optional.

Full Changelog: 8.6.2...8.7.0

8.6.2

20 Dec 00:09

Choose a tag to compare

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