Skip to content

Releases: eclectic-coding/solid_queue_web

v0.6.0

19 May 17:55

Choose a tag to compare

Added

  • Job selection and targeted bulk actions — checkboxes on the jobs index (ready/scheduled/blocked) and failed jobs index; a selection bar appears above the table showing the count and action buttons ("Discard Selected" for jobs, "Retry Selected" / "Discard Selected" for failed jobs); select-all checkbox in the table header; powered by a new selection Stimulus controller that injects checked IDs into a hidden form on submit; uses nested singular resources (Jobs::SelectionsController, FailedJobs::SelectionsController) following Rails conventions
  • Auto-refresh for dashboard, jobs list, and processes — a refresh Stimulus controller polls the current page at a configurable interval (5 s for dashboard, 10 s for jobs/processes) and swaps the matching <turbo-frame> content in place; polling pauses when the browser tab is hidden and resumes with an immediate refresh when the tab becomes visible again
  • Time-based period filter (?period=1h|24h|7d) on the jobs and failed jobs indexes — filters results by enqueued timestamp; period pills render inline with the search bar, right-justified; active period is preserved across status tab switches, search, queue filters, and bulk actions
  • Global job search at /jobs/search — queries all execution models (ready, scheduled, claimed, blocked, failed) by class name substring; results grouped by status with match count and a "View all →" link; native <datalist> autocomplete pre-populated from all known job class names; auto-submits on datalist selection via the search Stimulus controller
  • spec/dummy/bin/rails — enables bin/rails console and bin/rails server from the dummy app directory during local development

v0.5.5

19 May 14:13

Choose a tag to compare

Added

  • Failed jobs search: ?q= param filters by class name substring on the failed jobs index
  • Failed jobs queue filter: queue names in the failed jobs table are clickable links that filter to that queue; a "Filtering by queue" indicator appears with a clear link
  • Queue-scoped Retry All / Discard All on failed jobs: bulk actions apply only to the active queue/search filter and redirect back preserving those params
  • Blocked job detail: job show page displays "Blocked Until" (BlockedExecution#expires_at) when the job has a blocked execution
  • Queue-scoped jobs view at /jobs/queues/:queue_name/list — dedicated Queues::JobsController with status tabs, class name search, per-row discard (Turbo Stream), and Discard All scoped to the queue; navigated to by clicking queue names on the global jobs list

Fixed

  • Job detail links inside the turbo frame on the jobs index rendered "Content missing" because the show page has no matching frame; fixed with data-turbo-frame="_top" so navigation breaks out to a full page load

Changed

  • JobsController#index no longer filters by queue — queue filtering is owned by Queues::JobsController
  • JobsController#show no longer assigns @failed_execution / @blocked_execution; view reads associations directly from @job (already eager-loaded)
  • Removed stale queue: @queue from status tab links in the jobs index (param was always nil after the queue controller refactor)

v0.5.0

19 May 12:54

Choose a tag to compare

Added

  • Job class name search field on the jobs index — filters the current status tab by class name substring; case-insensitive; persists across status tab switches
  • Dynamic search: auto-submits after 4 characters typed or on clear (300 ms debounce) via a Stimulus search controller (app/javascript/solid_queue_web/search_controller.js)
  • Turbo Frame navigation on the jobs index — status filter tabs, search, and pagination update only the table region without a full page reload; URL is pushed to browser history so filtering is bookmarkable
  • importmap-rails integration: engine registers its own config/importmap.rb, adds app/javascript/ to the asset pipeline, and loads via javascript_importmap_tags in the layout
  • @hotwired/turbo imported in the engine entry point so Turbo is active within the engine's own layout
  • Recurring Tasks page (/jobs/recurring_tasks) showing key, cron schedule, job class or command, queue, next run time, last run time, and Static/Dynamic badge; eager loads recurring executions to avoid N+1
  • Recurring Tasks stat card on the dashboard (cyan, links to the page)
  • "View recurring tasks" button in the dashboard Quick Links
  • sqd-badge--static (green) and sqd-badge--dynamic (purple) badge variants
  • Hamburger toggle nav for viewports narrower than 576px — three-bar button opens a full-width dropdown with vertically stacked links; no JS file required
  • sqd-grid-2 utility class for responsive two-column layouts (collapses to one column at ≤768px)
  • .sqd-sr-only utility class for visually-hidden text
  • :focus-visible focus ring (2px primary blue) for keyboard navigation
  • aria-expanded on the mobile nav toggle, kept in sync on open/close
  • role="status" on notice flash messages and role="alert" on alert flash messages
  • aria-label="Main" on the primary navigation landmark
  • aria-current="page" on the active navigation link
  • scope="col" on all table header cells
  • Visually-hidden "Actions" label on empty action column headers

Changed

  • Dashboard stat card order aligned with nav: Ready, Scheduled, Running, Blocked, Failed, Queues, Recurring, Processes
  • Stat grid minimum cell width reduced from 150px to 128px so all 8 cards fit in one row
  • Navbar title and links constrained to the same max-width as page content so they align horizontally with the dashboard
  • Page headers stack vertically on mobile (≤640px)
  • Stat grid uses a smaller minimum cell width on mobile
  • Cards scroll horizontally on mobile to accommodate wide tables
  • Main content padding reduced on mobile

v0.4.0

18 May 19:28

Choose a tag to compare

Added

  • Turbo Streams on the jobs list — discarding a single job removes its row in place; the last job swaps the card to an empty state without a full page reload
  • Turbo Frame on the jobs list — status filter tabs, queue filter links, Discard All button, and pagination all update in place without reloading the page header or flash
  • Dashboard stat cards are now clickable links to their respective filtered views
  • GitHub Releases created automatically with CHANGELOG notes when a version tag is pushed
  • turbo-rails >= 2.0 added as a runtime dependency

Changed

  • JobsController refactored: execution model mapping moved to EXECUTION_MODELS hash constant, eliminating two case statements
  • JobsController#destroy and #discard_all share a before_action :set_status_and_queue and a filtered_scope helper, removing duplicated param reading and scope building

Fixed

  • Test suite reaches 100% line coverage; rescue paths, derive_status branches (scheduled, finished), and the authentication block are all exercised