Skip to content

Releases: AnjanJ/rails_error_dashboard

v0.5.9

27 Mar 13:14

Choose a tag to compare

What's New in v0.5.9

Platform as Source of Truth

The error dashboard now mirrors your issue tracker's state in real-time:

  • Issue status — Open/Closed badge fetched from GitHub/GitLab/Codeberg API
  • Assignees — Avatars and usernames displayed as rounded pills
  • Labels — Color-matched badges from your platform
  • Comments — Real platform comments shown in the Discussion section with avatars and timestamps

All data cached 60 seconds. Read-only — the platform is authoritative.

Workflow Controls Adapt

When enable_issue_tracking = true:

  • Mark as Resolved, Workflow Status, Assigned To, and Priority are hidden from the sidebar — the platform handles these
  • Snooze and Mute remain (no platform equivalent)
  • When issue tracking is disabled, all controls remain as before

UX Improvements

  • Create Issue opens the new issue in a new tab and scrolls to the Issue Tracker section
  • Scrollable breadcrumbs — 400px max height, no more endless page push
  • Issue pill in section navigation for quick-jump
  • View Issue button in card header (matches Discussion pattern)
  • Removed Unlink button and duplicate Discuss button

GitHub Sponsors

Now the primary funding option — Sponsor on GitHub

Full Changelog: v0.5.8...v0.5.9

v0.5.8

27 Mar 09:02

Choose a tag to compare

What's New in v0.5.8

GitHub/GitLab/Codeberg Issue Tracking

Full issue tracker integration with three tiers:

  • Manual: "Create Issue" button + "Link Existing Issue" on error detail page. Supports GitHub, GitLab, and Codeberg/Gitea/Forgejo with auto-detection from git_repository_url
  • Auto-create: Configurable — on first occurrence and/or severity threshold (:critical, :high). Background jobs with circuit breaker
  • Lifecycle sync: Resolve error → close issue. Error recurs → reopen issue + comment. Throttled recurrence comments (max 1/hour). All async via ActiveJob
  • Two-way webhooks: POST /red/webhooks/:provider with HMAC verification (GitHub SHA256, GitLab token, Codeberg/Gitea SHA256). Issue closed/reopened on platform → syncs to dashboard

RED Branding

  • Dashboard header shows RED (Rails Error Dashboard)
  • New installs mount at /red (existing /error_dashboard works for backward compatibility)
  • All issues and comments include "Created by RED" footer with link
  • Installer guides users to create a dedicated RED bot account

ActiveStorage Service Health

Track file uploads, downloads, deletes, and existence checks across any ActiveStorage backend (Disk, S3, GCS, Azure). Dashboard page at /errors/activestorage_health_summary with per-service operation counts, avg/slowest durations.

Codeberg/Gitea/Forgejo Source Code Linking

GithubLinkGenerator now detects codeberg.org, gitea.*, and forgejo.* URLs. Uses /src/commit/ for SHAs and /src/branch/ for branch names.

Comment System Replaced

Manual comment form removed. Discussion now lives on your issue tracker:

  • Linked issue → "Discuss on GitHub/GitLab" button
  • Workflow audit trail (snooze, mute, status changes) preserved as read-only "Activity Log"

Copy for LLM Fixes

  • Backticks and quotes no longer escaped in clipboard output
  • [FILTERED] variables omitted entirely (no debugging value for LLMs)

Full Changelog: v0.5.7...v0.5.8

v0.5.7

25 Mar 12:49

Choose a tag to compare

What's New in v0.5.7

Copy for LLM — Major Quality Upgrade

The "Copy for LLM" button now produces significantly better output for AI-assisted debugging:

New: Source code snippets — Reads the actual Ruby code (±3 lines context) for the top 3 app backtrace frames. The crash line is marked with >. The LLM can now see what the code does, not just where it crashed.

New: Request params & user agent — Request parameters pretty-printed as JSON, plus the user agent string.

New: Full system health — Expanded from 4 metrics to include process memory (RSS/peak/swap), GC context, DB pool health, file descriptors, system load, system memory, and TCP connections.

Optimized for signal-to-noise — Removed process-wide metrics that don't help debug specific errors (RubyVM, YJIT, ActionCable, Puma, job queue stats) and human workflow fields (severity, status, priority, assigned_to, IP). Added controller#action and user ID.

Fixed

  • Markdown now copies with real newlines (was rendering literal \n)
  • Handles both plain ErrorLog and wrapped related error objects
  • Correctly extracts _self_class from serialized hash format

Full Changelog: v0.5.6...v0.5.7

v0.5.6

25 Mar 11:46

Choose a tag to compare

What's New in v0.5.6

Fixed

  • Copy for LLM rendered literal \n instead of newlines — Markdown now copies with real newlines, rendering correctly in editors and LLMs

  • Copy for LLM crashed on related errorsrelated_errors returns plain ErrorLog objects, not wrapped objects with .similarity/.error accessors. Now handles both formats gracefully

  • Instance variable _self_class rendered as raw hash — When stored as a serialized hash, the formatter now extracts the class name correctly

Full Changelog: v0.5.5...v0.5.6

v0.5.5

25 Mar 11:08

Choose a tag to compare

What's New in v0.5.5

Fixed

  • Default credentials check blocked users who explicitly set ENV varsdefault_credentials? compared values regardless of source, so ERROR_DASHBOARD_USER=gandalf set deliberately as an ENV var would still be blocked. Now checks ENV.key? first — if you explicitly set the ENV vars, your choice is respected even if the values match the defaults.

Full Changelog: v0.5.4...v0.5.5

v0.5.4

25 Mar 10:17

Choose a tag to compare

What's New in v0.5.4

Fixed

  • Docker build crash with default credentials checkassets:precompile runs in production mode with SECRET_KEY_BASE_DUMMY=1 but without runtime ENV vars like ERROR_DASHBOARD_USER. The v0.5.3 credential validation would crash the build. Now skips the check when SECRET_KEY_BASE_DUMMY is set.

Full Changelog: v0.5.3...v0.5.4

v0.5.3

25 Mar 09:58

Choose a tag to compare

What's New in v0.5.3

Added

  • "Copy for LLM" button on error detail page (#94) — One-click copy of error details as clean Markdown, optimized for pasting into an LLM session. Conditional sections: app backtrace (framework frames filtered), exception cause chain, local/instance variables, request context, breadcrumbs (last 10), environment, system health, related errors with similarity %, and metadata. Sensitive data stays [FILTERED]. Thanks @paul!

  • Default credentials protection — App refuses to boot in production with gandalf/youshallnotpass or blank credentials (raises ConfigurationError). Dashboard shows a reminder banner in all environments until credentials are changed

Fixed

  • MySQL index key too long on swallowed_exceptions (#96) — Composite unique index totalled 5042 bytes under utf8mb4, exceeding MySQL's 3072-byte InnoDB limit. Reduced string column limits from 255/500/500 to 250/250/250 (3022 bytes total). Includes fix migration for existing installations. Thanks @gmarziou!

  • Install generator matched config values inside comments — The detect_existing_config regex for use_separate_database and database name could match commented-out lines, causing single-DB apps to be misidentified as separate-DB on upgrade. Both regexes now anchored to skip comments

Full Changelog: v0.5.2...v0.5.3

v0.5.2

24 Mar 19:13

Choose a tag to compare

What's New in v0.5.2

Added

  • Deep runtime insights in system health snapshot — 6 new metric groups captured at error time, all from Linux procfs reads and Ruby APIs (zero subprocess calls, <1ms budget). Color-coded danger indicators in sidebar view:
    • Process memory: swap_mb, rss_peak_mb, os_threads
    • File descriptors: open count vs ulimit with utilization %
    • System load: 1/5/15m averages, CPU count, load ratio
    • System memory: total/available/used%, swap used
    • GC context: last major/minor, trigger reason, current state
    • TCP connections: established/close_wait/time_wait/listen counts

Fixed

  • Migration duplication on generator re-run (#93) — Re-running rails generate rails_error_dashboard:install after upgrade no longer duplicates migrations into wrong directory. Generator detects existing initializer config, checks both db/migrate/ and db/error_dashboard_migrate/, and preserves existing configuration. Thanks @gmarziou!

Full Changelog: v0.5.1...v0.5.2

v0.5.1

24 Mar 14:11

Choose a tag to compare

What's New in v0.5.1

Fixed

  • Missing ActionCable nav link in dashboard sidebar — Users had no way to navigate to the ActionCable health summary page from the dashboard UI. Added a nav link with broadcast icon, visible when enable_actioncable_tracking and enable_breadcrumbs are both enabled. Matches the existing pattern for Rate Limits, Job Health, and DB Health links.

Full Changelog: v0.5.0...v0.5.1

v0.5.0

24 Mar 13:29

Choose a tag to compare

What's New in v0.5.0

ActionCable Connection Monitoring

No error tracker (Sentry, Honeybadger, Faultline) surfaces WebSocket health alongside HTTP errors. Now you can.

  • 4 AS::Notifications events tracked as breadcrumbs: perform_action, transmit, transmit_subscription_confirmation, transmit_subscription_rejection
  • Dedicated dashboard page at /errors/actioncable_health_summary — per-channel breakdown with actions, transmissions, subscriptions, rejections, sorted by rejections descending
  • System health snapshot now captures live ActionCable connection count and adapter name at error time
  • Summary cards — Active Channels, Total Events, Subscription Rejections
  • Time range filtering — 7, 30, or 90 days
  • Safe by design — all subscribers rescue-wrapped, system health reads are <0.1ms and read-only, feature defaults to OFF

Configuration

config.enable_breadcrumbs = true
config.enable_actioncable_tracking = true

Auto-disables with a warning if breadcrumbs aren't enabled. Guarded with defined?(ActionCable) — zero impact on apps without ActionCable.

Bug Fixes

  • Fixed flaky swallowed exception tracker specs — Eliminated TracePoint state leakage where RSpec internals accumulated in counters between tests

Test Coverage

  • 31 new specs for ActionCable monitoring (subscriber, query, system health, config validation)
  • Full suite: 2723 examples, 0 failures

Full Changelog: v0.4.2...v0.5.0