You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The admin content list filters by status, author, and date — but not by byline. On a site where credits are the editorial unit (guest authors, multiple contributors per entry, an author whose byline differs from their account), "show me everything credited to X" has no answer short of paging through the list by eye.
author_id is not a substitute: it is one user per entry, and _emdash_content_bylines exists precisely because credits are many-per-entry and can point at people without accounts.
Proposal
Add a byline filter to the content list, alongside the existing ones.
Select one or more bylines; an entry matches if it is credited to any of them.
A No byline assigned option matches entries with no credit.
Bylines are searched server-side in the picker, so the filter reaches the whole directory rather than one page.
Filter values are translation_groups — what _emdash_content_bylines.byline_id has stored since migration 040 — so a selection matches a byline across every locale.
Inferred credits are excluded by default. An entry with no explicit credit still renders the byline linked to its author (hydrateBylinesMany), but filtering usually means "who is credited", not "whose name happens to show". An Include inferred bylines switch opts in, and widens consistently: with it on, "No byline assigned" means nothing is rendered, so entries whose author resolves to a byline drop out too. Inferred credits resolve at the locale the list is showing, matching how the list renders them.
Scope
Additive: new optional query params on the existing content list endpoint, one new admin filter control. No migration — the UNIQUE(collection_slug, content_id, byline_id) index from migration 031 already has the right shape, and every probe in the filtered plans is an indexed seek with the sort index retained.
Not included: denormalizing byline ids onto the content table. The EXISTS plan walks the collection's sort index and probes per row, so a rare byline in a very large collection reads a lot before filling LIMIT — the shape migration 051 fixed for taxonomies. That needs a migration, and this is the authenticated admin list rather than the logged-out hot path. Worth revisiting separately if it bites.
No queries added to any logged-out route.
Implementation is ready in #2312 (draft, held pending approval here).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Problem
The admin content list filters by status, author, and date — but not by byline. On a site where credits are the editorial unit (guest authors, multiple contributors per entry, an author whose byline differs from their account), "show me everything credited to X" has no answer short of paging through the list by eye.
author_idis not a substitute: it is one user per entry, and_emdash_content_bylinesexists precisely because credits are many-per-entry and can point at people without accounts.Proposal
Add a byline filter to the content list, alongside the existing ones.
translation_groups — what_emdash_content_bylines.byline_idhas stored since migration 040 — so a selection matches a byline across every locale.Inferred credits are excluded by default. An entry with no explicit credit still renders the byline linked to its author (
hydrateBylinesMany), but filtering usually means "who is credited", not "whose name happens to show". An Include inferred bylines switch opts in, and widens consistently: with it on, "No byline assigned" means nothing is rendered, so entries whose author resolves to a byline drop out too. Inferred credits resolve at the locale the list is showing, matching how the list renders them.Scope
Additive: new optional query params on the existing content list endpoint, one new admin filter control. No migration — the
UNIQUE(collection_slug, content_id, byline_id)index from migration 031 already has the right shape, and every probe in the filtered plans is an indexed seek with the sort index retained.Not included: denormalizing byline ids onto the content table. The
EXISTSplan walks the collection's sort index and probes per row, so a rare byline in a very large collection reads a lot before fillingLIMIT— the shape migration 051 fixed for taxonomies. That needs a migration, and this is the authenticated admin list rather than the logged-out hot path. Worth revisiting separately if it bites.No queries added to any logged-out route.
Implementation is ready in #2312 (draft, held pending approval here).
Would maintainers approve this direction?
All reactions