rails_error_dashboard 0.14.3 → 0.15.0

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -17
  3. data/app/controllers/rails_error_dashboard/application_controller.rb +28 -4
  4. data/app/controllers/rails_error_dashboard/errors_controller.rb +68 -2
  5. data/app/controllers/rails_error_dashboard/health_controller.rb +38 -0
  6. data/app/helpers/rails_error_dashboard/application_helper.rb +10 -2
  7. data/app/helpers/rails_error_dashboard/backtrace_helper.rb +56 -2
  8. data/app/jobs/rails_error_dashboard/baseline_alert_job.rb +20 -2
  9. data/app/jobs/rails_error_dashboard/cascade_detection_job.rb +30 -0
  10. data/app/jobs/rails_error_dashboard/concerns/plain_channel_message.rb +33 -6
  11. data/app/jobs/rails_error_dashboard/discord_error_notification_job.rb +1 -1
  12. data/app/jobs/rails_error_dashboard/pagerduty_error_notification_job.rb +1 -1
  13. data/app/jobs/rails_error_dashboard/retention_cleanup_job.rb +26 -0
  14. data/app/jobs/rails_error_dashboard/scheduled_digest_job.rb +6 -1
  15. data/app/jobs/rails_error_dashboard/slack_error_notification_job.rb +1 -1
  16. data/app/jobs/rails_error_dashboard/telegram_error_notification_job.rb +25 -0
  17. data/app/jobs/rails_error_dashboard/webhook_error_notification_job.rb +2 -18
  18. data/app/models/rails_error_dashboard/error_log.rb +43 -12
  19. data/app/models/rails_error_dashboard/missing_translation.rb +43 -0
  20. data/app/views/layouts/rails_error_dashboard.html.erb +24 -1
  21. data/app/views/rails_error_dashboard/errors/_error_info.html.erb +3 -1
  22. data/app/views/rails_error_dashboard/errors/_sidebar_metadata.html.erb +3 -1
  23. data/app/views/rails_error_dashboard/errors/_source_code.html.erb +3 -9
  24. data/app/views/rails_error_dashboard/errors/activestorage_health_summary.html.erb +28 -0
  25. data/app/views/rails_error_dashboard/errors/boot_errors.html.erb +130 -0
  26. data/app/views/rails_error_dashboard/errors/index.html.erb +1 -1
  27. data/app/views/rails_error_dashboard/errors/missing_translations.html.erb +143 -0
  28. data/app/views/rails_error_dashboard/errors/settings/_value_badge.html.erb +7 -4
  29. data/app/views/rails_error_dashboard/errors/settings.html.erb +19 -5
  30. data/config/locales/de.yml +72 -5
  31. data/config/locales/en.yml +83 -4
  32. data/config/locales/es.yml +72 -5
  33. data/config/locales/fr.yml +72 -5
  34. data/config/locales/it.yml +72 -5
  35. data/config/locales/ja.yml +72 -4
  36. data/config/locales/pl.yml +72 -5
  37. data/config/locales/pt-BR.yml +72 -5
  38. data/config/locales/ru.yml +72 -5
  39. data/config/locales/uk.yml +72 -5
  40. data/config/locales/zh-CN.yml +72 -4
  41. data/config/routes.rb +6 -0
  42. data/db/migrate/20251223000000_create_rails_error_dashboard_complete_schema.rb +10 -2
  43. data/db/migrate/20251225074653_remove_environment_from_error_logs.rb +9 -0
  44. data/db/migrate/20261010000001_create_missing_translations.rb +50 -0
  45. data/lib/generators/rails_error_dashboard/install/install_generator.rb +40 -38
  46. data/lib/generators/rails_error_dashboard/install/templates/initializer.rb +31 -3
  47. data/lib/generators/rails_error_dashboard/uninstall/uninstall_generator.rb +11 -2
  48. data/lib/rails_error_dashboard/commands/assign_error.rb +24 -1
  49. data/lib/rails_error_dashboard/commands/batch_resolve_errors.rb +9 -1
  50. data/lib/rails_error_dashboard/commands/flush_missing_translations.rb +103 -0
  51. data/lib/rails_error_dashboard/commands/log_error.rb +6 -3
  52. data/lib/rails_error_dashboard/commands/resolve_error.rb +2 -15
  53. data/lib/rails_error_dashboard/commands/update_error_status.rb +7 -0
  54. data/lib/rails_error_dashboard/configuration.rb +75 -2
  55. data/lib/rails_error_dashboard/engine.rb +52 -5
  56. data/lib/rails_error_dashboard/middleware/rate_limiter.rb +21 -43
  57. data/lib/rails_error_dashboard/plugin.rb +49 -3
  58. data/lib/rails_error_dashboard/plugin_registry.rb +61 -12
  59. data/lib/rails_error_dashboard/queries/boot_errors.rb +76 -0
  60. data/lib/rails_error_dashboard/queries/dashboard_stats.rb +3 -11
  61. data/lib/rails_error_dashboard/queries/errors_list.rb +11 -17
  62. data/lib/rails_error_dashboard/queries/health_status.rb +191 -0
  63. data/lib/rails_error_dashboard/queries/missing_translation_summary.rb +82 -0
  64. data/lib/rails_error_dashboard/services/active_storage_probe.rb +91 -0
  65. data/lib/rails_error_dashboard/services/backtrace_parser.rb +13 -7
  66. data/lib/rails_error_dashboard/services/backtrace_processor.rb +15 -0
  67. data/lib/rails_error_dashboard/services/baseline_alert_payload_builder.rb +30 -0
  68. data/lib/rails_error_dashboard/services/crash_capture.rb +85 -2
  69. data/lib/rails_error_dashboard/services/digest_builder.rb +9 -6
  70. data/lib/rails_error_dashboard/services/error_notification_dispatcher.rb +6 -0
  71. data/lib/rails_error_dashboard/services/exception_filter.rb +4 -1
  72. data/lib/rails_error_dashboard/services/github_link_generator.rb +25 -9
  73. data/lib/rails_error_dashboard/services/missing_translation_handler.rb +152 -0
  74. data/lib/rails_error_dashboard/services/missing_translation_tracker.rb +316 -0
  75. data/lib/rails_error_dashboard/services/resolution_callbacks.rb +44 -0
  76. data/lib/rails_error_dashboard/services/severity_classifier.rb +52 -0
  77. data/lib/rails_error_dashboard/services/solid_queue_config_check.rb +47 -0
  78. data/lib/rails_error_dashboard/services/source_code_reader.rb +23 -3
  79. data/lib/rails_error_dashboard/services/telegram_delivery.rb +134 -0
  80. data/lib/rails_error_dashboard/services/telegram_payload_builder.rb +105 -0
  81. data/lib/rails_error_dashboard/services/webhook_delivery.rb +63 -0
  82. data/lib/rails_error_dashboard/services/webhook_signer.rb +80 -0
  83. data/lib/rails_error_dashboard/version.rb +1 -1
  84. data/lib/rails_error_dashboard.rb +12 -0
  85. data/lib/tasks/error_dashboard.rake +43 -2
  86. metadata +21 -2
@@ -60,6 +60,8 @@ pl:
60
60
  llm: LLM
61
61
  n_plus_one: Zapytania N+1
62
62
  deprecations: Deprecations
63
+ missing_translations: "Tłumaczenia"
64
+ boot_errors: "Błędy startu"
63
65
  swallowed: Wyciszone
64
66
  diagnostic_dumps: Diagnostyka
65
67
  storms: Sztormy
@@ -86,6 +88,10 @@ pl:
86
88
  Ustaw zmienne środowiskowe <code>ERROR_DASHBOARD_USER</code> i <code>ERROR_DASHBOARD_PASSWORD</code>
87
89
  albo skonfiguruj <code>authenticate_with</code> w swoim inicjalizatorze.
88
90
  dismiss: Ukryj na czas tej sesji
91
+ solid_queue:
92
+ label: "Solid Queue nie uruchomi zadań RED."
93
+ body_html: "Błędy przechwycone w tle i powiadomienia czekają w kolejce, dopóki <code>config/queue.yml</code> nie zostanie poprawiony. Uruchom <code>bin/rails error_dashboard:verify</code>, aby zobaczyć poprawkę, a następnie zrestartuj aplikację."
94
+ guide: "Czego RED potrzebuje od Solid Queue"
89
95
  storm:
90
96
  active_title: Trwa sztorm błędów
91
97
  recent_title: Ochrona przed sztormem zadziałała niedawno
@@ -861,6 +867,53 @@ pl:
861
867
  error_log
862
868
  footer_tip: Wyciszone wyjątki są podnoszone, a następnie po cichu przechwytywane.
863
869
  Mogą ukrywać prawdziwe błędy.
870
+ missing_translations_page:
871
+ title: "Brakujące tłumaczenia"
872
+ empty_title: "Nie zarejestrowano brakujących tłumaczeń"
873
+ empty_body: "W ciągu ostatnich %{days} dni nie zarejestrowano brakujących kluczy tłumaczeń."
874
+ how_title: "Jak śledzone są brakujące tłumaczenia:"
875
+ how_enabled_html: "Śledzenie musi być włączone (%{option})"
876
+ how_hooked: "RED opakowuje I18n.exception_handler i przekazuje wywołanie do handlera, który aplikacja już miała; nic więcej w konfiguracji I18n się nie zmienia"
877
+ how_recorded: "Każde wyszukanie, które trafia do handlera — zarówno z I18n.t, jak i z helpera widoku t() — jest liczone według locale i klucza, wraz z pierwszym zaobserwowanym miejscem wywołania"
878
+ how_not_seen: "Wyszukanie z :default nigdy nie kończy się brakiem, a wyszukanie z raise_on_missing_translations zgłasza wyjątek, zanim uruchomi się jakikolwiek handler, więc żadne z nich nie jest tu liczone"
879
+ how_buffered: "Braki są liczone w pamięci i zapisywane na końcu żądania lub zadania, więc mogą pojawić się z niewielkim opóźnieniem"
880
+ missing_keys: "Brakujące klucze"
881
+ total_misses: "Łącznie braków"
882
+ locales_affected: "Dotknięte locale"
883
+ all_title: "Brakujące klucze tłumaczeń"
884
+ column_key: "Klucz"
885
+ column_locale: "Locale"
886
+ column_source: "Pierwszy raz w"
887
+ column_misses: "Braki"
888
+ column_first_seen: "Pierwsze wystąpienie"
889
+ overflow_notice: "%{count} braków nie udało się przypisać do klucza, ponieważ bufor trackera (%{limit} kluczy na wątek) był pełny."
890
+ footer_tip: "Dodaj klucz do pliku locale albo przekaż :default. Klucze, na które użytkownicy faktycznie trafili, są wymienione jako pierwsze."
891
+ docs: "Przewodnik i18n Rails"
892
+
893
+ boot_errors_page:
894
+ title: "Błędy startu"
895
+ empty_title: "Nie zarejestrowano błędów startu"
896
+ empty_body: "W ciągu ostatnich %{days} dni żaden proces nie zginął podczas startu."
897
+ how_title: "Jak przechwytywane są błędy startu:"
898
+ how_enabled_html: "Przechwytywanie awarii musi być włączone (%{option})"
899
+ how_hooked: "RED rejestruje swój hook at_exit zaraz po Twoich initializerach i przed eager loadingiem Rails, więc awaria podczas startu jest widziana, mimo że aplikacja nigdy nie wystartowała do końca"
900
+ how_captured_html: "%{zeitwerk} z pliku definiującego niewłaściwą stałą, %{syntax} w modelu, initializer zgłaszający wyjątek: wszystko, co zabija proces, zanim obsłuży żądanie"
901
+ how_imported: "Awaria jest zapisywana na dysk, bo bazy danych jeszcze nie ma, i importowana przy następnym udanym starcie"
902
+ how_never: "Procesu zabitego przez SIGKILL lub segfault at_exit nigdy nie zobaczy, w żadnym narzędziu"
903
+ unresolved: "Nierozwiązane"
904
+ boot_crashes: "Awarie startu"
905
+ failed_boots: "Nieudane starty"
906
+ all_title: "Awarie startu według błędu"
907
+ column_error: "Błąd"
908
+ column_file: "Plik"
909
+ column_constant: "Stała"
910
+ column_boots: "Starty"
911
+ column_first_seen: "Pierwsze wystąpienie"
912
+ column_status: "Status"
913
+ status_open: "Otwarty"
914
+ status_resolved: "Rozwiązany"
915
+ footer_tip: "Awaria startu oznacza, że proces nigdy nie obsłużył żądania. Napraw ją przed następnym wdrożeniem; wiersz rozwiązuje się jak każdy inny błąd."
916
+
864
917
  rack_attack_page:
865
918
  title: Zdarzenia limitu żądań
866
919
  missing_title: Rack Attack nie jest zainstalowany
@@ -1146,7 +1199,7 @@ pl:
1146
1199
  unable_to_detect: Nie udało się wykryć
1147
1200
  no_user_model: Nie wykryto modelu User
1148
1201
  unable_to_query_count: Nie udało się odczytać liczby
1149
- manual_cleanup_required: Wymagane ręczne czyszczenie
1202
+ retention_enforced_by_job: "Usuwane przez RetentionCleanupJob, gdy uruchomi go Twój harmonogram"
1150
1203
  keep_forever: Przechowuj bezterminowo
1151
1204
  no_automatic_deletion: Bez automatycznego usuwania
1152
1205
  run_command: 'Uruchom:'
@@ -1154,8 +1207,7 @@ pl:
1154
1207
  options:
1155
1208
  enable_middleware: Przechwytuje nieobsłużone wyjątki
1156
1209
  enable_error_subscriber: Subskrybuje zdarzenia błędów Rails
1157
- retention_days: 'Tylko ręczne czyszczenie (uruchom: rails error_dashboard:cleanup_resolved
1158
- DAYS=90)'
1210
+ retention_days: "Usuwaj błędy niewidziane przez tyle dni. Wykonuje to RetentionCleanupJob, którego gem sam nie planuje"
1159
1211
  max_backtrace_lines: Limit głębokości śladu stosu
1160
1212
  sampling_rate: Odsetek przechwytywanych błędów
1161
1213
  application_name: Nazwa tej aplikacji (wykrywana automatycznie, jeśli nie
@@ -1174,7 +1226,7 @@ pl:
1174
1226
  nie ustawiono)
1175
1227
  async_logging: Przetwarzanie w zadaniach w tle
1176
1228
  async_adapter: Adapter kolejki zadań
1177
- enable_rate_limiting: Ogranicza żądania do API
1229
+ enable_rate_limiting: "Ograniczaj żądania do panelu według IP i ścieżki"
1178
1230
  rate_limit_per_minute: Żądań na minutę z jednego IP
1179
1231
  enable_slack_notifications: Powiadomienia w czasie rzeczywistym
1180
1232
  slack_webhook_url: Punkt końcowy webhooka Slack
@@ -1183,10 +1235,15 @@ pl:
1183
1235
  notification_email_from: Adres nadawcy
1184
1236
  enable_discord_notifications: Powiadomienia przez webhook Discord
1185
1237
  discord_webhook_url: Punkt końcowy webhooka Discord
1238
+ enable_telegram_notifications: "Powiadomienia Telegram przez Bot API"
1239
+ telegram_bot_token: "Token bota z @BotFather (ustaw zmienną środowiskową TELEGRAM_BOT_TOKEN)"
1240
+ telegram_chat_id: "Czat, grupa lub kanał, do którego pisze bot"
1241
+ telegram_api_base_url: "Serwer Bot API (zmieniaj tylko dla proxy lub własnego serwera)"
1186
1242
  enable_pagerduty_notifications: Eskalacja błędów krytycznych
1187
1243
  pagerduty_integration_key: Klucz API PagerDuty
1188
1244
  enable_webhook_notifications: Dowolne punkty końcowe webhooków
1189
1245
  webhook_urls: Własne punkty końcowe webhooków
1246
+ webhook_signing_secret: Podpisuje wychodzące webhooki algorytmem HMAC-SHA256 (ustaw zmienną środowiskową WEBHOOK_SIGNING_SECRET)
1190
1247
  enable_scheduled_digests: Dzienne/tygodniowe e-maile podsumowujące. Planuj
1191
1248
  przez SolidQueue, Sidekiq lub cron
1192
1249
  digest_frequency: Jak często wysyłać e-maile podsumowujące
@@ -1206,7 +1263,7 @@ pl:
1206
1263
  source_code_context_lines: Linie przed i po linii docelowej
1207
1264
  enable_git_blame: Pokazuj informacje git blame
1208
1265
  source_code_cache_ttl: Czas buforowania kodu źródłowego
1209
- only_show_app_code_source: Ukryj gems/stdlib ze względów bezpieczeństwa
1266
+ only_show_app_code_source: "Ukryj kod gemów i vendor w podglądzie źródeł"
1210
1267
  git_branch_strategy: Strategia ustalania gałęzi
1211
1268
  enable_breadcrumbs: Przechwytuj ślad aktywności żądania
1212
1269
  breadcrumb_buffer_size: Maksymalna liczba breadcrumbs na żądanie
@@ -1238,6 +1295,7 @@ pl:
1238
1295
  enable_crash_capture: Hak at_exit dla nieobsłużonych awarii
1239
1296
  enable_coverage_tracking: Tryb diagnostyczny — włącz w panelu, aby widzieć
1240
1297
  wykonane linie w podglądzie kodu (Ruby 3.2+)
1298
+ enable_missing_translation_tracking: "Zlicza braki I18n aplikacji według locale i klucza (opakowuje I18n.exception_handler)"
1241
1299
  enable_rack_attack_tracking: Zapisuj zdarzenia throttle/blocklist w osobnej
1242
1300
  tabeli
1243
1301
  enable_actioncable_tracking: Śledź zdarzenia kanałów WebSocket jako breadcrumbs
@@ -1297,6 +1355,8 @@ pl:
1297
1355
  breadcrumbs: Breadcrumbs
1298
1356
  system_health: Stan systemu
1299
1357
  swallowed_exceptions: Wykrywanie wyciszonych wyjątków
1358
+ missing_translations: "Śledzenie brakujących tłumaczeń"
1359
+ boot_errors: "Przechwytywanie błędów startu"
1300
1360
  rack_attack: Śledzenie Rack Attack
1301
1361
  actioncable: Śledzenie ActionCable
1302
1362
  activestorage: Śledzenie ActiveStorage
@@ -1709,6 +1769,13 @@ pl:
1709
1769
  guide_link: Przewodnik po ActionCable
1710
1770
  activestorage:
1711
1771
  title: Stan ActiveStorage
1772
+ probe:
1773
+ title: "Osiągalność usługi"
1774
+ reachable: "Osiągalna"
1775
+ unreachable: "Nieosiągalna"
1776
+ service: "Usługa: %{name}"
1777
+ latency: "%{ms} ms w obie strony"
1778
+ how: "Jedno sprawdzenie istnienia klucza, który nigdy nie jest zapisywany, wykonywane przy ładowaniu tej strony. GET /health wykonuje tę samą sondę."
1712
1779
  empty:
1713
1780
  title: Nie znaleziono zdarzeń ActiveStorage
1714
1781
  message: W ciągu ostatnich %{days} dni nie wykryto operacji usług ActiveStorage
@@ -60,6 +60,8 @@ pt-BR:
60
60
  llm: LLM
61
61
  n_plus_one: Consultas N+1
62
62
  deprecations: Deprecations
63
+ missing_translations: "Traduções"
64
+ boot_errors: "Erros de inicialização"
63
65
  swallowed: Engolidas
64
66
  diagnostic_dumps: Diagnóstico
65
67
  storms: Tempestades
@@ -86,6 +88,10 @@ pt-BR:
86
88
  Defina as variáveis de ambiente <code>ERROR_DASHBOARD_USER</code> e <code>ERROR_DASHBOARD_PASSWORD</code>,
87
89
  ou configure <code>authenticate_with</code> no seu initializer.
88
90
  dismiss: Ocultar nesta sessão
91
+ solid_queue:
92
+ label: "O Solid Queue não executará os jobs do RED."
93
+ body_html: "Erros capturados em segundo plano e notificações aguardam na fila até que <code>config/queue.yml</code> seja corrigido. Execute <code>bin/rails error_dashboard:verify</code> para ver a correção e reinicie."
94
+ guide: "O que o RED precisa do Solid Queue"
89
95
  storm:
90
96
  active_title: Tempestade de erros em andamento
91
97
  recent_title: A proteção contra tempestades foi acionada recentemente
@@ -851,6 +857,53 @@ pt-BR:
851
857
  view_unrescued: Ver os erros %{exception} não tratados que chegaram ao error_log
852
858
  footer_tip: As exceções engolidas são levantadas e depois tratadas em silêncio.
853
859
  Elas podem esconder bugs reais.
860
+ missing_translations_page:
861
+ title: "Traduções ausentes"
862
+ empty_title: "Nenhuma tradução ausente registrada"
863
+ empty_body: "Nenhuma chave de tradução ausente foi registrada nos últimos %{days} dias."
864
+ how_title: "Como as traduções ausentes são rastreadas:"
865
+ how_enabled_html: "O rastreamento precisa estar ativado (%{option})"
866
+ how_hooked: "O RED envolve o I18n.exception_handler e delega ao handler que sua aplicação já tinha; nada mais muda na sua configuração do I18n"
867
+ how_recorded: "Toda busca que chega ao handler — tanto por I18n.t quanto pelo helper de view t() — é contada por locale e chave, junto com o primeiro ponto de chamada observado"
868
+ how_not_seen: "Uma busca com :default nunca falha, e uma feita com raise_on_missing_translations lança uma exceção antes de qualquer handler rodar, então nenhuma das duas é contada aqui"
869
+ how_buffered: "As falhas são contadas em memória e gravadas ao fim da requisição ou do job, então espere um pequeno atraso até aparecerem"
870
+ missing_keys: "Chaves ausentes"
871
+ total_misses: "Total de falhas"
872
+ locales_affected: "Locales afetados"
873
+ all_title: "Chaves de tradução ausentes"
874
+ column_key: "Chave"
875
+ column_locale: "Locale"
876
+ column_source: "Visto primeiro em"
877
+ column_misses: "Falhas"
878
+ column_first_seen: "Primeira ocorrência"
879
+ overflow_notice: "%{count} falhas não puderam ser atribuídas a uma chave porque o buffer do rastreador (%{limit} chaves por thread) estava cheio."
880
+ footer_tip: "Adicione a chave ao arquivo de locale ou passe um :default. As chaves que os usuários realmente encontraram aparecem primeiro."
881
+ docs: "Guia i18n do Rails"
882
+
883
+ boot_errors_page:
884
+ title: "Erros de inicialização"
885
+ empty_title: "Nenhum erro de inicialização registrado"
886
+ empty_body: "Nenhum processo morreu ao iniciar nos últimos %{days} dias."
887
+ how_title: "Como os erros de inicialização são capturados:"
888
+ how_enabled_html: "A captura de falhas precisa estar ativada (%{option})"
889
+ how_hooked: "O RED registra seu hook at_exit logo após seus initializers e antes do eager loading do Rails, então uma falha durante a inicialização é vista mesmo que o app nunca termine de subir"
890
+ how_captured_html: "Um %{zeitwerk} de um arquivo que define a constante errada, um %{syntax} em um model, um initializer que lançou exceção: qualquer coisa que mate o processo antes de atender uma requisição"
891
+ how_imported: "A falha é gravada em disco, porque ainda não há banco de dados, e importada na próxima inicialização bem-sucedida"
892
+ how_never: "Um processo morto por SIGKILL ou por um segfault nunca é visto pelo at_exit, em nenhuma ferramenta"
893
+ unresolved: "Não resolvidos"
894
+ boot_crashes: "Falhas de inicialização"
895
+ failed_boots: "Inicializações com falha"
896
+ all_title: "Falhas de inicialização por erro"
897
+ column_error: "Erro"
898
+ column_file: "Arquivo"
899
+ column_constant: "Constante"
900
+ column_boots: "Inicializações"
901
+ column_first_seen: "Primeira ocorrência"
902
+ column_status: "Status"
903
+ status_open: "Aberto"
904
+ status_resolved: "Resolvido"
905
+ footer_tip: "Uma falha de inicialização significa que o processo nunca atendeu uma requisição. Corrija antes do próximo deploy; a linha é resolvida como qualquer outro erro."
906
+
854
907
  rack_attack_page:
855
908
  title: Eventos de limite de taxa
856
909
  missing_title: O Rack Attack não está instalado
@@ -1120,7 +1173,7 @@ pt-BR:
1120
1173
  unable_to_detect: Não foi possível detectar
1121
1174
  no_user_model: Nenhum modelo User detectado
1122
1175
  unable_to_query_count: Não foi possível consultar a quantidade
1123
- manual_cleanup_required: Limpeza manual necessária
1176
+ retention_enforced_by_job: "Excluídos pelo RetentionCleanupJob quando seu agendador o executar"
1124
1177
  keep_forever: Manter para sempre
1125
1178
  no_automatic_deletion: Sem exclusão automática
1126
1179
  run_command: 'Executar:'
@@ -1128,8 +1181,7 @@ pt-BR:
1128
1181
  options:
1129
1182
  enable_middleware: Captura exceções não tratadas
1130
1183
  enable_error_subscriber: Assina os eventos de erro do Rails
1131
- retention_days: 'Somente limpeza manual (executar: rails error_dashboard:cleanup_resolved
1132
- DAYS=90)'
1184
+ 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"
1133
1185
  max_backtrace_lines: Profundidade máxima do backtrace
1134
1186
  sampling_rate: Porcentagem de erros capturados
1135
1187
  application_name: Nome desta aplicação (detectado automaticamente se não for
@@ -1147,7 +1199,7 @@ pt-BR:
1147
1199
  se não for definido)
1148
1200
  async_logging: Processamento por jobs em segundo plano
1149
1201
  async_adapter: Adaptador da fila de jobs
1150
- enable_rate_limiting: Limitar as requisições à API
1202
+ enable_rate_limiting: "Limitar as requisições do painel por IP e caminho"
1151
1203
  rate_limit_per_minute: Requisições por minuto e por IP
1152
1204
  enable_slack_notifications: Notificações em tempo real
1153
1205
  slack_webhook_url: Endpoint do webhook do Slack
@@ -1156,10 +1208,15 @@ pt-BR:
1156
1208
  notification_email_from: Endereço do remetente
1157
1209
  enable_discord_notifications: Notificações por webhook do Discord
1158
1210
  discord_webhook_url: Endpoint do webhook do Discord
1211
+ enable_telegram_notifications: "Notificações do Telegram via Bot API"
1212
+ telegram_bot_token: "Token do bot do @BotFather (defina a variável de ambiente TELEGRAM_BOT_TOKEN)"
1213
+ telegram_chat_id: "Chat, grupo ou canal em que o bot publica"
1214
+ telegram_api_base_url: "Servidor da Bot API (altere apenas para um proxy ou servidor próprio)"
1159
1215
  enable_pagerduty_notifications: Escalonamento de erros críticos
1160
1216
  pagerduty_integration_key: Chave de API do PagerDuty
1161
1217
  enable_webhook_notifications: Endpoints de webhook genéricos
1162
1218
  webhook_urls: Endpoints de webhook personalizados
1219
+ webhook_signing_secret: Assina os webhooks de saída com HMAC-SHA256 (defina a variável de ambiente WEBHOOK_SIGNING_SECRET)
1163
1220
  enable_scheduled_digests: E-mails de resumo diários/semanais. Agendamento
1164
1221
  via SolidQueue, Sidekiq ou cron
1165
1222
  digest_frequency: Com que frequência enviar os e-mails de resumo
@@ -1179,7 +1236,7 @@ pt-BR:
1179
1236
  source_code_context_lines: Linhas antes e depois da linha de destino
1180
1237
  enable_git_blame: Exibir as informações do git blame
1181
1238
  source_code_cache_ttl: Duração do cache do código-fonte
1182
- only_show_app_code_source: Ocultar gems e stdlib por segurança
1239
+ only_show_app_code_source: "Ocultar código de gems e vendor no visualizador de código"
1183
1240
  git_branch_strategy: Estratégia de resolução do branch
1184
1241
  enable_breadcrumbs: Capturar o rastro de atividade da requisição
1185
1242
  breadcrumb_buffer_size: Número máximo de breadcrumbs por requisição
@@ -1211,6 +1268,7 @@ pt-BR:
1211
1268
  enable_crash_capture: Hook at_exit para falhas não tratadas
1212
1269
  enable_coverage_tracking: Modo diagnóstico — ative pelo painel para ver as
1213
1270
  linhas executadas na visualização do código-fonte (Ruby 3.2+)
1271
+ enable_missing_translation_tracking: "Conta as falhas de I18n do app por locale e chave (envolve o I18n.exception_handler)"
1214
1272
  enable_rack_attack_tracking: Registrar os eventos throttle/blocklist em uma
1215
1273
  tabela própria
1216
1274
  enable_actioncable_tracking: Monitorar os eventos de canal do WebSocket como
@@ -1268,6 +1326,8 @@ pt-BR:
1268
1326
  breadcrumbs: Breadcrumbs
1269
1327
  system_health: Saúde do sistema
1270
1328
  swallowed_exceptions: Detecção de exceções engolidas
1329
+ missing_translations: "Rastreamento de traduções ausentes"
1330
+ boot_errors: "Captura de erros de inicialização"
1271
1331
  rack_attack: Monitoramento do Rack Attack
1272
1332
  actioncable: Monitoramento do ActionCable
1273
1333
  activestorage: Monitoramento do ActiveStorage
@@ -1676,6 +1736,13 @@ pt-BR:
1676
1736
  guide_link: Guia do ActionCable
1677
1737
  activestorage:
1678
1738
  title: Saúde do ActiveStorage
1739
+ probe:
1740
+ title: "Alcançabilidade do serviço"
1741
+ reachable: "Alcançável"
1742
+ unreachable: "Inalcançável"
1743
+ service: "Serviço: %{name}"
1744
+ latency: "%{ms} ms de ida e volta"
1745
+ how: "Uma verificação de existência de uma chave que nunca é armazenada, feita ao carregar esta página. GET /health executa a mesma sonda."
1679
1746
  empty:
1680
1747
  title: Nenhum evento do ActiveStorage encontrado
1681
1748
  message: Nenhuma operação do serviço ActiveStorage foi detectada nos breadcrumbs
@@ -60,6 +60,8 @@ ru:
60
60
  llm: LLM
61
61
  n_plus_one: N+1 запросы
62
62
  deprecations: Устаревшее
63
+ missing_translations: "Переводы"
64
+ boot_errors: "Ошибки запуска"
63
65
  swallowed: Подавленные
64
66
  diagnostic_dumps: Диагностика
65
67
  storms: Штормы
@@ -86,6 +88,10 @@ ru:
86
88
  Задайте переменные окружения <code>ERROR_DASHBOARD_USER</code> и <code>ERROR_DASHBOARD_PASSWORD</code>
87
89
  или настройте <code>authenticate_with</code> в инициализаторе.
88
90
  dismiss: Скрыть до конца сессии
91
+ solid_queue:
92
+ label: "Solid Queue не будет выполнять задания RED."
93
+ body_html: "Ошибки, записанные в фоне, и уведомления ждут в очереди, пока не исправлен <code>config/queue.yml</code>. Запустите <code>bin/rails error_dashboard:verify</code>, чтобы увидеть исправление, затем перезапустите приложение."
94
+ guide: "Что RED нужно от Solid Queue"
89
95
  storm:
90
96
  active_title: Идёт шторм ошибок
91
97
  recent_title: Недавно сработала защита от шторма
@@ -864,6 +870,53 @@ ru:
864
870
  error_log
865
871
  footer_tip: Подавленные исключения возбуждаются, а затем молча перехватываются.
866
872
  Они могут скрывать настоящие ошибки.
873
+ missing_translations_page:
874
+ title: "Отсутствующие переводы"
875
+ empty_title: "Отсутствующие переводы не зафиксированы"
876
+ empty_body: "За последние %{days} дн. отсутствующие ключи перевода не зафиксированы."
877
+ how_title: "Как отслеживаются отсутствующие переводы:"
878
+ how_enabled_html: "Отслеживание должно быть включено (%{option})"
879
+ how_hooked: "RED оборачивает I18n.exception_handler и передаёт вызов обработчику, который уже был в приложении; больше ничего в настройках I18n не меняется"
880
+ how_recorded: "Каждый запрос, дошедший до обработчика — как через I18n.t, так и через хелпер t() во view — считается по локали и ключу вместе с первым замеченным местом вызова"
881
+ how_not_seen: "Запрос с :default никогда не даёт промаха, а запрос с raise_on_missing_translations выбрасывает исключение до вызова любого обработчика, поэтому здесь не учитываются ни тот, ни другой"
882
+ how_buffered: "Промахи считаются в памяти и записываются в конце запроса или задания, так что они появятся с небольшой задержкой"
883
+ missing_keys: "Отсутствующие ключи"
884
+ total_misses: "Всего промахов"
885
+ locales_affected: "Затронутые локали"
886
+ all_title: "Отсутствующие ключи перевода"
887
+ column_key: "Ключ"
888
+ column_locale: "Локаль"
889
+ column_source: "Впервые замечен в"
890
+ column_misses: "Промахи"
891
+ column_first_seen: "Впервые замечен"
892
+ overflow_notice: "%{count} промахов не удалось отнести к ключу: буфер трекера (%{limit} ключей на поток) был заполнен."
893
+ footer_tip: "Добавьте ключ в файл локали или передайте :default. Ключи, на которые действительно наткнулись пользователи, идут первыми."
894
+ docs: "Руководство Rails по i18n"
895
+
896
+ boot_errors_page:
897
+ title: "Ошибки запуска"
898
+ empty_title: "Ошибки запуска не зафиксированы"
899
+ empty_body: "За последние %{days} дн. ни один процесс не упал при запуске."
900
+ how_title: "Как перехватываются ошибки запуска:"
901
+ how_enabled_html: "Перехват аварий должен быть включён (%{option})"
902
+ how_hooked: "RED регистрирует свой хук at_exit сразу после ваших инициализаторов и до eager loading в Rails, поэтому авария при запуске видна, даже если приложение так и не запустилось"
903
+ how_captured_html: "%{zeitwerk} из файла, определяющего не ту константу, %{syntax} в модели, инициализатор с исключением: всё, что убивает процесс до обработки первого запроса"
904
+ how_imported: "Авария записывается на диск, потому что базы данных ещё нет, и импортируется при следующем успешном запуске"
905
+ how_never: "Процесс, убитый SIGKILL или упавший с segfault, at_exit не увидит ни в одном инструменте"
906
+ unresolved: "Нерешённые"
907
+ boot_crashes: "Аварии при запуске"
908
+ failed_boots: "Неудачные запуски"
909
+ all_title: "Аварии при запуске по ошибке"
910
+ column_error: "Ошибка"
911
+ column_file: "Файл"
912
+ column_constant: "Константа"
913
+ column_boots: "Запуски"
914
+ column_first_seen: "Впервые замечена"
915
+ column_status: "Статус"
916
+ status_open: "Открыта"
917
+ status_resolved: "Решена"
918
+ footer_tip: "Авария при запуске означает, что процесс не обработал ни одного запроса. Исправьте её до следующего деплоя; строка закрывается как любая другая ошибка."
919
+
867
920
  rack_attack_page:
868
921
  title: События ограничения частоты
869
922
  missing_title: Rack Attack не установлен
@@ -1149,7 +1202,7 @@ ru:
1149
1202
  unable_to_detect: Не удалось определить
1150
1203
  no_user_model: Модель User не обнаружена
1151
1204
  unable_to_query_count: Не удалось получить количество
1152
- manual_cleanup_required: Требуется ручная очистка
1205
+ retention_enforced_by_job: "Удаляются RetentionCleanupJob, когда его запускает ваш планировщик"
1153
1206
  keep_forever: Хранить всегда
1154
1207
  no_automatic_deletion: Автоматическое удаление отключено
1155
1208
  run_command: 'Выполните:'
@@ -1157,8 +1210,7 @@ ru:
1157
1210
  options:
1158
1211
  enable_middleware: Перехватывает необработанные исключения
1159
1212
  enable_error_subscriber: Подписывается на события ошибок Rails
1160
- retention_days: 'Только ручная очистка (выполните: rails error_dashboard:cleanup_resolved
1161
- DAYS=90)'
1213
+ retention_days: "Удалять ошибки, не встречавшиеся столько дней. Выполняет RetentionCleanupJob, который гем сам не планирует"
1162
1214
  max_backtrace_lines: Ограничение глубины backtrace
1163
1215
  sampling_rate: Доля захватываемых ошибок
1164
1216
  application_name: Имя этого приложения (определяется автоматически, если не
@@ -1176,7 +1228,7 @@ ru:
1176
1228
  если не задано)
1177
1229
  async_logging: Обработка в фоновых задачах
1178
1230
  async_adapter: Адаптер очереди задач
1179
- enable_rate_limiting: Ограничивать частоту API-запросов
1231
+ enable_rate_limiting: "Ограничивать запросы к панели по IP и пути"
1180
1232
  rate_limit_per_minute: Запросов в минуту на IP
1181
1233
  enable_slack_notifications: Уведомления в реальном времени
1182
1234
  slack_webhook_url: Адрес webhook Slack
@@ -1185,10 +1237,15 @@ ru:
1185
1237
  notification_email_from: Адрес отправителя
1186
1238
  enable_discord_notifications: Уведомления через webhook Discord
1187
1239
  discord_webhook_url: Адрес webhook Discord
1240
+ enable_telegram_notifications: "Уведомления Telegram через Bot API"
1241
+ telegram_bot_token: "Токен бота от @BotFather (задайте переменную окружения TELEGRAM_BOT_TOKEN)"
1242
+ telegram_chat_id: "Чат, группа или канал, куда пишет бот"
1243
+ telegram_api_base_url: "Сервер Bot API (менять только для прокси или собственного сервера)"
1188
1244
  enable_pagerduty_notifications: Эскалация критических ошибок
1189
1245
  pagerduty_integration_key: API-ключ PagerDuty
1190
1246
  enable_webhook_notifications: Произвольные webhook-адреса
1191
1247
  webhook_urls: Свои webhook-адреса
1248
+ webhook_signing_secret: Подписывает исходящие webhook-запросы HMAC-SHA256 (задайте переменную окружения WEBHOOK_SIGNING_SECRET)
1192
1249
  enable_scheduled_digests: Ежедневные/еженедельные сводки. Планирование через
1193
1250
  SolidQueue, Sidekiq или cron
1194
1251
  digest_frequency: Как часто отправлять сводки
@@ -1207,7 +1264,7 @@ ru:
1207
1264
  source_code_context_lines: Строк до и после целевой строки
1208
1265
  enable_git_blame: Показывать сведения git blame
1209
1266
  source_code_cache_ttl: Время жизни кэша исходного кода
1210
- only_show_app_code_source: Скрывать gem-ы и stdlib в целях безопасности
1267
+ only_show_app_code_source: "Скрывать код гемов и vendor в просмотрщике исходников"
1211
1268
  git_branch_strategy: Стратегия определения ветки
1212
1269
  enable_breadcrumbs: Записывать след активности запроса
1213
1270
  breadcrumb_buffer_size: Максимум breadcrumbs на запрос
@@ -1237,6 +1294,7 @@ ru:
1237
1294
  enable_crash_capture: Хук at_exit для необработанных аварийных завершений
1238
1295
  enable_coverage_tracking: Диагностический режим — включите в панели, чтобы
1239
1296
  видеть выполненные строки в исходном коде (Ruby 3.2+)
1297
+ enable_missing_translation_tracking: "Считает промахи I18n приложения по локали и ключу (оборачивает I18n.exception_handler)"
1240
1298
  enable_rack_attack_tracking: Записывать события throttle/blocklist в отдельную
1241
1299
  таблицу
1242
1300
  enable_actioncable_tracking: Отслеживать события каналов WebSocket как breadcrumbs
@@ -1296,6 +1354,8 @@ ru:
1296
1354
  breadcrumbs: Breadcrumbs
1297
1355
  system_health: Состояние системы
1298
1356
  swallowed_exceptions: Обнаружение подавленных исключений (swallowed exception)
1357
+ missing_translations: "Отслеживание отсутствующих переводов"
1358
+ boot_errors: "Перехват ошибок запуска"
1299
1359
  rack_attack: Отслеживание Rack Attack
1300
1360
  actioncable: Отслеживание ActionCable
1301
1361
  activestorage: Отслеживание ActiveStorage
@@ -1709,6 +1769,13 @@ ru:
1709
1769
  guide_link: Руководство по ActionCable
1710
1770
  activestorage:
1711
1771
  title: Состояние ActiveStorage
1772
+ probe:
1773
+ title: "Доступность сервиса"
1774
+ reachable: "Доступен"
1775
+ unreachable: "Недоступен"
1776
+ service: "Сервис: %{name}"
1777
+ latency: "%{ms} мс туда и обратно"
1778
+ how: "Одна проверка существования ключа, который никогда не сохраняется, при загрузке этой страницы. GET /health выполняет ту же проверку."
1712
1779
  empty:
1713
1780
  title: События ActiveStorage не найдены
1714
1781
  message: За последние %{days} дн. в breadcrumbs ошибок не обнаружено операций
@@ -60,6 +60,8 @@ uk:
60
60
  llm: LLM
61
61
  n_plus_one: Запити N+1
62
62
  deprecations: Deprecations
63
+ missing_translations: "Переклади"
64
+ boot_errors: "Помилки запуску"
63
65
  swallowed: Придушені
64
66
  diagnostic_dumps: Діагностика
65
67
  storms: Шторми
@@ -86,6 +88,10 @@ uk:
86
88
  Встановіть змінні середовища <code>ERROR_DASHBOARD_USER</code> і <code>ERROR_DASHBOARD_PASSWORD</code>
87
89
  або налаштуйте <code>authenticate_with</code> у своєму ініціалізаторі.
88
90
  dismiss: Приховати для цієї сесії
91
+ solid_queue:
92
+ label: "Solid Queue не виконуватиме завдання RED."
93
+ body_html: "Помилки, записані у фоні, і сповіщення чекають у черзі, доки не виправлено <code>config/queue.yml</code>. Запустіть <code>bin/rails error_dashboard:verify</code>, щоб побачити виправлення, потім перезапустіть застосунок."
94
+ guide: "Що RED потрібно від Solid Queue"
89
95
  storm:
90
96
  active_title: Триває шторм помилок
91
97
  recent_title: Нещодавно спрацював захист від штормів
@@ -862,6 +868,53 @@ uk:
862
868
  до error_log
863
869
  footer_tip: Придушені винятки піднімаються, а потім мовчки перехоплюються.
864
870
  Вони можуть приховувати справжні помилки.
871
+ missing_translations_page:
872
+ title: "Відсутні переклади"
873
+ empty_title: "Відсутні переклади не зафіксовано"
874
+ empty_body: "За останні %{days} дн. відсутніх ключів перекладу не зафіксовано."
875
+ how_title: "Як відстежуються відсутні переклади:"
876
+ how_enabled_html: "Відстеження має бути ввімкнено (%{option})"
877
+ how_hooked: "RED обгортає I18n.exception_handler і передає виклик обробнику, який уже був у застосунку; більше нічого в налаштуваннях I18n не змінюється"
878
+ how_recorded: "Кожен запит, що дійшов до обробника — як через I18n.t, так і через хелпер t() у view — рахується за локаллю та ключем разом із першим поміченим місцем виклику"
879
+ how_not_seen: "Запит із :default ніколи не промахується, а запит із raise_on_missing_translations кидає виняток до виклику будь-якого обробника, тому тут не враховуються ні той, ні інший"
880
+ how_buffered: "Промахи рахуються в пам'яті й записуються наприкінці запиту або завдання, тож вони з'являться з невеликою затримкою"
881
+ missing_keys: "Відсутні ключі"
882
+ total_misses: "Усього промахів"
883
+ locales_affected: "Зачеплені локалі"
884
+ all_title: "Відсутні ключі перекладу"
885
+ column_key: "Ключ"
886
+ column_locale: "Локаль"
887
+ column_source: "Уперше помічено в"
888
+ column_misses: "Промахи"
889
+ column_first_seen: "Уперше помічено"
890
+ overflow_notice: "%{count} промахів не вдалося віднести до ключа: буфер трекера (%{limit} ключів на потік) був заповнений."
891
+ footer_tip: "Додайте ключ до файлу локалі або передайте :default. Ключі, на які справді натрапили користувачі, йдуть першими."
892
+ docs: "Посібник Rails з i18n"
893
+
894
+ boot_errors_page:
895
+ title: "Помилки запуску"
896
+ empty_title: "Помилки запуску не зафіксовано"
897
+ empty_body: "За останні %{days} дн. жоден процес не впав під час запуску."
898
+ how_title: "Як перехоплюються помилки запуску:"
899
+ how_enabled_html: "Перехоплення аварій має бути ввімкнено (%{option})"
900
+ how_hooked: "RED реєструє свій хук at_exit одразу після ваших ініціалізаторів і до eager loading у Rails, тому аварія під час запуску видима, навіть якщо застосунок так і не запустився"
901
+ how_captured_html: "%{zeitwerk} із файлу, що визначає не ту константу, %{syntax} у моделі, ініціалізатор з винятком: усе, що вбиває процес до обробки першого запиту"
902
+ how_imported: "Аварія записується на диск, бо бази даних ще немає, і імпортується під час наступного успішного запуску"
903
+ how_never: "Процес, убитий SIGKILL або segfault, at_exit не побачить у жодному інструменті"
904
+ unresolved: "Невирішені"
905
+ boot_crashes: "Аварії під час запуску"
906
+ failed_boots: "Невдалі запуски"
907
+ all_title: "Аварії під час запуску за помилкою"
908
+ column_error: "Помилка"
909
+ column_file: "Файл"
910
+ column_constant: "Константа"
911
+ column_boots: "Запуски"
912
+ column_first_seen: "Уперше помічено"
913
+ column_status: "Статус"
914
+ status_open: "Відкрита"
915
+ status_resolved: "Вирішена"
916
+ footer_tip: "Аварія під час запуску означає, що процес не обробив жодного запиту. Виправте її до наступного розгортання; рядок закривається як будь-яка інша помилка."
917
+
865
918
  rack_attack_page:
866
919
  title: Події обмеження запитів
867
920
  missing_title: Rack Attack не встановлено
@@ -1145,7 +1198,7 @@ uk:
1145
1198
  unable_to_detect: Не вдалося визначити
1146
1199
  no_user_model: Модель User не виявлено
1147
1200
  unable_to_query_count: Не вдалося отримати кількість
1148
- manual_cleanup_required: Потрібне ручне очищення
1201
+ retention_enforced_by_job: "Видаляються RetentionCleanupJob, коли його запускає ваш планувальник"
1149
1202
  keep_forever: Зберігати назавжди
1150
1203
  no_automatic_deletion: Без автоматичного видалення
1151
1204
  run_command: 'Виконайте:'
@@ -1153,8 +1206,7 @@ uk:
1153
1206
  options:
1154
1207
  enable_middleware: Перехоплює необроблені винятки
1155
1208
  enable_error_subscriber: Підписується на події помилок Rails
1156
- retention_days: 'Лише ручне очищення (виконайте: rails error_dashboard:cleanup_resolved
1157
- DAYS=90)'
1209
+ retention_days: "Видаляти помилки, яких не було стільки днів. Виконує RetentionCleanupJob, який гем сам не планує"
1158
1210
  max_backtrace_lines: Обмеження глибини стеку викликів
1159
1211
  sampling_rate: Відсоток захоплених помилок
1160
1212
  application_name: Назва цього застосунку (визначається автоматично, якщо не
@@ -1172,7 +1224,7 @@ uk:
1172
1224
  якщо не задано)
1173
1225
  async_logging: Обробка у фонових завданнях
1174
1226
  async_adapter: Адаптер черги завдань
1175
- enable_rate_limiting: Обмежувати запити до API
1227
+ enable_rate_limiting: "Обмежувати запити до панелі за IP і шляхом"
1176
1228
  rate_limit_per_minute: Запитів за хвилину з однієї IP-адреси
1177
1229
  enable_slack_notifications: Сповіщення в реальному часі
1178
1230
  slack_webhook_url: Кінцева точка webhook у Slack
@@ -1181,10 +1233,15 @@ uk:
1181
1233
  notification_email_from: Адреса відправника
1182
1234
  enable_discord_notifications: Сповіщення через webhook у Discord
1183
1235
  discord_webhook_url: Кінцева точка webhook у Discord
1236
+ enable_telegram_notifications: "Сповіщення Telegram через Bot API"
1237
+ telegram_bot_token: "Токен бота від @BotFather (задайте змінну середовища TELEGRAM_BOT_TOKEN)"
1238
+ telegram_chat_id: "Чат, група або канал, куди пише бот"
1239
+ telegram_api_base_url: "Сервер Bot API (змінюйте лише для проксі або власного сервера)"
1184
1240
  enable_pagerduty_notifications: Ескалація критичних помилок
1185
1241
  pagerduty_integration_key: Ключ API PagerDuty
1186
1242
  enable_webhook_notifications: Довільні кінцеві точки webhook
1187
1243
  webhook_urls: Власні кінцеві точки webhook
1244
+ webhook_signing_secret: Підписує вихідні webhook-запити HMAC-SHA256 (задайте змінну середовища WEBHOOK_SIGNING_SECRET)
1188
1245
  enable_scheduled_digests: Щоденні/щотижневі підсумкові листи. Плануйте через
1189
1246
  SolidQueue, Sidekiq або cron
1190
1247
  digest_frequency: Як часто надсилати підсумкові листи
@@ -1205,7 +1262,7 @@ uk:
1205
1262
  source_code_context_lines: Рядків до та після цільового рядка
1206
1263
  enable_git_blame: Показувати дані git blame
1207
1264
  source_code_cache_ttl: Тривалість кешування вихідного коду
1208
- only_show_app_code_source: Приховати gems/stdlib з міркувань безпеки
1265
+ only_show_app_code_source: "Приховувати код гемів і vendor у переглядачі коду"
1209
1266
  git_branch_strategy: Стратегія визначення гілки
1210
1267
  enable_breadcrumbs: Захоплювати послідовність дій у запиті
1211
1268
  breadcrumb_buffer_size: Максимум breadcrumbs на запит
@@ -1236,6 +1293,7 @@ uk:
1236
1293
  enable_crash_capture: Хук at_exit для необроблених аварійних завершень
1237
1294
  enable_coverage_tracking: Діагностичний режим — увімкніть через панель, щоб
1238
1295
  бачити виконані рядки у перегляді коду (Ruby 3.2+)
1296
+ enable_missing_translation_tracking: "Рахує промахи I18n застосунку за локаллю та ключем (обгортає I18n.exception_handler)"
1239
1297
  enable_rack_attack_tracking: Записувати події throttle/blocklist в окрему
1240
1298
  таблицю
1241
1299
  enable_actioncable_tracking: Відстежувати події каналів WebSocket як breadcrumbs
@@ -1295,6 +1353,8 @@ uk:
1295
1353
  breadcrumbs: Breadcrumbs
1296
1354
  system_health: Стан системи
1297
1355
  swallowed_exceptions: Виявлення придушених винятків
1356
+ missing_translations: "Відстеження відсутніх перекладів"
1357
+ boot_errors: "Перехоплення помилок запуску"
1298
1358
  rack_attack: Відстеження Rack Attack
1299
1359
  actioncable: Відстеження ActionCable
1300
1360
  activestorage: Відстеження ActiveStorage
@@ -1708,6 +1768,13 @@ uk:
1708
1768
  guide_link: Посібник з ActionCable
1709
1769
  activestorage:
1710
1770
  title: Стан ActiveStorage
1771
+ probe:
1772
+ title: "Доступність сервісу"
1773
+ reachable: "Доступний"
1774
+ unreachable: "Недоступний"
1775
+ service: "Сервіс: %{name}"
1776
+ latency: "%{ms} мс туди й назад"
1777
+ how: "Одна перевірка існування ключа, який ніколи не зберігається, під час завантаження цієї сторінки. GET /health виконує ту саму перевірку."
1711
1778
  empty:
1712
1779
  title: Подій ActiveStorage не знайдено
1713
1780
  message: За останні %{days} днів у breadcrumbs помилок не виявлено операцій