[1mdiff --git a/50_bubble.py b/50_bubble.py[m
[1mindex fda7049..1a6aff4 100644[m
[1m--- a/50_bubble.py[m
[1m+++ b/50_bubble.py[m
[36m@@ -511,13 +511,27 @@[m [mWhen editing segments in the draft composer, you may sometimes accidentally subm[m
[m
[31m-## Follows and Mutes[m
[32m+[m[32m## Filtering Feeds and Content[m
[m
[31m-You can follow posts, subspaces, and users to be notified of their activity, and to select what is visible in the Followed feed. Follows are entirely private in Bubble. Only you see what you follow, and there are no counters or statistics about this visible anywhere. Followers do not affect the "hotness" sorting order, either.[m
[32m+[m[32mYou can follow and mute posts, subspaces, and users to customize their visibility and notifications about them. In Settings, you can choose whether the front page feed shows all posts — except mutes ones — or just posts from followed subspaces and users.[m
[32m+[m
[32m+[m[32m### Follows[m
[32m+[m
[32m+[m[32mFollows are entirely private in Bubble: only you see what you follow, and there are no counters or statistics about them visible anywhere. Followers do not affect the "hotness" sorting order, either.[m
[m
When you vote in a poll, the post is automatically marked as followed so you will be notified of discussion related to it even though you haven't commented on the poll yourself.[m
[m
[31m-Muting is private, too. No one can see what you have muted, or who has muted them. You can mute individual posts, entire subspaces, and all posts, comments by a particular user. Muting prevents notifications from being received regarding the target of the mute.[m
[32m+[m[32m### Muting[m
[32m+[m
[32m+[m[32mMuting is private, too. No one can see what you have muted, or who has muted them. You can mute individual posts, entire subspaces, and all posts, comments by a particular user. Muting generally prevents notifications from being received regarding the target of the mute.[m
[32m+[m
[32m+[m[32m* Muting a post silences notifications about the post but you can still view the post normally. @-mentions in the post or its comments will still be delivered to you. This is useful for long threads that you are no longer interested in actively following.[m
[32m+[m[32m* Muting a subspace hides it in All Posts and disables notifications about activity in the subspace. However, your own posts in that subspace are not affected, nor are @-mentions of you in the subspace. This could be used to prevent a busy subspace from dominating All Posts.[m
[32m+[m[32m* Muting a user hides the user's posts in every feed, including in All Posts and the muted user's "u/"-feed, and hides their comments in every post. Notifications from the user are not shown, either. It is as if the user does not exist.[m
[32m+[m
[32m+[m[32m### Tag Filtering[m
[32m+[m
[32m+[m[32mThe front page feed, subspaces, user feeds, and issue trackers can all be filtered based on tags applied on posts.[m
"""[m
return page[m
[m
[1mdiff --git a/model.py b/model.py[m
[1mindex ac89e72..fad643e 100644[m
[1m--- a/model.py[m
[1m+++ b/model.py[m
[36m@@ -1470,12 +1470,14 @@[m [mclass Database:[m
MUTE_ALL_COND_JOIN = f"""[m
LEFT JOIN mute mt[m
ON mt.user=? AND[m
[32m+[m[32m mt.user!=p.user AND[m
((mt.type={MUTE_SUBSPACE} AND mt.target=p.subspace) OR[m
(mt.type={MUTE_USER} AND mt.target=p.user))[m
"""[m
MUTE_SUBSPACE_COND_JOIN = f"""[m
LEFT JOIN mute mt[m
ON mt.user=? AND[m
[32m+[m[32m mt.user!=p.user AND[m
(mt.type={MUTE_USER} AND mt.target=p.user)[m
"""[m
TAG_FILTER_JOIN = "JOIN tags tg ON tg.post=p.id"[m
[36m@@ -1953,8 +1955,8 @@[m [mclass Database:[m
LEFT JOIN reactions r ON r.post=n.post AND n.src=r.user[m
LEFT JOIN mute mt ON mt.user={user.id} AND ([m
(mt.type={MUTE_USER} AND mt.target=n.src) OR[m
[31m- (mt.type={MUTE_SUBSPACE} AND mt.target=p.subspace) OR[m
[31m- (mt.type={MUTE_POST} AND mt.target=n.post)[m
[32m+[m[32m (mt.type={MUTE_SUBSPACE} AND mt.target=p.subspace AND p.user!={user.id} AND n.type!={Notification.MENTION}) OR[m
[32m+[m[32m (mt.type={MUTE_POST} AND mt.target=n.post AND n.type!={Notification.MENTION})[m
)[m
WHERE {' AND '.join(cond)}[m
""", tuple(values))[m
text/plain
This content has been proxied by September (ba2dc).