Skip to content

Releases

v0.40.0-tor.5

Choose a tag to compare

@highda highda released this 06 Nov 14:48

Restores what Reddit stopped serving. Since about the start of November its onion JSON API refuses r/all, feeds sorted by new, post search and profile info, whatever the client (seven TLS fingerprints tested), so those pages failed with "Reddit blocked this request". They now come from Reddit's GraphQL API, on the same onion.

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.40.0-tor.5
  • ghcr.io/highda/redlib-tor-api-teddit:v0.40.0-tor.5

Fixed:

  • r/all, /new feeds (single and /r/a+b), post search and user profiles work again, on the web and in the API.
  • Anything else Reddit starts refusing falls back to GraphQL automatically, so the next block degrades instead of being an outage. Every page type also worked with GraphQL forced for all of them.

Added:

  • Muxed MP4s with sound, proxied through Reddit's media onion (/packaged, and packaged-media.redd.it in /media/).

Also includes v0.40.0-tor.4: "still connecting" answers 503 with Retry-After after a start.

Changed:

  • after cursors are opaque in the API: /r/a+b and search can return non-fullname cursors. Send them back URL-encoded (API_SURFACE.md).
  • On profiles served by GraphQL, link_karma is the total karma and comment_karma is 0; Reddit gives no split there.

Heads-up: Reddit has announced a move to a logged-in-only site, tested in select markets outside the US in Q4 2026 (redlib-org#609). This release stays anonymous; if that reaches the onion and GraphQL, a Reddit session will be needed.

The GraphQL feeds come from Downdoot by Kruno, adapted from polak14's implementation via baalajimaestro's fork. Credits in fork/README.md, "Picked fixes".

Tested: fork/scripts/check.sh, the live smoke test through Tor (52/52), 27 live responses through Stealth-Continued's parser, and Stealth-Continued 2.7.0 on an emulator: Home sorted by new with a second page, All, search on all tabs, a profile, and a video with sound from a GraphQL feed.

v0.40.0-tor.4

Choose a tag to compare

@highda highda released this 26 Oct 09:16

One fix for the first seconds after a start.

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.40.0-tor.4
  • ghcr.io/highda/redlib-tor-api-teddit:v0.40.0-tor.4

Fixed:

  • Until Redlib has its first Reddit token, requests now answer 503 "Redlib is still connecting to Reddit" with Retry-After: 30. In v0.40.0-tor.3 the message came wrapped as "Couldn't send request to Reddit", so clients got 502, /healthz/reddit counted each one as a network failure (a watchdog could see "failing" right after a restart) and each was retried once for nothing. Seen on production after the tor.3 upgrade.

Tested: cargo tests (99, offline subset) and a binary that cannot reach Tor: web pages and /raw answer 503 with Retry-After, and /healthz/reddit stays at "no Reddit requests yet".

v0.40.0-tor.3

Choose a tag to compare

@highda highda released this 26 Oct 05:16

Resilience and cost: fewer failures while Reddit blocks, fewer requests through Tor, better signals for monitoring. Ideas and code from other forks, credited in fork/README.md ("Picked fixes", "Ideas from other forks").

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.40.0-tor.3
  • ghcr.io/highda/redlib-tor-api-teddit:v0.40.0-tor.3

Fixed:

  • A token refresh dropped mid-way (client went away) blocked every later refresh until a restart.
  • Requests to Reddit had no timeouts (a stalled circuit hung them) and redirects no limit.
  • GraphQL rate limits became 502, expired tokens were retried with the same token, and a 401 without a JSON body never refreshed the token.
  • Deleted comments had no id; removals now say "[removed]".
  • sort=random on threads answered 502.

Added:

  • While Reddit blocks or rate-limits, pages and the API serve the last good copy (up to 12 h); web pages say so.
  • Redlib listens right away; until the first token arrives, requests answer 503 "still connecting".
  • /healthz/reddit: the last 20 requests to Reddit, 503 when most failed, for a watchdog.
  • Real status codes on web error pages and /raw (429, 502, 503) with Retry-After, passed on by the Teddit API.
  • Custom feeds /u/<user>/m/<feed> in the Teddit API.
  • "More replies" and "More comments" load in place on post pages.
  • REDLIB_GQL_POST_COMMENTS_HASH (if Reddit rotates the comments hash) and REDLIB_SOURCE_URL (footer link and update check, default this fork).

Changed:

  • Fewer round trips through Tor: post and comments fetched at once, one cache entry per thread, about pages cached 15 min, identical requests in flight share one, earlier token rollover over the onion, one retry after a quick send failure.
  • Spoofed Android app versions refreshed (2026.33-2026.42).
  • teddit-api logs paths without queries.

Use with Stealth-Continued 2.6.0 (2.5.0 works too).

Tested: fork/scripts/check.sh, the live smoke test through Tor (44/44; the two new checks, custom feed and sort=random, passed by hand), a simulated block (Tor stopped), the web UI in headless Chrome, and Stealth-Continued on an emulator.

v0.40.0-tor.2

Choose a tag to compare

@highda highda released this 24 Oct 21:38

Fixes comments in API clients such as Stealth, which showed no comments at all with v0.40.0-tor.1.

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.40.0-tor.2
  • ghcr.io/highda/redlib-tor-api-teddit:v0.40.0-tor.2

Fixed:

  • Comments in /raw and Teddit API threads have all of Reddit's fields again (link_id, permalink, award icons, …); Stealth rejected the whole thread without them.
  • "Load more": Reddit no longer serves /api/morechildren to anonymous clients, so "more" stubs carry a continuation cursor as their id, and post routes take cursor=<id> to continue a thread below the post or a comment. The next page of top-level comments is a trailing "more" stub, as in Reddit's JSON.
  • /r/a+b returned r/popular through the API: the + reached Reddit unencoded.

Added:

  • /users/search (Teddit API extension, target=reddit only): Reddit's user search.

Use with Stealth-Continued 2.5.0. Docs: fork/teddit-api/API_SURFACE.md (cursor, /users/search).

Tested: fork/scripts/check.sh, the live smoke test through Tor (43/43), and Stealth-Continued 2.5.0 on an emulator.

v0.40.0-tor.1

Choose a tag to compare

@highda highda released this 24 Oct 20:37

Restores the instance after Reddit's 2026-10-22 change, which blocked every request over the onion (v0.36.0-tor.1 shows "Failed to parse page JSON data" on every page). Also upstream Redlib 0.40.0 and fixes picked from other forks.

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.40.0-tor.1
  • ghcr.io/highda/redlib-tor-api-teddit:v0.40.0-tor.1

Reddit changes:

  • The onion API rejects paths ending in .json; they are now sent without the suffix (Reddit still returns JSON). Listings, search and user pages work again.
  • The comments JSON is blocked for anonymous clients. Post pages and /raw threads (and so Teddit API posts) now come from Reddit's GraphQL API on the same onion (upstream PR redlib-org#603). Pages hold up to 200 comments, with "More comments" and "More replies" links for the rest.
  • A missing subreddit is a 404 again instead of a 502.
  • Onion authentication gets 90 s to build a circuit (baalajimaestro).

Also:

  • Upstream Redlib 0.40.0.
  • Fixes from other forks and unmerged upstream PRs, authors kept: open-redirect fix, a failed token refresh no longer exits the process, /u/<name>/s/<id> share links, default post sort, RSS fixes, geo_filter paging, HLS pause, GitHub outage fallback, and more. Full list with sources: fork/README.md, "Picked fixes".

Tested: fork/scripts/check.sh, and the live smoke test through Tor (40/40, plain and fingerprint-gated).

Deploy: fork/deploy/compose.example.yaml. Docs: fork/README.md.

v0.36.0-tor.1

Choose a tag to compare

@highda highda released this 15 Oct 06:47

First full release of redlib-tor-api: upstream Redlib 0.36.0 (a4d36e9) + baalajimaestro's Tor commit + the /raw route, and the Teddit-compatible API container.

Images (linux/amd64; this release also moves latest):

  • ghcr.io/highda/redlib-tor-api:v0.36.0-tor.1
  • ghcr.io/highda/redlib-tor-api-teddit:v0.36.0-tor.1

Same code as v0.36.0-tor.1-rc.1, which ran in production since. Changes since the release candidate:

  • CI: the two images' digest artifacts no longer collide
  • The example Tor healthchecks also check Reddit's media onion (it can stop answering while the API onion works, and then every image times out)
  • Docs: the root README points to fork/README.md, which now lists the known limitations and mentions Stealth-Continued, an Android client made for this API

Deploy: fork/deploy/compose.example.yaml. Docs: fork/README.md.

v0.36.0-tor.1-rc.1

v0.36.0-tor.1-rc.1 Pre-release
Pre-release

Choose a tag to compare

@highda highda released this 15 Oct 06:47

First pre-release of redlib-tor-api: upstream Redlib 0.36.0 (a4d36e9) + baalajimaestro's Tor commit + /raw route, and the Teddit-compatible API container.

Images (linux/amd64):

  • ghcr.io/highda/redlib-tor-api:v0.36.0-tor.1-rc.1
  • ghcr.io/highda/redlib-tor-api-teddit:v0.36.0-tor.1-rc.1

Deploy: fork/deploy/compose.example.yaml. Docs: fork/README.md.