Exclusive Lists

From neuromatch
Exclusive Lists
Description Accounts on lists marked as exclusive do not appear on the home feed
Part Of Mastodon/Hacking
Contributors Lina, Jonny
Has Git Repository https://github.com/NeuromatchAcademy/mastodon
Completion Status Completed
Active Status Completed
Approval Status Provisional


It is useful to be able to have separable feeds, and to be able to follow some people but for one reason or another not have them in your home feed. This hack lets you follow people and only show their posts within specific "exclusive" lists.


This could be the case when, eg.

  • You follow someone in a specific context --- eg. a reading group, a journalist that covers a specific topic area, Monsterdon etc.
  • You follow someone who posts a lot! which is normal! but maybe they go on the list of high frequency posters.
  • You want to keep your home feed very focused to your close friends, and for everyone else to have their own feeds



On any list, open the "options" panel and enable the "hide these posts from home" option:

Exclusive lists.png


Use any of the standard create/update commands using exclusive as a boolean parameter.

See the Lists API documentation

Eg. to make an exclusive list:

POST https://mastodon.instance/api/v1/lists?title=MyList&exclusive=true


sneakers-the-rat#testing23-03-18 21:48:09

@lina gathering some stuff here: Mastodon/Tests Mastodon/Tech WG Exclusive Lists Ruby Spec Ruby spec for home feed: https://github.com/NeuromatchAcademy/mastodon/blob/main/spec/models/home_feed_spec.rb for public feed: https://github.com/NeuromatchAcademy/mastodon/blob/main/spec/models/public_feed_spec.rb that gives more examples on how feeds are supposed to be filtered tag feed: https://github.com/NeuromatchAcademy/mastodon/blob/main/spec/models/tag_feed_spec.rb in case we might want to add exclusive tag feeds (I personally do, self interested bc monsterdon lol) account filter (looks like for blocks): https://github.com/NeuromatchAcademy/mastodon/blob/main/spec/models/account_statuses_filter_spec.rb

and so on

the question to me is basically how these things are structured: you have some fabricator steps that set up the conditions for the test, but then you also have these `context` statements that looks like plain English strings to me? like how do those and the `describe` fields map onto the code? like is their testing system so good that you can really just write `it {is_expected.to be_filtered }` and that just works???? or how do you define all those.

Also u mentioned they are using a separate JavaScript testing framework? Jest ? that looks like it's configured here: https://github.com/NeuromatchAcademy/mastodon/blob/main/jest.config.js and doesn't cover the glitch flavours, just the mastodon folder. it seems like that is for testing the appearance and function of the JS? not sure how it interacts with the ruby tests.

So for the sake of us learning to write tests here, I don't think we need to aim for full adversarial coverage of the feature, but just get the basics: "when an account is in an exclusive list, their posts dont show up on the home feed." judging from the other tests, it looks like we'll have to also test for boosts from them, but since it's not like a block we don't have to test a bunch of edge cases like interactions.

sneakers-the-rat#techwg-ops23-05-20 05:46:32

Tech WG/Ops Diary#23-05-19: We are attempting to Upgrade Mastodon to 4.1.2 and also merge in Exclusive Lists, wish us luck.

We begin with what is probably the worst way to do it based on the conversation in <#1049184335514828860> , specifically:

  • main -> dev,
  • upstream -> dev,
  • dev -> pr,
  • pr -> dev,
  • dev -> main


sneakers-the-rat#techwg-ops23-05-23 01:35:39

Tech WG/Ops Diary#23-05-22: What up it's me and we're about to deploy Exclusive Lists and update to 4.1.2. starting by making a linode backup and then following instructions on https://github.com/mastodon/mastodon/releases/tag/v4.1.2