/cw/ vanity fix (c65da42): https://www.patreon.com/cw/Atole was resolving vanity=cw (the URL-prefix), failing campaign-id resolution. The regex now handles bare / c/ / cw/ creator-URL prefixes, and the page-scrape fallback tries all three. Confirmed from the new error text.
Subscriptions UI
Lock/reload fixed (b7d0732): per-source actions (toggle / backfill / recover / remove) no longer refetch the whole list — the store patches the one changed row in place, so the UI stays responsive and the expanded row no longer collapses.
Buttons regrouped (b7d0732): bigger hit targets; Edit moved next to the source URL; Recover/Remove folded into a labelled ⋮ menu (no more fat-fingering); single-source Remove now confirms.
UX batch (e4e3516):
Error-count chip shows the actual last_error on hover.
Single-source subscriptions show their URL + actions inline on the artist row (no expand for the common case).
All CI-green on dev (run 629).
## Patreon
- **`/cw/` vanity fix** (`c65da42`): `https://www.patreon.com/cw/Atole` was resolving vanity=`cw` (the URL-prefix), failing campaign-id resolution. The regex now handles bare / `c/` / `cw/` creator-URL prefixes, and the page-scrape fallback tries all three. Confirmed from the new error text.
## Subscriptions UI
- **Lock/reload fixed** (`b7d0732`): per-source actions (toggle / backfill / recover / remove) no longer refetch the whole list — the store patches the one changed row in place, so the UI stays responsive and the expanded row no longer collapses.
- **Buttons regrouped** (`b7d0732`): bigger hit targets; Edit moved next to the source URL; Recover/Remove folded into a labelled ⋮ menu (no more fat-fingering); single-source Remove now confirms.
- **UX batch** (`e4e3516`):
- Error-count chip shows the actual `last_error` on hover.
- Single-source subscriptions show their URL + actions inline on the artist row (no expand for the common case).
- Health column sortable, defaults worst-first.
- Preview action removed.
- "Backfill" added to the bulk bar.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
A source URL like https://www.patreon.com/cw/Atole resolved vanity='cw' — the
vanity regex only skipped a /c/ prefix, so Patreon's current /cw/ ("creator
workspace") form fell through to the bare-vanity branch and captured the prefix
instead of the slug. Every /cw/ source then failed campaign-id resolution
(API + page-scrape both looked up "cw"). Operator-confirmed 2026-06-07 via the
new error text: source_url='.../cw/Atole'; vanity='cw'.
Add cw/ to the optional prefix group (ordered before c/ so the longer prefix
wins), and have the creator-page fallback try the /cw/ form too. Test covers
bare / c/ / cw/ extraction and that id: URLs stay non-vanity.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lock/reload: every inline source action (check / backfill / recover / toggle /
remove) ended by refetching the WHOLE subscription list (store.loadAll /
refresh), which blocked the UI and re-rendered the table — collapsing the
expanded row, which read as "locks then resets." The action APIs already return
the updated source, so the store now patches that one row in place
(_patchSource / _dropSource); the post-action loadAll/refresh calls are gone.
Toggling enabled, starting/stopping a backfill, recovering, and removing are now
instant and leave the expansion intact.
Button regroup (operator-flagged: tiny, mis-clickable, not grouped by function):
- New shared SourceActions.vue used by desktop SourceRow + mobile SourceCard.
- Frequent actions stay as size="small" buttons: Check, Backfill/Stop.
- Low-frequency / destructive actions move into a labelled overflow (⋮) menu —
Preview backfill, Recover dropped near-duplicates, Remove source — so they
can't be fat-fingered, and the labels spell out recover-vs-backfill.
- Edit moves next to the source URL (its identity), out of the action cluster
where it sat beside Remove.
- Single-source Remove now confirms (it had no guard before).
Tests: store patches/drops in place without dropping the cache.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Operator-requested follow-ups:
- #1 Failure reason on hover: the red error-count chip now shows source.last_error
in a tooltip (desktop row + mobile card), so the cause (e.g. the new
"vanity=cw" message) is visible without opening Downloads.
- #2 Collapse the single-source case: a subscription with exactly one source now
shows that source's URL + its own actions (Check / Backfill / ⋮ / Edit) inline
on the artist row — no expand needed for the common case. Multi-source keeps
the artist-level actions + expandable per-source table.
- #3 Sort by health: the Health column is sortable on a numeric rank
(never/ok/warn/fail) and the table defaults to worst-first, name as tiebreak.
- #4 Drop Preview: removed the low-value bounded-peek action from the menu and
all its wiring (backend endpoint + store fn left in place, unused).
- #5 Backfill selected: a "Backfill" button in the bulk bar arms a run-until-done
backfill on every enabled, not-already-running source in the selection.
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 629).
Patreon
/cw/vanity fix (c65da42):https://www.patreon.com/cw/Atolewas resolving vanity=cw(the URL-prefix), failing campaign-id resolution. The regex now handles bare /c//cw/creator-URL prefixes, and the page-scrape fallback tries all three. Confirmed from the new error text.Subscriptions UI
b7d0732): per-source actions (toggle / backfill / recover / remove) no longer refetch the whole list — the store patches the one changed row in place, so the UI stays responsive and the expanded row no longer collapses.b7d0732): bigger hit targets; Edit moved next to the source URL; Recover/Remove folded into a labelled ⋮ menu (no more fat-fingering); single-source Remove now confirms.e4e3516):last_erroron hover.🤖 Generated with Claude Code