diff --git a/api/_rss-allowed-domains.js b/api/_rss-allowed-domains.js index 30e215ae64..808f49bcfd 100644 --- a/api/_rss-allowed-domains.js +++ b/api/_rss-allowed-domains.js @@ -323,5 +323,10 @@ export default [ "rss.libsyn.com", "feeds.megaphone.fm", "rss.art19.com", - "idp.nature.com" + "idp.nature.com", + "www.dnevnik.bg", + "www.capital.bg", + "www.24chasa.bg", + "www.segabg.com", + "bivol.bg", ]; diff --git a/scripts/shared/rss-allowed-domains.json b/scripts/shared/rss-allowed-domains.json index efc7b84e46..6abb8b9fd4 100644 --- a/scripts/shared/rss-allowed-domains.json +++ b/scripts/shared/rss-allowed-domains.json @@ -320,5 +320,10 @@ "rss.libsyn.com", "feeds.megaphone.fm", "rss.art19.com", - "idp.nature.com" + "idp.nature.com", + "www.dnevnik.bg", + "www.capital.bg", + "www.24chasa.bg", + "www.segabg.com", + "bivol.bg" ] diff --git a/scripts/shared/source-tiers.json b/scripts/shared/source-tiers.json index ec54a80f91..de82210edb 100644 --- a/scripts/shared/source-tiers.json +++ b/scripts/shared/source-tiers.json @@ -262,5 +262,12 @@ "ArXiv AI": 4, "AI News": 4, "Layoffs News": 4, - "GloNewswire (Taiwan)": 4 + "GloNewswire (Taiwan)": 4, + "BTA": 1, + "Dnevnik": 2, + "Capital.bg": 2, + "24 Chasa": 2, + "Sega": 2, + "Mediapool": 2, + "Bivol": 2 } diff --git a/server/worldmonitor/news/v1/_feeds.ts b/server/worldmonitor/news/v1/_feeds.ts index 59bc04ed07..94f097c840 100644 --- a/server/worldmonitor/news/v1/_feeds.ts +++ b/server/worldmonitor/news/v1/_feeds.ts @@ -55,6 +55,14 @@ export const VARIANT_FEEDS: Record> = { { name: 'Híradó', url: gnLocale('site:hirado.hu when:2d', 'hu', 'HU', 'HU:hu'), lang: 'hu' }, { name: 'Portfolio.hu', url: 'https://portfolio.hu/rss/all.xml', lang: 'hu' }, { name: 'ATV', url: 'https://www.atv.hu/rss', lang: 'hu' }, + // Bulgarian (BG) + { name: 'Dnevnik', url: 'https://www.dnevnik.bg/rss/', lang: 'bg' }, + { name: 'Capital.bg', url: 'https://www.capital.bg/rss/', lang: 'bg' }, + { name: '24 Chasa', url: 'https://www.24chasa.bg/rss', lang: 'bg' }, + { name: 'Sega', url: 'https://www.segabg.com/rss', lang: 'bg' }, + { name: 'Mediapool', url: gnLocale('site:mediapool.bg when:2d', 'bg', 'BG', 'BG:bg'), lang: 'bg' }, + { name: 'BTA', url: gnLocale('site:bta.bg when:2d', 'bg', 'BG', 'BG:bg'), lang: 'bg' }, + { name: 'Bivol', url: 'https://bivol.bg/feed', lang: 'bg' }, ], middleeast: [ { name: 'BBC Middle East', url: 'https://feeds.bbci.co.uk/news/world/middle_east/rss.xml' }, diff --git a/shared/rss-allowed-domains.json b/shared/rss-allowed-domains.json index efc7b84e46..6abb8b9fd4 100644 --- a/shared/rss-allowed-domains.json +++ b/shared/rss-allowed-domains.json @@ -320,5 +320,10 @@ "rss.libsyn.com", "feeds.megaphone.fm", "rss.art19.com", - "idp.nature.com" + "idp.nature.com", + "www.dnevnik.bg", + "www.capital.bg", + "www.24chasa.bg", + "www.segabg.com", + "bivol.bg" ] diff --git a/shared/source-tiers.json b/shared/source-tiers.json index ec54a80f91..de82210edb 100644 --- a/shared/source-tiers.json +++ b/shared/source-tiers.json @@ -262,5 +262,12 @@ "ArXiv AI": 4, "AI News": 4, "Layoffs News": 4, - "GloNewswire (Taiwan)": 4 + "GloNewswire (Taiwan)": 4, + "BTA": 1, + "Dnevnik": 2, + "Capital.bg": 2, + "24 Chasa": 2, + "Sega": 2, + "Mediapool": 2, + "Bivol": 2 } diff --git a/src/config/feeds.ts b/src/config/feeds.ts index 5c553e913f..0c6ac4cd43 100644 --- a/src/config/feeds.ts +++ b/src/config/feeds.ts @@ -52,6 +52,9 @@ export const SOURCE_TYPES: Record = { 'Telex': 'mainstream', 'Index.hu': 'mainstream', 'HVG': 'mainstream', '444.hu': 'mainstream', '24.hu': 'mainstream', 'Híradó': 'mainstream', 'ATV': 'mainstream', 'Portfolio.hu': 'market', + // Bulgarian (BG) + 'Dnevnik': 'mainstream', 'Capital.bg': 'market', '24 Chasa': 'mainstream', + 'Sega': 'mainstream', 'Mediapool': 'mainstream', 'BTA': 'wire', 'Bivol': 'intel', 'SVT Nyheter': 'mainstream', 'Dagens Nyheter': 'mainstream', 'Svenska Dagbladet': 'mainstream', // Brazilian Addition 'Brasil Paralelo': 'mainstream', @@ -278,6 +281,14 @@ const FULL_FEEDS: Record = { { name: 'in.gr', url: rss('https://www.in.gr/feed/'), lang: 'el' }, { name: 'iefimerida', url: rss('https://www.iefimerida.gr/rss.xml'), lang: 'el' }, { name: 'Proto Thema', url: rss('https://news.google.com/rss/search?q=site:protothema.gr+when:2d&hl=el&gl=GR&ceid=GR:el'), lang: 'el' }, + // Bulgarian (BG) — locale-gated; bg is registered in SUPPORTED_LANGUAGES + { name: 'Dnevnik', url: rss('https://www.dnevnik.bg/rss/'), lang: 'bg' }, + { name: 'Capital.bg', url: rss('https://www.capital.bg/rss/'), lang: 'bg' }, + { name: '24 Chasa', url: rss('https://www.24chasa.bg/rss'), lang: 'bg' }, + { name: 'Sega', url: rss('https://www.segabg.com/rss'), lang: 'bg' }, + { name: 'Mediapool', url: rss('https://news.google.com/rss/search?q=site:mediapool.bg+when:2d&hl=bg&gl=BG&ceid=BG:bg'), lang: 'bg' }, + { name: 'BTA', url: rss('https://news.google.com/rss/search?q=site:bta.bg+when:2d&hl=bg&gl=BG&ceid=BG:bg'), lang: 'bg' }, + { name: 'Bivol', url: rss('https://bivol.bg/feed'), lang: 'bg' }, // Russia & Ukraine (independent sources) { name: 'BBC Russian', url: rss('https://feeds.bbci.co.uk/russian/rss.xml'), lang: 'ru' }, { name: 'Meduza', url: rss('https://meduza.io/rss/all'), lang: 'ru' }, diff --git a/src/locales/bg.json b/src/locales/bg.json index 94c38ffa04..a3308b72a3 100644 --- a/src/locales/bg.json +++ b/src/locales/bg.json @@ -13,7 +13,7 @@ "instabilityIndex": "Индекс на нестабилност", "notTracked": "Не се проследява — {{country}} не е в списъка на CII tier-1", "intelBrief": "Разузнавателен преглед", - "generatingBrief": "Генериране на разузнавателен преглед...", + "generatingBrief": "Генерирам разузнавателен преглед...", "topNews": "Топ новини", "activeSignals": "Активни сигнали", "timeline": "7-дневна времева линия", @@ -751,7 +751,9 @@ "summarizing": "Обобщаване…" }, "progressCharts": { - "noData": "Няма налични данни за напредъка" + "noData": "Няма налични данни за напредъка", + "fallbackBadge": "Showing static fallback data — live series unavailable", + "fallbackTooltip": "The live World Bank seed could not be reached. These charts are rendered from a hardcoded snapshot last verified Feb 2026." }, "monitor": { "placeholder": "Ключови думи (разделени със запетая)", @@ -1310,7 +1312,9 @@ "cii": { "shareStory": "Дели история", "noSignals": "Няма открити сигнали на нестабилност", - "infoTooltip": "Методология
  • Unrest: граждански безред & протести
  • Conflict: интензивност на въоръжен конфликт
  • Security: военни полети/кораби над територия
  • Information: скорост на новини и корелация на фокусни точки
  • Близост на гореща точка повишение (стратегически местоположения)
U:C:S:I стойностите показват компонентни резултати. Откритие на фокусни точки коерелира новинни субекти със сигнали на карта за точно оценяване." + "infoTooltip": "Методология
  • Unrest: граждански безред & протести
  • Conflict: интензивност на въоръжен конфликт
  • Security: военни полети/кораби над територия
  • Information: скорост на новини и корелация на фокусни точки
  • Близост на гореща точка повишение (стратегически местоположения)
U:C:S:I стойностите показват компонентни резултати. Откритие на фокусни точки коерелира новинни субекти със сигнали на карта за точно оценяване.", + "_methodologyLink_translatorNote": "TRANSLATION TODO (#3725): localize methodologyLink. English value is shipped to every locale as a stop-gap so the methodology link is present in all languages. Safe to translate independently of infoTooltip — the two render as a single tooltip via concatenation in CIIPanel.ts.", + "methodologyLink": "Includes per-country baseline + event multiplier — see /docs/methodology/cii-risk-scores for the published table" }, "insights": { "noStories": "Няма други или многоточни истории все още", @@ -2004,7 +2008,8 @@ "errors": { "noData": "Няма налични данни за избухване", "failedToLoad": "Неуспешно зареждане" - } + }, + "methodologyNote": "Alert / Warning / Watch levels come from an editorial keyword classifier — see /docs/methodology/disease-alert-level for the keyword table and limitations." }, "earningsCalendar": { "infoTooltip": "Календар на печалбите Предстоящи и скорошни отчети за печалби на големи публични компании. Показва прогнози за EPS срещу реални, приходи и класификация превишаване/пропуск. Източник: доставчици на финансови данни.", @@ -2067,7 +2072,8 @@ "errors": { "unavailable": "FSI данни недостъпни", "failedToLoad": "Неуспешно зареждане" - } + }, + "cissStale": "ECB has not published a newer value — this reading may be out of date." }, "hormuzTracker": { "infoTooltip": "Тракер на търговията в Хормуз Проследяване на AIS плавателни съдове в реално време през Ормузкия проток, най-критичната петролна точка на задръстване в света. Следи броя на танкери, събития на прекъсване и седмични промени в потоците. Приблизително 20% от световните доставки на петрол преминават тук ежедневно.", @@ -3145,7 +3151,7 @@ "documentTitle": "World Monitor — Табло за управление на глобална разузнавателна информация в реално време", "metaDescription": "Платформа за глобална разузнавателна информация в реално време. Представена в WIRED. Използвана от 2M+ хора в 190 страни. Конфликти, пазари, военни дела, OSINT в един изглед.", "offlineTitle": "Вие сте офлайн", - "offlineMessage": "World Monitor изисква интернет връзка за получаване на данни за разузнаване в реално време.", + "offlineMessage": "World Monitor изисква интернет връзка за данни за разузнаване в реално време.", "offlineRetry": "Повтори" }, "widgets": { diff --git a/vite.config.ts b/vite.config.ts index 3eef495f09..50a6aeb30c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -577,6 +577,11 @@ const RSS_PROXY_ALLOWED_DOMAINS = new Set([ 'abcnews.go.com', 'abcnews.com', 'www.corriere.it', 'www.rt.com', 'www.alarabiya.net', 'tuoitrenews.vn', 'www.yonhapnewstv.co.kr', 'www.chosun.com', 'rss.libsyn.com', 'feeds.megaphone.fm', 'rss.art19.com', 'idp.nature.com', + 'www.dnevnik.bg', + 'www.capital.bg', + 'www.24chasa.bg', + 'www.segabg.com', + 'bivol.bg', ]); function rssProxyPlugin(): Plugin {