ERD_INDEXERS_CHECKLIST.md still had the app-sync UX gap open even though the stored-procedure-backed search-profile and Torznab APIs already existed.
Operators could create the pieces manually, but there was no single workflow to provision an app-facing sync path with tag scoping, explicit indexer allowlists, media-domain filtering, and issued Torznab credentials.
Design notes:
Extend /indexers with an App sync card that reuses the existing search-profile and Torznab fields instead of introducing a new route or duplicate form state.
Add a UI helper that reuses or creates a search profile, applies domain/indexer/tag scoping through the existing ERD-backed endpoints, then creates a Torznab instance and returns the plaintext API key for the downstream app.
Persist the generated search-profile UUID and Torznab UUID back into the draft state so follow-up operations stay anchored to the provisioned app path.
Test coverage summary:
Updated the /indexers Playwright smoke test to assert the app-sync heading and provisioning button render.
Full regression gates remain just ci and just ui-e2e.
Observability updates:
No backend telemetry changes were required because the workflow composes existing traced endpoints.
The UI appends the provisioned app-sync summary to the existing activity log so operators can recover issued identifiers from the current session.
Risk & rollback plan:
Risk is limited to client-side orchestration of already-supported API calls.
Rollback is a straightforward revert of the UI helper and summary card, leaving the underlying search-profile and Torznab APIs unchanged.
Dependency rationale:
No new dependencies were added.
Alternatives considered: a dedicated backend orchestration endpoint or a separate app-sync route. Both were rejected because the current ERD-backed APIs already provide the needed primitives and the admin console is the established operator surface.