feat: followers-only recipe visibility

Adds a fourth visibility tier alongside private/unlisted/public:
"followers" — visible to the author and anyone who follows them,
excluded from public search/explore/profile listings and from the
anonymous /r/[id] share route, included in the Following feed. The
in-app recipe detail gate and the public share route both check
follow status directly against the DB rather than the union type
alone, since neither previously had any per-viewer access logic for
a non-public/non-owner case.

Requires the generated migration (0041) to run against a live DB —
not applied in this sandbox (no Docker here); run `pnpm db:migrate`.

v0.41.0
This commit is contained in:
Arnaud
2026-07-17 17:05:10 +02:00
parent 23babd4ee9
commit 77c739960d
29 changed files with 5183 additions and 43 deletions
+2
View File
@@ -223,9 +223,11 @@
"visibilityMenuLabel": "Visibility",
"makePublic": "Make public",
"makeUnlisted": "Make unlisted",
"makeFollowersOnly": "Make followers only",
"makePrivate": "Make private",
"visibility": {
"private": "Private",
"followers": "Followers only",
"unlisted": "Unlisted",
"public": "Public"
},
+2
View File
@@ -223,9 +223,11 @@
"visibilityMenuLabel": "Visibilité",
"makePublic": "Rendre publique",
"makeUnlisted": "Rendre non répertoriée",
"makeFollowersOnly": "Réserver aux abonnés",
"makePrivate": "Rendre privée",
"visibility": {
"private": "Privée",
"followers": "Abonnés uniquement",
"unlisted": "Non répertoriée",
"public": "Publique"
},