From c39b94923912a5547e0072594e620bac06454de0 Mon Sep 17 00:00:00 2001 From: Chuck Smith Date: Sun, 7 Jun 2026 05:47:46 -0400 Subject: [PATCH 1/4] chore: add table of contents to README Co-Authored-By: Claude Sonnet 4.6 --- README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/README.md b/README.md index aa449f9..185eafe 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,37 @@ A production-ready operations dashboard for the full Rails Solid Stack. Mount one engine to get deep visibility into **Solid Queue** (job browser, failed job retry, queue controls, recurring tasks, performance stats), **Solid Cache** (entry browser, size distribution, write timeline), and **Solid Cable** (channel browser, message list, purge controls) — with dark mode, i18n locale switching, CSV export, alert webhooks, and a JSON metrics endpoint, all with no asset pipeline dependency. +## Table of Contents + +- [Installation](#installation) +- [Screenshots](#screenshots) +- [Metrics endpoint](#metrics-endpoint) +- [General configuration](#general-configuration) + - [Authentication](#authentication) + - [Linking to the dashboard](#linking-to-the-dashboard) +- [Security](#security) + - [Authentication](#authentication-1) + - [Sensitive cache values](#sensitive-cache-values) + - [CSRF protection](#csrf-protection) + - [Rate limiting and network exposure](#rate-limiting-and-network-exposure) +- [Solid Queue](#solid-queue) + - [Features](#features) + - [Configuration](#configuration) + - [Job Filtering](#job-filtering) +- [Solid Cache](#solid-cache) + - [Features](#features-1) +- [Solid Cable](#solid-cable) + - [Features](#features-2) +- [Requirements](#requirements) +- [Versioning](#versioning) + - [Public API](#public-api) + - [Not part of the public API](#not-part-of-the-public-api) + - [Deprecation policy](#deprecation-policy) +- [Contributing](#contributing) +- [License](#license) + +--- + ## Installation Add the gem to your application's `Gemfile`: From 55fbbe8ab282f731936b4ad95585f93d427439ad Mon Sep 17 00:00:00 2001 From: Chuck Smith Date: Sun, 7 Jun 2026 05:52:14 -0400 Subject: [PATCH 2/4] chore: add back-to-top links at the bottom of each README section Co-Authored-By: Claude Sonnet 4.6 --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 185eafe..abd07e1 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,16 @@ rails generate solid_stack_web:install This creates `config/initializers/solid_stack_web.rb` with every configuration option commented inline, and injects `mount SolidStackWeb::Engine, at: "/solid_stack"` into `config/routes.rb`. The dashboard will then be available at `/solid_stack` (or whatever path you choose). +[↑ Back to top](#table-of-contents) + --- ## Screenshots ![SolidStackWeb dashboard](docs/screenshots/demo.gif) +[↑ Back to top](#table-of-contents) + --- ## Metrics endpoint @@ -95,6 +99,8 @@ This creates `config/initializers/solid_stack_web.rb` with every configuration o `slow_jobs` is only present when `slow_job_threshold` is configured. The endpoint is protected by the same authentication as the rest of the dashboard. +[↑ Back to top](#table-of-contents) + --- ## General configuration @@ -130,6 +136,8 @@ The `authenticate` block is evaluated in the context of each request's controlle link_to "Queue Dashboard", SolidStackWeb.mount_path ``` +[↑ Back to top](#table-of-contents) + --- ## Security @@ -168,6 +176,8 @@ The dashboard is designed to be mounted behind your application's existing authe - Restricting access by IP at the reverse-proxy level - Applying [Rack::Attack](https://github.com/rack/rack-attack) rules to the mount path +[↑ Back to top](#table-of-contents) + --- ## Solid Queue @@ -246,6 +256,8 @@ The jobs list supports four independent filters, all driven by query params: Filters are preserved when switching between status tabs (Ready / Scheduled / Running / Blocked) and when discarding a job. They can be combined freely. +[↑ Back to top](#table-of-contents) + --- ## Solid Cache @@ -262,6 +274,8 @@ Filters are preserved when switching between status tabs (Ready / Scheduled / Ru - **Delete entry** — per-row delete button or detail-page button removes a single cache entry - **Flush All** — header button deletes every cache entry with a confirmation prompt +[↑ Back to top](#table-of-contents) + --- ## Solid Cable @@ -274,6 +288,8 @@ Filters are preserved when switching between status tabs (Ready / Scheduled / Ru - **Per-channel message list** — `GET /cable/channels/:channel_hash` shows a paginated, reverse-chronological list of that channel's `SolidCable::Message` records; each row shows the message ID, a truncated payload preview (120 chars) with the full payload on hover, and a relative sent time with the exact timestamp on hover; supports `?q=` filtering by payload substring; **Purge Channel** button deletes all messages for the channel - **Message purge** — "Purge Old" form on the channel browser deletes all messages older than 1, 7, or 30 days; confirmation prompt before any destructive action +[↑ Back to top](#table-of-contents) + --- ## Requirements @@ -286,6 +302,10 @@ Filters are preserved when switching between status tabs (Ready / Scheduled / Ru - [turbo-rails](https://github.com/hotwired/turbo-rails) >= 2.0 - [importmap-rails](https://github.com/rails/importmap-rails) >= 1.2 +[↑ Back to top](#table-of-contents) + +--- + ## Versioning SolidStackWeb follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). @@ -314,6 +334,8 @@ The following are internal and may change in any release without notice: When a public API item is renamed or removed, the old interface is deprecated in a **minor** release — it continues to work but issues an `ActiveSupport::Deprecation` warning pointing to the replacement. The old interface is removed in the next **major** release. The [UPGRADING.md](UPGRADING.md) file documents every breaking change and the migration steps. +[↑ Back to top](#table-of-contents) + --- ## Contributing @@ -325,6 +347,12 @@ When a public API item is renamed or removed, the old interface is deprecated in Bug reports and feature requests are welcome on [GitHub Issues](https://github.com/eclectic-coding/solid_stack_web/issues). +[↑ Back to top](#table-of-contents) + +--- + ## License -The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). \ No newline at end of file +The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). + +[↑ Back to top](#table-of-contents) \ No newline at end of file From a9f267175efab25eef6e0e01e73d6130d9fa4bec Mon Sep 17 00:00:00 2001 From: Chuck Smith Date: Sun, 7 Jun 2026 05:54:40 -0400 Subject: [PATCH 3/4] chore: add CHANGELOG entry for README navigation improvements Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eef358c..215b51f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Locale switcher — a `