# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 18
# self = https://watcher.sour.is/conv/k5dgh7q
@abucci Don't we have enough tools that allow users of single-user and multi-user pods to block stuff they don't want to see? 🤔 The list includes:

- Unfollow a feed
- Mute a feed
- Mute a twt
- Mute a yarn
@abucci Don't we have enough tools that allow users of single-user and multi-user pods to block stuff they don't want to see? 🤔 The list includes:

- Unfollow a feed
- Mute a feed
- Mute a twt
- Mute a yarn
@abucci Don't we have enough tools that allow users of single-user and multi-user pods to block stuff they don't want to see? 🤔 The list includes:

- Unfollow a feed
- Mute a feed
- Mute a twt
- Mute a yarn
@abucci Don't we have enough tools that allow users of single-user and multi-user pods to block stuff they don't want to see? 🤔 The list includes:

- Unfollow a feed
- Mute a feed
- Mute a twt
- Mute a yarn
@prologic add mute by language. 😊
@bender As discussed on IRC, I _think_ what you _really_ want is per-User level filters. The question is what? Keyword/Pattern based? Language? Anything more? 🤔 I consider "Muting" and "Filters" to be somewhat different I guess... If I had to define it:

- Filtering is content based
- Muting is source based (feed, twt or yarn)
@bender As discussed on IRC, I _think_ what you _really_ want is per-User level filters. The question is what? Keyword/Pattern based? Language? Anything more? 🤔 I consider "Muting" and "Filters" to be somewhat different I guess... If I had to define it:

- Filtering is content based
- Muting is source based (feed, twt or yarn)
@bender As discussed on IRC, I _think_ what you _really_ want is per-User level filters. The question is what? Keyword/Pattern based? Language? Anything more? 🤔 I consider "Muting" and "Filters" to be somewhat different I guess... If I had to define it:

- Filtering is content based
- Muting is source based (feed, twt or yarn)
@bender As discussed on IRC, I _think_ what you _really_ want is per-User level filters. The question is what? Keyword/Pattern based? Language? Anything more? 🤔 I consider "Muting" and "Filters" to be somewhat different I guess... If I had to define it:

- Filtering is content based
- Muting is source based (feed, twt or yarn)
And if I were to build this, I would simply extend the [User.Filter()](https://git.mills.io/yarnsocial/yarn/src/commit/590ce93f74ce201af5e2f6d28129957b075bdf8a/internal/models.go#L579-L598) function such that:

- Source based filters (mute) is the first path

Followed by:

- Content-based filters (keyword, language, etc)

And of course we'd have to build a fancy UI around this 😅
And if I were to build this, I would simply extend the [User.Filter()](https://git.mills.io/yarnsocial/yarn/src/commit/590ce93f74ce201af5e2f6d28129957b075bdf8a/internal/models.go#L579-L598) function such that:

- Source based filters (mute) is the first path

Followed by:

- Content-based filters (keyword, language, etc)

And of course we'd have to build a fancy UI around this 😅
And if I were to build this, I would simply extend the [User.Filter()](https://git.mills.io/yarnsocial/yarn/src/commit/590ce93f74ce201af5e2f6d28129957b075bdf8a/internal/models.go#L579-L598) function such that:

- Source based filters (mute) is the first path

Followed by:

- Content-based filters (keyword, language, etc)

And of course we'd have to build a fancy UI around this 😅
And if I were to build this, I would simply extend the [User.Filter()](https://git.mills.io/yarnsocial/yarn/src/commit/590ce93f74ce201af5e2f6d28129957b075bdf8a/internal/models.go#L579-L598) function such that:

- Source based filters (mute) is the first path

Followed by:

- Content-based filters (keyword, language, etc)

And of course we'd have to build a fancy UI around this 😅
@prologic pattern based filtering can get quite expensive, no? If not, then it would be nice to have, of course. And, as I wrote before, language.
@bender probably no more expensive than keyword based filtering to be honest. Right now it's O(n) complexity. It would probably be worth caching "filtered per-user views" (including the timeline) some of which we don't do right now. It would probably save a few % points of cpu utilisation of a larger pod.
@bender probably no more expensive than keyword based filtering to be honest. Right now it's O(n) complexity. It would probably be worth caching "filtered per-user views" (including the timeline) some of which we don't do right now. It would probably save a few % points of cpu utilisation of a larger pod.
@bender probably no more expensive than keyword based filtering to be honest. Right now it's O(n) complexity. It would probably be worth caching "filtered per-user views" (including the timeline) some of which we don't do right now. It would probably save a few % points of cpu utilisation of a larger pod.
@bender probably no more expensive than keyword based filtering to be honest. Right now it's O(n) complexity. It would probably be worth caching "filtered per-user views" (including the timeline) some of which we don't do right now. It would probably save a few % points of cpu utilisation of a larger pod.