Filters: words and posts a persona would rather not see

Mastodon's v2 filters replace the empty stubs: a filter's title, contexts,
action (warn, hide, blur) and expiry, its keywords (whole words or not,
taken as JSON objects, listed or numbered form fields, with id and _destroy
on update) and its statuses, each with their own endpoints; the v1 API is
the same filters seen keyword by keyword. Every status a persona reads
carries the filters it matches in `filtered` (a boost as what it boosts),
matched as Mastodon matches: warning, title, text, poll options and media
descriptions. Clients apply context and action. Filters never federate, and
go with a deleted persona.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-05 02:48:49 +02:00
1 parent b710493701
commit 5b3e456e09
12 files changed
+759 -13

No files matched your search

+4 -1
View File
@@ -66,6 +66,8 @@ Written 2026-10-01 from the original 2023 code, the decePubClient UI, a federati
- [x] Lists: CRUD, members (followed accounts only, dropped when the follow ends), `timelines/list` with Mastodon's
replies policies, exclusive lists kept out of home, and `accounts/search?following=true` to fill them. Lists are the
persona's own and never federate.
- [x] Filters: v2 (keywords, whole words, statuses, contexts, warn/hide/blur, expiry) and v1 over their keywords;
every status carries the filters it matches in `filtered`, and clients apply context and action, as Mastodon's do.
## Intent
@@ -450,7 +452,8 @@ The first refactor commit is a pure move with namespaces only. Logic changes fol
- **Timelines and the rest:** home, public, tag; notifications; markers; conversations; `/api/v2/search` with
`resolve`.
- **Lists:** CRUD, `:id/accounts`, `accounts/:id/lists`, `timelines/list/:id` (P9).
- **Stubs:** `custom_emojis`, filters, announcements, trends, suggestions, `followed_tags`, preferences.
- **Filters:** v2 with keywords and statuses, v1, `filtered` on statuses (P9).
- **Stubs:** `custom_emojis`, announcements, trends, suggestions, `followed_tags`, preferences.
- **Mapping:**
- Avatar, ForeignAvatar and Group all map to Account (`group: true` for groups). `acct` uses a WebFinger-verified
handle; `created_at` is truncated to the day; avatar and header always have a placeholder URL.