feat(feeds): add Russian independent sources + fix server parity for ru locale#3886
feat(feeds): add Russian independent sources + fix server parity for ru locale#3886zionappp-ui wants to merge 1 commit into
Conversation
|
@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. |
Greptile SummaryThis 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.
Confidence Score: 3/5The 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
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
Reviews (1): Last reviewed commit: "feat(feeds): add Russian independent sou..." | Re-trigger Greptile |
| { 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' }, |
There was a problem hiding this comment.
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.
| { 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' }, |
There was a problem hiding this comment.
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.
2a448c1 to
6755d40
Compare
|
Fixed: removed |
…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
6755d40 to
871e481
Compare
|
Fixed: |
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 insrc/config/feeds.tsbut had no entries inserver/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
All feed URLs probed and verified.
Files changed
server/worldmonitor/news/v1/_feeds.ts— new RU block ineuropearray (fixes parity with client)src/config/feeds.ts— add The Insider feed entry +lang:'ru'on Moscow Times + SOURCE_TYPES entriesshared/rss-allowed-domains.json— addtheins.ruscripts/shared/rss-allowed-domains.json— byte-identical copyapi/_rss-allowed-domains.js— edge-compatible copyvite.config.ts— proxy allowlistshared/source-tiers.json— The Insider tier 2, Moscow Times tier 2scripts/shared/source-tiers.json— byte-identical copyAll 4 allowlist files and both source-tiers files verified with
diff(zero delta).🤖 Generated with Claude Code