Releases: AnjanJ/rails_error_dashboard
v0.5.9
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
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/:providerwith 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_dashboardworks 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
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_classfrom serialized hash format
Full Changelog: v0.5.6...v0.5.7
v0.5.6
What's New in v0.5.6
Fixed
-
Copy for LLM rendered literal
\ninstead of newlines — Markdown now copies with real newlines, rendering correctly in editors and LLMs -
Copy for LLM crashed on related errors —
related_errorsreturns plainErrorLogobjects, not wrapped objects with.similarity/.erroraccessors. Now handles both formats gracefully -
Instance variable
_self_classrendered 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
What's New in v0.5.5
Fixed
- Default credentials check blocked users who explicitly set ENV vars —
default_credentials?compared values regardless of source, soERROR_DASHBOARD_USER=gandalfset deliberately as an ENV var would still be blocked. Now checksENV.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
What's New in v0.5.4
Fixed
- Docker build crash with default credentials check —
assets:precompileruns in production mode withSECRET_KEY_BASE_DUMMY=1but without runtime ENV vars likeERROR_DASHBOARD_USER. The v0.5.3 credential validation would crash the build. Now skips the check whenSECRET_KEY_BASE_DUMMYis set.
Full Changelog: v0.5.3...v0.5.4
v0.5.3
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/youshallnotpassor blank credentials (raisesConfigurationError). 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_configregex foruse_separate_databaseanddatabasename 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
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:installafter upgrade no longer duplicates migrations into wrong directory. Generator detects existing initializer config, checks bothdb/migrate/anddb/error_dashboard_migrate/, and preserves existing configuration. Thanks @gmarziou!
Full Changelog: v0.5.1...v0.5.2
v0.5.1
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_trackingandenable_breadcrumbsare 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
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 = trueAuto-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