Releases: eclectic-coding/solid_queue_web
Releases · eclectic-coding/solid_queue_web
v0.6.0
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
selectionStimulus 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
refreshStimulus 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 thesearchStimulus controller spec/dummy/bin/rails— enablesbin/rails consoleandbin/rails serverfrom the dummy app directory during local development
v0.5.5
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— dedicatedQueues::JobsControllerwith 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#indexno longer filters by queue — queue filtering is owned byQueues::JobsControllerJobsController#showno longer assigns@failed_execution/@blocked_execution; view reads associations directly from@job(already eager-loaded)- Removed stale
queue: @queuefrom status tab links in the jobs index (param was alwaysnilafter the queue controller refactor)
v0.5.0
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
searchcontroller (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-railsintegration: engine registers its ownconfig/importmap.rb, addsapp/javascript/to the asset pipeline, and loads viajavascript_importmap_tagsin the layout@hotwired/turboimported 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) andsqd-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-2utility class for responsive two-column layouts (collapses to one column at ≤768px).sqd-sr-onlyutility class for visually-hidden text:focus-visiblefocus ring (2px primary blue) for keyboard navigationaria-expandedon the mobile nav toggle, kept in sync on open/closerole="status"on notice flash messages androle="alert"on alert flash messagesaria-label="Main"on the primary navigation landmarkaria-current="page"on the active navigation linkscope="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
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.0added as a runtime dependency
Changed
JobsControllerrefactored: execution model mapping moved toEXECUTION_MODELShash constant, eliminating twocasestatementsJobsController#destroyand#discard_allshare abefore_action :set_status_and_queueand afiltered_scopehelper, removing duplicated param reading and scope building
Fixed
- Test suite reaches 100% line coverage; rescue paths,
derive_statusbranches (scheduled, finished), and the authentication block are all exercised