As an editor on the client I want to be able to filter which Wikidata changes are shown in my watchlist and recent changes in order to filter out changes that are not relevant to me.
**Problem:**
* Editors are seeing changes from Wikidata that they do not consider relevant for their Wikipedia work. For example changes to sitelinks to other language editions.
* Editors are also seeing too many changes in their watchlist. This leads to them being more likely to disable showing all Wikidata changes and not seeing any of the changes that are relevant for them.
We could solve this by offering a filter to not show certain types of changes coming from Wikidata. The following filters probably are going to be useful:
* sitelinks
* labels
* descriptions
* aliases
**Example:**
* I am seeing an edit on Wikidata showing up in my English Wikipedia watchlist that changes the sitelink on Hebrew Wikipedia. I am not interested in this edit as I don't speak the language.
**Screenshots/mockups:**
TODO
**BDD**
GIVEN
AND
WHEN
AND
THEN
AND
**Acceptance criteria:**
[ ] editors on the client wiki are able to filter their watchlist and recent changes for certain types of edits coming from Wikidata
**Original report:**
[Stolen from [[https://www.mediawiki.org/wiki/Topic:Uu9mfg05l7zcicdd]].]
It would be lovely to add a filter group for RecentChanges/Watchlists for Wikibase edits based on type of edit:
* sitelink
* label
* description
* alias
For the above four, you'd probably want to filter explicitly on adds/changes/removes, and on a match list of languages (maybe pre-populated from the user's Babel stack)?
* statement
For this, you'd want add/changes/removes, but also details within changes like added/removed qualifiers, and possibly match to a list of properties (//e.g.// show me changes that remove instanceOf claims).
From my poking around the DBs, this is going to be a serious epic if we do this. Wikibase doesn't store any of this information inside the DB stack, instead calculating it on the fly from deserialised entities fetched from external storage, so there's nothing in the `recentchanges` table for the filtering code to use, nor anything even to join onto.