diff --git a/CHANGELOG.md b/CHANGELOG.md index 844e7a7..3d66a99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- 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`; respects `prefers-color-scheme` on first visit; driven entirely by CSS custom properties on `[data-theme="dark"]` diff --git a/README.md b/README.md index 0530615..8aa40af 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ The dashboard will be available at `/solid_stack` (or whatever path you choose). - **Auto-refresh** — dashboard, jobs, processes, and history views poll automatically; pauses when the tab is hidden or a checkbox is checked; intervals configurable via `dashboard_refresh_interval` and `default_refresh_interval` - **Turbo Stream** job discard — removes the row inline without a full page reload - **Dark mode** — toggle button in the header switches between light and dark palettes; preference persisted in `localStorage`; respects `prefers-color-scheme` on first visit +- **Empty-state improvements** — all list views show a contextual title and an actionable hint; search empty states include a "Clear search" link; filters-active history view offers "Clear filters"; processes and recurring tasks explain the next step - **Inline notifications** — bulk and single-job actions surface a flash notice; Turbo Stream discard responses inject the message inline without a full page reload; bulk actions report the affected count ("3 jobs discarded") ### Configuration diff --git a/ROADMAP.md b/ROADMAP.md index 0991d69..ae7bbc7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -11,7 +11,6 @@ The path to v1.0.0 is staged: first achieve feature parity with `solid_queue_das > _Make the interface feel fast and operational, not just functional._ ### Added -- **Empty-state improvements** — contextual empty states per section with actionable next steps - **Responsive layout** — stats cards and tables adapt to narrow viewports - **CSS audit** — review all inline styles, consolidate utility classes, remove duplication, and enforce consistent use of CSS custom properties across all stylesheets diff --git a/app/assets/stylesheets/solid_stack_web/_04_table.css b/app/assets/stylesheets/solid_stack_web/_04_table.css index 9130597..0b1ce4e 100644 --- a/app/assets/stylesheets/solid_stack_web/_04_table.css +++ b/app/assets/stylesheets/solid_stack_web/_04_table.css @@ -42,3 +42,15 @@ text-align: center; color: var(--muted); } + +.sqw-empty__title { + font-size: 15px; + font-weight: 600; + color: var(--text); + margin-bottom: 0.375rem; +} + +.sqw-empty__hint { + font-size: 13px; + margin-top: 0.375rem; +} diff --git a/app/views/solid_stack_web/cable/index.html.erb b/app/views/solid_stack_web/cable/index.html.erb index 552b21d..35c9d2b 100644 --- a/app/views/solid_stack_web/cable/index.html.erb +++ b/app/views/solid_stack_web/cable/index.html.erb @@ -69,6 +69,12 @@ <% else %>
<%= @search.present? ? "No channels matching “#{@search}”.".html_safe : "No cable messages." %>
+ <% if @search.present? %> +No channels matching “<%= @search %>”
+<%= link_to "Clear search", cable_path %>
+ <% else %> +No cable messages
+Messages will appear here once clients connect and broadcast over Action Cable.
+ <% end %><%= @search.present? ? "No messages matching “#{@search}”.".html_safe : "No messages for this channel." %>
+ <% if @search.present? %> +No messages matching “<%= @search %>”
+<%= link_to "Clear search", cable_channel_messages_path(params[:channel_hash]) %>
+ <% else %> +No messages for this channel
+Messages may have been purged or the channel has gone quiet. <%= link_to "Back to channels →", cable_path %>
+ <% end %><%= @search.present? ? "No entries matching “#{@search}”.".html_safe : "No cache entries." %>
+ <% if @search.present? %> +No entries matching “<%= @search %>”
+<%= link_to "Clear search", cache_entries_path %>
+ <% else %> +No cache entries
+Entries will appear here once your application writes to the cache.
+ <% end %>No failed jobs.
+No failed jobs
+All clear — your jobs are running without errors.
No finished jobs found.
+ <% if @search.present? || @queue.present? || @period.present? %> +No finished jobs match your filters
+<%= link_to "Clear filters", history_path %>
+ <% else %> +No finished jobs yet
+Completed jobs will appear here once workers process them.
+ <% end %>No <%= @status %> jobs.
-No <%= @status %> jobs matching “<%= @search %>”
+<%= link_to "Clear search", jobs_path(status: @status) %>
+ <% else %> +No <%= @status %> jobs
++ <% case @status %> + <% when "ready" %> + Jobs will appear here once they are enqueued and ready to be picked up. + <% when "scheduled" %> + No jobs are scheduled to run in the future. + <% when "claimed" %> + No jobs are currently being processed by a worker. + <% when "blocked" %> + No jobs are blocked by concurrency controls. + <% end %> +
+ <% end %> + \ No newline at end of file diff --git a/app/views/solid_stack_web/processes/index.html.erb b/app/views/solid_stack_web/processes/index.html.erb index 512e933..3dbf02f 100644 --- a/app/views/solid_stack_web/processes/index.html.erb +++ b/app/views/solid_stack_web/processes/index.html.erb @@ -29,7 +29,8 @@ <% else %>No active processes.
+No active processes
+Start a Solid Queue worker to begin processing jobs.
No queues with ready jobs.
+No queues with ready jobs
+Workers are idle or all jobs are in another state. <%= link_to "Check job statuses →", jobs_path %>
No recurring tasks configured.
+No recurring tasks configured
+Define recurring tasks in your Solid Queue configuration to see them here.
No finished jobs yet.
+No finished jobs yet
+Performance stats appear here once jobs complete. <%= link_to "View active jobs →", jobs_path %>