4cuck
95cc2df375
Route GraphQL through session-pinned SOCKS5 and serve repeats from cache.
...
Search and profiles were paying a new tunnel plus extra X hops on every hit; keep-alive, first-page SWR, and the example config document a reverse-proxied instance without committing live exits.
2026-09-02 19:59:32 +00:00
4cuck
b41745925c
Retry empty GraphQL 404s instead of calling the search not found.
...
X often 404s SearchTimeline with an empty body across several sessions in a row; those are blips, so we walk more sessions and say try again if it still fails.
2026-08-31 14:40:43 +00:00
4cuck
92dcab30ca
Stop treating locked cookie sessions as suspended profiles.
...
X error 326 and GraphQL 404s were shown as the viewed account being gone; those are session/WAF blips, so we sideline the bad session and retry once.
2026-08-31 14:32:13 +00:00
4cuck
83a5b64a8c
prefs: let the theme cookie be read from script
...
(cherry picked from commit 715ac11748e12faef2c4376b85acf0ed61354b29)
2026-08-31 14:23:47 +00:00
4cuck
827833cf79
views: show country and translation on quoted posts
...
(cherry picked from commit 458358c525b6770ecd6cc983d6c9e26958b3245f)
2026-08-31 14:23:47 +00:00
4cuck
fabccf5039
views: say what a suspended or missing account means
...
(cherry picked from commit 2ab687562656e387789c1be213189a6abdfae4be)
2026-08-31 14:23:22 +00:00
4cuck
1e8707fa47
Turn off X's default NSFW filters on new cookie sessions.
...
New accounts hide sensitive media and strip it from search, which leaks into teapawt results; each cookie session now POSTs those settings off once at startup.
2026-08-31 14:20:35 +00:00
4cuck
db77470c5b
Rebrand the public identity as teapawt with the cup-and-paw logo.
2026-08-30 02:31:22 +00:00
4cuck
a427103cc2
Restore the icon navbar and drop the hamburger menu.
...
Icons stay in the top bar with hover titles so you do not need an extra click.
2026-08-30 02:10:00 +00:00
vps and Cursor
a13e8ce0d3
Merge amaanq/teapot: about-account, mobile nav, and landing refresh.
...
Keep nitter.cf branding, sister-site links, search dedupe, and the safer X error mapping.
Co-authored-by: Cursor <[email protected] >
2026-08-30 01:54:25 +00:00
vps and Cursor
904ff9bfc2
Add nitter.cf instance branding, search dedupe, and safer API errors.
...
Keep keyword search from repeating the same viral tweet on every retweet, encode pagination cursors, and treat X 404s as not-found instead of 500s. Sessions, live config, and logs stay untracked.
Co-authored-by: Cursor <[email protected] >
2026-08-30 01:54:05 +00:00
4cuck
95e375759f
views: fill the photo rail grid evenly
2026-08-29 21:43:43 -04:00
4cuck
e17ee3ce23
views: mark thread position on timeline items
2026-08-29 21:43:43 -04:00
4cuck
5834c2a5ce
views: add a mobile navigation menu
2026-08-29 21:43:43 -04:00
4cuck
9afb6bc6be
views: abbreviate profile stat counts
2026-08-29 21:43:43 -04:00
4cuck
5f5055bfd4
views: add the sticky thread context bar
2026-08-29 21:43:43 -04:00
4cuck
02939eda6b
views: rework the landing page and search results
2026-08-29 21:43:43 -04:00
4cuck
eb4bc4dc76
views: group the settings form into sections
2026-08-29 21:43:42 -04:00
4cuck
cfde3da668
views: show X's about-account panel
2026-08-29 21:43:42 -04:00
4cuck
c6d002b92e
routes: resolve about-account data without fanning out
2026-08-29 21:43:42 -04:00
4cuck
2a8cce1eed
config: add the X-Posed community cache toggle
2026-08-29 21:43:42 -04:00
4cuck
78b57d7534
api: read X's about-account record
2026-08-29 21:43:42 -04:00
4cuck
56de5c7835
types: carry X's about-account fields on User
2026-08-29 21:43:42 -04:00
4cuck
f0258f8f5d
pages: show the crate version on the about page
2026-08-29 06:05:31 -04:00
4cuck
6943e19733
config: take error messages as a list and rotate them
2026-08-29 05:40:46 -04:00
4cuck
02ba12c9a9
api: account every authenticated call against its session
2026-08-29 04:15:22 -04:00
4cuck
22bfc26734
api: refuse locally when every session is out of budget
2026-08-29 04:15:22 -04:00
4cuck
b45a46c47e
api: do not retry a 429 onto an exhausted session
2026-08-29 04:15:22 -04:00
4cuck
e0950678b9
api: keep rate-limit state across restarts
2026-08-29 04:15:20 -04:00
4cuck
cb0019f7c9
api: refresh the stale SearchTimeline query ID
2026-08-29 03:36:00 -04:00
4cuck
76ee933467
api: keep a recorded rate limit over the code 88 fallback
2026-08-29 03:12:57 -04:00
4cuck
3d9307a5b5
api: split graphql header construction out of the request
2026-08-29 03:12:57 -04:00
4cuck
2a6b7d27b3
routes: move definitions out of the module roots
2026-08-29 03:12:57 -04:00
4cuck
7e6aa35ff2
routes: report exhaustion instead of an internal error
2026-08-29 03:12:56 -04:00
4cuck
419476082b
api: bill upstream calls to the requesting client
2026-08-29 03:12:54 -04:00
4cuck
133c8b8591
api: retry and sideline a session whose credentials are refused
2026-08-29 02:42:13 -04:00
4cuck
5de552e386
api: scope a 429 to the endpoint that returned it
2026-08-29 02:42:13 -04:00
4cuck
13fa639f8c
api: restore transaction ID generation
2026-08-29 02:42:13 -04:00
4cuck
bbf2ab3442
views: improve embeds, feeds, and privacy-safe rendering
2026-07-15 21:06:50 -04:00
4cuck
6e3418b10d
runtime: harden API sessions and route execution
2026-07-15 21:06:47 -04:00
4cuck
5695b439c9
discord: improve embeds
2026-07-15 16:26:29 -04:00
4cuck
b75d379642
embeds: match status metadata shape
2026-06-11 22:32:47 -04:00
4cuck
f8d391aed3
embeds: fix quoted media
2026-06-11 18:58:41 -04:00
4cuck
a7887b29b6
security: harden media and preference boundaries
...
Default signing keys made media proxy URLs forgeable, and unauthenticated
media fetches let arbitrary upstream hosts consume server-side network
access. This commit makes those boundaries explicit, limits buffered upstream
bodies, and keeps externally sourced text escaped at raw rendering sinks.
2026-06-11 18:58:26 -04:00
4cuck
740584d048
cache: bound in-memory cache with size cap and expiry-ordered eviction
2026-05-30 22:28:02 -04:00
4cuck
1eb036d196
ui: redesign from scratch
2026-04-17 13:26:48 -04:00
4cuck
7321ee27bf
translate: add Kagi Translate as user-configurable alternative
...
Users can set their Kagi session token in preferences to use Kagi
Translate instead of Twitter's Strato API. The /translate endpoint
reads the kagiToken cookie and routes accordingly, falling back to
Strato when no token is set.
2026-03-25 17:21:47 -04:00
4cuck
8c59923835
all: cargo fmt
2026-03-20 03:04:00 -04:00
4cuck
29cb6e9010
translate: add click-to-translate for non-English tweets via htmx
...
Shows a 'Translate post' button on tweets where legacy.lang is not
English. Clicking it fires an htmx GET to /translate/{id} which calls
Twitter's Strato translation API (Google Translate backend) and swaps
the button with the translated text and source language header. Adds
lang and is_translatable fields to the API schema, a Translation
struct, and the translate_tweet client method with cookie-session auth.
2026-03-20 03:04:00 -04:00
4cuck
de3c43b64d
htmx: add htmx support
2026-03-20 01:33:40 -04:00