Releases: eclectic-coding/solid_stack_web
Releases · eclectic-coding/solid_stack_web
v1.5.0
v1.4.0
Added
- Admin audit log — records who retried, discarded, or paused what and when; requires opt-in migration (
rails solid_stack_web:install:migrations); actor identity via newconfig.current_actorblock; filterable by action, actor, and queue; CSV export included; accessible at/auditunder the Queue subnav
v1.3.0
Added
- Slow job webhook alert — fires when the number of currently-claimed jobs exceeding
slow_job_thresholdreachesalert_slow_job_count_threshold; respects the sharedalert_webhook_urlandalert_webhook_cooldownsettings; payload includestype: "slow_jobs",count, andthreshold - Stale process webhook alert — fires when the number of workers with a heartbeat older than 5 minutes meets
alert_stale_process_threshold; reuses the shared webhook URL and cooldown; payload includestype: "stale_processes",count, andthreshold - Job wait time column — shows how long a claimed job waited in the queue before being picked up (time from
enqueued_atto claim time); displayed on the claimed tab only; also included aswait_time_secondsin CSV exports
v1.2.0
Added
- Sticky filter preferences — last-used status, period, and queue filter saved to
localStorage; a fresh visit to/jobsor/historywith no URL params restores the previous selection automatically; uses a newfilter-persistStimulus controller; gracefully no-ops whenlocalStorageis unavailable - Sortable columns on jobs, failed jobs, and history — server-side
?sort=&direction=params; jobs sortable by class, queue, priority, enqueued at; failed jobs by class, queue, failed at; history by class, queue, finished at; sort state is preserved across filter and period changes
v1.1.0
Added
- P99 + standard deviation columns in performance stats —
p99andStd Devcolumns added to the stats table; both are sortable; high std dev flags inconsistent jobs worth investigating - Failed job trend chart — "Failures — last 12 hours" sparkline added to the Solid Queue dashboard card below the throughput sparkline; bars render in the danger color to make failure spikes immediately visible
- Error frequency report —
GET /failed_jobs/errorsgroups all failed jobs by exception class and message prefix, showing count and an expandable sample backtrace per group; links through to a filtered failed jobs list via?error_class=; the failed jobs index gains an "Error Summary" button and shows an active-filter breadcrumb with a clear link
v1.0.0
Added
- Public API stability policy —
README.md#versioningdocuments what is and is not covered by semver guarantees from v1.0.0;UPGRADING.mdcross-references the policy - README: Security section covering authentication requirements,
allow_value_previewcaution, CSRF handling, and rate-limiting guidance - README: Screenshots section with a single
docs/screenshots/demo.gifslot (animated GIF showing a dashboard tour) - README:
connects_toadded to the General configuration reference - Deprecation warning infrastructure —
SolidStackWeb.deprecatorexposes a gem-scopedActiveSupport::Deprecationinstance registered withapp.deprecators; a privatedeprecated_confighelper generates forwarding writers with warnings for any config keys renamed before 1.0
Changed
- Unify detail page layout across all three sections — cache entry detail now uses the same card-based layout as job and failed job detail pages; consolidate
sqw-detail/sqw-value-preCSS into the sharedsqw-dl/sqw-code-blockclasses; inline margin style on the failed-job arguments card replaced with a CSS sibling-selector rule
v0.9.0
Changed
- Eliminate N+1 queries on the queues index — replaced per-queue
COUNTloop with a singleGROUP BY queue_nameaggregation CacheSizeStats#bucketsnow runs a singleSUM(CASE WHEN ...)aggregation instead of oneCOUNTquery per size bucket;#totalis derived from the already-computed bucket counts (no extra query)JobsControllerfilter options (queue and priority dropdowns) now resolved with onepluckcall instead of two separate queries
Added
UPGRADING.md— standing upgrade guide; documents that all 0.x releases are additive with no breaking configuration changes- Engine-scoped error pages — 404 (
ActiveRecord::RecordNotFound) and 500 (unhandledStandardErrorin production) now render within the dashboard chrome instead of falling through to the host app's error pages; in developmentconsider_all_requests_localkeeps the standard Rails debug page - Covering indexes added to dummy app schema —
solid_queue_jobs (finished_at, created_at)for the slow-job scan;(queue_name, created_at)onsolid_queue_scheduled_executionsandsolid_queue_blocked_executions(both previously lacked a queue-name index) - Install generator —
rails generate solid_stack_web:installcreatesconfig/initializers/solid_stack_web.rbwith every config option documented inline and injects the mount line intoconfig/routes.rb SolidStackWeb.mount_path— returns the path at which the engine is mounted in the host app, derived automatically from routes; uselink_to "Dashboard", SolidStackWeb.mount_pathto link to the dashboard without hardcoding the path- Accessibility pass — skip-to-content link; ARIA labels on all navigation elements;
scope="col"on every table header; visually-hidden "Actions" label on empty action-column headers;aria-sorton active sort columns in stats and cache entries;aria_label: "Pagination"on all pagination navs;.sqw-sr-onlyand.sqw-skip-linkCSS utilities added to base stylesheet
v0.8.0
Added
- Service class unit tests — model specs for
CableStats,CableTimeline,CacheStats,CacheSizeStats,CacheTimeline, andQueueStats; covers zero/empty states, correct aggregation, time-window filtering, and theslow_job_thresholdconditional - Pagination boundary tests —
describe "pagination"blocks added to jobs, failed jobs, cache entries, history, and cable message list specs; covers pagination controls appearing at 26+ records, page 2 returning 200, and out-of-range pages returning 200 without error spec/support/request_helpers.rb— sharedengine_rootlet for all request specs;rails_helper.rbauto-loadsspec/support/**/*.rb
v0.7.0
Added
- Responsive layout
- Timezone-corrected timestamps — all timestamps across jobs, failed jobs, history, processes, queues, recurring tasks, cache entries, cable channels, and the dashboard are now rendered as
<time datetime="ISO8601">elements; atimestampStimulus controller reformats each one in the browser's local timezone usingIntl.DateTimeFormat; relative timestamps (oldest cache entry, oldest cable message, cable message list) useIntl.RelativeTimeFormatand expose the full local timestamp as a hover title; degrades gracefully to UTC text when JS is unavailable
Fixed
- CSS audit — badge colours now respond to dark mode via
[data-theme="dark"]overrides; table row hover uses--surface-hoverCSS variable instead of a hardcoded hex value;--surface-hoveradded to:rootand dark mode token set — stats cards, gem grid, and tables adapt to narrow viewports; two-column grids (cache size, cache timeline) collapse to single column at 768px; tables scroll horizontally at 640px; split page headers stack vertically; main padding and header padding reduce on small screens - Empty-state improvements — all list views now show a contextual title and an actionable hint; search result empty states include a "Clear search" link; history and stats link to active jobs; processes and recurring tasks explain what to do next
- Inline notifications — bulk and single-job actions now surface a flash notice; Turbo Stream discard responses prepend the message to the page without a full reload; bulk discard/retry counts are shown ("3 jobs discarded")
- Dark mode — toggle button in the header switches between light and dark palettes; preference persisted in
localStorage; respectsprefers-color-schemeon first visit; driven entirely by CSS custom properties on[data-theme="dark"]
v0.6.0
Release v0.6.0