Skip to content

feat(feeds): add Czech (cs) locale with mainstream + investigative sources#3882

Open
zionappp-ui wants to merge 1 commit into
koala73:mainfrom
zionappp-ui:feat/cs-locale
Open

feat(feeds): add Czech (cs) locale with mainstream + investigative sources#3882
zionappp-ui wants to merge 1 commit into
koala73:mainfrom
zionappp-ui:feat/cs-locale

Conversation

@zionappp-ui
Copy link
Copy Markdown
Contributor

Summary

Adds 8 Czech-language news sources covering public broadcasting, quality journalism, business reporting, and investigative/fact-checking outlets.

New feeds

Name URL Type
iRozhlas https://www.irozhlas.cz/rss/irozhlas direct RSS
CT24 https://ct24.ceskatelevize.cz/rss direct RSS
Deník N https://denikn.cz/feed/ direct RSS
Hospodářské Noviny https://hn.cz/rss/cz direct RSS
Novinky.cz https://www.novinky.cz/rss2 direct RSS
Aktuálně.cz Google News (site:aktualne.cz) gnLocale
Hlídač Pipsu https://hlidacipes.org/feed/ direct RSS
Demagog.cz Google News (site:demagog.cz) gnLocale

All feed URLs probed and verified (≥1 item returned).

Files changed

  • src/config/feeds.ts — SOURCE_TYPES entries + feed array entries (lang: 'cs')
  • server/worldmonitor/news/v1/_feeds.ts — server-side mirror with gnLocale() for Google News feeds
  • shared/rss-allowed-domains.json — 8 new domains
  • 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 — 8 entries at tier 2
  • scripts/shared/source-tiers.json — byte-identical copy

All 4 allowlist files and both source-tiers files are kept in parity (verified with diff).

🤖 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 adds a Czech (cs) locale to the news feed system with 8 sources spanning public broadcasting (iRozhlas, CT24), quality press (Deník N, Hospodářské Noviny, Novinky.cz, Aktuálně), and investigative/fact-checking outlets (Hlídač Pipsu, Demagog.cz). All four allowlist files and both source-tier files are updated in parity, and the server-side mirror in _feeds.ts correctly uses gnLocale() for the two Google News feeds.

  • Five direct RSS feeds and two gnLocale() Google News feeds added to both the client config (src/config/feeds.ts) and the server mirror (server/worldmonitor/news/v1/_feeds.ts); the longer when:14d window for Demagog.cz is consistent with similar low-frequency sources already in the codebase.
  • All four allowlist files (shared/, scripts/shared/, api/, vite.config.ts) and both source-tier JSON files are kept in sync with the same 8 domains/names, matching the pattern established by the Hungarian and Greek feed additions.

Confidence Score: 4/5

Safe to merge; all allowlists are in parity and feed URLs are verified. The only concern is the source type classification for two investigative outlets.

The change is well-structured and follows the exact pattern set by the Hungarian and Greek feed additions. All four allowlist copies and both source-tier files are kept in sync, the server-side mirror uses the correct gnLocale() helper, and the longer when:14d window for Demagog.cz matches existing low-frequency sources. The one flag is that Hlídač Pipsu and Demagog.cz — explicitly described as investigative/fact-checking in the PR — are typed as 'mainstream' rather than 'intel', inconsistent with how equivalent investigative outlets (Bellingcat, Krebs Security) are classified elsewhere in the same file.

src/config/feeds.ts — SOURCE_TYPES classification for Hlídač Pipsu and Demagog.cz

Important Files Changed

Filename Overview
src/config/feeds.ts Adds 8 Czech-language feeds to SOURCE_TYPES and FULL_FEEDS; investigative outlets Hlídač Pipsu and Demagog.cz typed as 'mainstream' rather than 'intel'
server/worldmonitor/news/v1/_feeds.ts Server-side mirror of the 8 Czech feeds; correctly uses gnLocale() for the two Google News feeds; names and parameters match client config
shared/rss-allowed-domains.json 8 Czech domains added; in parity with scripts/shared/rss-allowed-domains.json and api/_rss-allowed-domains.js
scripts/shared/rss-allowed-domains.json Byte-identical mirror of shared/rss-allowed-domains.json with same 8 Czech domains appended
api/_rss-allowed-domains.js Edge-compatible JS mirror updated with the same 8 Czech domains; consistent with JSON source-of-truth files
shared/source-tiers.json 8 Czech source names added at tier 2; names exactly match the 'name' fields in both feeds config files
scripts/shared/source-tiers.json Byte-identical mirror of shared/source-tiers.json with the same 8 Czech tier-2 entries
vite.config.ts RSS_PROXY_ALLOWED_DOMAINS set extended with the same 8 Czech domains under a dedicated comment; in parity with JSON allowlists

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Czech Feed Request\nlang: cs] --> B{Feed Type?}
    B -->|Direct RSS| C[RSS Proxy\napi/rss-proxy.js]
    B -->|Google News| D[gnLocale URL\nnews.google.com]
    C --> E{Domain in\nAllowlist?}
    D --> E
    E -->|Yes| F[Fetch & Return XML]
    E -->|No| G[403 Blocked]
    F --> H[Source Tier Lookup\nsource-tiers.json]
    H -->|Tier 2| I[High-quality journalism\niRozhlas, CT24, Deník N\nHN, Novinky.cz, Aktuálně\nHlídač Pipsu, Demagog.cz]
    I --> J[SourceType Classification\nSOURCE_TYPES in feeds.ts]
    J -->|mainstream| K[iRozhlas, CT24, Deník N\nNovinky.cz, Aktuálně\nHlídač Pipsu, Demagog.cz]
    J -->|market| L[Hospodářské Noviny]
Loading

Reviews (1): Last reviewed commit: "feat(locale): add Czech (CS) news source..." | Re-trigger Greptile

Comment thread src/config/feeds.ts Outdated
// Czech (CS)
'iRozhlas': 'mainstream', 'CT24': 'mainstream', 'Deník N': 'mainstream',
'Hospodářské Noviny': 'market', 'Novinky.cz': 'mainstream', 'Aktuálně': 'mainstream',
'Hlídač Pipsu': 'mainstream', 'Demagog.cz': 'mainstream',
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.

P2 The PR description explicitly labels Hlídač Pipsu and Demagog.cz as "investigative/fact-checking outlets," yet both are typed as 'mainstream'. The existing pattern in this file uses 'intel' for investigative and watchdog sources (Bellingcat, Krebs Security, Foreign Policy, CrisisWatch, Atlantic Council). Mistyping them as 'mainstream' means they will be treated like broadcast news in any UI filter or ranking logic that branches on SourceType.

Suggested change
'Hlídač Pipsu': 'mainstream', 'Demagog.cz': 'mainstream',
'Hlídač Pipsu': 'intel', 'Demagog.cz': 'intel',

Adds 8 Czech news feeds to the Europe section:
- Public broadcaster: iRozhlas, CT24
- Independent: Deník N, Novinky.cz, Aktuálně
- Market: Hospodářské Noviny
- Investigative: Hlídač Pipsu, Demagog.cz (fact-check)

Direct RSS where available; Google News fallback for Aktuálně and
Demagog.cz. Adds domain allowlist entries to all 4 mirrors and
source-tier entries at tier 2. cs locale and offline.html entry
already exist in upstream.
@zionappp-ui
Copy link
Copy Markdown
Contributor Author

Fixed: Hlídač Pipsu and Demagog.cz reclassified from 'mainstream''intel' (commit 210f911). Good catch — they are investigative/watchdog outlets, not broadcast news.

@koala73 koala73 added the area: i18n Internationalization, translations label May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: i18n Internationalization, translations trust:caution Brin: contributor trust score caution

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants