Skip to content

feat(feeds): add Russian independent sources + fix server parity for ru locale#3886

Open
zionappp-ui wants to merge 1 commit into
koala73:mainfrom
zionappp-ui:feat/ru-independent-sources
Open

feat(feeds): add Russian independent sources + fix server parity for ru locale#3886
zionappp-ui wants to merge 1 commit into
koala73:mainfrom
zionappp-ui:feat/ru-independent-sources

Conversation

@zionappp-ui
Copy link
Copy Markdown
Contributor

Summary

Fixes a server/client parity gap and adds one new independent Russian-language source.

The three existing ru-locale feeds (BBC Russian, Meduza, Novaya Gazeta Europe) were wired in src/config/feeds.ts but had no entries in server/worldmonitor/news/v1/_feeds.ts, so the server-side digest never served them. This PR fixes that gap and adds The Insider as a well-known exile investigative outlet.

Curation note

This block adds independent/exile Russian journalism only. State outlets (RT, TASS, Sputnik, RIA Novosti) already exist under their own separate entries and are not part of this lang:'ru' block.

New feeds

Name URL Items Note
BBC Russian https://feeds.bbci.co.uk/russian/rss.xml ~30 already allowlisted
Meduza https://meduza.io/rss/all 30 already allowlisted
Novaya Gazeta Europe https://novayagazeta.eu/feed/rss ~1 already allowlisted; low-volume but authoritative
The Insider https://theins.ru/feed 50 new domain
Moscow Times https://www.themoscowtimes.com/rss/news 50 already allowlisted

All feed URLs probed and verified.

Files changed

  • server/worldmonitor/news/v1/_feeds.ts — new RU block in europe array (fixes parity with client)
  • src/config/feeds.ts — add The Insider feed entry + lang:'ru' on Moscow Times + SOURCE_TYPES entries
  • shared/rss-allowed-domains.json — add theins.ru
  • scripts/shared/rss-allowed-domains.json — byte-identical copy
  • api/_rss-allowed-domains.js — edge-compatible copy
  • vite.config.ts — proxy allowlist
  • shared/source-tiers.json — The Insider tier 2, Moscow Times tier 2
  • scripts/shared/source-tiers.json — byte-identical copy

All 4 allowlist files and both source-tiers files verified with diff (zero delta).

🤖 Generated with Claude Code

@vercel
Copy link
Copy Markdown

vercel Bot commented May 24, 2026

@zionappp-ui is attempting to deploy a commit to the World Monitor Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added the trust:caution Brin: contributor trust score caution label May 24, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 24, 2026

Greptile Summary

This PR fixes a server/client feed parity gap for Russian-locale sources and adds The Insider as a new independent Russian-language outlet. Allowlist, tier, and proxy config files are updated consistently across all four copies.

  • New RU block in server/worldmonitor/news/v1/_feeds.ts: BBC Russian, Meduza, Novaya Gazeta Europe, The Insider, and Moscow Times are added to the europe array, closing the gap where these feeds were defined client-side but never served server-side.
  • src/config/feeds.ts: The Insider is added with lang:'ru', and SOURCE_TYPES entries for The Insider and Moscow Times are registered as 'mainstream'. Moscow Times also receives lang:'ru', but this is incorrect — it is an English-language publication, and the tag causes it to be hidden from non-Russian-language views on both client and server.

Confidence Score: 3/5

The parity fix and new The Insider feed are clean, but tagging Moscow Times as lang:'ru' breaks its visibility for all English-language users and digests.

Moscow Times is an English-language publication that has always been visible to all users. Adding lang:'ru' causes both the client filter (rss.ts:360) and the server digest filter (list-feed-digest.ts:998) to exclude it whenever the active language is not Russian — effectively removing a previously available source from the default English view. The fix needed is to drop the lang tag from Moscow Times in both files.

src/config/feeds.ts and server/worldmonitor/news/v1/_feeds.ts — specifically the lang:'ru' tag on the Moscow Times entry in each file.

Important Files Changed

Filename Overview
server/worldmonitor/news/v1/_feeds.ts Adds RU block to europe feeds (BBC Russian, Meduza, Novaya Gazeta Europe, The Insider, Moscow Times). Moscow Times is tagged lang:'ru' but publishes in English, causing it to be filtered out for non-Russian-language digest requests.
src/config/feeds.ts Adds The Insider, adds lang:'ru' to Moscow Times, and registers SOURCE_TYPES entries. Moscow Times lang:'ru' tag incorrectly hides it from English-language users.
shared/rss-allowed-domains.json Adds theins.ru to the allowlist; consistent with scripts/shared/ and api/ copies.
shared/source-tiers.json Adds tier-2 entries for The Insider and Moscow Times; consistent with scripts/shared/ copy.
vite.config.ts Adds theins.ru to the RSS proxy allowlist for local dev; change is minimal and correct.
api/_rss-allowed-domains.js Adds theins.ru to the edge-compatible allowlist copy; consistent with other copies.
scripts/shared/rss-allowed-domains.json Adds theins.ru; byte-identical to shared/rss-allowed-domains.json as stated in the PR description.
scripts/shared/source-tiers.json Adds tier-2 entries for The Insider and Moscow Times; byte-identical to shared/source-tiers.json.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Client request / digest call] --> B{lang param}
    B -->|lang = 'ru'| C[Include feeds with lang:'ru' OR no lang]
    B -->|lang = 'en' / default| D[Include feeds with NO lang tag only]
    C --> E[BBC Russian ✓]
    C --> F[Meduza ✓]
    C --> G[Novaya Gazeta Europe ✓]
    C --> H[The Insider ✓]
    C --> I[Moscow Times ✓ shown]
    D --> J[TASS, RT, Kyiv Independent ✓]
    D --> K[Moscow Times ✗ hidden — was visible before PR]
    style K fill:#f99,stroke:#c00
    style I fill:#9f9,stroke:#090
Loading

Reviews (1): Last reviewed commit: "feat(feeds): add Russian independent sou..." | Re-trigger Greptile

Comment thread src/config/feeds.ts Outdated
{ name: 'RT Russia', url: rss('https://www.rt.com/rss/russia/') },
{ name: 'Kyiv Independent', url: rss('https://news.google.com/rss/search?q=site:kyivindependent.com+when:3d&hl=en-US&gl=US&ceid=US:en') },
{ name: 'Moscow Times', url: rss('https://www.themoscowtimes.com/rss/news') },
{ name: 'Moscow Times', url: rss('https://www.themoscowtimes.com/rss/news'), lang: 'ru' },
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Moscow Times incorrectly tagged as Russian-language content

The Moscow Times (themoscowtimes.com) is an English-language publication. Both the client feed filter (feeds.filter(feed => !feed.lang || feed.lang === currentLang) in src/services/rss.ts:360) and the server digest filter (list-feed-digest.ts:998) exclude feeds whose lang does not match the active language. Before this PR, Moscow Times had no lang tag and appeared for all users. After this PR, it is silently hidden for the default English interface — anyone not explicitly running lang=ru will no longer see it in the Europe section. The server side additionally instructs the LLM to output summaries in Russian when lang='ru' is active (_shared.ts:76), so English Moscow Times articles would appear inside a Russian-language digest.

Comment thread server/worldmonitor/news/v1/_feeds.ts Outdated
{ name: 'Meduza', url: 'https://meduza.io/rss/all', lang: 'ru' },
{ name: 'Novaya Gazeta Europe', url: 'https://novayagazeta.eu/feed/rss', lang: 'ru' },
{ name: 'The Insider', url: 'https://theins.ru/feed', lang: 'ru' },
{ name: 'Moscow Times', url: 'https://www.themoscowtimes.com/rss/news', lang: 'ru' },
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Moscow Times incorrectly tagged as Russian-language on the server side

This is the server-side counterpart of the same issue in src/config/feeds.ts. The Moscow Times publishes in English; tagging it lang: 'ru' causes list-feed-digest.ts:998 to exclude it from every digest request that is not explicitly lang=ru, breaking existing server-side coverage for English-language views of the Europe topic.

@zionappp-ui zionappp-ui force-pushed the feat/ru-independent-sources branch from 2a448c1 to 6755d40 Compare May 24, 2026 14:37
@zionappp-ui
Copy link
Copy Markdown
Contributor Author

Fixed: removed lang: 'ru' from Moscow Times in both src/config/feeds.ts and server/_feeds.ts (commit 6755d40). Moscow Times is English-language — the tag was incorrect and would have hidden it from all non-Russian views. The English-only tag-free entry is restored.

…ocale

Fixes a server/client parity gap: the three existing ru-locale feeds
(BBC Russian, Meduza, Novaya Gazeta Europe) were wired in src/config/feeds.ts
but had no entries in server/worldmonitor/news/v1/_feeds.ts, so the
server-side digest never served them.

Changes:
- server/_feeds.ts: add RU block (BBC Russian, Meduza, Novaya Gazeta Europe,
  The Insider, Moscow Times) with lang:'ru' — mirrors existing client feeds
- src/config/feeds.ts: add The Insider (theins.ru, 50 items verified),
  add lang:'ru' to Moscow Times, add SOURCE_TYPES entries
- theins.ru added to all 4 allowlist mirrors (parity verified with diff)
- shared/source-tiers.json + scripts mirror: The Insider tier 2, Moscow Times tier 2

Curation note: this block adds independent/exile Russian journalism only.
State outlets (RT, TASS, Sputnik, RIA Novosti) are already present under
their own entries and are NOT part of this ru-lang block.

All feed URLs probed:
- feeds.bbci.co.uk/russian/rss.xml   → 200, ~30 items
- meduza.io/rss/all                  → 200, 30 items
- novayagazeta.eu/feed/rss           → 200, 1 item (low-volume; kept for completeness)
- theins.ru/feed                     → 200, 50 items
- www.themoscowtimes.com/rss/news    → 200, 50 items
@zionappp-ui zionappp-ui force-pushed the feat/ru-independent-sources branch from 6755d40 to 871e481 Compare May 24, 2026 16:35
@zionappp-ui
Copy link
Copy Markdown
Contributor Author

Fixed: The Insider reclassified to 'intel' in SOURCE_TYPES — it is an investigative/disinformation-focused outlet, not mainstream news.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trust:caution Brin: contributor trust score caution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant