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.
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]>
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.
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.
Drops hls.js, the HLS glue JS, M3U8 manifest rewriting, VMAP resolution,
and the proxyVideos/hlsPlayback preferences. Videos now render as native
<video> elements with the highest-resolution MP4 variant. Promo card videos
that only provide HLS/VMAP streams show as unavailable since those are ads.