rails_error_dashboard 0.15.0 → 0.16.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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -4
  3. data/app/controllers/rails_error_dashboard/errors_controller.rb +29 -2
  4. data/app/controllers/rails_error_dashboard/webhooks_controller.rb +10 -9
  5. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +7 -14
  6. data/app/helpers/rails_error_dashboard/overview_helper.rb +4 -0
  7. data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +5 -0
  8. data/app/models/rails_error_dashboard/error_log.rb +11 -8
  9. data/app/models/rails_error_dashboard/error_occurrence.rb +1 -0
  10. data/app/models/rails_error_dashboard/error_occurrence_context.rb +14 -0
  11. data/app/views/layouts/rails_error_dashboard.html.erb +3 -1
  12. data/app/views/rails_error_dashboard/errors/_captured_occurrences.html.erb +45 -0
  13. data/app/views/rails_error_dashboard/errors/_error_info.html.erb +10 -3
  14. data/app/views/rails_error_dashboard/errors/_occurrence_banner.html.erb +12 -0
  15. data/app/views/rails_error_dashboard/errors/correlation.html.erb +2 -2
  16. data/app/views/rails_error_dashboard/errors/overview.html.erb +14 -7
  17. data/app/views/rails_error_dashboard/errors/platform_comparison.html.erb +26 -17
  18. data/app/views/rails_error_dashboard/errors/settings.html.erb +6 -5
  19. data/app/views/rails_error_dashboard/errors/show.html.erb +7 -4
  20. data/config/locales/de.yml +21 -1
  21. data/config/locales/en.yml +23 -1
  22. data/config/locales/es.yml +22 -1
  23. data/config/locales/fr.yml +22 -1
  24. data/config/locales/it.yml +22 -1
  25. data/config/locales/ja.yml +20 -1
  26. data/config/locales/pl.yml +23 -1
  27. data/config/locales/pt-BR.yml +22 -1
  28. data/config/locales/ru.yml +23 -1
  29. data/config/locales/uk.yml +23 -1
  30. data/config/locales/zh-CN.yml +20 -1
  31. data/db/migrate/20260106094256_backfill_application_for_existing_errors.rb +3 -3
  32. data/db/migrate/20261015000001_create_rails_error_dashboard_error_occurrence_contexts.rb +35 -0
  33. data/db/migrate/20261015000002_add_capture_source_to_error_occurrences_and_error_logs.rb +46 -0
  34. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +14 -5
  35. data/lib/rails_error_dashboard/commands/batch_mute_errors.rb +11 -2
  36. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +7 -2
  37. data/lib/rails_error_dashboard/commands/batch_unmute_errors.rb +7 -2
  38. data/lib/rails_error_dashboard/commands/find_or_increment_error.rb +6 -0
  39. data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +2 -4
  40. data/lib/rails_error_dashboard/commands/flush_rack_attack_events.rb +2 -4
  41. data/lib/rails_error_dashboard/commands/flush_storm_counts.rb +7 -6
  42. data/lib/rails_error_dashboard/commands/flush_swallowed_exceptions.rb +2 -4
  43. data/lib/rails_error_dashboard/commands/log_error.rb +19 -7
  44. data/lib/rails_error_dashboard/commands/record_occurrence_context.rb +60 -0
  45. data/lib/rails_error_dashboard/configuration.rb +26 -3
  46. data/lib/rails_error_dashboard/error_reporter.rb +4 -2
  47. data/lib/rails_error_dashboard/manual_error_reporter.rb +11 -1
  48. data/lib/rails_error_dashboard/middleware/error_catcher.rb +18 -4
  49. data/lib/rails_error_dashboard/queries/analytics_stats.rb +0 -12
  50. data/lib/rails_error_dashboard/queries/co_occurring_errors.rb +59 -33
  51. data/lib/rails_error_dashboard/queries/platform_comparison.rb +55 -18
  52. data/lib/rails_error_dashboard/services/backtrace_processor.rb +16 -7
  53. data/lib/rails_error_dashboard/services/crash_capture.rb +5 -0
  54. data/lib/rails_error_dashboard/services/github_link_generator.rb +1 -6
  55. data/lib/rails_error_dashboard/services/markdown_error_formatter.rb +15 -16
  56. data/lib/rails_error_dashboard/services/repository_url.rb +18 -0
  57. data/lib/rails_error_dashboard/services/similarity_calculator.rb +3 -9
  58. data/lib/rails_error_dashboard/services/storm_protection/count_buffer.rb +6 -3
  59. data/lib/rails_error_dashboard/services/storm_protection/gate.rb +6 -1
  60. data/lib/rails_error_dashboard/value_objects/occurrence_snapshot.rb +23 -0
  61. data/lib/rails_error_dashboard/version.rb +1 -1
  62. data/lib/rails_error_dashboard.rb +16 -0
  63. data/lib/tasks/error_dashboard.rake +2 -3
  64. metadata +10 -2
@@ -98,6 +98,8 @@
98
98
  </div>
99
99
  </div>
100
100
 
101
+ <%= render "occurrence_banner", error: @error, occurrence_context: @occurrence_context %>
102
+
101
103
  <!-- Main content: tabs + sidebar -->
102
104
  <div class="red-detail-grid">
103
105
  <!-- Left: tabbed content -->
@@ -142,18 +144,19 @@
142
144
  <% end %>
143
145
 
144
146
  <%= render "error_info", error: @error %>
145
- <%= render "local_variables", error: @error %>
146
- <%= render "instance_variables", error: @error %>
147
+ <%= render "local_variables", error: @snapshot %>
148
+ <%= render "instance_variables", error: @snapshot %>
147
149
  </div>
148
150
 
149
151
  <!-- Tab: Context -->
150
152
  <div id="panel-context">
151
153
  <%= render "request_context", error: @error %>
152
- <%= render "breadcrumbs_group", error: @error %>
154
+ <%= render "breadcrumbs_group", error: @snapshot %>
153
155
  </div>
154
156
 
155
157
  <!-- Tab: History -->
156
158
  <div id="panel-history">
159
+ <%= render "captured_occurrences", error: @error, occurrences: @captured_occurrences, current_id: @occurrence_context&.error_occurrence_id %>
157
160
  <%= render "timeline" %>
158
161
  <% unless RailsErrorDashboard.configuration.enable_issue_tracking %>
159
162
  <%= render "discussion", error: @error %>
@@ -175,7 +178,7 @@
175
178
 
176
179
  <!-- Right: sidebar -->
177
180
  <div class="error-sidebar" style="display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; overflow-wrap: break-word;">
178
- <%= render "sidebar_metadata", error: @error, related_errors: @related_errors %>
181
+ <%= render "sidebar_metadata", error: @snapshot, related_errors: @related_errors %>
179
182
 
180
183
  <%= render "llm_summary", error: @error %>
181
184
 
@@ -36,6 +36,9 @@ de:
36
36
  healthy: "✅ Fehlerfrei"
37
37
  warning: "⚠️ Warnung"
38
38
  critical: "\U0001F534 Kritisch"
39
+ not_rated: "Nicht bewertet"
40
+ not_rated_hint: "Eine Bewertung vergleicht Plattformen und braucht daher Fehler auf mindestens zwei."
41
+ nothing_resolved: "Noch keine Fehler aus diesem Zeitraum behoben"
39
42
  device_type:
40
43
  mobile: Mobil
41
44
  tablet: Tablet
@@ -242,6 +245,10 @@ de:
242
245
  inactive_body: aktivieren, um ausgeführte Zeilen zu sehen
243
246
  enable: Aktivieren
244
247
  disable: Deaktivieren
248
+ occurrence:
249
+ title: "Vorkommen #%{id}"
250
+ body: "Breadcrumbs, Systemzustand und Variablen stammen aus diesem Vorkommen. Alles andere zeigt die neueste Erfassung."
251
+ show_latest: "Neueste anzeigen"
245
252
  baselines:
246
253
  title: Referenzstatistiken
247
254
  anomaly_label: 'Anomalie:'
@@ -343,7 +350,7 @@ de:
343
350
  types:
344
351
  business_hours:
345
352
  label: Muster der Geschäftszeiten
346
- description: Fehler häufen sich während der Geschäftszeiten (9–17 Uhr),
353
+ description: Fehler häufen sich während der Geschäftszeiten (9:00–17:59),
347
354
  was auf einen Zusammenhang mit der Nutzeraktivität hindeutet
348
355
  night:
349
356
  label: Nachtmuster
@@ -497,6 +504,14 @@ de:
497
504
  one: "+%{count} weiterer"
498
505
  other: "+%{count} weitere"
499
506
  view_errors: Fehler ansehen
507
+ captured_occurrences:
508
+ title: "Erfasste Vorkommen"
509
+ hint: "Breadcrumbs, Systemzustand und Variablen werden für die neuesten Vorkommen aufbewahrt (occurrence_context_limit). Öffnen Sie eines, um sie zu sehen."
510
+ column_occurrence: "Vorkommen"
511
+ column_occurred_at: "Aufgetreten"
512
+ column_version: "Version"
513
+ view: "Anzeigen"
514
+ viewing: "Angezeigt"
500
515
  co_occurring:
501
516
  title: Gemeinsam auftretende Fehler
502
517
  badge: Zeitliche Muster
@@ -741,6 +756,7 @@ de:
741
756
  other: "%{count} Frames"
742
757
  click_to_expand: "(zum Aufklappen klicken)"
743
758
  view_source: Quellcode ansehen
759
+ client_report_note: "Diese Frames stammen aus einem Client-Bericht (ManualErrorReporter). Sie beschreiben Code, der auf dem Client lief, daher öffnet RED für sie keine Quelldatei, zeigt keinen Ausschnitt und führt kein git blame aus."
744
760
  none: Kein Backtrace verfügbar
745
761
  row:
746
762
  new_badge: NEU
@@ -1101,6 +1117,9 @@ de:
1101
1117
  events:
1102
1118
  one: "%{count} Ereignis"
1103
1119
  other: "%{count} Ereignisse"
1120
+ occurrences:
1121
+ one: "%{count} Vorkommen"
1122
+ other: "%{count} Vorkommen"
1104
1123
  queries:
1105
1124
  one: "%{count} Abfrage"
1106
1125
  other: "%{count} Abfragen"
@@ -1145,6 +1164,7 @@ de:
1145
1164
  enable_middleware: Fängt unbehandelte Exceptions ab
1146
1165
  enable_error_subscriber: Abonniert Rails-Fehlerereignisse
1147
1166
  retention_days: "Fehler löschen, die so viele Tage nicht mehr aufgetreten sind. Durchgesetzt vom RetentionCleanupJob, den das Gem selbst nicht einplant"
1167
+ occurrence_context_limit: "Für wie viele der neuesten Vorkommen je Fehler Breadcrumbs, Systemzustand und Variablen aufbewahrt werden (0 = aus)"
1148
1168
  max_backtrace_lines: Maximale Backtrace-Tiefe
1149
1169
  sampling_rate: Anteil der erfassten Fehler
1150
1170
  application_name: Name dieser Anwendung (wird automatisch erkannt, wenn nicht
@@ -82,6 +82,9 @@ en:
82
82
  healthy: "✅ Healthy"
83
83
  warning: "⚠️ Warning"
84
84
  critical: "🔴 Critical"
85
+ not_rated: "Not rated"
86
+ not_rated_hint: "A rating compares platforms, so it needs errors on at least two."
87
+ nothing_resolved: "No errors from this period resolved yet"
85
88
 
86
89
  # Device classes reported by the user-agent parser. Browser and OS names
87
90
  # (Chrome, Safari, Windows, iOS) are brands and stay as written; these
@@ -379,6 +382,11 @@ en:
379
382
  enable: "Enable"
380
383
  disable: "Disable"
381
384
 
385
+ occurrence:
386
+ title: "Occurrence #%{id}"
387
+ body: "Breadcrumbs, system health and variables are from this occurrence. Everything else shows the latest capture."
388
+ show_latest: "Show latest"
389
+
382
390
  baselines:
383
391
  title: "Baseline Statistics"
384
392
  # %{sigma} is a standard-deviation count, %{level} an anomaly level.
@@ -513,7 +521,7 @@ en:
513
521
  types:
514
522
  business_hours:
515
523
  label: "Business Hours Pattern"
516
- description: "Errors peak during business hours (9am-5pm), suggesting user activity correlation"
524
+ description: "Errors peak during business hours (9:00–17:59), suggesting user activity correlation"
517
525
  night:
518
526
  label: "Night Pattern"
519
527
  description: "Errors peak during night hours (midnight-6am), possibly from background jobs or automated tasks"
@@ -702,6 +710,15 @@ en:
702
710
  other: "+%{count} more"
703
711
  view_errors: "View Errors"
704
712
 
713
+ captured_occurrences:
714
+ title: "Captured occurrences"
715
+ hint: "Breadcrumbs, system health and variables are kept for the most recent occurrences (occurrence_context_limit). Open one to see them."
716
+ column_occurrence: "Occurrence"
717
+ column_occurred_at: "Occurred"
718
+ column_version: "Version"
719
+ view: "View"
720
+ viewing: "Viewing"
721
+
705
722
  co_occurring:
706
723
  title: "Co-occurring Errors"
707
724
  badge: "Time Patterns"
@@ -1057,6 +1074,7 @@ en:
1057
1074
  other: "%{count} frames"
1058
1075
  click_to_expand: "(click to expand)"
1059
1076
  view_source: "View Source"
1077
+ client_report_note: "These frames came from a client report (ManualErrorReporter). They describe code that ran on the client, so RED opens no source file, shows no snippet and runs no git blame for them."
1060
1078
  none: "No backtrace available"
1061
1079
 
1062
1080
  row:
@@ -1532,6 +1550,9 @@ en:
1532
1550
  events:
1533
1551
  one: "%{count} event"
1534
1552
  other: "%{count} events"
1553
+ occurrences:
1554
+ one: "%{count} occurrence"
1555
+ other: "%{count} occurrences"
1535
1556
  queries:
1536
1557
  one: "%{count} query"
1537
1558
  other: "%{count} queries"
@@ -1596,6 +1617,7 @@ en:
1596
1617
  enable_middleware: "Catches unhandled exceptions"
1597
1618
  enable_error_subscriber: "Subscribes to Rails error events"
1598
1619
  retention_days: "Delete errors not seen for this many days. Enforced by RetentionCleanupJob, which nothing in the gem schedules"
1620
+ occurrence_context_limit: "How many recent occurrences per error keep their breadcrumbs, system health and variables (0 = off)"
1599
1621
  max_backtrace_lines: "Stack trace depth limit"
1600
1622
  sampling_rate: "Percentage of errors captured"
1601
1623
  application_name: "Name of this application (auto-detected if not set)"
@@ -36,6 +36,9 @@ es:
36
36
  healthy: "✅ Correcto"
37
37
  warning: "⚠️ Advertencia"
38
38
  critical: "\U0001F534 Crítico"
39
+ not_rated: "Sin calificar"
40
+ not_rated_hint: "La calificación compara plataformas, así que necesita errores en al menos dos."
41
+ nothing_resolved: "Aún no se ha resuelto ningún error de este período"
39
42
  device_type:
40
43
  mobile: Móvil
41
44
  tablet: Tableta
@@ -247,6 +250,10 @@ es:
247
250
  inactive_body: actívela para ver las líneas ejecutadas
248
251
  enable: Activar
249
252
  disable: Desactivar
253
+ occurrence:
254
+ title: "Aparición #%{id}"
255
+ body: "Los breadcrumbs, el estado del sistema y las variables provienen de esta aparición. Todo lo demás muestra la captura más reciente."
256
+ show_latest: "Ver la más reciente"
250
257
  baselines:
251
258
  title: Estadísticas de referencia
252
259
  anomaly_label: 'Anomalía:'
@@ -357,7 +364,7 @@ es:
357
364
  types:
358
365
  business_hours:
359
366
  label: Patrón de horario laboral
360
- description: Los errores se concentran en el horario laboral (9:00-17:00),
367
+ description: Los errores se concentran en el horario laboral (9:00–17:59),
361
368
  lo que sugiere relación con la actividad de los usuarios
362
369
  night:
363
370
  label: Patrón nocturno
@@ -519,6 +526,14 @@ es:
519
526
  other: "+%{count} más"
520
527
  many: "+%{count} más"
521
528
  view_errors: Ver los errores
529
+ captured_occurrences:
530
+ title: "Apariciones capturadas"
531
+ hint: "Los breadcrumbs, el estado del sistema y las variables se conservan para las apariciones más recientes (occurrence_context_limit). Abra una para verlos."
532
+ column_occurrence: "Aparición"
533
+ column_occurred_at: "Ocurrió"
534
+ column_version: "Versión"
535
+ view: "Ver"
536
+ viewing: "En pantalla"
522
537
  co_occurring:
523
538
  title: Errores concurrentes
524
539
  badge: Patrones temporales
@@ -769,6 +784,7 @@ es:
769
784
  many: "%{count} frames"
770
785
  click_to_expand: "(haga clic para desplegar)"
771
786
  view_source: Ver el código fuente
787
+ client_report_note: "Estos frames provienen de un informe de cliente (ManualErrorReporter). Describen código que se ejecutó en el cliente, así que RED no abre archivos fuente, no muestra fragmentos ni ejecuta git blame para ellos."
772
788
  none: No hay backtrace disponible
773
789
  row:
774
790
  new_badge: NUEVO
@@ -1138,6 +1154,10 @@ es:
1138
1154
  one: "%{count} evento"
1139
1155
  other: "%{count} eventos"
1140
1156
  many: "%{count} eventos"
1157
+ occurrences:
1158
+ one: "%{count} aparición"
1159
+ other: "%{count} apariciones"
1160
+ many: "%{count} apariciones"
1141
1161
  queries:
1142
1162
  one: "%{count} consulta"
1143
1163
  other: "%{count} consultas"
@@ -1187,6 +1207,7 @@ es:
1187
1207
  enable_middleware: Captura las excepciones no gestionadas
1188
1208
  enable_error_subscriber: Se suscribe a los eventos de error de Rails
1189
1209
  retention_days: "Eliminar errores no vistos durante estos días. Lo aplica RetentionCleanupJob, que la gema no programa por sí misma"
1210
+ occurrence_context_limit: "Cuántas apariciones recientes por error conservan sus breadcrumbs, estado del sistema y variables (0 = desactivado)"
1190
1211
  max_backtrace_lines: Profundidad máxima del backtrace
1191
1212
  sampling_rate: Porcentaje de errores capturados
1192
1213
  application_name: Nombre de esta aplicación (se detecta automáticamente si
@@ -36,6 +36,9 @@ fr:
36
36
  healthy: "✅ Sain"
37
37
  warning: "⚠️ Avertissement"
38
38
  critical: "\U0001F534 Critique"
39
+ not_rated: "Non évalué"
40
+ not_rated_hint: "L'évaluation compare les plateformes : il faut des erreurs sur au moins deux."
41
+ nothing_resolved: "Aucune erreur de cette période n'est encore résolue"
39
42
  device_type:
40
43
  mobile: Mobile
41
44
  tablet: Tablette
@@ -249,6 +252,10 @@ fr:
249
252
  inactive_body: activez pour voir les lignes exécutées
250
253
  enable: Activer
251
254
  disable: Désactiver
255
+ occurrence:
256
+ title: "Occurrence #%{id}"
257
+ body: "Les breadcrumbs, l'état du système et les variables proviennent de cette occurrence. Tout le reste montre la capture la plus récente."
258
+ show_latest: "Voir la plus récente"
252
259
  baselines:
253
260
  title: Statistiques de référence
254
261
  anomaly_label: 'Anomalie :'
@@ -358,7 +365,7 @@ fr:
358
365
  types:
359
366
  business_hours:
360
367
  label: Motif des heures ouvrées
361
- description: Les erreurs culminent pendant les heures ouvrées (9h-17h),
368
+ description: Les erreurs culminent pendant les heures ouvrées (9:00–17:59),
362
369
  ce qui suggère un lien avec l'activité des utilisateurs
363
370
  night:
364
371
  label: Motif nocturne
@@ -519,6 +526,14 @@ fr:
519
526
  other: "+%{count} autres"
520
527
  many: "+%{count} autres"
521
528
  view_errors: Voir les erreurs
529
+ captured_occurrences:
530
+ title: "Occurrences capturées"
531
+ hint: "Les breadcrumbs, l'état du système et les variables sont conservés pour les occurrences les plus récentes (occurrence_context_limit). Ouvrez-en une pour les voir."
532
+ column_occurrence: "Occurrence"
533
+ column_occurred_at: "Survenue"
534
+ column_version: "Version"
535
+ view: "Voir"
536
+ viewing: "Affichée"
522
537
  co_occurring:
523
538
  title: Erreurs concomitantes
524
539
  badge: Motifs temporels
@@ -768,6 +783,7 @@ fr:
768
783
  many: "%{count} frames"
769
784
  click_to_expand: "(cliquez pour développer)"
770
785
  view_source: Voir le code source
786
+ client_report_note: "Ces frames proviennent d'un rapport client (ManualErrorReporter). Ils décrivent du code exécuté côté client : RED n'ouvre donc aucun fichier source, n'affiche aucun extrait et n'exécute pas git blame pour eux."
771
787
  none: Aucun backtrace disponible
772
788
  row:
773
789
  new_badge: NOUVEAU
@@ -1139,6 +1155,10 @@ fr:
1139
1155
  one: "%{count} événement"
1140
1156
  other: "%{count} événements"
1141
1157
  many: "%{count} événements"
1158
+ occurrences:
1159
+ one: "%{count} occurrence"
1160
+ other: "%{count} occurrences"
1161
+ many: "%{count} occurrences"
1142
1162
  queries:
1143
1163
  one: "%{count} requête"
1144
1164
  other: "%{count} requêtes"
@@ -1188,6 +1208,7 @@ fr:
1188
1208
  enable_middleware: Intercepte les exceptions non gérées
1189
1209
  enable_error_subscriber: S'abonne aux événements d'erreur de Rails
1190
1210
  retention_days: "Supprimer les erreurs non vues depuis ce nombre de jours. Appliqué par RetentionCleanupJob, que la gem ne planifie pas elle-même"
1211
+ occurrence_context_limit: "Nombre d'occurrences récentes par erreur dont les breadcrumbs, l'état du système et les variables sont conservés (0 = désactivé)"
1191
1212
  max_backtrace_lines: Profondeur maximale du backtrace
1192
1213
  sampling_rate: Pourcentage d'erreurs capturées
1193
1214
  application_name: Nom de cette application (détecté automatiquement si non
@@ -36,6 +36,9 @@ it:
36
36
  healthy: "✅ Integro"
37
37
  warning: "⚠️ Avviso"
38
38
  critical: "\U0001F534 Critico"
39
+ not_rated: "Non valutato"
40
+ not_rated_hint: "La valutazione confronta le piattaforme, quindi servono errori su almeno due."
41
+ nothing_resolved: "Nessun errore di questo periodo è stato ancora risolto"
39
42
  device_type:
40
43
  mobile: Mobile
41
44
  tablet: Tablet
@@ -246,6 +249,10 @@ it:
246
249
  inactive_body: abilita per vedere le righe eseguite
247
250
  enable: Abilita
248
251
  disable: Disabilita
252
+ occurrence:
253
+ title: "Occorrenza #%{id}"
254
+ body: "Breadcrumbs, stato del sistema e variabili provengono da questa occorrenza. Tutto il resto mostra l'acquisizione più recente."
255
+ show_latest: "Mostra la più recente"
249
256
  baselines:
250
257
  title: Statistiche della baseline
251
258
  anomaly_label: 'Anomalia:'
@@ -352,7 +359,7 @@ it:
352
359
  types:
353
360
  business_hours:
354
361
  label: Schema da orario d'ufficio
355
- description: Il picco di errori cade nell'orario d'ufficio (9–17), il
362
+ description: Il picco di errori cade nell'orario d'ufficio (9:00–17:59), il
356
363
  che suggerisce una correlazione con l'attività degli utenti
357
364
  night:
358
365
  label: Schema notturno
@@ -513,6 +520,14 @@ it:
513
520
  other: "+%{count} altri"
514
521
  many: "+%{count} altri"
515
522
  view_errors: Vedi gli errori
523
+ captured_occurrences:
524
+ title: "Occorrenze acquisite"
525
+ hint: "Breadcrumbs, stato del sistema e variabili vengono conservati per le occorrenze più recenti (occurrence_context_limit). Aprine una per vederli."
526
+ column_occurrence: "Occorrenza"
527
+ column_occurred_at: "Avvenuta"
528
+ column_version: "Versione"
529
+ view: "Visualizza"
530
+ viewing: "In visualizzazione"
516
531
  co_occurring:
517
532
  title: Errori concomitanti
518
533
  badge: Schemi temporali
@@ -761,6 +776,7 @@ it:
761
776
  many: "%{count} frame"
762
777
  click_to_expand: "(clicca per espandere)"
763
778
  view_source: Vedi il codice
779
+ client_report_note: "Questi frame provengono da una segnalazione del client (ManualErrorReporter). Descrivono codice eseguito sul client, quindi RED non apre file sorgente, non mostra estratti e non esegue git blame per essi."
764
780
  none: Backtrace non disponibile
765
781
  row:
766
782
  new_badge: NUOVO
@@ -1129,6 +1145,10 @@ it:
1129
1145
  one: "%{count} evento"
1130
1146
  other: "%{count} eventi"
1131
1147
  many: "%{count} eventi"
1148
+ occurrences:
1149
+ one: "%{count} occorrenza"
1150
+ other: "%{count} occorrenze"
1151
+ many: "%{count} occorrenze"
1132
1152
  queries:
1133
1153
  one: "%{count} query"
1134
1154
  other: "%{count} query"
@@ -1178,6 +1198,7 @@ it:
1178
1198
  enable_middleware: Intercetta le eccezioni non gestite
1179
1199
  enable_error_subscriber: Si iscrive agli eventi di errore di Rails
1180
1200
  retention_days: "Elimina gli errori non visti da questo numero di giorni. Applicato da RetentionCleanupJob, che la gem non pianifica da sola"
1201
+ occurrence_context_limit: "Quante occorrenze recenti per errore conservano breadcrumbs, stato del sistema e variabili (0 = disattivato)"
1181
1202
  max_backtrace_lines: Limite di profondità dello stack trace
1182
1203
  sampling_rate: Percentuale di errori acquisiti
1183
1204
  application_name: Nome di questa applicazione (rilevato automaticamente se
@@ -36,6 +36,9 @@ ja:
36
36
  healthy: "✅ 正常"
37
37
  warning: "⚠️ 警告"
38
38
  critical: "\U0001F534 重大"
39
+ not_rated: "評価なし"
40
+ not_rated_hint: "評価はプラットフォーム同士の比較なので、2つ以上のプラットフォームのエラーが必要です。"
41
+ nothing_resolved: "この期間のエラーはまだ1件も解決されていません"
39
42
  device_type:
40
43
  mobile: モバイル
41
44
  tablet: タブレット
@@ -233,6 +236,10 @@ ja:
233
236
  inactive_body: 有効にすると実行された行を確認できます
234
237
  enable: 有効にする
235
238
  disable: 無効にする
239
+ occurrence:
240
+ title: "発生 #%{id}"
241
+ body: "Breadcrumb、システムヘルス、変数はこの発生時のものです。それ以外は最新のキャプチャを表示しています。"
242
+ show_latest: "最新を表示"
236
243
  baselines:
237
244
  title: ベースライン統計
238
245
  anomaly_label: '異常:'
@@ -319,7 +326,7 @@ ja:
319
326
  types:
320
327
  business_hours:
321
328
  label: 業務時間帯パターン
322
- description: エラーは業務時間帯(9時〜17時)に集中しており、ユーザーの利用状況との関連が考えられます
329
+ description: エラーは業務時間帯(9:00–17:59)に集中しており、ユーザーの利用状況との関連が考えられます
323
330
  night:
324
331
  label: 夜間パターン
325
332
  description: エラーは夜間(0時〜6時)に集中しており、バックグラウンドジョブや自動処理が原因の可能性があります
@@ -454,6 +461,14 @@ ja:
454
461
  more:
455
462
  other: 他%{count}件
456
463
  view_errors: エラーを表示
464
+ captured_occurrences:
465
+ title: "記録された発生"
466
+ hint: "Breadcrumb、システムヘルス、変数は最新の発生分だけ保持されます(occurrence_context_limit)。発生を開くと確認できます。"
467
+ column_occurrence: "発生"
468
+ column_occurred_at: "発生日時"
469
+ column_version: "バージョン"
470
+ view: "表示"
471
+ viewing: "表示中"
457
472
  co_occurring:
458
473
  title: 同時発生エラー
459
474
  badge: 時間パターン
@@ -682,6 +697,7 @@ ja:
682
697
  other: "%{count}フレーム"
683
698
  click_to_expand: "(クリックで展開)"
684
699
  view_source: ソースを表示
700
+ client_report_note: "これらのフレームはクライアントからの報告(ManualErrorReporter)によるものです。クライアント側で実行されたコードを示すため、RED はソースファイルを開かず、コード片の表示や git blame も行いません。"
685
701
  none: Backtrace はありません
686
702
  row:
687
703
  new_badge: NEW
@@ -991,6 +1007,8 @@ ja:
991
1007
  other: "%{count}秒"
992
1008
  events:
993
1009
  other: "%{count}件のイベント"
1010
+ occurrences:
1011
+ other: "%{count}件の発生"
994
1012
  queries:
995
1013
  other: "%{count}クエリ"
996
1014
  std_devs: "%{count}σ"
@@ -1030,6 +1048,7 @@ ja:
1030
1048
  enable_middleware: 未処理の例外を捕捉します
1031
1049
  enable_error_subscriber: Rails のエラーイベントを購読します
1032
1050
  retention_days: "この日数の間発生しなかったエラーを削除します。RetentionCleanupJob が実行しますが、gem 自体はスケジュールしません"
1051
+ occurrence_context_limit: "エラーごとに Breadcrumb、システムヘルス、変数を保持する最新の発生数(0 = 無効)"
1033
1052
  max_backtrace_lines: スタックトレースの深さの上限
1034
1053
  sampling_rate: エラーを記録する割合
1035
1054
  application_name: このアプリケーションの名前 (未設定の場合は自動検出)
@@ -36,6 +36,9 @@ pl:
36
36
  healthy: "✅ Sprawny"
37
37
  warning: "⚠️ Ostrzeżenie"
38
38
  critical: "\U0001F534 Krytyczny"
39
+ not_rated: "Bez oceny"
40
+ not_rated_hint: "Ocena porównuje platformy, więc potrzebne są błędy na co najmniej dwóch."
41
+ nothing_resolved: "Żaden błąd z tego okresu nie został jeszcze rozwiązany"
39
42
  device_type:
40
43
  mobile: Mobile
41
44
  tablet: Tablet
@@ -248,6 +251,10 @@ pl:
248
251
  inactive_body: włącz, aby zobaczyć wykonane linie
249
252
  enable: Włącz
250
253
  disable: Wyłącz
254
+ occurrence:
255
+ title: "Wystąpienie #%{id}"
256
+ body: "Breadcrumbs, stan systemu i zmienne pochodzą z tego wystąpienia. Pozostałe dane pokazują najnowsze przechwycenie."
257
+ show_latest: "Pokaż najnowsze"
251
258
  baselines:
252
259
  title: Statystyki poziomu bazowego
253
260
  anomaly_label: 'Anomalia:'
@@ -360,7 +367,7 @@ pl:
360
367
  types:
361
368
  business_hours:
362
369
  label: Wzorzec godzin pracy
363
- description: Szczyt błędów przypada na godziny pracy (9:00–17:00), co
370
+ description: Szczyt błędów przypada na godziny pracy (9:00–17:59), co
364
371
  sugeruje związek z aktywnością użytkowników
365
372
  night:
366
373
  label: Wzorzec nocny
@@ -520,6 +527,14 @@ pl:
520
527
  few: "+%{count} więcej"
521
528
  many: "+%{count} więcej"
522
529
  view_errors: Zobacz błędy
530
+ captured_occurrences:
531
+ title: "Zapisane wystąpienia"
532
+ hint: "Breadcrumbs, stan systemu i zmienne są przechowywane dla najnowszych wystąpień (occurrence_context_limit). Otwórz jedno, aby je zobaczyć."
533
+ column_occurrence: "Wystąpienie"
534
+ column_occurred_at: "Wystąpiło"
535
+ column_version: "Wersja"
536
+ view: "Pokaż"
537
+ viewing: "Wyświetlane"
523
538
  co_occurring:
524
539
  title: Współwystępujące błędy
525
540
  badge: Wzorce czasowe
@@ -774,6 +789,7 @@ pl:
774
789
  many: "%{count} ramek"
775
790
  click_to_expand: "(kliknij, aby rozwinąć)"
776
791
  view_source: Zobacz kod
792
+ client_report_note: "Te ramki pochodzą z raportu klienta (ManualErrorReporter). Opisują kod uruchomiony po stronie klienta, więc RED nie otwiera dla nich plików źródłowych, nie pokazuje fragmentów kodu ani nie uruchamia git blame."
777
793
  none: Backtrace niedostępny
778
794
  row:
779
795
  new_badge: NOWY
@@ -1154,6 +1170,11 @@ pl:
1154
1170
  other: "%{count} zdarzenia"
1155
1171
  few: "%{count} zdarzenia"
1156
1172
  many: "%{count} zdarzeń"
1173
+ occurrences:
1174
+ one: "%{count} wystąpienie"
1175
+ other: "%{count} wystąpienia"
1176
+ few: "%{count} wystąpienia"
1177
+ many: "%{count} wystąpień"
1157
1178
  queries:
1158
1179
  one: "%{count} zapytanie"
1159
1180
  other: "%{count} zapytania"
@@ -1208,6 +1229,7 @@ pl:
1208
1229
  enable_middleware: Przechwytuje nieobsłużone wyjątki
1209
1230
  enable_error_subscriber: Subskrybuje zdarzenia błędów Rails
1210
1231
  retention_days: "Usuwaj błędy niewidziane przez tyle dni. Wykonuje to RetentionCleanupJob, którego gem sam nie planuje"
1232
+ occurrence_context_limit: "Ile najnowszych wystąpień każdego błędu zachowuje breadcrumbs, stan systemu i zmienne (0 = wyłączone)"
1211
1233
  max_backtrace_lines: Limit głębokości śladu stosu
1212
1234
  sampling_rate: Odsetek przechwytywanych błędów
1213
1235
  application_name: Nazwa tej aplikacji (wykrywana automatycznie, jeśli nie
@@ -36,6 +36,9 @@ pt-BR:
36
36
  healthy: "✅ Saudável"
37
37
  warning: "⚠️ Atenção"
38
38
  critical: "\U0001F534 Crítico"
39
+ not_rated: "Sem avaliação"
40
+ not_rated_hint: "A avaliação compara plataformas, então precisa de erros em pelo menos duas."
41
+ nothing_resolved: "Nenhum erro deste período foi resolvido ainda"
39
42
  device_type:
40
43
  mobile: Celular
41
44
  tablet: Tablet
@@ -247,6 +250,10 @@ pt-BR:
247
250
  inactive_body: ative para ver as linhas executadas
248
251
  enable: Ativar
249
252
  disable: Desativar
253
+ occurrence:
254
+ title: "Ocorrência #%{id}"
255
+ body: "Breadcrumbs, saúde do sistema e variáveis vêm desta ocorrência. Todo o resto mostra a captura mais recente."
256
+ show_latest: "Ver a mais recente"
250
257
  baselines:
251
258
  title: Estatísticas de referência
252
259
  anomaly_label: 'Anomalia:'
@@ -357,7 +364,7 @@ pt-BR:
357
364
  types:
358
365
  business_hours:
359
366
  label: Padrão de horário comercial
360
- description: Os erros se concentram no horário comercial (9h-17h), o que
367
+ description: Os erros se concentram no horário comercial (9:00–17:59), o que
361
368
  sugere relação com a atividade dos usuários
362
369
  night:
363
370
  label: Padrão noturno
@@ -519,6 +526,14 @@ pt-BR:
519
526
  other: "+%{count} outros"
520
527
  many: "+%{count} outros"
521
528
  view_errors: Ver os erros
529
+ captured_occurrences:
530
+ title: "Ocorrências capturadas"
531
+ hint: "Breadcrumbs, saúde do sistema e variáveis são mantidos para as ocorrências mais recentes (occurrence_context_limit). Abra uma para vê-los."
532
+ column_occurrence: "Ocorrência"
533
+ column_occurred_at: "Ocorreu em"
534
+ column_version: "Versão"
535
+ view: "Ver"
536
+ viewing: "Em exibição"
522
537
  co_occurring:
523
538
  title: Erros concomitantes
524
539
  badge: Padrões temporais
@@ -767,6 +782,7 @@ pt-BR:
767
782
  many: "%{count} frames"
768
783
  click_to_expand: "(clique para expandir)"
769
784
  view_source: Ver o código-fonte
785
+ client_report_note: "Estes frames vieram de um relatório do cliente (ManualErrorReporter). Eles descrevem código executado no cliente, por isso o RED não abre arquivos-fonte, não mostra trechos nem executa git blame para eles."
770
786
  none: Nenhum backtrace disponível
771
787
  row:
772
788
  new_badge: NOVO
@@ -1133,6 +1149,10 @@ pt-BR:
1133
1149
  one: "%{count} evento"
1134
1150
  other: "%{count} eventos"
1135
1151
  many: "%{count} eventos"
1152
+ occurrences:
1153
+ one: "%{count} ocorrência"
1154
+ other: "%{count} ocorrências"
1155
+ many: "%{count} ocorrências"
1136
1156
  queries:
1137
1157
  one: "%{count} consulta"
1138
1158
  other: "%{count} consultas"
@@ -1182,6 +1202,7 @@ pt-BR:
1182
1202
  enable_middleware: Captura exceções não tratadas
1183
1203
  enable_error_subscriber: Assina os eventos de erro do Rails
1184
1204
  retention_days: "Excluir erros não vistos há este número de dias. Aplicado pelo RetentionCleanupJob, que a gem não agenda por conta própria"
1205
+ occurrence_context_limit: "Quantas ocorrências recentes por erro mantêm breadcrumbs, saúde do sistema e variáveis (0 = desativado)"
1185
1206
  max_backtrace_lines: Profundidade máxima do backtrace
1186
1207
  sampling_rate: Porcentagem de erros capturados
1187
1208
  application_name: Nome desta aplicação (detectado automaticamente se não for