A source URL like patreon.com/posts/<slug>-<id> is a single-post permalink, not a creator page — the resolver grabbed "posts" as the vanity and failed. Now a /posts/<id> URL follows the post to its owning campaign (Patreon post API, ?include=campaign), so pasting any post URL subscribes to that creator's whole feed. posts/ is excluded from the vanity regex so it can't masquerade as a creator slug.
Resolution order: cached override → id: URL → /posts/<id> → vanity (campaigns API + creator-page scrape). Unit-tested (mocked) — post→campaign resolve + /posts/ not treated as a vanity.
All CI-green on dev (run 635).
A source URL like `patreon.com/posts/<slug>-<id>` is a single-post permalink, not a creator page — the resolver grabbed "posts" as the vanity and failed. Now a `/posts/<id>` URL follows the post to its owning campaign (Patreon post API, `?include=campaign`), so pasting any post URL subscribes to that creator's whole feed. `posts/` is excluded from the vanity regex so it can't masquerade as a creator slug.
Resolution order: cached override → `id:` URL → `/posts/<id>` → vanity (campaigns API + creator-page scrape). Unit-tested (mocked) — post→campaign resolve + `/posts/` not treated as a vanity.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
A source URL like https://www.patreon.com/posts/mimic-in-dungeon-158372536 is a
single-post permalink, not a creator page — the resolver grabbed "posts" as the
vanity and failed (operator-flagged 2026-06-07). Add a resolution path: extract
the trailing post id and follow it to the owning campaign via the Patreon post
API (/api/posts/<id>?include=campaign), so pasting any post URL subscribes to
that creator's whole feed. `posts/` is excluded from the vanity regex so it
can't masquerade as a creator slug.
Resolution order is now: cached override → id: URL → /posts/<id> → vanity
(campaigns API + creator-page scrape). Tests cover the post→campaign resolve
and that /posts/ URLs aren't treated as vanities.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
All CI-green on dev (run 635).
A source URL like
patreon.com/posts/<slug>-<id>is a single-post permalink, not a creator page — the resolver grabbed "posts" as the vanity and failed. Now a/posts/<id>URL follows the post to its owning campaign (Patreon post API,?include=campaign), so pasting any post URL subscribes to that creator's whole feed.posts/is excluded from the vanity regex so it can't masquerade as a creator slug.Resolution order: cached override →
id:URL →/posts/<id>→ vanity (campaigns API + creator-page scrape). Unit-tested (mocked) — post→campaign resolve +/posts/not treated as a vanity.🤖 Generated with Claude Code