Subscriptions UX overhaul + Patreon /cw/ vanity fix #75

Merged
bvandeusen merged 3 commits from dev into main 2026-06-06 21:12:02 -04:00
Owner

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

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)
bvandeusen added 3 commits 2026-06-06 21:11:55 -04:00
fix(patreon): handle the /cw/ creator-URL prefix in vanity extraction
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 25s
CI / backend-lint-and-test (push) Successful in 26s
CI / integration (push) Successful in 3m2s
c65da42593
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>
fix(subs): stop the lock/reload on source actions + regroup the row buttons
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 22s
CI / backend-lint-and-test (push) Successful in 24s
CI / integration (push) Successful in 3m2s
b7d07324ee
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>
feat(subs): subscriptions UX batch — error reasons, single-source rows, health sort, bulk backfill
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 24s
CI / backend-lint-and-test (push) Successful in 26s
CI / integration (push) Successful in 3m2s
e4e35163ab
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>
bvandeusen merged commit a75c602175 into main 2026-06-06 21:12:02 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#75