Post by @fd0

@ivory@tapbots.social

Hey guys. Please take a look at LittleFedi.social. It’s new software by @stefano@bsd.cafe and Ivory doesn’t play nice yet. Consider me one of the users who would be very happy for this to happen.

#LittleFedi #Ivory

Replying to @jorijn@jorijn.com
Ivory by Tapbots :emoji_wink:
@ivory @tapbots.social

@jorijn @stefano Unfortunately we can only support Mastodon. For other ActivityPub services to work with Ivory, they need to be closer to how Mastodon works. There are many other ActivityPub services that work great in Ivory because of this. We just don’t have the time or resources to make Ivory work for other services. It has to be the other way around.

👍 1
Replying to @ivory@tapbots.social
Stefano Marinelli
@stefano @bsd.cafe

@ivory @jorijn I had tested it with Ivory and it was working correctly, so it's probably one of the recent changes' fault. I'll ask the devs to re-check it.

Replying to @stefano@bsd.cafe

@stefano@bsd.cafe @ivory@tapbots.social it works OK-ish, but doesn’t reload new timeline data and doesn’t load notifications. It seems to happen only when it already has state. Uninstall and fetching data after logging in works fine.

Replying to @jorijn@jorijn.com

@jorijn@jorijn.com @stefano@bsd.cafe @ivory@tapbots.social
Until very recently I have been able to use #Ivory quite well.
I concur with @stefano that something changed on the side of #Ivory app

Replying to @fd0
Stefano Marinelli
@stefano @bsd.cafe

@fd0 @jorijn @ivory @stefano@littleone.littlefedi.social I cannot exclude some changes in littlefedi have broken something there. There have been a couple of changes in the mastoapi support, but at least in theory, nothing that should affect this. We will check!

Replying to @stefano@bsd.cafe

@stefano@bsd.cafe @fd0@littleone.littlefedi.social @ivory@tapbots.social

Spent a bit of time debugging with Claude based on the source code and webserver logs, and found a few reasons. See below. Claude made a few patches and Ivory works as intended now. Hope this helps, somehow :)

Let me know if you want to see the code, but since its AI; YMMV.

  • Home timeline doesn't refresh.

    • Problem: the timeline cache keeps min_id/since_id results for up to timeline_ttl and doesn't clear them when new posts arrive. Ivory keeps asking for posts newer than its newest one and gets the same empty list for up to two hours.
    • Solution: don't cache min_id/since_id windows, or invalidate them whenever the viewer's home feed changes. Turning off [cache] fixes it as a workaround.
  • Notifications don't refresh.

    • Problem: /api/v1/notifications and /api/v2/notifications send no Link header. Ivory builds its refresh request from rel="prev", so pull-to-refresh never reaches the server.
    • Solution: send Link headers with absolute URLs, as the timeline endpoints already do. Patch attached.
  • Read position isn't saved (PostgreSQL).

    • Problem: the marker upsert refers to version without naming the table, which PostgreSQL rejects as ambiguous. Every POST /api/v1/markers returns 500, so Ivory can't sync unread state and notifications are never marked read.
    • Solution: write markers.version in the update.
  • Push notifications can't be expanded.

    • Problem: the push payload has no access_token, and notification_id is the internal UUID rather than the API ID. Ivory's notification extension then fetches the full notification and gets 401.
    • Solution: send the numeric API ID, and provide a way for the client to authenticate that fetch.