rails_error_dashboard 0.8.4 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -0
  3. data/app/controllers/rails_error_dashboard/application_controller.rb +107 -4
  4. data/app/controllers/rails_error_dashboard/errors_controller.rb +91 -73
  5. data/app/controllers/rails_error_dashboard/locales_controller.rb +87 -0
  6. data/app/helpers/rails_error_dashboard/application_helper.rb +20 -14
  7. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +15 -6
  8. data/app/helpers/rails_error_dashboard/i18n_helper.rb +154 -0
  9. data/app/helpers/rails_error_dashboard/mailer_i18n_helper.rb +69 -0
  10. data/app/helpers/rails_error_dashboard/overview_helper.rb +18 -6
  11. data/app/helpers/rails_error_dashboard/user_agent_helper.rb +25 -11
  12. data/app/jobs/rails_error_dashboard/application_job.rb +5 -0
  13. data/app/jobs/rails_error_dashboard/baseline_alert_job.rb +18 -16
  14. data/app/jobs/rails_error_dashboard/concerns/localized_job.rb +83 -0
  15. data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +4 -2
  16. data/app/jobs/rails_error_dashboard/email_error_notification_job.rb +4 -2
  17. data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +6 -2
  18. data/app/jobs/rails_error_dashboard/scheduled_digest_job.rb +8 -3
  19. data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +6 -4
  20. data/app/jobs/rails_error_dashboard/storm_notification_job.rb +26 -8
  21. data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +4 -2
  22. data/app/mailers/rails_error_dashboard/application_mailer.rb +14 -0
  23. data/app/mailers/rails_error_dashboard/digest_mailer.rb +18 -2
  24. data/app/mailers/rails_error_dashboard/error_notification_mailer.rb +19 -2
  25. data/app/views/layouts/rails_error_dashboard.html.erb +255 -92
  26. data/app/views/rails_error_dashboard/digest_mailer/digest_summary.html.erb +23 -22
  27. data/app/views/rails_error_dashboard/digest_mailer/digest_summary.text.erb +30 -19
  28. data/app/views/rails_error_dashboard/error_notification_mailer/error_alert.html.erb +18 -16
  29. data/app/views/rails_error_dashboard/error_notification_mailer/error_alert.text.erb +21 -14
  30. data/app/views/rails_error_dashboard/errors/_ai_help_panel.html.erb +11 -7
  31. data/app/views/rails_error_dashboard/errors/_breadcrumbs_group.html.erb +45 -38
  32. data/app/views/rails_error_dashboard/errors/_co_occurring_errors.html.erb +17 -14
  33. data/app/views/rails_error_dashboard/errors/_discussion.html.erb +27 -9
  34. data/app/views/rails_error_dashboard/errors/_error_cascades.html.erb +25 -21
  35. data/app/views/rails_error_dashboard/errors/_error_info.html.erb +25 -22
  36. data/app/views/rails_error_dashboard/errors/_error_row.html.erb +24 -12
  37. data/app/views/rails_error_dashboard/errors/_instance_variables.html.erb +12 -11
  38. data/app/views/rails_error_dashboard/errors/_issue_section.html.erb +19 -13
  39. data/app/views/rails_error_dashboard/errors/_llm_summary.html.erb +14 -14
  40. data/app/views/rails_error_dashboard/errors/_local_variables.html.erb +8 -8
  41. data/app/views/rails_error_dashboard/errors/_modals.html.erb +60 -52
  42. data/app/views/rails_error_dashboard/errors/_pattern_insights.html.erb +59 -49
  43. data/app/views/rails_error_dashboard/errors/_request_context.html.erb +23 -20
  44. data/app/views/rails_error_dashboard/errors/_show_scripts.html.erb +14 -14
  45. data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +118 -93
  46. data/app/views/rails_error_dashboard/errors/_similar_errors.html.erb +18 -12
  47. data/app/views/rails_error_dashboard/errors/_source_code.html.erb +20 -5
  48. data/app/views/rails_error_dashboard/errors/_stats.html.erb +5 -5
  49. data/app/views/rails_error_dashboard/errors/_timeline.html.erb +7 -7
  50. data/app/views/rails_error_dashboard/errors/_user_errors_table.html.erb +15 -12
  51. data/app/views/rails_error_dashboard/errors/actioncable_health_summary.html.erb +25 -25
  52. data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +28 -28
  53. data/app/views/rails_error_dashboard/errors/analytics.html.erb +82 -82
  54. data/app/views/rails_error_dashboard/errors/cache_health_summary.html.erb +27 -27
  55. data/app/views/rails_error_dashboard/errors/correlation.html.erb +61 -57
  56. data/app/views/rails_error_dashboard/errors/database_health_summary.html.erb +64 -65
  57. data/app/views/rails_error_dashboard/errors/deprecations.html.erb +23 -23
  58. data/app/views/rails_error_dashboard/errors/diagnostic_dumps.html.erb +48 -36
  59. data/app/views/rails_error_dashboard/errors/index.html.erb +121 -70
  60. data/app/views/rails_error_dashboard/errors/job_health_summary.html.erb +30 -30
  61. data/app/views/rails_error_dashboard/errors/llm_health_summary.html.erb +38 -39
  62. data/app/views/rails_error_dashboard/errors/n_plus_one_summary.html.erb +28 -25
  63. data/app/views/rails_error_dashboard/errors/overview.html.erb +45 -39
  64. data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +45 -44
  65. data/app/views/rails_error_dashboard/errors/rack_attack_summary.html.erb +30 -29
  66. data/app/views/rails_error_dashboard/errors/releases.html.erb +46 -47
  67. data/app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb +48 -44
  68. data/app/views/rails_error_dashboard/errors/settings.html.erb +122 -112
  69. data/app/views/rails_error_dashboard/errors/show.html.erb +44 -37
  70. data/app/views/rails_error_dashboard/errors/storms.html.erb +30 -24
  71. data/app/views/rails_error_dashboard/errors/swallowed_exceptions.html.erb +26 -26
  72. data/app/views/rails_error_dashboard/errors/user_impact.html.erb +31 -30
  73. data/config/locales/de.yml +2007 -0
  74. data/config/locales/en.yml +2719 -0
  75. data/config/locales/es.yml +2079 -0
  76. data/config/locales/fr.yml +2082 -0
  77. data/config/locales/it.yml +2060 -0
  78. data/config/locales/ja.yml +1802 -0
  79. data/config/locales/pl.yml +2108 -0
  80. data/config/locales/pt-BR.yml +2064 -0
  81. data/config/locales/ru.yml +2109 -0
  82. data/config/locales/uk.yml +2106 -0
  83. data/config/locales/zh-CN.yml +1791 -0
  84. data/config/routes.rb +5 -0
  85. data/db/migrate/20260325000001_fix_swallowed_exceptions_index_for_mysql.rb +9 -3
  86. data/lib/rails_error_dashboard/commands/batch_delete_errors.rb +3 -1
  87. data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +4 -2
  88. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +4 -2
  89. data/lib/rails_error_dashboard/commands/batch_unmute_errors.rb +4 -2
  90. data/lib/rails_error_dashboard/commands/create_issue.rb +5 -3
  91. data/lib/rails_error_dashboard/commands/link_existing_issue.rb +4 -2
  92. data/lib/rails_error_dashboard/commands/log_error.rb +1 -1
  93. data/lib/rails_error_dashboard/configuration.rb +23 -6
  94. data/lib/rails_error_dashboard/current.rb +56 -0
  95. data/lib/rails_error_dashboard/i18n_store.rb +293 -0
  96. data/lib/rails_error_dashboard/private_backend.rb +213 -0
  97. data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +89 -22
  98. data/lib/rails_error_dashboard/services/digest_builder.rb +21 -7
  99. data/lib/rails_error_dashboard/services/discord_payload_builder.rb +27 -15
  100. data/lib/rails_error_dashboard/services/error_notification_dispatcher.rb +10 -5
  101. data/lib/rails_error_dashboard/services/localized_time_formatter.rb +117 -0
  102. data/lib/rails_error_dashboard/services/notification_helpers.rb +87 -4
  103. data/lib/rails_error_dashboard/services/pagerduty_payload_builder.rb +22 -5
  104. data/lib/rails_error_dashboard/services/slack_payload_builder.rb +48 -28
  105. data/lib/rails_error_dashboard/services/storm_protection/gate.rb +2 -1
  106. data/lib/rails_error_dashboard/services/webhook_payload_builder.rb +15 -1
  107. data/lib/rails_error_dashboard/translation.rb +39 -0
  108. data/lib/rails_error_dashboard/version.rb +1 -1
  109. data/lib/rails_error_dashboard.rb +4 -0
  110. data/lib/tasks/error_dashboard.rake +5 -1
  111. metadata +35 -8
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_error_dashboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anjan Jagirdar
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '0.22'
172
+ version: '1.1'
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '0.22'
179
+ version: '1.1'
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: appraisal
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -232,9 +232,16 @@ description: 'Own your errors. Own your stack. A fully open-source, self-hosted
232
232
  dashboard UI (dark/light), multi-channel notifications (Slack, Email, Discord, PagerDuty,
233
233
  webhooks), workflow management, advanced analytics, platform detection (iOS/Android/Web/API),
234
234
  and two-way issue sync with GitHub, GitLab, Codeberg, and Linear. Also: LLM observability,
235
- AI-powered debugging help, and OpenTelemetry span export. 5-minute setup, works
236
- out-of-the-box. Rails 7.0-8.1, Ruby 3.2-4.0. BETA: API may change before v1.0.0.
237
- Live demo: https://rails-error-dashboard.anjan.dev (gandalf/youshallnotpass)'
235
+ AI-powered debugging help, and OpenTelemetry span export. The dashboard, mailers
236
+ and notification payloads are translated into 11 languages: English, German, Spanish,
237
+ French, Brazilian Portuguese, Italian, Polish, Russian, Ukrainian, Japanese, and
238
+ Simplified Chinese — 1,515 source strings, set via config.dashboard_locale with
239
+ a per-user picker. RED translates through its own private I18n backend and never
240
+ mutates your app''s I18n; a missing translation falls back to English. Backtraces,
241
+ exception names and webhook payload keys stay English by design. The ten non-English
242
+ locales are machine-translated and not yet reviewed by native speakers. 5-minute
243
+ setup, works out-of-the-box. Rails 7.0-8.1, Ruby 3.2-4.0. BETA: API may change before
244
+ v1.0.0. Live demo: https://rails-error-dashboard.anjan.dev (gandalf/youshallnotpass)'
238
245
  email:
239
246
  - anjan.jagirdar@gmail.com
240
247
  executables: []
@@ -246,9 +253,12 @@ files:
246
253
  - Rakefile
247
254
  - app/controllers/rails_error_dashboard/application_controller.rb
248
255
  - app/controllers/rails_error_dashboard/errors_controller.rb
256
+ - app/controllers/rails_error_dashboard/locales_controller.rb
249
257
  - app/controllers/rails_error_dashboard/webhooks_controller.rb
250
258
  - app/helpers/rails_error_dashboard/application_helper.rb
251
259
  - app/helpers/rails_error_dashboard/backtrace_helper.rb
260
+ - app/helpers/rails_error_dashboard/i18n_helper.rb
261
+ - app/helpers/rails_error_dashboard/mailer_i18n_helper.rb
252
262
  - app/helpers/rails_error_dashboard/overview_helper.rb
253
263
  - app/helpers/rails_error_dashboard/user_agent_helper.rb
254
264
  - app/jobs/rails_error_dashboard/add_issue_recurrence_comment_job.rb
@@ -256,6 +266,7 @@ files:
256
266
  - app/jobs/rails_error_dashboard/async_error_logging_job.rb
257
267
  - app/jobs/rails_error_dashboard/baseline_alert_job.rb
258
268
  - app/jobs/rails_error_dashboard/close_linked_issue_job.rb
269
+ - app/jobs/rails_error_dashboard/concerns/localized_job.rb
259
270
  - app/jobs/rails_error_dashboard/create_issue_job.rb
260
271
  - app/jobs/rails_error_dashboard/discord_error_notification_job.rb
261
272
  - app/jobs/rails_error_dashboard/email_error_notification_job.rb
@@ -331,6 +342,17 @@ files:
331
342
  - app/views/rails_error_dashboard/errors/storms.html.erb
332
343
  - app/views/rails_error_dashboard/errors/swallowed_exceptions.html.erb
333
344
  - app/views/rails_error_dashboard/errors/user_impact.html.erb
345
+ - config/locales/de.yml
346
+ - config/locales/en.yml
347
+ - config/locales/es.yml
348
+ - config/locales/fr.yml
349
+ - config/locales/it.yml
350
+ - config/locales/ja.yml
351
+ - config/locales/pl.yml
352
+ - config/locales/pt-BR.yml
353
+ - config/locales/ru.yml
354
+ - config/locales/uk.yml
355
+ - config/locales/zh-CN.yml
334
356
  - config/routes.rb
335
357
  - db/development.sqlite3
336
358
  - db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb
@@ -404,9 +426,11 @@ files:
404
426
  - lib/rails_error_dashboard/commands/upsert_cascade_pattern.rb
405
427
  - lib/rails_error_dashboard/configuration.rb
406
428
  - lib/rails_error_dashboard/configuration_error.rb
429
+ - lib/rails_error_dashboard/current.rb
407
430
  - lib/rails_error_dashboard/engine.rb
408
431
  - lib/rails_error_dashboard/error_reporter.rb
409
432
  - lib/rails_error_dashboard/helpers/user_model_detector.rb
433
+ - lib/rails_error_dashboard/i18n_store.rb
410
434
  - lib/rails_error_dashboard/integrations/llm_middleware.rb
411
435
  - lib/rails_error_dashboard/integrations/llm_span_processor.rb
412
436
  - lib/rails_error_dashboard/integrations/o_tel.rb
@@ -420,6 +444,7 @@ files:
420
444
  - lib/rails_error_dashboard/plugins/audit_log_plugin.rb
421
445
  - lib/rails_error_dashboard/plugins/jira_integration_plugin.rb
422
446
  - lib/rails_error_dashboard/plugins/metrics_plugin.rb
447
+ - lib/rails_error_dashboard/private_backend.rb
423
448
  - lib/rails_error_dashboard/queries/action_cable_summary.rb
424
449
  - lib/rails_error_dashboard/queries/active_storage_summary.rb
425
450
  - lib/rails_error_dashboard/queries/analytics_stats.rb
@@ -481,6 +506,7 @@ files:
481
506
  - lib/rails_error_dashboard/services/llm_cost_estimator.rb
482
507
  - lib/rails_error_dashboard/services/llm_summary.rb
483
508
  - lib/rails_error_dashboard/services/local_variable_capturer.rb
509
+ - lib/rails_error_dashboard/services/localized_time_formatter.rb
484
510
  - lib/rails_error_dashboard/services/markdown_error_formatter.rb
485
511
  - lib/rails_error_dashboard/services/n_plus_one_detector.rb
486
512
  - lib/rails_error_dashboard/services/notification_helpers.rb
@@ -513,6 +539,7 @@ files:
513
539
  - lib/rails_error_dashboard/subscribers/llm_call_subscriber.rb
514
540
  - lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb
515
541
  - lib/rails_error_dashboard/test_error.rb
542
+ - lib/rails_error_dashboard/translation.rb
516
543
  - lib/rails_error_dashboard/value_objects/error_context.rb
517
544
  - lib/rails_error_dashboard/value_objects/llm_call_event.rb
518
545
  - lib/rails_error_dashboard/version.rb
@@ -530,7 +557,7 @@ metadata:
530
557
  funding_uri: https://github.com/sponsors/AnjanJ
531
558
  post_install_message: |
532
559
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
533
- RED (Rails Error Dashboard) v0.8.4
560
+ RED (Rails Error Dashboard) v0.9.1
534
561
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
535
562
 
536
563
  First install:
@@ -569,5 +596,5 @@ requirements: []
569
596
  rubygems_version: 3.6.9
570
597
  specification_version: 4
571
598
  summary: Self-hosted error tracking for Rails — local variables, system health, separate
572
- or shared database. A free, open-source Sentry alternative.
599
+ or shared database, dashboard in 11 languages. A free, open-source Sentry alternative.
573
600
  test_files: []