diff --git a/lib/bingo.rb b/lib/bingo.rb index c1862ce..0490c8d 100644 --- a/lib/bingo.rb +++ b/lib/bingo.rb @@ -61,6 +61,8 @@ module Bingo mw_types: { 'it' => 'ИТ', 'connected' => 'подв.', 'total' => 'общ.', 'design' => 'проект' }, building: 'строится', mw: 'МВт', since: 'с %d г.', photo: 'Фото', source: 'Источник', close: 'Закрыть', no_incidents: 'Инцидентов не зафиксировано.', + credits_ai: 'Информация собрана и проверена с помощью Claude (Anthropic).', + credits_hym: 'Спасибо %{link} (данные Cat Eyes OSINT) за часть списка: каждая запись перепроверена по сайтам операторов и прессе.', footer: 'Данные из открытых источников (2025–2026). Клетка зачёркивается только по публичному источнику.', kinds: { 'strike' => 'Атака БПЛА', 'fire' => 'Пожар', 'outage' => 'Отключение', 'flood' => 'Затопление', 'cooling' => 'Перегрев', 'other' => 'Инцидент' }, letters: %w[Б И Н Г О], @@ -89,6 +91,8 @@ module Bingo mw_types: { 'it' => 'IT', 'connected' => 'connected', 'total' => 'total', 'design' => 'design' }, building: 'under construction', mw: 'MW', since: 'since %d', photo: 'Photo', source: 'Source', close: 'Close', no_incidents: 'No incidents recorded.', + credits_ai: 'Information collected and verified with the help of Claude (Anthropic).', + credits_hym: 'Thanks to %{link} (data by Cat Eyes OSINT) for part of the list; every entry was re-verified against operator sites and the press.', footer: 'Open-source data (2025–2026). A cell is crossed out only with a public source.', kinds: { 'strike' => 'Drone strike', 'fire' => 'Fire', 'outage' => 'Outage', 'flood' => 'Flood', 'cooling' => 'Overheating', 'other' => 'Incident' }, letters: %w[B I N G O], @@ -117,6 +121,8 @@ module Bingo mw_types: { 'it' => 'ІТ', 'connected' => 'підв.', 'total' => 'заг.', 'design' => 'проєкт' }, building: 'будується', mw: 'МВт', since: 'з %d р.', photo: 'Фото', source: 'Джерело', close: 'Закрити', no_incidents: 'Інцидентів не зафіксовано.', + credits_ai: 'Інформацію зібрано й перевірено за допомогою Claude (Anthropic).', + credits_hym: 'Дякуємо %{link} (дані Cat Eyes OSINT) за частину списку: кожен запис перевірено за сайтами операторів і пресою.', footer: 'Дані з відкритих джерел (2025–2026). Клітинка закреслюється лише за публічним джерелом.', kinds: { 'strike' => 'Атака БПЛА', 'fire' => 'Пожежа', 'outage' => 'Відключення', 'flood' => 'Затоплення', 'cooling' => 'Перегрів', 'other' => 'Інцидент' }, letters: %w[Б І Н Г О], diff --git a/test/bingo_test.rb b/test/bingo_test.rb index 84a39ce..693b113 100644 --- a/test/bingo_test.rb +++ b/test/bingo_test.rb @@ -215,6 +215,16 @@ class BingoTest < Minitest::Test assert_nil @dcs[0].refresh.provider end + def test_footer_credits_in_every_language + { 'ru' => 'с помощью Claude', 'en' => 'with the help of Claude', 'uk' => 'за допомогою Claude' }.each do |l, text| + get "/#{l}" + assert_includes last_response.body, text + assert_includes last_response.body, 'hackyourmom' + end + get "/en/dc/#{@dcs[0].slug}" + assert_includes last_response.body, 'hackyourmom' + end + def test_robots_and_sitemap_are_the_bingos_own get '/robots.txt' assert last_response.ok? diff --git a/views/bingo/_credits.erb b/views/bingo/_credits.erb new file mode 100644 index 0000000..2571b4c --- /dev/null +++ b/views/bingo/_credits.erb @@ -0,0 +1,2 @@ +

<%= t(:credits_ai) %> + <%== format(Rack::Utils.escape_html(t(:credits_hym)), link: 'hackyourmom') %>

diff --git a/views/bingo/dc.erb b/views/bingo/dc.erb index f1b10c6..b63d6ba 100644 --- a/views/bingo/dc.erb +++ b/views/bingo/dc.erb @@ -29,6 +29,7 @@ diff --git a/views/bingo/index.erb b/views/bingo/index.erb index b4f02bd..099c7f4 100644 --- a/views/bingo/index.erb +++ b/views/bingo/index.erb @@ -86,6 +86,7 @@