Skip to content

feat(feeds): add Austrian (AT) outlets to de locale + fix German server parity#3890

Open
zionappp-ui wants to merge 2 commits into
koala73:mainfrom
zionappp-ui:feat/de-at-sources
Open

feat(feeds): add Austrian (AT) outlets to de locale + fix German server parity#3890
zionappp-ui wants to merge 2 commits into
koala73:mainfrom
zionappp-ui:feat/de-at-sources

Conversation

@zionappp-ui
Copy link
Copy Markdown
Contributor

Summary

Extends the existing de (German) locale with 4 Austrian news outlets, and fixes pre-existing server-parity and vite-proxy gaps for the German block.

Austrian feeds added (all verified, ≥20 items)

Outlet Domain Type Tier Items
ORF rss.orf.at Public broadcaster (Austrian BBC) 1 23
Der Standard www.derstandard.at Independent broadsheet (liberal) 2 157
Die Presse www.diepresse.com Independent broadsheet (conservative) 2 65
Kurier kurier.at Mainstream daily 2 20

Note: APA (Austrian wire) was probed but returns 0 items on its public RSS endpoint.

Pre-existing German gaps fixed

These were in src/config/feeds.ts but not in the server or vite proxy:

  • server/_feeds.ts: Bild, Der Spiegel, Die Zeit were absent from the server digest mirror
  • vite.config.ts: www.tagesschau.de, www.spiegel.de, newsfeed.zeit.de, www.bild.de missing from dev-proxy allowlist
  • source-tiers.json: Bild was missing entirely (added at tier 3)

Files changed

  • src/config/feeds.ts — SOURCE_TYPES + 4 AT feeds in europe array
  • server/worldmonitor/news/v1/_feeds.ts — 4 AT feeds + 3 missing DE feeds
  • shared/rss-allowed-domains.json + scripts/shared/ (byte-identical) — 4 new AT domains
  • api/_rss-allowed-domains.js + vite.config.ts — all 4 mirrors updated (AT + missing DE)
  • shared/source-tiers.json + scripts/shared/ (byte-identical) — ORF/Standard/Presse/Kurier + Bild

Test plan

  • curl -s https://rss.orf.at/news.xml | python3 -c "import sys; print(sys.stdin.read().count('</item>'))" → ≥20 (RSS 1.0 format)
  • curl -s https://www.derstandard.at/rss | grep -c '<item>' → ≥20
  • German locale users now see AT sources alongside DE sources
  • All 4 allowlist mirrors consistent
  • source-tiers parity: shared/ == scripts/shared/ byte-identical

🤖 Generated with Claude Code

…er parity

Austrian additions (all probed, ≥20 items):
- ORF (rss.orf.at) — public broadcaster, tier 1, RSS 1.0 format
- Der Standard (www.derstandard.at) — independent broadsheet, tier 2
- Die Presse (www.diepresse.com) — conservative broadsheet, tier 2
- Kurier (kurier.at) — mainstream daily, tier 2

Also fixes pre-existing German locale gaps uncovered by checker:
- Bild, Der Spiegel, Die Zeit were in feeds.ts but missing from
  server/worldmonitor/news/v1/_feeds.ts (server parity gap)
- www.tagesschau.de, www.spiegel.de, newsfeed.zeit.de, www.bild.de
  were in shared/rss-allowed-domains.json but not in vite.config.ts
- Bild was missing from source-tiers.json (added at tier 3)

All 4 allowlist mirrors and both source-tiers copies now consistent.
@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 4 Austrian news outlets (ORF, Der Standard, Die Presse, Kurier) to the de locale and backfills server/proxy gaps for 3 pre-existing German feeds (Bild, Der Spiegel, Die Zeit) across all four allowlist mirrors. The changes are spread across 8 files that must stay in sync, and all JSON/TS mirrors are correctly updated — except for one critical omission.

  • api/_rss-allowed-domains.js: The new entry \"rss.orf.at\" is appended without a comma after the preceding \"idp.nature.com\", producing a JavaScript SyntaxError that will prevent the module from loading and break the Edge Function RSS allowlist.
  • server/worldmonitor/news/v1/_feeds.ts and vite.config.ts: Correctly backfill the 3 missing German feeds and add all 4 Austrian feeds with proper lang: 'de' tags.
  • shared/ and scripts/shared/ JSON files: Properly updated and byte-identical as required; source-tiers.json also adds the missing Bild tier 3 entry.

Confidence Score: 2/5

Not safe to merge until the missing comma in api/_rss-allowed-domains.js is fixed — it is a JavaScript syntax error that will crash the Edge Function on load.

The JS allowlist file has two adjacent string literals with no comma between them, making the module unparseable. Every RSS proxy request routed through the Vercel Edge Function would fail at import time, taking down the allowlist guard for all domains, not just the newly added Austrian ones.

api/_rss-allowed-domains.js needs the missing comma fix before this is safe to ship. All other files (shared/, scripts/shared/, server/, vite.config.ts) look correct.

Important Files Changed

Filename Overview
api/_rss-allowed-domains.js Missing comma after "idp.nature.com" is a JavaScript SyntaxError that will prevent the module from loading, breaking the Edge Function RSS allowlist entirely.
src/config/feeds.ts Adds 4 Austrian outlets to SOURCE_TYPES and FULL_FEEDS correctly; Bild is still absent from SOURCE_TYPES despite being wired everywhere else in this PR.
server/worldmonitor/news/v1/_feeds.ts Adds 3 missing German feeds (Bild, Der Spiegel, Die Zeit) and 4 Austrian feeds with correct lang tags; looks correct.
shared/rss-allowed-domains.json Adds 4 Austrian domains with proper comma syntax; byte-identical to scripts/shared/ counterpart.
shared/source-tiers.json Adds ORF (tier 1), Der Standard/Die Presse/Kurier (tier 2), and Bild (tier 3); tiers align with PR description.
vite.config.ts Fills in 4 previously missing German domains and adds 4 Austrian domains to the dev-proxy allowlist; no issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[RSS Feed Request] --> B{Domain in allowlist?}
    B -->|Check| C[api/_rss-allowed-domains.js]
    C -->|SyntaxError - module fails to load| D[❌ Edge Function crash]
    B -->|Dev proxy check| E[vite.config.ts RSS_PROXY_ALLOWED_DOMAINS]
    E --> F{Match?}
    F -->|Yes| G[Proxy to upstream RSS]
    F -->|No| H[Block request]

    subgraph New AT Domains
        I[rss.orf.at]
        J[www.derstandard.at]
        K[www.diepresse.com]
        L[kurier.at]
    end

    subgraph Allowlist Mirrors
        C
        E
        M[shared/rss-allowed-domains.json ✅]
        N[scripts/shared/rss-allowed-domains.json ✅]
    end

    I & J & K & L --> M
    I & J & K & L --> N
    I & J & K & L --> C
    I & J & K & L --> E
Loading

Reviews (1): Last reviewed commit: "feat(feeds): add Austrian (AT) outlets t..." | Re-trigger Greptile

Comment thread api/_rss-allowed-domains.js Outdated
Comment on lines +326 to +327
"idp.nature.com"
"rss.orf.at",
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.

P0 Missing comma after "idp.nature.com" causes a JavaScript SyntaxError when this module is imported. Since api/_rss-allowed-domains.js is the allowlist used by Vercel Edge Functions to validate RSS proxy requests, a parse failure means the module will fail to load — breaking the entire RSS allowlist guard at runtime.

Suggested change
"idp.nature.com"
"rss.orf.at",
"idp.nature.com",
"rss.orf.at",

Comment thread src/config/feeds.ts Outdated
// European Addition
'El País': 'mainstream', 'El Mundo': 'mainstream', 'BBC Mundo': 'mainstream',
'Tagesschau': 'mainstream', 'Der Spiegel': 'mainstream', 'Die Zeit': 'mainstream', 'DW News': 'mainstream',
'ORF': 'mainstream', 'Der Standard': 'mainstream', 'Die Presse': 'mainstream', 'Kurier': '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 Bild is present in FULL_FEEDS (and is now also in server/_feeds.ts and source-tiers.json after this PR), but it has no entry in SOURCE_TYPES. Every other outlet added or adjusted in this PR (ORF, Der Standard, Die Presse, Kurier) gets an explicit 'mainstream' classification here, so the gap in Bild's classification appears to have been overlooked when this PR completed its parity work.

- api/_rss-allowed-domains.js: add missing comma after "idp.nature.com"
- src/config/feeds.ts: add 'Bild': 'mainstream' to SOURCE_TYPES (was in
  FULL_FEEDS and source-tiers but missing classification)
@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