Skip to content

feat(wave): require KYC to apply repos to a wave program#1915

Merged
efstajas merged 2 commits into
mainfrom
feat/require-kyc-repo-applications
Jun 4, 2026
Merged

feat(wave): require KYC to apply repos to a wave program#1915
efstajas merged 2 commits into
mainfrom
feat/require-kyc-repo-applications

Conversation

@efstajas

@efstajas efstajas commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

What

Gate the repo-apply form behind a verified (GREEN) KYC, mirroring the established issue-application KYC pattern. Backend enforcement is in drips-network/wave#649.

Changes

  • Repo-apply form (maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/):
    • +page.ts now fetches getKycStatus and exposes isKycVerified.
    • +page.svelte shows an inline error AnnotationBox with a "Verify identity" link (/wave/kyc?backTo=…) when KYC isn't verified.
    • All form controls are disabled until KYC is GREEN. disabled={!isKycVerified} is passed directly to each control (TextAreas, supporting-link input, Add link/Remove buttons) — not just the FormField wrapper — so the gate can't be bypassed via keyboard navigation. The ListSelect uses blockInteraction for the same reason. The submit button is also disabled with helper text.
  • Post-login kyc-required reminder copy now mentions both "applying to issues" and "applying repos to a Wave Program".
  • KYC success page copy tidied to point users to Profile settings.

UX note

This is inline gating (not a hard redirect): KYC isn't instant, so after submitting Sumsub the user lands on the success page with status applicantPending, and the form stays gated until KYC turns GREEN — same real-world behavior as issue applications.

Related

Implements drips-network/wave#647 (tracking issue lives in the wave repo). Pairs with drips-network/wave#649 for the backend gate. Note: this does not auto-close anything in this repo — #647 here is an unrelated issue.

Mirror the issue-application KYC gate on the repo-apply form:
- form load fetches KYC status and exposes isKycVerified
- inline error AnnotationBox with a "Verify identity" link (backTo) when
  KYC isn't GREEN; all form fields and the submit button are disabled
  until verified (ListSelect uses blockInteraction since it overrides
  pointer-events)
- post-login kyc-required reminder copy now mentions repo applications
- tidy KYC success page copy (point users to Profile settings)

Part of #647.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR gates the maintainer “apply repositories to a Wave Program” flow behind verified (GREEN) KYC, mirroring the existing issue-application KYC gating behavior and adding a couple of KYC-related copy updates.

Changes:

  • Fetches KYC status during repo-apply form load and exposes an isKycVerified flag to the page.
  • Adds inline KYC-required messaging plus disables the repo-apply form and submit button until KYC is verified.
  • Updates copy on the KYC-required reminder page and the KYC success page.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.

File Description
src/routes/(pages)/wave/(flows)/maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/+page.ts Loads KYC status alongside repos and computes isKycVerified.
src/routes/(pages)/wave/(flows)/maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/+page.svelte Adds inline KYC gating UI and disables form interactions until KYC is verified.
src/routes/(pages)/wave/(flows)/kyc/success/+page.svelte Updates success-page copy to point users to Profile settings.
src/routes/(pages)/wave/(flows)/kyc-required/+page.svelte Expands reminder copy to include repo applications.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

FormField's disabled only applies pointer-events:none, leaving the inner
TextArea/TextInput and link buttons keyboard-focusable. Pass
disabled={!isKycVerified} down to the actual controls (all TextAreas, the
supporting-link input, Add link and Remove buttons) so the gate can't be
bypassed via keyboard navigation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread src/routes/(pages)/wave/(flows)/kyc/success/+page.svelte
@efstajas efstajas merged commit 72357e5 into main Jun 4, 2026
7 of 9 checks passed
@efstajas efstajas deleted the feat/require-kyc-repo-applications branch June 4, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants