A few updates landed on PeakD in the past few days, mostly around things you should notice if you use the site regularly: Discovery Feeds, GIFs picker in the editor, wallet delegation details, and image loading.
A chunk of the work is in the image proxy, which is mostly invisible when everything goes well. That is exactly the point. Images should need less repeated work, GIFs should be handled more carefully, and the service should behave better when many uncached images are requested at the same time.

Affinity algorithm is now available in Discovery
The Discovery page has a new algorithm tab: Affinity. You can think of it as a "For You" feed for Hive, just without the creepy off-chain tracking part. Kudos to the @hdev team for implementing it and making it so easy to integrate on external frontends.

Affinity is powered by HAF FYP and uses your public Hive activity to rank recent posts. The ranking takes into account things like relevance to your recent activity, recency, engagement, author credibility, and communities you subscribe to or interact with.
If there is not enough activity yet to personalize the feed, it falls back to a more global ranking. So even if your account does not give it much to work with yet, the tab should not just sit there looking confused.
I also added a short explanation inside the Discovery info modal, plus a link to the HAF FYP post for anyone who wants the deeper version:
https://peakd.com/hive-139531/@hdev/hdev-team-haf-updates--waggle--haf-fyp-a-for-you-feed-for-hive
The GIF picker now uses Klipy
The editor GIF picker has moved from Tenor to Klipy, since Tenor is no longer available for third-party integrations.
From the user side, the flow is mostly the same: open the GIF picker, search, and click a result to add it to your post or snap. The picker now loads an initial default search, the results area scrolls better inside the panel, and the Klipy attribution adapts to light and dark mode.
DecentMemes is still available in the same picker when that option is enabled. So this is not a big redesign of the whole media flow, just the necessary provider change and a bit of cleanup while we were already in there.
Incoming HP delegations load better in the wallet
The wallet also got a fix for incoming HP delegations.
PeakD now uses the HafSQL (by @mahdiyari) delegation view for incoming HP delegations and reads the HP equivalent directly from that data. The practical result is simple: the incoming delegations table should load more reliably, sort the amounts correctly, and show them with a bit more precision.
Image loading should waste fewer resources
I also shipped a few changes to the Peak Image Proxy: https://gitlab.com/peakd/peak-image-proxy

This matters more while we are trying to keep costs under control. Image traffic is one of those areas where small inefficiencies quietly turn into real server cost: repeated downloads, duplicated resize jobs, and overloaded queues all add up. Servers do not care if the duplicated work was accidental. They bill anyway.
So the proxy now does a better job avoiding repeated work when several requests hit the same uncached image at once. It can also fall back earlier when it is already under pressure, instead of letting more image work pile up and slow everything down.
There is also a small but useful improvement for images that do not actually need resizing or format conversion: the proxy can serve them as-is. This is especially good for GIFs, where unnecessary processing can break the expected result.
The download path was tightened a bit too, so oversized images can be rejected earlier instead of wasting more bandwidth and processing time.
As usual, let me know how the new Affinity feed feels in real use. Recommendation feeds are hard to judge only from code, so the useful feedback is whether it shows posts you would actually want to open, and where it feels too repetitive, too random, or too narrow.










