Skip to content

fix(columns): Reddit RSS, GitHub stars/discussions token guards, remove Bluesky + Bing#102

Merged
aaronjmars merged 3 commits into
mainfrom
fix/column-integrations
Jul 10, 2026
Merged

fix(columns): Reddit RSS, GitHub stars/discussions token guards, remove Bluesky + Bing#102
aaronjmars merged 3 commits into
mainfrom
fix/column-integrations

Conversation

@aaronjmars

Copy link
Copy Markdown
Collaborator

Fixes and cleanup from running all columns locally (follow-up to the hosting work).

Fixes

  • Reddit — the JSON API (/r/…/….json, /search.json) now returns 403 + an anti-bot page to unauthenticated clients from all IPs. Switched to Reddit's keyless Atom RSS feed (/.rss). Trade-off: no score/comment counts (→ 0) and no cursor (single ~25-item page). Fixes both the reddit column and searchReddit (feeds github-backlinks).
  • github-stars — GitHub now auth-gates /stargazers (401 keyless; the plain repo endpoint still works). Now throws a clear "requires a token" instead of a raw 401, uses GraphQL when a token is set, and drops the now-dead REST helpers.
  • github-discussions — GraphQL gives unauthenticated requests ~0 quota (403) and has no REST surface, so it now fails fast with a clear "requires a token" message.

Removals

  • Bluesky — search mode 403s (public AppView needs auth); removed the column + integration.
  • Bing — News RSS 307-redirects ~half of server-side requests to a consent interstitial regardless of headers, and overlaps the reliable Google News column; removed the column. github-backlinks keeps Bing as one of four fan-out sources (degrades gracefully).

Column count 49 → 47.

Verify

  • 272 vitest tests pass, next build clean (TypeScript passes), registry parity at 47/47/47.
  • All 47 remaining columns exercised locally via /api/columns/[type]; the github guards confirmed to return the clear token message.

Note for the deployed instance

GITHUB_TOKEN is unset on Railway, so github-stars / github-discussions will show the new "requires a token" message until it's set (railway variables --service minitor --set 'GITHUB_TOKEN=…').

…N API

Reddit now returns 403 + an anti-bot HTML page to unauthenticated JSON API
requests (/r/<sub>/<sort>.json, /search.json) from all IPs — residential and
datacenter alike. Its Atom RSS feeds (/.rss) are still served keyless to a
descriptive User-Agent, so read those instead.

Trade-off: the feed has no score / comment counts (degrade to 0, rendered
with a ?? 0 fallback) and no `after` cursor (single ~25-item page). Fixes both
fetchSubredditPage (reddit column) and searchReddit (feeds github-backlinks).
GitHub now auth-gates the endpoints these two columns depend on:

- REST /repos/<repo>/stargazers returns 401 for unauthenticated requests (the
  plain /repos/<repo> endpoint still works keyless). There is no keyless way to
  list recent stargazers, so fetchStargazers throws a clear "requires a token"
  message instead of a raw 401, and uses GraphQL when a token is present.
  Removes the now-dead REST stargazer helpers (fetchStargazersREST,
  ghFetchStargazersPageREST, parseLastPage, GHStargazerEdgeREST).

- The GraphQL API gives unauthenticated requests ~0 quota (immediate 403), and
  Discussions have no REST surface, so fetchDiscussions now fails fast with a
  clear message (the old "never fails without a token" comment was false).

Updates both plugins' rateLimitHints and the GITHUB_TOKEN env description to
list search / stars / discussions as token-required.
Both are unreliable to fetch keyless:

- Bluesky search mode 403s (the public AppView's searchPosts needs auth).
- Bing News RSS 307-redirects ~half of server-side requests to a consent
  interstitial regardless of headers (undici follows the redirect → HTML →
  0 items); it also overlaps the reliable Google News column.

Removes both plugins plus Bluesky's integration, and drops them from the
manifest, client + server registries, and docs (49 → 47 columns).
github-backlinks keeps Bing News as one of its four fan-out backlink sources,
where it degrades gracefully when Bing fails.
@aaronjmars aaronjmars merged commit 9bbab2d into main Jul 10, 2026
2 checks passed
@aaronjmars aaronjmars deleted the fix/column-integrations branch July 10, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant